?lex 通過(guò)輸入一個(gè).l 文件生成一個(gè)lex.yy.c 文件,然后通過(guò)c 編譯器編譯成一個(gè)可執(zhí)行的詞法分析器。 該詞法分析器掃描輸入源文件,生成一個(gè)token 符號(hào)流給后面語(yǔ)法分析器使用。
?
.l 文件的結(jié)構(gòu), 分成三個(gè)部分,聲明, 轉(zhuǎn)換規(guī)則, 自定義規(guī)則。 三個(gè)部分由%%分割
declarations %% translation rules %% auxiliary procedures
聲明段, 包含希望出現(xiàn)出現(xiàn)再目標(biāo)c文件種的代碼, 正則表達(dá)式的聲明。符號(hào)常量的聲明。%{ %} 包裹內(nèi)容
#include <stdio.h> #include "y.tab.h" typedef char * YYSTYPE; // 符號(hào)常量聲明 char * yylval;
/*?regular?definitions?*/
2delim?[?\t\n]ws?
letter?[A-Za-z]
digit?[0-9]
%}
規(guī)則段? 由正則表達(dá)式和動(dòng)作組成? {} 內(nèi)表示要執(zhí)行的代碼動(dòng)作
%% /* {BEGIN(commemts)} */ {END(comments)} ..... %%
自定義規(guī)則文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-824999.html
其他內(nèi)嵌代碼文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-824999.html
到了這里,關(guān)于Lex 生成一個(gè)詞法分析器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!