1. 程式人生 > >關於flex的一些基本使用方法

關於flex的一些基本使用方法

有關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)