如何在lex中为不匹配的字符禁用ECHO()

时间:2014-03-28 08:54:33

标签: lex

我需要为不匹配的字符禁用flex输出。我无法默认禁用此ECHO(),无法禁用yyout。任何变种?

3 个答案:

答案 0 :(得分:4)

lex的创建者提供了一种更简单,更易于维护的方法。在所有其他规则的末尾添加以下匹配规则:

[ \t\n]+          /* do nothing */
.+                /* do nothing */

答案 1 :(得分:0)

找到解决方案。需要从lex中生成的文件中的默认规则设置中删除ECHO。

case 11:     //For example
YY_RULE_SETUP
#line 68 "flex.l"
ECHO;            //this must be deleted
YY_BREAK

答案 2 :(得分:0)

我找到了解决方案。使用gcc / g ++编译时,必须添加选项'-DECHO'。因此,'ECHO'宏将被定义,程序将不会打印任何内容。