词法分析生成器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查看。

猜你喜欢

转载自blog.csdn.net/vinacky/article/details/82850732