这是BNF语法LL(1)吗?

时间:2012-09-16 13:52:55

标签: parsing grammar bnf ebnf ll

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

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

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

1 个答案:

答案 0 :(得分:2)

这个语法是模糊的,因此对于任何k都不是LL(1),也不是LL(k)。

选择一个ab作为输入,并看到它可以与来自A的{​​{1}}或B引用相匹配。因此,有两种不同的解析树,证明语法是模糊的。