我不太明白如何确定语法是否为LL(1)。我得到了以下语法:
S → Y | 1X
X → 1X | 0
Y → Y0|1X1|2X2
我声明这个语法不是LL(1),因为Y0是递归的。
所以我提出了以下解决方案:
S → Y | 1X
X → 1X | 0
Y → 1X1F | 2X2F
F → ε | 0F
但我仍然不确定这是否正确。我仍然认为我一定错过了某种规则,比如某种因素。我是否必须将1X和2X带入不同的变量?
提前感谢您的帮助。我还想知道是否有更简单的方法来确定语法是否是LL(1)我遇到了很多“第一”和“跟随”表,但实际上并没有设法自己构建一个。
答案 0 :(得分:1)
如果考虑我们的1X,那么我得到以下结果:
S → Y | Z
X → Z | 0
Y → Z1F | 2X2F
F → ε | 0F
Z → 1X | ε
这意味着S→Y | Z和我认为这是不允许的。
答案 1 :(得分:0)
LL(1)语法需要能够基于单个((1)
)前瞻标记来预测生产。但是,Y
和1X
都可以以1
开头,因此无法预测在给定第一个输入符号{S→Y
或S→1X
时是否使用1
或{{1}} 1}}。因此,原始语法和转换后的语法都不是LL(1)。