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

正文內(nèi)容

antlr簡介及中文手冊(參考版)

2025-07-02 08:22本頁面
  

【正文】 }編譯得到最終的結(jié)果。 x = ()。 ExprParser parser( lexer )。void main(){ fstream from()。 cout The Result is : x endl。 double x = 0。void main(){ ExprLexer lexer( cin )。在VC的Output窗口里面會顯示出如下的內(nèi)容: Configuration: AntlrCpp Win32 Debug Performing Custom Build Step on .\ ANTLR Parser Generator Version 19892004 0 error(s), 0 warning(s)此時,分析器的源代碼已經(jīng)生成,將生成的所有cpp文件和hpp文件添加到工程中。新建工程。在該文法文件中,定義了一個分析器類ExprParser和一個詞法掃描器類ExprLexer。} 。\t39。 39。^39。TOK_TAN :tan。 // math tokenTOK_SIN :sin。RETURN :39。939。039。.39。939。039。939。039。/39。*39。39。+39。)39。(39。 caseSensitive = false。 } class ExprLexer extends Lexer。exception catch [ANTLR_USE_NAMESPACE(antlr)ANTLRExceptionamp。} | TOK_TAN x = atom { value = tan (x)。 } | TOK_SIN x = atom { value = sin (x)。 atom returns [double value=0]{double x。} : value = atom ( TOK_POW x = atom { value = pow(value,x)。} )* 。} : value=factor ( STAR x=factor {value*=x。 ex] { // catch all exceptions and report it reportError(())。} )* 。} : value=term ( PLUS x=term {value+=x。} class ExprParser extends Parser。在該表達(dá)式中允許出現(xiàn)的運算符除了加減乘除之外,還包括求冪運算符“^”,以及sin、cos和tan三個三角函數(shù)。C++程序的例子下面就給出一個ANTLR生成的C++描述的分析器的實例。// Other options}language選項的默認(rèn)值是“Java”。設(shè)定ANTLR生成的語言(轉(zhuǎn)自ANTLR中文手冊)ANTLR有很多選項,可以通過在文法文件中的options塊中進(jìn)行設(shè)置,其中包括ANTLR最終生成的語言。其意義是:數(shù)字(NUM)的第一字符是‘1’到‘9’中的一個字符,后面是0個或多個‘0’到‘9’之間的字符。939。039。939。139。Token的定義方法與規(guī)則類似。 。 expr 39。 id 39。例如如下的規(guī)則就描述了C語言中的賦值語句的語法:assignment_stat: 其中最為重要的是規(guī)則和token的定義。文法文件的語法簡介(轉(zhuǎn)自ANTLR中文手冊)本文只是簡單地介紹一個文法文件的語法,具體內(nèi)容可以參閱ANTLR的相關(guān)文檔。文法文件的編寫基本是面向被解決的問題的。它是ANTLR生成程序的依據(jù)。e) {cout () endl。()。int main(){try {CalcLexer lexer(cin)。:include “”include “”includeusing namespace std。一個計算器的語法程序就寫好了。mexpr : expr ( (MUL | DIV) expr )*。}。就是當(dāng)匹配到(’0′..’9′)*后,設(shè)置token類型為INT,當(dāng)發(fā)現(xiàn)后面跟著小數(shù)點和數(shù)字后,重新設(shè)置token類型為REAL。 } )? 。NUM : (’0′..’9′)+ { $setType(INT)。RPAREN : ‘)’ 。DIV : ‘/’ 。SUB : ‘’ 。首先是運算符。同理,CalcLexer是詞法分析類,繼承ANTLR里的Lexer類。options里設(shè)置language為”Cpp”,表示要生成c++代碼。class CalcLexer extends Lexer。options {language = “Cpp”。一.利用ANTLR達(dá)到計算器需求:+,-,247。這個超類將是完整定義的(fullyqualified),在雙引號中,注:以上資料均來于網(wǎng)絡(luò),鄙人收集整理。{ optional class code preamble }class YourTreeParserClass extends TreeParser。樹分析器必須唯一指定給語法分析器,除非規(guī)則定義中包含特殊形式致使它遞歸下降到樹中。這個超類將是完整定義的(fullyqualified),在雙引號中。這個開頭部分,如果它存在,將輸出到被生成的類文件中,在類定義的之前。語法分析器和詞法分析器可以以任何順序出現(xiàn)。optionstokens{ optional action for instance vars/methods }lexer rules...包含在詞法分析器中的詞法規(guī)則在產(chǎn)生的類中變成成員方法。為了執(zhí)行詞法分析,你需要指定一個詞法分析器類,它描述了如何將輸入流分離成標(biāo)記流。例如class TinyCParser extends Parser()。你可以指定語法分析器超類,它將作為被生成的語法分析器的超類。 封閉的尖括號不能用來分隔類,因為一個左尖括號在文件頂就很難跟蹤與之匹配的右括號在文件的時??蛇x的類的預(yù)定義可以是包含在{}中的任意文本。optionstokens{ optional action for instance vars/methods }parser rules... 當(dāng)在面向?qū)ο笳Z言中生成代碼時,語法分析器類將導(dǎo)致在輸出中是一個類,規(guī)則都會變成這個類的成員函數(shù)。一個語法文件(.g)只包含一個語法分析器類定義(和詞法分析器和樹遍歷器一起)一個語法分析器定義在它的選項(options)和規(guī)則定義之前??锤髯缘母戒洝 header 節(jié)是語法文件的第一個節(jié)。在Java中,這可以用來為最后的語法分析器指定一些包文件。 規(guī)則結(jié)束 ... 元素選項 class 語法類 extends 指定語法基類 returns 指定返回類型 options options 節(jié) tokens tokens 節(jié) header header 節(jié) tokens token 定義節(jié) Header 節(jié) 一個header節(jié)包含了一些將直接被替換到輸出的語法分析器
點擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1