其他提示

“弯曲”您的系统上的命令可能已被别名为带有-s选项的flex命令。这可能发生在几个启动脚本中。

警告告诉您某些输入与输入文件中的任何规则都不匹配。警告是为了让您确保已经考虑了正则表达式中的所有案例。

如果您确实想要使用默认规则,请将其添加到输入文件中规则的末尾。尝试添加规则

. ECHO;
\n ECHO;

更新: 您提供的输入文件包含%option nodefault,它与指定“-s”相同。在命令行上,这样神秘就解决了。此外,该文件没有“。”规则。有些字符没有被覆盖,例如'@'。

我也怀疑“ - ”字符类中的符号。它应该是一个范围操作符,但它可以像你拥有它一样在第一个位置作为一个字符。我不知道。使用“\ - ”可能是个好主意。代替。

您可以将最后一条规则更改为

. { printf("lex Unknown character = '%s'", yytext); yyerror("lex Unknown character"); }

删除警告(并防止生成的扫描程序崩溃)。

另外,您是否可以将问题的标题更改为flex而不是bison?

scroll top