引言
最近剛剛用python寫完了一個(gè)解析protobuf文件的簡(jiǎn)單編譯器,深感ply實(shí)現(xiàn)詞法分析和語(yǔ)法分析的簡(jiǎn)潔方便。乘著余熱未過(guò),頭腦清醒,記下一點(diǎn)總結(jié)和心得,方便各位pythoner參考使用。
ply使用
簡(jiǎn)介
如果你不是從事編譯器或者解析器的開(kāi)發(fā)工作,你可能從未聽(tīng)說(shuō)過(guò)ply。ply是基于python的lex和yacc,而它的作者就是大名鼎鼎Python Cookbook, 3rd Edition的作者。可能有些朋友就納悶了,我一個(gè)業(yè)務(wù)開(kāi)發(fā)怎么需要自己寫編譯器呢,各位編程大牛說(shuō)過(guò),中央決定了,要多嘗試新的東西。而且了解一些語(yǔ)法解析的姿勢(shì),以后自己解析格式復(fù)雜的日志或者數(shù)學(xué)公式,也是非常有幫助的。
針對(duì)沒(méi)有編譯基礎(chǔ)的童鞋,強(qiáng)烈建議了解一些文法相關(guān)的基本概念。輪子哥強(qiáng)烈推薦的parsing techniques以及編譯龍虎鯨書,個(gè)人感覺(jué)都不適合入門學(xué)習(xí),在此推薦胡倫俊的編譯原理(電子工業(yè)出版社),針對(duì)概念的例子講解很多,很適合入門學(xué)習(xí)。當(dāng)然也不需要特別深入研究,知道詞法分析和語(yǔ)法分析的相關(guān)概念和方法就可以愉快的使用ply了。文檔鏈接:http://www.pchou.info/open-source/2014/01/18/52da47204d4cb.html
為了方便大家上手,以求解多元一次方程組為例,講解一下ply的使用。