Python 3.5的语法是LL(1)吗?

6
1个回答

14

是的。这是一种有意的语言特性,而不仅仅是一个偶然事件。 PEP 3099 明确地 拒绝 了在 Python 2 -> 3 转换中对此进行任何更改(这是一个比任何 3.x -> 3.y 大得多的转换):

  • 解析器不会比 LL(1) 更复杂。

    简洁胜于繁琐。这个想法可以扩展到解析器。将 Python 的语法限制为 LL(1) 解析器是一种福音,而不是 诅咒。它束缚我们,防止我们过度发挥并最终得到一些奇怪的语法规则,就像其他某些动态语言那样,这些语言不会被提及,例如 Perl。


2
CPython 3.9 引入了 PEG 解析器,它“解除了当前 Python 语法中的 LL(1) 限制”,并且该 PEP 还表示它“允许消除当前语法中存在的多个‘hack’,以规避 LL(1) 限制”,因此我认为这个答案在实践中也不完全正确。 - user3064538

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接