如果以下BNF语法是LL(1),有人可以向我确认:
S ::= A B B A
A ::= a
A ::=
B ::= b
B ::=
其中S是起始符号,非终端A和B可以导出到epsilon。我知道如果解析表中的单个单元格中有两个或更多的产生,那么语法不是LL(1)。但是如果一个单元格已经包含epsilon,那么在构造解析表时我们可以安全地用新生成替换它吗?
答案 0 :(得分:2)
这个语法是模糊的,因此对于任何k都不是LL(1),也不是LL(k)。
选择一个a
或b
作为输入,并看到它可以与来自A
的{{1}}或B
引用相匹配。因此,有两种不同的解析树,证明语法是模糊的。