我正在用
%option nounput
选项和使用命令行
flex --nounput
和 flex 版本 2.5.35。
但是,cpp 输出仍然包含该行
#define unput(c) yyunput( c, (yytext_ptr) )
这会导致 g++ 出现编译问题,因为未使用 unput。
有没有办法以“干净”的方式解决这个问题?两种肮脏的方式是显而易见的:
- 以某种无用的方式使用 unput。
- 使用一些脚本从生成的 cpp 文件中自动删除该行。
我正在用
%option nounput
选项和使用命令行
flex --nounput
和 flex 版本 2.5.35。
但是,cpp 输出仍然包含该行
#define unput(c) yyunput( c, (yytext_ptr) )
这会导致 g++ 出现编译问题,因为未使用 unput。
有没有办法以“干净”的方式解决这个问题?两种肮脏的方式是显而易见的:
(我试图将此问题标记为“问题不再可重现”,但该标志已超时/老化。我正在回答它,以免它仍然是一个悬而未决的问题。)
正如@akond 所述:
我没有遇到这个问题。我使用的版本是相同的(flex 2.5.35)。
%option nounput
对我有用。
我也在 2.5.4 版本上试过这个,可以确认没有问题。该选项--nounput
不再被认可或记录;但是,%option nounput
手册中的内容仍然存在。
cpp 输出仍然包含该行#define unput(c) yyunput( c, yytext_ptr )
,但这似乎不会对我产生任何 g++ 错误。您是否正在使用-pedantic-errors
或其他类似的选项?
好的程序,但严重过时的文档。
我发现版本 2.6.4 接受名词输入选项并且做正确的事。