[Flex] 安裝及使用Flex

介紹

Compiler中,首先就是利用Scanner把程式碼轉成一個一個token,而其中有名的工具就是lex,但那是在Unix系統底下的,而Flex則可在Windows底下執行。

安裝

Flex的網站,懶人可直接下載Complete package, except sources自動安裝。

環境設定

免不了還是得手動環境設定,到PATH增加;C:\Program Files\GnuWin32\bin;,看你的安裝在哪裡,在命令列輸入flex -V如果沒有出現錯誤就代表成功。

使用

先借用Compiler助教的範例,產生一個名為word_count.l的檔案,並輸入以下內容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
%{
unsigned int charCount=0, wordCount=0, lineCount=0;
%}
word [^ \t\n]+
eol \n
%%
{word} { wordCount++; charCount += yyleng; }
{eol} { charCount++; lineCount++; }
. charCount++;
%%
int main(int argc, char *argv[]){
yylex();
printf("%u %u %u\n", lineCount, wordCount, charCount);
return(0);
}

在命令列執行下列指令

1
2
flex word_count.l
gcc lex.yy.c -o word_count.exe -lfl

接著產生一個input.txt檔,並輸入以下內容

1
This is an apple.

最後在命令列打入指令,將文本餵給程式碼即會輸出結果。

1
word_count.exe < input.txt

我還真不知道為什麼助教的結果會是2 4 19 ..