0

我正在研究 LL/LR 解析,在阅读Wikipedia 上的 LL 解析器页面时,我发现了这个语法:

S → F
S → ( S + F )
F → a

从文章来看,它是 LL(我从表中假设为 LL(0));但我找到了一个证明,表明 LL(0) 解析器没有左递归(在这种情况下是 S)。那么,为什么这是一个正确的 LL(0)(或者至少,这是我从文章中理解的)。

“无左递归”是某种一般规则还是只是可能问题的标志?

解析表能否确定我正在研究的语法是否为 LL(0)?

4

1 回答 1

3

是的,您可以通过查看解析表来识别 LL(0) 语法,如下所示:

  1. 每个非终结符仅与一个右侧相关联。
  2. 没有使用 EBNF 运算符?*+

许多人会声明不允许递归的附加规则。但是,由于任何递归都会导致无限循环,因此前面的规则微不足道地暗示了这一点。

您的示例语法不是 LL(0) ,因为为 non-terminal 定义了 2 个产生式s

于 2014-01-24T22:44:36.030 回答