手机版
你好,游客 登录 注册
背景:
阅读新闻

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

[日期:2019-07-28] 来源:Linux公社  作者:醉落红尘 [字体: ]

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解析器的速度。但我也没有采取任何措施来优化它,所以我很有希望。“

更多Python相关信息见Python 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=17

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

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

linux
相关资讯       Python解析器  PEG解析器 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款