词法分析生成器flex的选项
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查看。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |