%top { #include "grammar.h" } %option noyywrap %option nounput %option noinput %option yylineno %option stack %option noyy_top_state %x raw_line %% [ \t\n]+ { } [A-Za-z_][A-Za-z0-9_]* { yylvalp->string = strdup(yytext); return NAME; } "=" { yy_push_state(raw_line); return EQ; } [^\n]+ { yylvalp->cstring = yytext; return RAW_LINE; } "\n" { yy_pop_state(); } . { char *msg; asprintf(&msg, "Unhandled token in d2c conv block: '%s'", yytext); YY_FATAL_ERROR(msg); free(msg); } %%