資源描述:
《嚴(yán)格來說.這并不是講迷J》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、維普資訊http://www.cqvip.com技術(shù)·Java嚴(yán)格來說.這并不是講迷Java鞋術(shù)的文章:ANTER.一個(gè)被譽(yù)為蛙yacc/~x之后一個(gè)嶄新的語法分析囂受到很多人的美注只不過碰巧ANTER是用Java語言開發(fā)的對(duì)蝙譯器枝術(shù)感*趣的讀者也許能從這篇文章中發(fā)現(xiàn)一些有益的末西ANTLR入門TerenoeParr/文馬維達(dá)/編譯1.引介往2003初,ANTLR每月的下載次數(shù)大約是5,000。ANTLR完全處在共域中,甚至沒有版權(quán)并且還提供了壘部源碼。在上個(gè)世紀(jì)8O年代我通過手工構(gòu)建丁許許多多recoN1Nerc識(shí)別器)和tranNator(翻譯器)
2、,最后我厭煩透了,想使這個(gè)2.安裝ANTLR(以2.7.2為例)過程自動(dòng)化;由此產(chǎn)生了我的座右銘:為何要用五天時(shí)間手工蝙寫你能蝣用一生中的五年使之ANT1.R以單個(gè))或壓縮的Lar文件的形式提供。解壓你自動(dòng)他的程序?”下載的文件,你將得到一個(gè)叫作antlr2.7.2的目錄,其子目手工構(gòu)逮如此多項(xiàng)目的好處是你能看到它們的共性,并且錄有a=【1t1r.docexamples及Ub。你會(huì)發(fā)現(xiàn)antlr.1at(<400k),看到我們可以合理地期待哪些東西被形式化和自動(dòng)化。那時(shí)我其中含有使用ANTLR生成的、基于Java的recognizergr~的井不太了解y
3、acc總之我想要的是能夠重新生成我手工構(gòu)建代所有runtime,并且還包含了ANTLR工具自身。你需要把碼的軟件。于是就有了ANTLR(實(shí)際上最初叫作PCCTS)?,F(xiàn)antir2.7.2/an~r.jar放人你的cLAssPATH環(huán)境變量,以讓在,我花在開發(fā)ANTI.R的時(shí)間已經(jīng)超過了十年。系統(tǒng)找到ANTLR.claSs文件例如.如果你把a(bǔ)ntLr2.7.2ANTLR(AN~herToolforLatwaageRecogru~on)能夠放在目錄/tools中,你需要把接受文法語言描述,井生成能識(shí)別用語言書寫的文句程序。作/t~ls/ar,tlr-2.7.
4、2/arrtlr.jar附加到你的elASSPATHI如果你用的是Windows系統(tǒng).為translabr的—部分,體可以通過簡單的操怍符和動(dòng)作來擴(kuò)充Ⅲ0改用你的文法,以告訴ANTLR怎樣構(gòu)建AST(AbstractSyntax\tools\ant1r一27.2%antlr.jarTree,抽象晤法樹】.及怎樣生成輸出。ANT[.R能夠生成用對(duì)antlr.+的引用將會(huì)映射到/tools/anflr2.7.2/antlr/Java、c十+、C#編寫的『e∞gr也盯.很快還將支持~Lhon。.claSs。在你的機(jī)器上必須至少裝有JDKI.1。ANTLR構(gòu)建的
5、rec0gnizer能夠?qū)⑽姆ńY(jié)構(gòu)施加于三種不同ANTLR是命令行工具(但許多開發(fā)環(huán)境能讓體在該環(huán)境的輸八:ci】字符流,()token流(token:基本的、不可分中運(yùn)行ANTLR來處理文法文件)。antlr.To。1的main方法是的文法單位),以及(m)二維樹結(jié)構(gòu)。它們自然地對(duì)應(yīng)干lexer、ANTLR進(jìn)入點(diǎn)parser以及treewalker。定義這些文法的語法(也印元語言),javaant1r.Tno1fi]e.g幾乎在所有情況下都是一樣的如果你在運(yùn)行ANTLR時(shí)遇到問題,確定你正確地安裝了一旦休熟悉了ANTLR或類似的工具,你就會(huì)開始以不同J
6、ava,并確定你適當(dāng)?shù)卦O(shè)置了CLASSPH。的眼光看待編程。忤多任務(wù)都迫切需要遠(yuǎn)遠(yuǎn)超出通常的編程語要讓ANTLR生成使用c+或C#的recognizer,需要編言類型的語言方案。例如,本文是用TMLcTerence’aMarkup譯生成相應(yīng)的run,me詳情可參閱ANTLR附帶的文檔。Language)撰寫的。我討厭輸入ttTML,所以我編寫了一個(gè)微不足道的transla~r,用ANTLR把文本(進(jìn)行了一些額外的標(biāo)3ANTLR語法簡介記)轉(zhuǎn)換為HTML格式PDF格式,或無論什么我厭煩為之寫generatorc生成器)的格式。我們最好通過例子來了解ANTL
7、R。簡單的計(jì)算器是常用的最后,箍要指出,ANTLR只是一個(gè)工具——就是這么多。八門例子,原因是:它易于理解,并且很簡單有許多為ANrLR通過使那些得到了良好理解的、乏味的組件自動(dòng)化它能諺幫撰寫的類似側(cè)子和教程,我將在這里用自己的語言描述一個(gè)計(jì)助你構(gòu)建軟件,但它不會(huì)讓你用一條描述就定衛(wèi)出一整個(gè)編譯算器。首先我們將構(gòu)建能直接對(duì)簡單表達(dá)式進(jìn)行求值的計(jì)算器。器。對(duì)于要編寫令人吃驚的“一行器(oneliner),以在刊物然后我們將生成樹,并耐樹進(jìn)行求值,以得到相同的答案。上發(fā)表文章的人而言,聲稱能做到這樣的事情的工具的確很了盡管你知道你最終必須把字符輸人流分解為多
8、個(gè)token.不起,但在實(shí)際項(xiàng)目中,這些工具卻會(huì)悲慘地失敗。思考一下表達(dá)式的文法