这是原始语法中的一小部分,我必须为其实现递归体面的解析器。我们必须从中消除歧义,左递归等,以便我们可以实现它的解析器。我已经完成了其他位,但无法弄清楚如何处理非运算符 (~)。

有效的表达可能是。
1 & ~1, (1 & ~1) e.t.c.

我已经处理了大括号以及 & 和或符号,但无法处理 ~ 符号。

这是原始语法。

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

当我实现它时,对于括号、 and 、 或 operator 一切正常。但是否定〜不起作用。所以我相信语法没有正确转换为 LL(1)

最佳答案

最后,我花了很多时间自己解决了这个问题。这是解决方案。

boolean 值 not 或 (~) 运算符的优先级高于上述语法中的任何其他运算符。在上述解决方案中,我认为它的优先级较低。这是正确的解决方案。

java - LL1  boolean 运算符语法来实现递归下降解析器-LMLPHP

关于java - LL1 boolean 运算符语法来实现递归下降解析器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34104568/

10-12 00:23
查看更多