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

obj*_*gic 5 python compiler-construction grammar parsing

我看到http://matt.might.net/teaching/compilers/spring-2015/说Python 3.4是LL(1)

Python 3.5的语法仍然是LL(1)所以可以写一个递归下降解析器吗?

lvc*_*lvc 13

是.这是一个深思熟虑的语言功能,而不仅仅是碰巧的情况.PEP 3099明确拒绝对Python 2 - > 3转换的任何更改(一个明显比任何3.x - > 3.y更大的转换):

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

    简单比复杂更好.这个想法延伸到解析器.将Python的语法限制为LL(1)解析器是一种祝福,而不是诅咒.它让我们戴上手铐,阻止我们过度使用,最终得到一些时髦的语法规则,比如其他一些未命名的动态语言,比如Perl.

  • CPython 3.9 [引入了 PEG 解析器](https://peps.python.org/pep-0617/),它“解除了对当前 Python 语法的 LL(1) 限制”,并且 PEP 表示它“允许[s] 消除当前语法中存在的多个“黑客”以规避 LL(1) 限制',所以我认为这个答案在实践中也不太正确。 (2认同)