freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

antlr簡(jiǎn)介及中文手冊(cè)-展示頁(yè)

2025-07-08 08:22本頁(yè)面
  

【正文】 給出查詢(xún)的示例:通常,編譯一個(gè)查詢(xún)的目的是要把它轉(zhuǎn)化成某種被查詢(xún)?cè)O(shè)備可以理解的形式。像這里就僅僅是打印錯(cuò)誤棧信息。例如圖中所示代表告訴ANTLR在生成代碼的時(shí)候不要生成缺省的錯(cuò)誤處理部分,這部分將由用戶(hù)自己負(fù)責(zé)。從右半面我們可以清楚地看到,所有在規(guī)則中定義的內(nèi)容都被忠實(shí)而準(zhǔn)確的翻譯到Java源文件的相應(yīng)位置。1,2,3,4:正如你所看到的那樣,我們可以在一個(gè)規(guī)則定義中作與一個(gè)函數(shù)等價(jià)的所有事情。 這是另一個(gè)Action區(qū),ANTLR將會(huì)忠實(shí)地將這一區(qū)域內(nèi)的信息放置到類(lèi)的定義當(dāng)中,相當(dāng)于類(lèi)的成員方法,主要為用戶(hù)提供一種在Parser種定制可擴(kuò)展方法的途徑。6. Token部分用來(lái)聲明那些在詞法分析器中沒(méi)有被聲明的“想象的”token。5. 在Option域中,你可以為你的語(yǔ)法提供可選項(xiàng)。4.這一區(qū)域的內(nèi)容將出現(xiàn)在實(shí)際的類(lèi)定義之前。在本例中你可以將包名和其他信息放到這一區(qū)域中,生成的結(jié)果如由面對(duì)應(yīng)代碼部分所示。為了更好的使用ANTLR,你還可以下載ANTLR的Eclipse插件來(lái)幫助你完成工作。寫(xiě)好語(yǔ)法文件(),運(yùn)行命令“java ”就可以獲得自動(dòng)生成語(yǔ)法/詞法分析器。用戶(hù)可以利用他們將輸入的文本進(jìn)行編譯,并轉(zhuǎn)換成其他形式(如AST—Abstract Syntax Tree,抽象的語(yǔ)法樹(shù))。ANTLRANTLR將上述兩者結(jié)合起來(lái),它允許我們定義識(shí)別字符流的詞法規(guī)則和用于解釋Token流的詞法分析規(guī)則。無(wú)論是Lexer還是Parser都是一種識(shí)別器,Lexer是字符序列識(shí)別器而Parser是Token序列識(shí)別器。在分析字符流的時(shí)候,Lexer不關(guān)心所生成的單個(gè)Token的語(yǔ)法意義及其與上下文之間的關(guān)系,而這就是Parser的工作。此法分析器的工作是分析量化那些本來(lái)毫無(wú)意義的字符流,將他們翻譯成離散的字符組(也就是一個(gè)一個(gè)的Token)括關(guān)鍵字,標(biāo)識(shí)符,符號(hào)(symbols)和操作符供語(yǔ)法分析器使用。程序設(shè)計(jì)語(yǔ)言通常由關(guān)鍵字和嚴(yán)格定義的語(yǔ)法結(jié)構(gòu)組成。那些宣稱(chēng)這類(lèi)事情非常偉大,可以為發(fā)布刊物文章編寫(xiě)驚人的“一攬子解決方案”,卻會(huì)悲慘失敗在實(shí)際項(xiàng)目中。 雖然它能通過(guò)將容易理解的乏味部分自動(dòng)化來(lái)幫助你創(chuàng)建軟件,但卻不能企圖讓你指定整個(gè)編譯器。而ANTLR則能來(lái)將文本(內(nèi)含一些額外的東西和轉(zhuǎn)換)轉(zhuǎn)化為HTML,PDF或者其他那些生成程序的文件格式。許多任務(wù)強(qiáng)烈需要語(yǔ)言解決方案,而不是采用傳統(tǒng)編程語(yǔ)言的做法。這個(gè)用于定義這些語(yǔ)法的元語(yǔ)言,在所有情況下幾乎一樣的。 ANTLR知道怎樣構(gòu)建識(shí)別程序,這些程序可以對(duì)以下三種不同的輸入應(yīng)用文法結(jié)構(gòu):(i) 字符流, (ii) 記號(hào)流,和(iii)兩維的樹(shù)結(jié)構(gòu)。作為翻譯程序的一部分,你可以使用簡(jiǎn)單的操作符和動(dòng)作來(lái)參數(shù)化你的文法,使之告訴ANTLR怎樣去創(chuàng)建抽象語(yǔ)法樹(shù)(AST)和怎樣產(chǎn)生輸出。通過(guò)定義自己的語(yǔ)言規(guī)則,Antlr可以為我們生成相應(yīng)的語(yǔ)言解析器,這樣便可以省卻了自己全手工打造的勞苦。Antlr簡(jiǎn)介06通訊軟件 06382027 鄭毅本文主要介紹了什么是ANTLR,以及ANTLR的使用,其中ANTLR的使用包括了ANTLR的安裝及使用,ANTLR語(yǔ)法文件解析,ANTLR規(guī)則(RULE)解析,ANTLR語(yǔ)法實(shí)例—SensorSQL,ANTLR Studio及其功能介紹等。 Antlr(ANother Tool for Language Recognition)是一個(gè)工具,前身是 PCCTS,它為我們構(gòu)造自己的識(shí)別器(recognizers)、編譯器(piler)和轉(zhuǎn)換器(translators)提供了一個(gè)基礎(chǔ)。 它是這樣的一種工具,它可以接受文法語(yǔ)言描述,并能產(chǎn)生識(shí)別這些語(yǔ)言的語(yǔ)句的程序。ANTLR知道怎樣去生成識(shí)別程序,語(yǔ)言包括Java,C++,C和不久的Python。很自然的它們分別與詞法分析程序(lexers,以下簡(jiǎn)稱(chēng)lexer),語(yǔ)言解析程序和樹(shù)遍歷程序向匹配。 一旦你對(duì)ANTLR和類(lèi)似工具比較順手,你會(huì)開(kāi)始以一種新的目光來(lái)看編程。比如,這些過(guò)程的注解都是用特倫斯標(biāo)記語(yǔ)言寫(xiě)的。 最后,ANTLR只是一件工具,僅僅這些。例如,在單個(gè)的描述里就不行。詞法分析器(Lexer)詞法分析器又稱(chēng)為Scanner,Lexical analyser和Tokenizer。編譯的最終目的是將程序設(shè)計(jì)語(yǔ)言的高層指令翻譯成物力機(jī)器或虛擬機(jī)可以執(zhí)行的指令。語(yǔ)法分析器(Parser)編譯器又稱(chēng)為Syntactical analyser。語(yǔ)法分析器將收到的Tokens組織起來(lái),并轉(zhuǎn)換成為目標(biāo)語(yǔ)言語(yǔ)法定義所允許的序列。他們?cè)诒举|(zhì)上是類(lèi)似的東西,而只是在分工上有所不同而已。然后,ANTLR將根據(jù)用戶(hù)提供的語(yǔ)法文件自動(dòng)生成相應(yīng)的詞法/語(yǔ)法分析器。Antlr使用安裝及使用到()。ANTLR語(yǔ)法文件解析下面我們對(duì)圖中所描述的ANTLR語(yǔ)法文件做一些詳細(xì)的分析。1. header域:所有出現(xiàn)在這里的部分,都會(huì)出現(xiàn)在由ANTLR編譯之后生成的Java文件的最頂部。2. 你在這一部分所提供的內(nèi)容對(duì)于文件中的每個(gè)語(yǔ)法都是唯一的。也就是說(shuō),兩個(gè)import僅屬于類(lèi)CalcParser,而不屬于在同一個(gè)文件中定義的其他類(lèi)(如CalcLexer)3. 這里是語(yǔ)法定義部分,你同樣可以將它看成是類(lèi)定義。例如是否建立缺省的抽象語(yǔ)法樹(shù),指定LL(K)中的參數(shù)k的值(缺省為1)等等,更詳細(xì)的參數(shù)請(qǐng)參閱ANTLR自帶的手冊(cè)。這些信息通常用在TreeParser中指定“想象”的節(jié)點(diǎn)。ANTLR規(guī)則(RULE)解析在ANTLR的語(yǔ)法文件中,一個(gè)規(guī)則的定義是與一個(gè)由ANTLR生成的Java源文件相對(duì)應(yīng)的。我們可以為規(guī)則指定參數(shù)(像上面的int a),制定返回值(int c),甚至拋出一個(gè)異常。5:這一可選的部分為我們提供了指定某些可選參數(shù)的能力。7:在異常處理部分,我們可以指定自定義的異常處理方法。通常的做法有兩種,一種是像在上一節(jié)中提到的那樣,寫(xiě)好詳細(xì)的語(yǔ)法規(guī)則,在ANTLR生成相應(yīng)的Java文件之后,就可以直接使用其運(yùn)行結(jié)果。對(duì)于形如1+23*4/5^6這樣的表達(dá)式,只要寫(xiě)好語(yǔ)法規(guī)則,就可以在解析過(guò)程中直接得到運(yùn)算結(jié)果:首先ANTLR將其編譯成逆波蘭結(jié)構(gòu) ( ( + 1 2 ) ( / ( * 3 4 ) ( ^ 5 6 ) ) ) 。結(jié)果如下:不過(guò)這樣作有一個(gè)缺點(diǎn),就是在很多情況下,你可能并不知道要用什么樣的方法來(lái)處理。一旦要有所修改,就要重新編譯語(yǔ)法文件,生成新的Java代碼,不勝繁瑣。自動(dòng)生成的代碼嘛,結(jié)構(gòu)著實(shí)也不怎么樣,調(diào)試的時(shí)候也麻煩。上圖就是剛才演示的SensorSQL語(yǔ)法分析之后產(chǎn)生的結(jié)果。這時(shí)候,為了保證Where語(yǔ)句中的優(yōu)先級(jí),你就可以按照ANTLR文檔中關(guān)于生成語(yǔ)法樹(shù)的一章,生成類(lèi)似于這樣的結(jié)構(gòu),然后只需前序遍歷這顆語(yǔ)法樹(shù)的Where部分就可以達(dá)到目的,至于其他部分,順序遍歷一遍就好了。不過(guò)用“記事本或Editplus+命令行”或者干脆寫(xiě)個(gè)ANT腳本也不是不可以,但是總覺(jué)得在集成化IDE滿(mǎn)天飛的時(shí)代用這個(gè)方式有點(diǎn)過(guò)于原始,幸好Placid System 為我們提供了一個(gè)Eclipse插件來(lái)使我們有機(jī)會(huì)直接走出原始社會(huì)。唯一令人遺憾的是這個(gè)插件雖然功能很完善,卻是要收費(fèi)的,否則只有11天的試用期。安裝成功之后在Eclipse的工具欄上會(huì)出現(xiàn)一個(gè)詞法分析器的導(dǎo)航按鈕: 當(dāng)右鍵單點(diǎn)擊你的工程時(shí),你會(huì)發(fā)現(xiàn)控制是否使用ANTLR Studio的開(kāi)關(guān):當(dāng)打開(kāi)一個(gè)文法文件之后,可以看到如下界面:在右面的大綱窗口,列有所有Parser和Lexer的元素,可以看到Protected Token(例如Number)和其他普通的Token是不一樣的;在左面,不同的區(qū)域是用不同的顏色塊加亮來(lái)區(qū)分的。l 。l 改進(jìn)了Debug功能,可以調(diào)試比較大的文法文件。l 支持自動(dòng)的代碼補(bǔ)全功能,提供一個(gè)ANTLR文檔的比較全面的提示信息(如下所示)。這時(shí)你只需要
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1