我知道:
如果语言可以由LL(1)语法生成,则称该语言为LL(1)。可以证明LL(1)语法是
not ambiguous and
not left-recursive.
但我遇到了一个问题。
为什么语法
S-> aBDb
B - >拉姆达
D-> dD |拉姆达
为什么这个语法不是LL(1)也不是SLR也不是LALR?谁能描述我?
答案 0 :(得分:0)
这个语法确实是LL(1)。这是解析表:
a b d $
S aBDb
B eps eps
D eps dD
这也是SLR(1)。以下是FOLLOW集:
S: $
B: d, b
D: b
以下是配置集:
S' -> .S$
S -> .aBDb ($)
S' -> S.$
S -> a.BDb ($)
B -> . (b, d)
S -> aB.Db ($)
D -> . (b)
D -> .dD (b)
D -> d.D (b)
D -> .dD (b)
D -> . (b)
D -> dD. (b)
没有转移/减少或减少/减少冲突,因此该语法是SLR(1)。因此,它也是LALR(1)。
希望这有帮助!