中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Python之父考慮重構(gòu)Python解釋器

2019-07-25    來(lái)源:raincent

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

作者:佚名來(lái)源:Python部落

7月22日,Python之父Guido在Medium上發(fā)表了他的第一篇博文《PEG Parser》。

在該文中,Guido說(shuō)他正在考慮使用PEG Parser代替現(xiàn)有的類(lèi)LL(1) Parser(名為pgen),來(lái)重構(gòu)Python解釋器。原因是現(xiàn)在的 pgen 限制了Python語(yǔ)法的自由度,使得一些語(yǔ)法難以實(shí)現(xiàn),也讓當(dāng)前的語(yǔ)法樹(shù)不夠整潔,一定程度上影響了語(yǔ)法樹(shù)的表意,不能最好地體現(xiàn)設(shè)計(jì)者的意圖。

那 PEG Parser 和現(xiàn)有的 LL(1) Parser 有什么區(qū)別呢?可以這樣簡(jiǎn)單地理解,PEG 語(yǔ)法解釋器在解析語(yǔ)法的時(shí)候,會(huì)一次性加載全部代碼,所以解釋器可以根據(jù)任意位置的符號(hào)來(lái)判斷語(yǔ)法的語(yǔ)義。而目前的 LL(1) Parse 解析語(yǔ)法的時(shí)候只會(huì)向前檢測(cè)一個(gè)符號(hào),來(lái)猜測(cè)語(yǔ)義,導(dǎo)致部分語(yǔ)法有二義性的表現(xiàn),進(jìn)而限制了Python語(yǔ)言的語(yǔ)法定義方式。當(dāng)然,一次性加載全部代碼,也意味著 PEG Parser 需要更大的內(nèi)存來(lái)運(yùn)行。

說(shuō)當(dāng)前解釋器限制了Python的語(yǔ)法實(shí)現(xiàn),很多同學(xué)可能沒(méi)有明顯的感受,所以Guido又舉了一個(gè)例子:在Python3.8之前,下面這段代碼都是可以正常運(yùn)行的,而不像大家直觀感受的第二行代碼應(yīng)該報(bào)錯(cuò)。

 

 

這就是Python解釋器處理不了帶來(lái)的后遺癥。這也導(dǎo)致Python團(tuán)隊(duì)不得不在代碼里增加一些不受歡迎的“特例”來(lái)處理這些邊緣情況。

Guido說(shuō),Python剛出現(xiàn)的時(shí)候,內(nèi)存還很貴,使用 LL(1) Parser 是非常合理的。不過(guò)在現(xiàn)在這個(gè)內(nèi)存以G為單位的時(shí)代,解釋器多增加幾百k甚至上兆的內(nèi)存消耗,已經(jīng)根本不算什么了。所以是時(shí)候使用更理想的 PEG Parser 來(lái)重構(gòu)Python解釋器了。

最后,也是大家最關(guān)心的問(wèn)題,這個(gè)重構(gòu)會(huì)對(duì)Python語(yǔ)言的開(kāi)發(fā)者造成什么影響呢?Guido說(shuō),應(yīng)該是沒(méi)有影響的,底層重構(gòu)不會(huì)影響Python的語(yǔ)法。

看來(lái),不管是多么成功的項(xiàng)目,也存在著因?yàn)闀r(shí)代的限制而遺留的一些令人不快的問(wèn)題,完美的設(shè)計(jì)和實(shí)現(xiàn),從來(lái)不是一蹴而就的呀~

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

標(biāo)簽: Python 編程語(yǔ)言

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:智慧警務(wù)建設(shè) 大數(shù)據(jù)是基礎(chǔ) AI是綜合研判引擎

下一篇:華為企業(yè)BG全球智慧城市業(yè)務(wù)部總裁鄭志彬:建設(shè)古羅馬式智慧城市