python3精要(62)-编译与解释实践(1)
歡迎來(lái)到PLY主頁(yè)。 PLY是python的lex和yacc解析工具的實(shí)現(xiàn)。
簡(jiǎn)而言之,PLY只是簡(jiǎn)單的lex / yacc實(shí)現(xiàn)。以下是其基本功能列表:
它完全用Python實(shí)現(xiàn)。
它使用LR解析,這是相當(dāng)有效的,非常適合于較大的語(yǔ)法。
PLY提供了大多數(shù)標(biāo)準(zhǔn)的lex / yacc功能,包括對(duì)空乘積,優(yōu)先級(jí)規(guī)則,錯(cuò)誤恢復(fù)的支持以及對(duì)歧義語(yǔ)法的支持。
PLY易于使用,并提供非常廣泛的錯(cuò)誤檢查。
除了提供基本的lex / yacc功能之外,PLY不會(huì)嘗試做更多或更少的事情。換句話說(shuō),它不是大型的解析框架,也不是大型系統(tǒng)的組成部分。
PLY的原始版本開(kāi)發(fā)于2001年,用于“編譯器簡(jiǎn)介”課程,學(xué)生可以使用它來(lái)為一種類(lèi)似于Pascal的簡(jiǎn)單語(yǔ)言構(gòu)建編譯器。由于它在教學(xué)環(huán)境中的使用,因此提供了大量錯(cuò)誤檢查的工作量很大。此外,這種經(jīng)驗(yàn)還用于解決常見(jiàn)的可用性問(wèn)題。從那時(shí)起,對(duì)該系統(tǒng)進(jìn)行了各種增量改進(jìn)。
PyBison是一個(gè)框架,可以有效地將Bison和Flex“包裝”到Python類(lèi)結(jié)構(gòu)中。
您定義一個(gè)解析器類(lèi),將標(biāo)記和優(yōu)先級(jí)定義為屬性,并將目標(biāo)解析為帶有文檔字符串中規(guī)則的方法,然后實(shí)例化并運(yùn)行。
Black Magick發(fā)生在后臺(tái),每次yyparse()解析一個(gè)解析目標(biāo)時(shí),您都會(huì)得到回調(diào)。
但是PLY受到一些主要限制:
在詞法分析器中使用“命名組”正則表達(dá)式創(chuàng)建了100個(gè)令牌的硬限制-不足以舒適地處理主要語(yǔ)言
純python實(shí)現(xiàn)是一種便利,但是會(huì)帶來(lái)殘酷的性能損失
解析器引擎是SLR,不是完整的LALR(1)
其他框架則使用了一種奇怪的腳本語(yǔ)法
此外,需要安裝下面工具:
Python
pip
GNU bison
flex
gcc等
總結(jié)
以上是生活随笔為你收集整理的python3精要(62)-编译与解释实践(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: FPGA笔录(2)-触发器与锁存器原理
- 下一篇: Springboot系列之Shiro、J