Search code examples
flex-lexerlexical

Flex prints newline to stdout on default rule match - want to alter that behavior


I have the following flex rules in place.

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

It works great for my purposes and outputs upon a match to the first rule;

HASH | some matched string

What's bothering me is that flex is also printing a newline on each match of the second rule. So I get a stdout filled with newlines. Is there a do nothing OP in C? Am I implicitly telling flex to print a newline with a empty rule action? Omitting the "{}" results in the same behavior. I can use sed or whatever to filter out the newlines, but I'd rather just tell flex to stop printing newlines.

I'm happy to provide follow-up examples and data.


Solution

  • You need to add \n to your default rule:

    .|\n   {}