antlr簡介及中文手冊_第1頁
已閱讀1頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Antlr簡介簡介0606通訊軟件通訊軟件0638202706382027鄭毅鄭毅本文主要介紹了什么是本文主要介紹了什么是ANTLRANTLR,以及,以及ANTLRANTLR的使用,其中的使用,其中ANTLRANTLR的使用包括了的使用包括了ANTLRANTLR的安裝及使用,裝及使用,ANTLRANTLR語法文件解析,語法文件解析,ANTLRANTLR規(guī)則(規(guī)則(RULERULE)解析,)解析,ANTLRANTLR語法實例語法實例—Se

2、nsSQLSensSQL,ANTLRANTLRStudioStudio及其功能介紹等。及其功能介紹等。Antlr(ANotherToolfLanguageRecognition)是一個工具,前身是PCCTS它為我們構造自己的識別器(recognizers)、編譯器(compiler)和轉換器(translats)提供了一個基礎。通過定義自己的語言規(guī)則,Antlr可以為我們生成相應的語言解析器,這樣便可以省卻了自己全手工打造的勞苦。它是這

3、樣的一種工具,它可以接受文法語言描述,并能產生識別這些語言的語句的程序。作為翻譯程序的一部分,你可以使用簡單的操作符和動作來參數化你的文法,使之告訴ANTLR怎樣去創(chuàng)建抽象語法樹(AST)和怎樣產生輸出。ANTLR知道怎樣去生成識別程序,語言包括Java,C,C#和不久的Python。ANTLR知道怎樣構建識別程序,這些程序可以對以下三種不同的輸入應用文法結構:(i)字符流(ii)記號流,和(iii)兩維的樹結構。很自然的它們分別與詞法

4、分析程序(lexers,以下簡稱lexer),語言解析程序和樹遍歷程序向匹配。這個用于定義這些語法的元語言,在所有情況下幾乎一樣的。一旦你對ANTLR和類似工具比較順手,你會開始以一種新的目光來看編程。許多任務強烈需要語言解決方案,而不是采用傳統(tǒng)編程語言的做法。比如,這些過程的注解都是用特倫斯標記語言寫的。而ANTLR則能來將文本(內含一些額外的東西和轉換)轉化為HTML,PDF或者其他那些生成程序的文件格式。最后,ANTLR只是一件工

5、具,僅僅這些。雖然它能通過將容易理解的乏味部分自動化來幫助你創(chuàng)建軟件,但卻不能企圖讓你指定整個編譯器。例如,在單個的描述里就不行。那些宣稱這類事情非常偉大,可以為發(fā)布刊物文章編寫驚人的“一攬子解決方案”,卻會悲慘失敗在實際項目中。詞法分析器(詞法分析器(LexerLexer)詞法分析器又稱為Scanner,Lexicalanalyser和Tokenizer。程序設計語言通常由關鍵字和嚴格定義的語法結構組成。編譯的最終目的是將程序設計語言

6、的高層指令翻譯成物力機器或虛擬機可以執(zhí)行的指令。此法分析器的工作是分析量化那些本來毫無意義的字符流,將他們翻譯成離散的字符組(也就是一個一個的Token)括關鍵字,標識符,符號(symbols)和操作符供語法分析器使用。語法分析器(語法分析器(ParserParser)編譯器又稱為Syntacticalanalyser。在分析字符流的時候,Lexer不關心所生成的單個Token的語法意義及其與上下文之間的關系,而這就是Parser的工作

7、。語法分析器將收到的Tokens組織起來,并轉換成為目標語言語法定義所允許的序列。無論是Lexer還是Parser都是一種識別器,Lexer是字符序列識別器而Parser是Token序列識別器。他們在本質上是類似的東西,而只是在分工上有所不同而已。ANTLRANTLRANTLR將上述兩者結合起來,它允許我們定義識別字符流的詞法規(guī)則和用于解釋Token流的詞法分析規(guī)則。然后,ANTLR將根據用戶提供的語法文件自動生成相應的詞法語法分析器。

8、用戶可以利用他們將輸入的文本進行編譯,并轉換成其他形式(如AST—AbstractSyntaxTree,抽象的語法樹)。2.你在這一部分所提供的內容對于文件中的每個語法都是唯一的。這一區(qū)域的內容將出現在實際的類定義之前。也就是說,兩個impt僅屬于類CalcParser,而不屬于在同一個文件中定義的其他類(如CalcLexer)3.這里是語法定義部分,你同樣可以將它看成是類定義。4.在Option域中,你可以為你的語法提供可選項。例如是

9、否建立缺省的抽象語法樹,指定LL(K)中的參數k的值(缺省為1)等等,更詳細的參數請參閱ANTLR自帶的手冊。5.Token部分用來聲明那些在詞法分析器中沒有被聲明的“想象的”token。這些信息通常用在TreeParser中指定“想象”的節(jié)點。6.這是另一個Action區(qū),ANTLR將會忠實地將這一區(qū)域內的信息放置到類的定義當中,相當于類的成員方法,主要為用戶提供一種在Parser種定制可擴展方法的途徑。ANTLR規(guī)則(規(guī)則(RULE

10、)解析)解析在ANTLR的語法文件中,一個規(guī)則的定義是與一個由ANTLR生成的Java源文件相對應的。1,2,3,4:正如你所看到的那樣,我們可以在一個規(guī)則定義中作與一個函數等價的所有事情。我們可以為規(guī)則指定參數(像上面的inta),制定返回值(intc),甚至拋出一個異常。從右半面我們可以清楚地看到,所有在規(guī)則中定義的內容都被忠實而準確的翻譯到Java源文件的相應位置。5:這一可選的部分為我們提供了指定某些可選參數的能力。例如圖中所示

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論