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

正文內(nèi)容

antlr簡介及中文手冊-在線瀏覽

2024-08-09 08:22本頁面
  

【正文】 將光標(biāo)放到脫字符號(^)上面(注:脫字符號用于指明在生成語法樹的時候,脫字符號所在的SubRule要作為樹或子樹的根節(jié)點):就會看到:增強(qiáng)的Debug功能想要啟動或關(guān)閉ANTLR Studio的Debug功能,需要完成以下步驟:l 在工程中啟用/取消ANTLR Studiol 右鍵單擊工程,打開“屬性”中的ANTLR Studio選項卡。Enable debugging in grammar files39。與調(diào)試其他Java文件一樣,我們可以在語法文件的任意位置插入斷點:當(dāng)程序運(yùn)行至斷點之后,我們同樣可以像調(diào)試普通應(yīng)用程序一樣使用諸如“跳過”,“繼續(xù)”等Java應(yīng)用程序的Debug方式來進(jìn)行,十分的方便和順手。ANTLR中文手冊06通訊軟件 06382027 鄭毅本文主要概括了一些常用的ANTLR的使用方法,其中有Antlr的主要類,Antlr文法文件形式,生成Java類,如何生成Java類,如何執(zhí)行以及元語言詞匯表。主要用于把讀入的字節(jié)流根據(jù)規(guī)則分段?! arser:解析器類。一些具體的操作都在這里?! ±纾骸 lass P extends Parser; start Rule  :n:NAME {(Hithere, ());}??; class L extends Lexer;  //oneormorelettersfollowedbyanewline NAME:(’a’……’z’|’A’……’Z’) NEWLINE?。弧EWLINE?。骸痋r’’\n’//DOS  |’\n’//UNIX??;具體成分分析: 總體結(jié)構(gòu)   ClassPextendsParser ClassLextendsLexer 兩行同JAVA繼承一樣,P繼承Parser類;L繼承Lexer類。是分隔字節(jié)流的依據(jù)。如本例中的類型名NEWLINE出現(xiàn)在NEW的匹配規(guī)則中?!∫?guī)則實例名:就象Java中“Strings;”的s一樣?!☆愋兔蛞?guī)則名:可以是在Lexer中定義的類型名,也可以是Parser中定義的規(guī)則名?!ava語句:指當(dāng)滿足當(dāng)前規(guī)則時所執(zhí)行的語句。三、生成Java類  配置環(huán)境變量:classpath=.;x:\jdk\lib\;x:\:  會在當(dāng)前目錄下生成如下文件::Lexer文法分析器java類。?。篖exer中定義的類型具體化,供Parser解析器調(diào)用。四、執(zhí)行 編寫Main類.*; classMain{publicstaticvoidmain(String[]args){ try{ Llexer=newL(newDataInputStream()); Pparser=newP(lexer);?。ǎ?; }catch(Exceptione){(exception: e); }執(zhí)行 c:\javac*.java c:\javaMainTerence^ZHithere,Terencec:\元語言詞匯表空格定義 空格,tab符號和換行符號在ANTLR分隔諸如標(biāo)識符這樣的詞匯符號時作為分隔符。例如,“FirstName LastName”對ANTLR來說兩個標(biāo)記符而不是一個標(biāo)記符,空格,然后再接著一個標(biāo)記符。在語法類和規(guī)則中,Java風(fēng)格的文檔注釋也是可以接受的,在需要的時候,這些注釋可以被傳遞給生成的輸出文件。字符集 字符常數(shù)像Java中那樣被確定。\37739。\uFF0039。\b39。\r39。\t39。\n39。\f39。\39。, 39。)。在語法分析器中是不被支持單引號的字符的。你可以在詞法分析器規(guī)則的動作中檢測EOF_CHAR符號:// make sure nothing but newline or// EOF is past the endifENDIF{ boolean eol=false。\n39。\r39。} )? { if (!eol) { if (LA(1)==EOF_CHAR) {error(EOF)。} } } 。你可以在你的詞法分析器語法中覆蓋文件結(jié)束條件是一個位比特。(1 是 39。). 字符串字符串常數(shù)一個由雙引號括起來的一系列字符。當(dāng)前,ANTLR實際上不允許Unicode出現(xiàn)在字符串常量中(你不得不用轉(zhuǎn)義符)。f39。o39。r39。然而,ANTLR不會創(chuàng)建一個詞法分析器規(guī)則來匹配這些字符串。ANTLR將針對字符常量表來產(chǎn)生代碼檢測每個標(biāo)記中的文本,在手動關(guān)掉語法分析器對該標(biāo)記的處理之前獲得一個匹配時,會改變標(biāo)記的類型。 你可能想在你的動作中使用這些字符串常量的標(biāo)記的類型值,例如在錯誤處理器的同步部分。例如,文字“return”將有一個LITERAL_return值與之關(guān)聯(lián)。標(biāo)記引用 以大寫字符開頭的標(biāo)識符稱為標(biāo)記引用。在語法分析器規(guī)則中一個標(biāo)記引用將導(dǎo)致匹配特定的標(biāo)記。換句話說,在詞法分析器中的標(biāo)記引用將對當(dāng)作一個規(guī)則引用。但是當(dāng)做標(biāo)記而不是語法規(guī)則。idList : ( ID )+。class MyLexer extends Lexer。a39。z39。 // token definition 規(guī)則引用 以小寫字母開頭的標(biāo)識符是為ANTLR的語法規(guī)則。詞法規(guī)則不能引用語法規(guī)則。在字符串和字符中的尖括號不是動作分隔符。在字符串和字符中的方括號不是動作分隔符。 codeBlock[int scope, String name] // input argumentsreturns [int x] // return values: ... 。// pass 2 args, get returntestcblock{int y。許多人喜歡我們用普通的括號來括住參數(shù),但是括號在EBNF中已經(jīng)被很好的用來定義語法組符號(grammatical grouping symbols)。 符號 描述 (...) 子規(guī)則 (...)* 閉包子規(guī)則(零和多個) (...)+ 正閉包子規(guī)則(一個和多個) (...)? 可選(零個和一個) {...} 語義動作 [...] 規(guī)則參數(shù) {...}? 語義謂詞 (...)= 語法謂詞 | 可選符 .. 范圍符 ~ 非 . 通配符 = 賦值 : 標(biāo)號符, 規(guī)則開始 。這個主要用在C++的輸出中,因為C++需要一些元素在引用之前必須被聲明。一個header節(jié)看起來像下面這樣:header { source code in the language generated by ANTLR。根據(jù)選擇的目標(biāo)語言的不同,不同類型header節(jié)都是可能出現(xiàn)的。 語法分析器類定義 所有的語法規(guī)則必須和一個語法分析器關(guān)聯(lián)。一個語法文件中的語法分析器定義通常是這個樣子: { optional class code preamble }class YourParserClass extends Parser。在C中,類將導(dǎo)致生成一個結(jié)構(gòu),一些名字混淆(namemangling)算法將用在上面使最終的規(guī)則函數(shù)是全局唯一的。這個預(yù)定義,如果它存在的話,將被直接輸出到生成類文件中,并且在類定義之前。相反,一個語法分析器類假定是連續(xù)的,知道碰到下一個類的語句。這個超類必須是完整
點擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1