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

正文內(nèi)容

antlr簡介及中文手冊-預(yù)覽頁

2025-07-23 08:22 上一頁面

下一頁面
 

【正文】 clipse插件來使我們有機(jī)會直接走出原始社會。安裝成功之后在Eclipse的工具欄上會出現(xiàn)一個(gè)詞法分析器的導(dǎo)航按鈕: 當(dāng)右鍵單點(diǎn)擊你的工程時(shí),你會發(fā)現(xiàn)控制是否使用ANTLR Studio的開關(guān):當(dāng)打開一個(gè)文法文件之后,可以看到如下界面:在右面的大綱窗口,列有所有Parser和Lexer的元素,可以看到Protected Token(例如Number)和其他普通的Token是不一樣的;在左面,不同的區(qū)域是用不同的顏色塊加亮來區(qū)分的。l 改進(jìn)了Debug功能,可以調(diào)試比較大的文法文件。這時(shí)你只需要將光標(biāo)放到脫字符號(^)上面(注:脫字符號用于指明在生成語法樹的時(shí)候,脫字符號所在的SubRule要作為樹或子樹的根節(jié)點(diǎn)):就會看到:Enable debugging in grammar files39。與調(diào)試其他Java文件一樣,我們可以在語法文件的任意位置插入斷點(diǎn):當(dāng)程序運(yùn)行至斷點(diǎn)之后,我們同樣可以像調(diào)試普通應(yīng)用程序一樣使用諸如“跳過”,“繼續(xù)”等Java應(yīng)用程序的Debug方式來進(jìn)行,十分的方便和順手。主要用于把讀入的字節(jié)流根據(jù)規(guī)則分段。一些具體的操作都在這里。是分隔字節(jié)流的依據(jù)?!∫?guī)則實(shí)例名:就象Java中“Strings;”的s一樣。 Java語句:指當(dāng)滿足當(dāng)前規(guī)則時(shí)所執(zhí)行的語句。?。篖exer中定義的類型具體化,供Parser解析器調(diào)用。例如,“FirstName LastName”對ANTLR來說兩個(gè)標(biāo)記符而不是一個(gè)標(biāo)記符,空格,然后再接著一個(gè)標(biāo)記符。\37739。\b39。\t39。\f39。, 39。在語法分析器中是不被支持單引號的字符的。\n39。} )? { if (!eol) { if (LA(1)==EOF_CHAR) {error(EOF)。你可以在你的詞法分析器語法中覆蓋(1 是 39。當(dāng)前,ANTLR實(shí)際上不允許Unicode出現(xiàn)在字符串常量中(你不得不用轉(zhuǎn)義符)。o39。然而,ANTLR不會創(chuàng)建一個(gè)詞法分析器規(guī)則來匹配這些字符串。 你可能想在你的動作中使用這些字符串常量的標(biāo)記的類型值,例如在錯(cuò)誤處理器的同步部分。標(biāo)記引用 以大寫字符開頭的標(biāo)識符稱為標(biāo)記引用。換句話說,在詞法分析器中的標(biāo)記引用將對當(dāng)作一個(gè)規(guī)則引用。idList : ( ID )+。a39。 // token definition 規(guī)則引用 以小寫字母開頭的標(biāo)識符是為ANTLR的語法規(guī)則。在字符串和字符中的尖括號不是動作分隔符。 codeBlock[int scope, String name] // input argumentsreturns [int x] // return values: ... 。許多人喜歡我們用普通的括號來括住參數(shù),但是括號在EBNF中已經(jīng)被很好的用來定義語法組符號(grammatical grouping symbols)。這個(gè)主要用在C++的輸出中,因?yàn)镃++需要一些元素在引用之前必須被聲明。根據(jù)選擇的目標(biāo)語言的不同,不同類型header節(jié)都是可能出現(xiàn)的。一個(gè)語法文件中的語法分析器定義通常是這個(gè)樣子: { optional class code preamble }class YourParserClass extends Parser。這個(gè)預(yù)定義,如果它存在的話,將被直接輸出到生成類文件中,并且在類定義之前。這個(gè)超類必須是完整定義的,在雙引號中。它的語法類似于語法分析器類: { optional class code preamble }class YourLexerClass extends Lexer。可選類的開頭是括在{}中的任意文本。樹分析器定義一個(gè)樹分析器像語法分析器,不同的是它處理二維的由節(jié)點(diǎn)組成的抽象語法樹,而不是處理由標(biāo)記組成的流。optionstokens{ optional action for instance vars/methods }tree parser rules...你可以定義一個(gè)樹分析器的超類,它可以被用來作為產(chǎn)生的樹解析器的超類。(,) 測試樣例+ 2 * 3 + 5 4/2 2.(1 + 2) * 3 + 5 4 / (2+2) 3.(*)+8/(43)* 下面就讓我們動手完成一個(gè)計(jì)算器,:)先搭個(gè)框架。這些就是基本框架了。接著定義計(jì)算器的詞法規(guī)則。MUL : ‘*’ 。接著是操作數(shù)。(注: $setType是ANTLR內(nèi)置函數(shù),用來設(shè)置token類型。statement : mexpr ( (PLUS | SUB) mexpr )*。讓我們來生成c++代碼,實(shí)際測試一下.$java cp /usr/share/java/ ANTLR Parser Generator Version (20060528) 19892005$ls $我們可以看到,生成了6個(gè)文件。CalcParser parser(lexer)。}}編譯之:$g++ o Calc lantlr測試用例:$ ./Calc1 + 2 * 3 + 5 4/2$ ./Calc(1 + 2) * 3 + 5 4 / (2+2)$ ./Calc(*)+8/(43)*$二.利用ANTLR生成C++描述的分析程序文法文件文法就是語言識別的規(guī)則。程序員只需要集中精力思考解決問題的邏輯,而不是羈絆于某種程序設(shè)計(jì)語言的實(shí)現(xiàn)細(xì)節(jié),因此降低了出現(xiàn)錯(cuò)誤的可能性。規(guī)則的定義形式和編譯理論中的擴(kuò)展巴科斯范式(EBNF)極為相似,包括規(guī)則名、規(guī)則體、一個(gè)用作結(jié)束標(biāo)志的分號和異常處理部分(可省略)。39。例如如下的token定義就表示一個(gè)十進(jìn)制的整數(shù):NUM: (39。)(39。)* 。如果要生成C++描述的分析器程序,就要如下設(shè)定:options{language=Cpp。該分析器的功能是分析用戶輸入的一個(gè)算術(shù)表達(dá)式,給出該表達(dá)式的最終結(jié)果。{} // rulesexpr returns [double value=0]{double x。exception catch [ANTLR_USE_NAMESPACE(antlr)ANTLRExceptionamp。} | SLASH x=factor { value /= x。 } )* 。} | TOK_COS x = atom { value = cos (x)。 ex] { reportError(())。} // tokensLPAREN :39。PLUS :39。STAR :39。NUM :(39。)(39。)*(39。..39。\n39。TOK_POW :39。 | 39。(‘g’是默認(rèn)的文法文件的擴(kuò)展名)。在“Commands”里面填入調(diào)用ANTLR編譯文法文件的命令: java cp ANTLRpath\\ o $(WkspDir) $(InputName).g在“Outputs”里面填入ANTLR編譯文法文件后要生成的所有文件的名字,如下: 生成分析器源代碼編譯,執(zhí)行編譯操作。 ExprParser parser( lexer )。}分析器分析一個(gè)文件里面的字符串的話:include include include iostreaminclude fstreamusing namespace std。 double x =
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1