7月26日消息 近日,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语法。