近日,Python 之父吉多·范罗苏姆发表一篇名为《PEG Parser》的文章,范罗苏姆表示,他正
近日,Python 之父吉多·范罗苏姆发表一篇名为《PEG Parser》的文章,范罗苏姆表示,他正考虑使用 PEG Parser 代替现有的类 LL (1) Parser(名为 pgen),来重构 Python 解释器。
打开凤凰新闻,查看更多高清图片范罗苏姆表示,现在的 pgen 限制了 Python 语法的自由度,使得一些语法难以实现,也让当前的语法树不够整洁,一定程度上影响了语法树的表意,不能最好地体现设计者的意图。
PEG 语法解释器在解析语法的时候,会一次性加载全部代码,所以解释器可以根据任意位置的符号来判断语法的语义。而目前的 LL (1) Parse 解析语法的时候只会向前检测一个符号,来猜测语义,导致部分语法有二义性的表现,进而限制了 Python 语言的语法定义方式。当然,一次性加载全部代码,也意味着 PEG Parser 需要更大的内存来运行。
针对上述情况,Python 解释器处理不了的问题就只能让 Python 团队不断在代码中加入“特例”来处理这些边缘情况。范罗苏姆称,Python 刚出来的时候,内存还是很贵的,LL (1) Parse 使用非常合适,但是现在内存价格已经大幅降低,所以用 PEG Parser 重构 Python 更加合适。
范罗苏姆表示,用 PEG Parser 重构 Python 解释器不会造成语法上的影响,因为底层重构不会影响 Python 语法。