關於flex的一些基本使用方法
阿新 • • 發佈:2018-12-16
有關flex的基本使用方法與配置
1. 首先肯定是要有關於flex的工具 ![資料夾裡面是這樣的:](https://img-blog.csdn.net/20181018150751339?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BmbF8zMjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 其實就是需要flex.exe這個檔案。 下載地址:[flex下載:](https://download.csdn.net/download/pfl_327/10729473) 有了這個工具你先放到一個你喜歡的資料夾裡面,比如: ![](https://img-blog.csdn.net/20181018152019905?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BmbF8zMjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 然後開啟cmd命令; ![在這裡插入圖片描述](https://img-blog.csdn.net/20181018152258442?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BmbF8zMjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 這個裡面的t2.lex是我們用flex語言編寫的程式(要和flex.exe放到同一個資料夾裡面),flex t2.lex 會編譯生成c程式lex.yy.c。 在資料夾中我們可以找c程式lex.yy.c: ![在這裡插入圖片描述](https://img-blog.csdn.net/2018101815265750?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BmbF8zMjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 這個c程式可以用自己有的編譯器開啟並執行(執行完畢關閉自己的編譯器即可)生成可執行程式lex.yy.exe。 ![在這裡插入圖片描述](https://img-blog.csdn.net/2018101815320731?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BmbF8zMjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 執行生成的可執行檔案lex.yy。lex.yy<InputFile. ![在這裡插入圖片描述](https://img-blog.csdn.net/20181018153405164?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BmbF8zMjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 這裡面test.txt是我們想要輸入測試的一個c程式放在了記事本里。 做到這一步,一些基本的操作我們就會了!! 我把源程式也給大家測試一下吧! 首先是編寫一個t2.lex程式: ``` /*t2.lex*/ %option main %{ int line=1; %} DIGIT [0-9] OINTEGER [1-9]{DIGIT}* INTEGER ("+"|"-")?{OINTEGER} DECIMAL {INTEGER}(.{OINTEGER})? LETTER [a-zA-Z] ID ({LETTER}|_)({LETTER}|_|{DIGIT})* OPT ("+="|"-="|"*="|"/="|"+"|"-"|"*"|"/"|"<="|">="|"=="|"=") %% \n {++line;} (int|float|double|short) {printf("line%d:(type,%s)\n",line,yytext);} for {printf("line%d:(for,)\n",line);} {INTEGER} {printf("line%d:(integer,%s)\n",line,yytext);} {DECIMAL} {printf("line%d:(decimal,%s)\n",line,yytext);} {ID} {printf("line%d:(identify,%s)\n",line,yytext);} ("("|")"|"{"|"}"|"["|"]") {printf("line%d:(bracket,\"%s\")\n",line,yytext);} "\"" {printf("line%d:(QUOTE,)\n",line);} {OPT} {printf("line%d:(OPT,%s)\n",line,yytext);} . {} %% /*輔助過程部分*/ ``` 然後就是測試程式test,txt: ``` int main(){ int a = 10; double b = -20.9; if(a<=b) a+=b; return a; } ``` 最後我們這個資料夾裡面有這些東西: ![](https://img-blog.csdn.net/20181018154008195?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BmbF8zMjc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)