轉自: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查看。