1

如果以下 BNF 语法是 LL(1),有人可以帮我确认一下:

S ::= A B B A
A ::= a
A ::=
B ::= b
B ::=

其中 S 是起始符号,非终结符 A 和 B 可以导出为 epsilon。我知道解析表中的单个单元格中是否有 2 个或多个产生式,那么语法不是 LL(1)。但是如果一个单元格已经包含 epsilon,我们可以在构建解析表时安全地用新的产生式替换它吗?

4

1 回答 1

2

这个文法是模棱两可的,因此对于任何 k 都不是 LL(1),也不是 LL(k)。

将单个ab作为输入,并查看它可以与来自 的AB引用中的任何一个匹配S。因此有两种不同的解析树,证明文法是不明确的。

于 2012-09-17T09:30:02.127 回答