日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lex/flex 笔记

發(fā)布時間:2025/6/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lex/flex 笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
lex/flex 筆記

Lex的匹配策略:?

1.?按最長匹配原則確定被選中的單詞?

2.?如果一個字符串能被若干正規(guī)式匹配,則先匹配排在前面的正規(guī)式。

?

lex源程序的寫法:Lex源程序必須按照Lex語言的規(guī)范來寫,其核心是一組詞法規(guī)則(正規(guī)式)。一般而言,一個Lex源程序分為三部分,三部分之間以符號%%分隔。 ?

定義段

%%

詞法規(guī)則段

%%?

輔助函數(shù)段

?

Lex源程序中常用到的變量及函數(shù): ?

yyin和yyout:這是Lex中本身已定義的輸入和輸出文件指針。這兩個變量指明了lex生成的詞法分析器從哪里獲得輸入和輸出到哪里。默認:鍵盤輸入,屏幕輸出。 ?

yytext和yyleng:這也是lex中已定義的變量,直接用就可以了。

yytext:指向當(dāng)前識別的詞法單元(詞文)的指針 yyleng:當(dāng)前詞法單元的長度。 ?

ECHO:Lex中預(yù)定義的宏,可以出現(xiàn)在動作中,相當(dāng)于fprintf(yyout, “%s”,yytext),即輸出當(dāng)前匹配的詞法單元。 ?

yylex():詞法分析器驅(qū)動程序,用Lex翻譯器生成的lex.yy.c內(nèi)必然含有這個函數(shù)。 ?

yywrap():詞法分析器遇到文件結(jié)尾時會調(diào)用yywrap()來決定下一步怎么做: 若yywrap()返回0,則繼續(xù)掃描 ?若返回1,則返回報告文件結(jié)尾的0標(biāo)記。

?

1. 用lex翻譯器編譯lex源程序命令(假設(shè)filename.l是lex源程序名): flex filename.l

2. 用gcc編譯器編譯lex翻譯器生成的c源程序(lex翻譯器生成的c源程序名固定為 lex.yy.c): gcc [-o outfile] lex.yy.c –lfl

其中,-lfl是鏈接flex的庫函數(shù)的,庫函數(shù)中可能包含類似yywrap一類的標(biāo)準(zhǔn)函數(shù)。-o outfile是可選編譯選項,該選項可將編譯生成的可執(zhí)行程序命名為outfile,如果不寫該編譯選項,默認情況下生成的可執(zhí)行程序名為a.exe(linux下實際為a.out)。 ?

3. 調(diào)用詞法分析器yylex()的main函數(shù)可以寫在lex源程序的輔助函數(shù)部分,也可以寫在 其他的c文件中。如果main函數(shù)寫在main.c中,則編譯時需要和lex.yy.c一起編譯鏈接,即編譯鏈接命令為:gcc [-o outfile] lex.yy.c main.c –lfl

?

1 %{ 2 /*********** 3 Sexy Lexy 4 ***********/ 5 %} 6 %% 7 a+b*a {printf("1%s\n",yytext);} 8 (ab)+c? {printf("2%s\n",yytext);} 9 aa {printf("3%s\n",yytext);} 10 (a|b)*c {printf("4%s\n",yytext);} 11 %% 12 int main() { 13 yyin = stdin; 14 return yylex(); 15 }

ababcbacaabaababaa
2ababc
4bac
1aaba
2abab
1aa

?

posted on 2014-12-16 19:33 cyendra 閱讀(...) 評論(...) 編輯 收藏

轉(zhuǎn)載于:https://www.cnblogs.com/zinthos/p/4167871.html

總結(jié)

以上是生活随笔為你收集整理的lex/flex 笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。