Python之父考虑重构Python解释器
时间:2025-11-05 07:29:15 出处:数据库阅读(143)
7月22日,父重构Python之父Guido在Medium上发表了他的考虑第一篇博文《PEG Parser》。
在该文中,解释Guido说他正在考虑使用PEG Parser代替现有的父重构类LL(1) Parser(名为pgen),来重构Python解释器。考虑原因是解释现在的 pgen 限制了Python语法的自由度,使得一些语法难以实现,父重构也让当前的考虑语法树不够整洁,一定程度上影响了语法树的解释表意,不能最好地体现设计者的父重构意图。
那 PEG Parser 和现有的考虑 LL(1) Parser 有什么区别呢?可以这样简单地理解,PEG 语法解释器在解析语法的解释时候,会一次性加载全部代码,父重构所以解释器可以根据任意位置的考虑符号来判断语法的语义。而目前的解释 LL(1) Parse 解析语法的时候只会向前检测一个符号,来猜测语义,导致部分语法有二义性的源码下载表现,进而限制了Python语言的语法定义方式。当然,一次性加载全部代码,也意味着 PEG Parser 需要更大的内存来运行。
说当前解释器限制了Python的语法实现,很多同学可能没有明显的感受,所以Guido又举了一个例子:在Python3.8之前,下面这段代码都是可以正常运行的,而不像大家直观感受的第二行代码应该报错。

这就是Python解释器处理不了带来的后遗症。这也导致Python团队不得不在代码里增加一些不受欢迎的“特例”来处理这些边缘情况。
Guido说,Python刚出现的时候,内存还很贵,使用 LL(1) Parser 是非常合理的。不过在现在这个内存以G为单位的站群服务器时代,解释器多增加几百k甚至上兆的内存消耗,已经根本不算什么了。所以是时候使用更理想的 PEG Parser 来重构Python解释器了。
最后,也是大家最关心的问题,这个重构会对Python语言的开发者造成什么影响呢?Guido说,应该是没有影响的,底层重构不会影响Python的语法。
看来,不管是多么成功的项目,也存在着因为时代的限制而遗留的一些令人不快的问题,完美的设计和实现,从来不是一蹴而就的高防服务器呀~
英文原文地址:https://medium.com/@gvanrossum_83706/peg-parsers-7ed72462f97c
猜你喜欢
- 轻松学会以戴尔电脑分区桌面教程(简明易懂,快速操作)
- 华硕电脑XP系统安装教程(详细步骤教你如何在华硕电脑上安装XP系统)
- 使用云骑士系统重装Win10的教程(云骑士系统重装Win10简单操作指南)
- OPPOR9sK歌怎么样?手机音质与用户体验的综合评估
- OPPOR9Plus在VR方面的表现如何?(探索OPPOR9Plus在虚拟现实技术应用上的优势与不足)
- 911Turbo(一款定义豪华跑车新标准的完美力作)
- sk6221USB3.0优盘量产教程(掌握SK6221USB3.0芯片的量产技巧,提升USB优盘生产效率)
- GTX1070骨灰大将(性能狂飙,游戏畅快体验)
- 莱斯硬盘分区教程(详解莱斯硬盘分区方法,让你的数据有序有力)