网站内部链接怎麽做,做网站维护要什么专业,网站的空间价格,中国电子信息网作者#xff1a;佚名来源#xff1a;Python部落7月22日#xff0c;Python之父Guido在Medium上发表了他的第一篇博文《PEG Parser》。在该文中#xff0c;Guido说他正在考虑使用PEG Parser代替现有的类LL(1) Parser(名为pgen)#xff0c;来重构Python解释器。原因是现在的 …作者佚名来源Python部落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的语法。看来不管是多么成功的项目也存在着因为时代的限制而遗留的一些令人不快的问题完美的设计和实现从来不是一蹴而就的呀~