flex介紹
flex是乙個生成詞法分析器的工具,它可以利用正規表示式來生成匹配相應字串的c語言**,其語法格式基本同lex相同。
單詞的描述稱為模式(lexical pattern),模式一般用正規表示式進行精確描述。flex通過讀取乙個有規定格式的文字檔案,輸出乙個c語言源程式。
fex的輸入是檔案或輸入裝置,這些輸入中的資訊以正規表示式和c**的形式組成,這些形式被稱為規則(rule);
當可執行檔案被執行時,其分析輸入中可能存在的符合規則的內容,當找到任何乙個正規表示式相匹配內容時,相應的c**將被執行。
fex的輸入檔案由3段組成,用一行中只有%%來分隔;
定義: definition%%
規則: rules%%
使用者**:code
定義部分
其中定義有變數宣告,正規表示式宣告;
%
表示式名稱表示式在使用時需要將表示式名稱用{}
括起來;
乙個規則一行
正規表示式
動作函式可以呼叫在使用者**中定義的
下面有小例子
操作例子
1、在減壓的目錄下建立乙個以.l
結尾的檔案我這裡建立的是lex.l
,使用記事本開啟檔案(當然也可以使用別的了),編輯。在這裡,就使用簡單例子簡潔說明一下:
%
digit [0-
9]ointeger [1-
9]*%
%\n
.[ \t]+%
%int
main()
intyywrap()
13
14520
3、在專案目錄下,dos 命令提示符下(cmd)。執行win_flex ‐‐nounistd lex.l
(lex.l為你的專案名),執行成功會生成乙個lex.yy.c檔案。
對c程式進行編譯執行:
詞法分析器
首先寫正規表示式
例如:
單位整數:digit [0-9]因此,需要根據各詞的特徵將正規表示式寫出來。整數:ointeger [1-9]*
參考文獻
編譯原理(龍書)
編譯原理 詞法分析器
1 從源程式檔案中讀入字元。2 統計行數和列數用於錯誤單詞的定位。3 刪除空格類字元,包括回車 製表符空格。4 按拼寫單詞,並用 內碼,屬性 二元式表示。屬性值 token 的機內表示 5 如果發現錯誤則報告出錯 6 根據需要是否填寫識別符號表供以後各階段使用 int tag 0 設立標誌 一開始本...
編譯原理c 實現詞法分析器
根據設計的dfa完成手工詞法分析器的c 實現 共有四組測試樣例,要求格式完全一致。int main int main float i 1 1.005e 3 this is remark line1 type,int line1 keyword,main line1 bracket,line1 bra...
編譯原理,例 詞法分析器
編譯原理課作業要求自己寫乙個詞法分析器,我嘗試寫了一下。詞法分析 電腦科學中將字串行轉換為單詞 token 序列的過程。進行詞法分析的程式或者函式叫作詞法分析器 lexical analyzer 也叫掃瞄器 scanner 詞法分析器一般以函式的形式存在,供語法分析器呼叫。完成詞法分析任務的程式稱為...