java – LL1布尔运算符Grammar实现Recursive的解析器
发布时间:2020-12-15 02:11:52 所属栏目:Java 来源:网络整理
导读:这是来自原始语法的小块,我必须实现递归的正确解析器.我们必须从它中删除歧义,左递归e.t.c,以便我们可以实现它的解析器.我已完成其他位,但无法弄清楚如何处理not运算符(?). 有效的表达式可能是. 1 ~1,(1 ~1)e.t.c. 我已经处理过括号,以及和或符号但不能处理?
这是来自原始语法的小块,我必须实现递归的正确解析器.我们必须从它中删除歧义,左递归e.t.c,以便我们可以实现它的解析器.我已完成其他位,但无法弄清楚如何处理not运算符(?).
有效的表达式可能是. 我已经处理过括号,以及&和或符号但不能处理?符号. 这是原始语法. A -> A & A A -> ~A A -> (A) A -> 0 | 1 我无法弄清楚如何处理?. 这是我的解决方案: one -> two one' one' -> ~one|^ two -> three two' two' -> & three two'|^ three -> four three' three' -> || four three' | ^ four -> (one) |0 |1 当我实现它时,一切都适用于括号,或者操作符.但否定?没有奏效.所以我认为语法没有正确转换为LL(1) 解决方法
最后,我花了很多时间自己解决了这个问题.这是解决方案.
布尔值not或(?)运算符的优先级高于上述语法中的任何其他运算符.在上面的解决方案中,我的优先级更低.这是正确的解决方案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |