加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

词法分析生成器flex的选项

发布时间:2020-12-15 04:56:14 所属栏目:百科 来源:网络整理
导读:flex的选项影响最终生成的词法分析器的属性和行为。这些选项可以在运行flex命令时在终端输入,也可以在.l文件中使用%option指定。 option的主要分类: Options for Specifying Filenames Options Affecting Scanner Behavior Code-Level And API Options Opt

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查看。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读