2

我正在用

%option nounput

选项和使用命令行

flex --nounput

和 flex 版本 2.5.35。

但是,cpp 输出仍然包含该行

#define unput(c) yyunput( c, (yytext_ptr)  )

这会导致 g++ 出现编译问题,因为未使用 unput。

有没有办法以“干净”的方式解决这个问题?两种肮脏的方式是显而易见的:

  1. 以某种无用的方式使用 unput。
  2. 使用一些脚本从生成的 cpp 文件中自动删除该行。
4

2 回答 2

0

(我试图将此问题标记为“问题不再可重现”,但该标志已超时/老化。我正在回答它,以免它仍然是一个悬而未决的问题。

正如@akond 所述:

我没有遇到这个问题。我使用的版本是相同的(flex 2.5.35)。%option nounput对我有用。

我也在 2.5.4 版本上试过这个,可以确认没有问题。该选项--nounput不再被认可或记录;但是,%option nounput 手册中的内容仍然存在

cpp 输出仍然包含该行#define unput(c) yyunput( c, yytext_ptr ),但这似乎不会对我产生任何 g++ 错误。您是否正在使用-pedantic-errors或其他类似的选项?

于 2015-03-22T19:47:24.393 回答
0

好的程序,但严重过时的文档。

我发现版本 2.6.4 接受名词输入选项并且做正确的事。

于 2020-09-22T16:45:32.957 回答