Python之父考虑将Python切换到PEG解析器


7月22日,Python之父Guido在Medium上发表了他的第一篇博文“PEG Parser”。在这篇文章中,Guido说他正在考虑使用PEG解析器而不是现有的类LL(1)解析(命名为pgen)来重构Python解释器。原因是当前的pgen限制了Python语法的自由,使得一些语法难以实现,也使得当前的语法树不够干净,这在一定程度上影响了语法树的意识形态,并没有很好的体现设计者的意图。

PEG解析器和现有的LL(1)分析器什么区别?可以很容易理解,PEG语法解释器将在解析语法时立即加载所有代码,因此解释器可以根据任何位置的符号来判断语法的语义。当前的LL(1)语法分析器仅检测前向符号以猜测语义,这导致一些语法的模糊表达,这限制了Python语言的语法定义。当然,一次加载所有代码意味着PEG Parser需要更多内存才能运行。

Guido说:

“我现在的想法是将这些东西放在一起,看看我们是否可以为CPython创建一个新的解析器,它使用PEG和packrat解析在解析过程中直接构造AST,从而跳过中间解析树结构,尽管使用了无限前瞻缓冲。我还没有,但我有一个原型可以将一个Python子集编译成一个AST,速度与CPython当前的解析器大致相同。然而,它使用更多内存,我希望将子集扩展为完整语言会降低PEG解析器的速度。但我也没有采取任何措施来优化它,所以我很有希望。“

https://www.linuxboy.net/topicnews.aspx?tid=17

linuxboy的RSS地址:https://www.linuxboy.net/rssFeed.aspx

本文永久更新链接地址:https://www.linuxboy.net/Linux/2019-07/159629.htm

相关内容

    暂无相关文章