

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Antlr簡(jiǎn)介簡(jiǎn)介0606通訊軟件通訊軟件0638202706382027鄭毅鄭毅本文主要介紹了什么是本文主要介紹了什么是ANTLRANTLR,以及,以及ANTLRANTLR的使用,其中的使用,其中ANTLRANTLR的使用包括了的使用包括了ANTLRANTLR的安裝及使用,裝及使用,ANTLRANTLR語(yǔ)法文件解析,語(yǔ)法文件解析,ANTLRANTLR規(guī)則(規(guī)則(RULERULE)解析,)解析,ANTLRANTLR語(yǔ)法實(shí)例語(yǔ)法實(shí)例—Se
2、nsSQLSensSQL,ANTLRANTLRStudioStudio及其功能介紹等。及其功能介紹等。Antlr(ANotherToolfLanguageRecognition)是一個(gè)工具,前身是PCCTS它為我們構(gòu)造自己的識(shí)別器(recognizers)、編譯器(compiler)和轉(zhuǎn)換器(translats)提供了一個(gè)基礎(chǔ)。通過(guò)定義自己的語(yǔ)言規(guī)則,Antlr可以為我們生成相應(yīng)的語(yǔ)言解析器,這樣便可以省卻了自己全手工打造的勞苦。它是這
3、樣的一種工具,它可以接受文法語(yǔ)言描述,并能產(chǎn)生識(shí)別這些語(yǔ)言的語(yǔ)句的程序。作為翻譯程序的一部分,你可以使用簡(jiǎn)單的操作符和動(dòng)作來(lái)參數(shù)化你的文法,使之告訴ANTLR怎樣去創(chuàng)建抽象語(yǔ)法樹(shù)(AST)和怎樣產(chǎn)生輸出。ANTLR知道怎樣去生成識(shí)別程序,語(yǔ)言包括Java,C,C#和不久的Python。ANTLR知道怎樣構(gòu)建識(shí)別程序,這些程序可以對(duì)以下三種不同的輸入應(yīng)用文法結(jié)構(gòu):(i)字符流(ii)記號(hào)流,和(iii)兩維的樹(shù)結(jié)構(gòu)。很自然的它們分別與詞法
4、分析程序(lexers,以下簡(jiǎn)稱(chēng)lexer),語(yǔ)言解析程序和樹(shù)遍歷程序向匹配。這個(gè)用于定義這些語(yǔ)法的元語(yǔ)言,在所有情況下幾乎一樣的。一旦你對(duì)ANTLR和類(lèi)似工具比較順手,你會(huì)開(kāi)始以一種新的目光來(lái)看編程。許多任務(wù)強(qiáng)烈需要語(yǔ)言解決方案,而不是采用傳統(tǒng)編程語(yǔ)言的做法。比如,這些過(guò)程的注解都是用特倫斯標(biāo)記語(yǔ)言寫(xiě)的。而ANTLR則能來(lái)將文本(內(nèi)含一些額外的東西和轉(zhuǎn)換)轉(zhuǎn)化為HTML,PDF或者其他那些生成程序的文件格式。最后,ANTLR只是一件工
5、具,僅僅這些。雖然它能通過(guò)將容易理解的乏味部分自動(dòng)化來(lái)幫助你創(chuàng)建軟件,但卻不能企圖讓你指定整個(gè)編譯器。例如,在單個(gè)的描述里就不行。那些宣稱(chēng)這類(lèi)事情非常偉大,可以為發(fā)布刊物文章編寫(xiě)驚人的“一攬子解決方案”,卻會(huì)悲慘失敗在實(shí)際項(xiàng)目中。詞法分析器(詞法分析器(LexerLexer)詞法分析器又稱(chēng)為Scanner,Lexicalanalyser和Tokenizer。程序設(shè)計(jì)語(yǔ)言通常由關(guān)鍵字和嚴(yán)格定義的語(yǔ)法結(jié)構(gòu)組成。編譯的最終目的是將程序設(shè)計(jì)語(yǔ)言
6、的高層指令翻譯成物力機(jī)器或虛擬機(jī)可以執(zhí)行的指令。此法分析器的工作是分析量化那些本來(lái)毫無(wú)意義的字符流,將他們翻譯成離散的字符組(也就是一個(gè)一個(gè)的Token)括關(guān)鍵字,標(biāo)識(shí)符,符號(hào)(symbols)和操作符供語(yǔ)法分析器使用。語(yǔ)法分析器(語(yǔ)法分析器(ParserParser)編譯器又稱(chēng)為Syntacticalanalyser。在分析字符流的時(shí)候,Lexer不關(guān)心所生成的單個(gè)Token的語(yǔ)法意義及其與上下文之間的關(guān)系,而這就是Parser的工作
7、。語(yǔ)法分析器將收到的Tokens組織起來(lái),并轉(zhuǎn)換成為目標(biāo)語(yǔ)言語(yǔ)法定義所允許的序列。無(wú)論是Lexer還是Parser都是一種識(shí)別器,Lexer是字符序列識(shí)別器而Parser是Token序列識(shí)別器。他們?cè)诒举|(zhì)上是類(lèi)似的東西,而只是在分工上有所不同而已。ANTLRANTLRANTLR將上述兩者結(jié)合起來(lái),它允許我們定義識(shí)別字符流的詞法規(guī)則和用于解釋Token流的詞法分析規(guī)則。然后,ANTLR將根據(jù)用戶(hù)提供的語(yǔ)法文件自動(dòng)生成相應(yīng)的詞法語(yǔ)法分析器。
8、用戶(hù)可以利用他們將輸入的文本進(jìn)行編譯,并轉(zhuǎn)換成其他形式(如AST—AbstractSyntaxTree,抽象的語(yǔ)法樹(shù))。2.你在這一部分所提供的內(nèi)容對(duì)于文件中的每個(gè)語(yǔ)法都是唯一的。這一區(qū)域的內(nèi)容將出現(xiàn)在實(shí)際的類(lèi)定義之前。也就是說(shuō),兩個(gè)impt僅屬于類(lèi)CalcParser,而不屬于在同一個(gè)文件中定義的其他類(lèi)(如CalcLexer)3.這里是語(yǔ)法定義部分,你同樣可以將它看成是類(lèi)定義。4.在Option域中,你可以為你的語(yǔ)法提供可選項(xiàng)。例如是
9、否建立缺省的抽象語(yǔ)法樹(shù),指定LL(K)中的參數(shù)k的值(缺省為1)等等,更詳細(xì)的參數(shù)請(qǐng)參閱ANTLR自帶的手冊(cè)。5.Token部分用來(lái)聲明那些在詞法分析器中沒(méi)有被聲明的“想象的”token。這些信息通常用在TreeParser中指定“想象”的節(jié)點(diǎn)。6.這是另一個(gè)Action區(qū),ANTLR將會(huì)忠實(shí)地將這一區(qū)域內(nèi)的信息放置到類(lèi)的定義當(dāng)中,相當(dāng)于類(lèi)的成員方法,主要為用戶(hù)提供一種在Parser種定制可擴(kuò)展方法的途徑。ANTLR規(guī)則(規(guī)則(RULE
10、)解析)解析在ANTLR的語(yǔ)法文件中,一個(gè)規(guī)則的定義是與一個(gè)由ANTLR生成的Java源文件相對(duì)應(yīng)的。1,2,3,4:正如你所看到的那樣,我們可以在一個(gè)規(guī)則定義中作與一個(gè)函數(shù)等價(jià)的所有事情。我們可以為規(guī)則指定參數(shù)(像上面的inta),制定返回值(intc),甚至拋出一個(gè)異常。從右半面我們可以清楚地看到,所有在規(guī)則中定義的內(nèi)容都被忠實(shí)而準(zhǔn)確的翻譯到Java源文件的相應(yīng)位置。5:這一可選的部分為我們提供了指定某些可選參數(shù)的能力。例如圖中所示
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- antlr 參考手冊(cè)
- 中文簡(jiǎn)介下載
- 中文域名簡(jiǎn)介
- 鍵盤(pán)英文中文讀法及功能簡(jiǎn)介
- 無(wú)損檢測(cè)手冊(cè)簡(jiǎn)介
- pythonimaginglibrary中文手冊(cè)pil中文手冊(cè)python圖像處理
- antlr指南(v3.0)
- opencv中文手冊(cè)
- winpcap中文手冊(cè)
- fltk中文手冊(cè)
- nasm中文手冊(cè)
- ssd中文手冊(cè)
- 目標(biāo)管理手冊(cè)簡(jiǎn)介
- 納米魔術(shù)海綿簡(jiǎn)介中文
- codesys編程中文手冊(cè)
- 布袋維護(hù)手冊(cè)中文
- geoserver中文開(kāi)發(fā)手冊(cè)
- opencv中文手冊(cè)doc
- 企業(yè)中文簡(jiǎn)介英譯研究.pdf
- freertos入門(mén)手冊(cè)_中文
評(píng)論
0/150
提交評(píng)論