%top { #include "grammar.h" } %option noyywrap %option nounput %option noinput %option yylineno %option stack %option noyy_top_state %x named %x internal %x visible %% " " { } "\"" { yy_push_state(named); } <named>[^ \"]+ { yylvalp->string = strdup(yytext); return OPERAND_NAME; } <named>"\"" { yy_pop_state(); } "{" { yy_push_state(internal); } <internal>[^ }]+ { yylvalp->string = strdup(yytext); return OPERAND_INTERNAL; } <internal>"}" { yy_pop_state(); } "<" { yy_push_state (visible); } <visible>[^ >]+ { yylvalp->string = strdup(yytext); return OPERAND_VISIBLE; } <visible>">" { yy_pop_state(); } %%