summaryrefslogtreecommitdiff
path: root/tools/d2c/syntax/tokens.l
diff options
context:
space:
mode:
Diffstat (limited to 'tools/d2c/syntax/tokens.l')
-rw-r--r--tools/d2c/syntax/tokens.l39
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(); }
+
+
+%%