diff options
Diffstat (limited to 'tools/d2c/syntax/tokens.l')
-rw-r--r-- | tools/d2c/syntax/tokens.l | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tools/d2c/syntax/tokens.l b/tools/d2c/syntax/tokens.l new file mode 100644 index 0000000..ab1b0f3 --- /dev/null +++ b/tools/d2c/syntax/tokens.l @@ -0,0 +1,39 @@ + +%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(); } + + +%% |