我试图为计算器语言实现一个 LL(1) 自上而下的解析器。它只允许我们对数字进行求和、减法、除法和乘法运算。没有括号。
S -> A
A -> B + A
| B - A
| B
B -> int * B
| int / B
| int
由于此语法不适合 LL(1) 解析器,因此我不得不对其进行一些更改:
S -> A
A -> B A'
A'-> + A
| - A
| λ
B -> int B'
B'-> * B
| / B
| λ
问题是现在语法对于显示的 4 个运算符没有关联,我需要它是这样。如何解决这个问题呢?甚至有可能做到这一点吗?