这是来自原始语法的小块,我必须实现递归的正确解析器。我们必须从它中删除歧义,左递归e.t.c,以便我们可以实现它的解析器。我已完成其他任务,但无法弄清楚如何处理not运算符(〜)。
有效的表达式可能是。 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
当我实现它时,一切都适用于括号,或者操作符。但否定〜没有奏效。所以我认为语法没有正确地转换为LL(1)