我需要为不匹配的字符禁用flex输出。我无法默认禁用此ECHO(),无法禁用yyout。任何变种?
答案 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'宏将被定义,程序将不会打印任何内容。