%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); } [^ \"]+ { yylvalp->string = strdup(yytext); return OPERAND_NAME; } "\"" { yy_pop_state(); } "{" { yy_push_state(internal); } [^ }]+ { yylvalp->string = strdup(yytext); return OPERAND_INTERNAL; } "}" { yy_pop_state(); } "<" { yy_push_state (visible); } [^ >]+ { yylvalp->string = strdup(yytext); return OPERAND_VISIBLE; } ">" { yy_pop_state(); } %%