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

正文內(nèi)容

第二章編譯器編寫工具-資料下載頁

2024-10-17 12:29本頁面

【導讀】析器編寫工具成為可能。LEX/YACC,基于C、UNIX環(huán)境。語義仍然需要人工編寫。的各部分填寫內(nèi)容。符、字和行計數(shù)。/*匹配到一個不包括空格、Tab鍵和換行符的字,三條規(guī)則被構(gòu)造成DFA插入到框架的中;規(guī)則里的語義動作被插入到框架的中;最后的mian被插入到框架的中。<1>C語言部分:%{......%}之間,C語句在LEX編譯器中不被處理,最后由C編譯器編譯;聲明、用戶定義子程序要合理安排,否則會出現(xiàn)不一致,小于右邊字符,否則出錯。當&#39;-&#39;表示其本身時,要放在方括。號的最左或最右。表示除空格、制表符和換行以外的其它字符。x*正規(guī)式x的閉包。匹配正規(guī)式x本身,()用來改變運算優(yōu)先級。正規(guī)式x可省略。^x匹配一行開始處的正規(guī)式x,如^ABCabcABC中第一個ABC。x{m,n}匹配m到n個正規(guī)式x,如ab{3,5}識別:ababab,abababab,源程序所需考慮的重要因素之一。

  

【正文】 // 入口聲明 %% // BEGIN ment 。 // 進入 C++注釋 /* BEGIN c_ment; // 進入 C注釋 ...... c_ment*/ BEGIN 0。 // C注釋結(jié)束 c_ment. 。 // C注釋內(nèi)容 c_ment\n ++linenum。 // C注釋內(nèi)容 ment . 。 // C++注釋結(jié)束 ment \n BEGIN 0。 LineNo ++。 // C++注釋結(jié)束 對比: c_ments = /*([^\*]|(\*)*[^\*/])*(\*)**/ LEX程序設(shè)計 如何從詞法分析器返回識別出的記號 ? yylex(): 返回記號的類別(內(nèi)部是一個整型數(shù)),如return ID等。 ? yylval: 全局變量,默認類型是 int,用它表示所識別記號的值。 ? yytext, yyleng: 全局變量,用來存放識別出的輸入序列,它們合起來可以表示正文形式的值,如標識符和字符串等。它們的內(nèi)容是由詞法分析器填進的。 如何從詞法分析器返回識別出的記號 yylex(), yylval, yytext, yyleng: 例 若輸入序列為整型數(shù) 258,整型數(shù)編碼是 40( NUMBER=40) ,識別整型數(shù)的規(guī)則為: [09]+ {sscanf(yytext,%d,amp。yylval)。return NUMBER。} 則從詞法分析器返回時各函數(shù)或變量的值分別為: yylex(): 40 yylval: 258 yytext: 258 yyleng: 3 它們均可以被調(diào)用該詞法分析器的語法分析器使用。 LEX的匹配原則和解決沖突的方法 ? 選擇最長的輸入序列進行匹配; ? 若幾個規(guī)則與同一字符串匹配,則選擇 LEX源程序中第一條出現(xiàn)的規(guī)則。 當輸入序列可以與 LEX的若干個規(guī)則相匹配時,就產(chǎn)生了沖突。 LEX用以下兩條原則來解決它們: 例 對于如下規(guī)則: begin { printf(keyword); } [az]+ { printf(id); } 輸入序列 輸出結(jié)果 begin keyword begins id 如果上述兩個規(guī)則書寫位置交換,則無論輸入序列是begin還是 begins,結(jié)果均為 id。 本次課結(jié)束
點擊復(fù)制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1