詞法分析生成器flex的選項 %option

轉自:https://blog.csdn.net/sever2012/article/details/7715176

flex的選項影響最終生成的詞法分析器的屬性和行爲。這些選項可以在運行flex命令時在終端輸入,也可以在.l文件中使用%option指定。

option的主要分類:

Options for Specifying Filenames

Options Affecting Scanner Behavior

Code-Level And API Options

Options for Scanner Speed and Size

Debugging Options

Miscellaneous Options

下面說明幾個常用的選項

1. Options for Specifying Filenames

--header-file=FILE,%option header-file="FILE":逗號前的用於終端輸入,逗號前後用於.l文件。該選項告訴flex生成名爲"FILE"的頭文件,該文件包含XX.yy.c文件中的一些類型和定義。

-oFILE, --outfile=FILE, %option outfile="FILE":指明詞法分析源文件名,如果沒有指明該選項,那麼生成的詞法分析源文件被命名XX.yy.c。

2 Options Affecting Scanner Behavior

-i, --case-insensitive, %option case-insensitive:忽略符號的大小寫,符號即人們要分析的各種字符。

-l, --lex-compat, %option lex-compat:最大程度兼容AT&T的flex實現。

-B, --batch, %option batch:關閉超前搜索。

-I, --interactive, %option interactive:打開超前搜索。

--default, %option default:使用默認規則,不明白默認規則是什麼。。。

--stack, %option stack:激活開始條件棧。

--yylineno, %option yylineno:記錄符號所在行號。如果使用了%option lex-compat,則隱含地使用了該選項。

--yywrap, %option yywrap:noyywrap表示在該.l文件中不會調用yywrap(),而是假設生成的掃描器只掃描單個文件;%option yywrap自然與之相反

3 Code-Level And API Options

--bison-bridge, %option bison-bridge:生成的掃描器API能夠被bision調用。API爲與bision兼容而作了些小改變。

-R, --reentrant, %option reentrant:生成可重用的掃描器API,這些API用於多線程環境。

-+, --c++, %option c++:如果沒有指定該選項,生成的掃描器.c文件是C語言格式的,指定後則生成C++文件。

--array, %option array:yytext的類型由char *變爲數組。

--array, %option pointer:與--array, %option array相反。

-PPREFIX, --prefix=PREFIX, %option prefix="PREFIX":將flex中所有yy前綴改爲PREFIX,例如指定%option prefix="foo"後,yytext變成footext,yylex變成foolex。

4 Options for Scanner Speed and Size

5 Debugging Options

-b, --backup, %option backup:生成備份信息文件lex.backup,包含一些需要備份的掃描器狀態信息和相關的輸入符號。

-d, --debug, %option debug:掃描器在debug模式下運行

以上是一些常用的option,更多的信息可在終端輸入info flex查看。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章