From 27556004e8e12a72ed1c2c70212f6b660ed798c3 Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 2 Dec 2021 21:59:36 +0800 Subject: import(life): ... --- works/life/compile-principle-experiment/4/lex.l | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 works/life/compile-principle-experiment/4/lex.l (limited to 'works/life/compile-principle-experiment/4/lex.l') diff --git a/works/life/compile-principle-experiment/4/lex.l b/works/life/compile-principle-experiment/4/lex.l new file mode 100644 index 0000000..e7731ca --- /dev/null +++ b/works/life/compile-principle-experiment/4/lex.l @@ -0,0 +1,20 @@ +%{ +#include "main.h" +#include "syn.h" +%} +%option noyywrap +%% +[ \t] { ; } /* skip blanks and tabs */ +[0-9]+\.?|[0-9]*\.[0-9]+ { + Symbol *s = cru_symbol_install("", UNDEF, (SymbolValue)0.0); + sscanf(yytext, "%lf", &s->value.val); + yylval.sym = s; + return NUMBER; } +[a-zA-Z][a-zA-Z0-9]* { + Symbol *s; + if ((s=cru_symbol_lookup(yytext)) == 0) + s = cru_symbol_install(yytext, UNDEF, (SymbolValue)0.0); + yylval.sym = s; + return s->type == UNDEF ? VAR : s->type; } +\n { lineno++; return '\n'; } /* everything else */ +. { return yytext[0]; } -- cgit v1.2.3