在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 介紹
高級調(diào)試
PLY 概要
前言和預(yù)備
如何繼續(xù)
Yacc
使用Python的優(yōu)化模式
語法分析基礎(chǔ)
Lex
多個語法和詞法分析器
介紹
序言

介紹

PLY 是純粹由 Python 實現(xiàn)的 Lex 和 yacc(流行的編譯器構(gòu)建工具)。PLY 的設(shè)計目標是盡可能的沿襲傳統(tǒng) lex 和 yacc 工具的工作方式,包括支持 LALR(1)分析法、提供豐富的輸入驗證、錯誤報告和診斷。因此,如果你曾經(jīng)在其他編程語言下使用過 yacc,你應(yīng)該能夠很容易的遷移到 PLY 上。

2001 年,我在芝加哥大學(xué)教授“編譯器簡介”課程時開發(fā)了的早期的 PLY。學(xué)生們使用 Python 和 PLY 構(gòu)建了一個類似 Pascal 的語言的完整編譯器,其中的語言特性包括:詞法分析、語法分析、類型檢查、類型推斷、嵌套作用域,并針對 SPARC 處理器生成目標代碼等。最終他們大約實現(xiàn)了 30 種不同的編譯器!PLY 在接口設(shè)計上影響使用的問題也被學(xué)生們所提出。從 2001 年以來,PLY 繼續(xù)從用戶的反饋中不斷改進。為了適應(yīng)對未來的改進需求,PLY3.0 在原來基礎(chǔ)上進行了重大的重構(gòu)。

由于 PLY 是作為教學(xué)工具來開發(fā)的,你會發(fā)現(xiàn)它對于標記和語法規(guī)則是相當嚴謹?shù)?,這一定程度上是為了幫助新手用戶找出常見的編程錯誤。不過,高級用戶也會發(fā)現(xiàn)這有助于處理真實編程語言的復(fù)雜語法。還需要注意的是,PLY 沒有提供太多花哨的東西(例如,自動構(gòu)建抽象語法樹和遍歷樹),我也不認為它是個分析框架。相反,你會發(fā)現(xiàn)它是一個用 Python 實現(xiàn)的,基本的,但能夠完全勝任的 lex/yacc。

本文的假設(shè)你多少熟悉分析理論、語法制導(dǎo)的翻譯、基于其他編程語言使用過類似 lex 和 yacc 的編譯器構(gòu)建工具。如果你對這些東西不熟悉,你可能需要先去一些書籍中學(xué)習(xí)一些基礎(chǔ),比如:Aho, Sethi 和 Ullman 的《Compilers: Principles, Techniques, and Tools》(《編譯原理》),和 O'Reilly' 出版的J ohn Levine 的《lex and yacc》。事實上,《lex and yacc》和 PLY 使用的概念幾乎相同。