我看到http://matt.might.net/teaching/compilers/spring-2015/上说Python 3.4是LL(1)。
Python 3.5的语法仍然是LL(1)吗?所以可以编写递归下降解析器吗?
Python 3.5的语法仍然是LL(1)吗?所以可以编写递归下降解析器吗?
是的。这是一种有意的语言特性,而不仅仅是一个偶然事件。 PEP 3099 明确地 拒绝 了在 Python 2 -> 3 转换中对此进行任何更改(这是一个比任何 3.x -> 3.y 大得多的转换):
解析器不会比 LL(1) 更复杂。
简洁胜于繁琐。这个想法可以扩展到解析器。将 Python 的语法限制为 LL(1) 解析器是一种福音,而不是 诅咒。它束缚我们,防止我们过度发挥并最终得到一些奇怪的语法规则,就像其他某些动态语言那样,这些语言不会被提及,例如 Perl。