flex-lexer - Flex 在默认规则匹配时将换行符打印到标准输出 - 想要改变该行为

标签 flex-lexer lexical

我有以下弹性规则。

"#"{name}               {printf(" HASH |  %s\n", yytext);}
.                       {}

它非常适合我的目的,并且在与第一条规则匹配时输出;
HASH | some matched string

困扰我的是 flex 还在第二条规则的每个匹配项上打印一个换行符。所以我得到了一个充满换行符的标准输出。在 C 中有什么都不做的 OP 吗?我是否隐含地告诉 flex 打印带有空规则操作的换行符?省略“{}”会导致相同的行为。我可以使用 sed 或其他任何东西来过滤掉换行符,但我宁愿告诉 flex 停止打印换行符。

我很乐意提供后续示例和数据。

最佳答案

您需要将\n 添加到默认规则中:

.|\n   {}

关于flex-lexer - Flex 在默认规则匹配时将换行符打印到标准输出 - 想要改变该行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19605638/

相关文章:

java - 用户输入的字符串在输入时的词汇排名

C++ 解析器生成器

python - 词法错误 : Encountered: "" (0), 之后: ""

c - Flex 和 Bison 段错误

c - flex 无法识别字符范围

linux - Ubuntu 14.04 上的 lex 中无法识别的规则

error-handling - Flex错误处理问题

C++ 词法分析器

algorithm - 确定英语单词的难度

c - 动态打开和关闭 flex token