加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Python之父思量重构Python表明器

发布时间:2019-08-01 12:56:32 所属栏目:建站 来源:佚名
导读:7月22日,Python之父Guido在Medium上颁发了他的第一篇博文《PEG Parser》。 在该文中,Guido说他正在思量行使PEG Parser取代现有的类LL(1) Parser(名为pgen),来重构Python表明器。缘故起因是此刻的 pgen 限定了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表明器

这就是Python表明器处理赏罚不了带来的后遗症。这也导致Python团队不得不在代码里增进一些不受接待的“特例”来处理赏罚这些边沿环境。

Guido说,Python刚呈现的时辰,内存还很贵,行使 LL(1) Parser 长短常公道的。不外在此刻这个内存以G为单元的期间,表明器多增进几百k乃至上兆的内存耗损,已经基础不算什么了。以是是时辰行使更抱负的 PEG Parser 来重构Python表明器了。

最后,也是各人最体谅的题目,这个重构会对Python说话的开拓者造成什么影响呢?Guido说,应该是没有影响的,底层重构不会影响Python的语法。

看来,不管是何等乐成的项目,也存在着由于期间的限定而遗留的一些令人不快的题目,美满的计划和实现,从来不是一挥而就的呀~

英文原文地点:https://medium.com/@gvanrossum_83706/peg-parsers-7ed72462f97c

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读