diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-02-28 23:13:39 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-02-28 23:13:39 +0800 |
commit | dc1f0c4c0096013799416664894c5194dc7e1f52 (patch) | |
tree | 2f5d235f778cd720f4c39ec3e56b77ba6d99f375 /store/works/life/compile-principle-experiment/3/lex.l | |
parent | 7299d424d90b1effb6db69e3476ddd5af72eeba4 (diff) | |
download | crupest-dc1f0c4c0096013799416664894c5194dc7e1f52.tar.gz crupest-dc1f0c4c0096013799416664894c5194dc7e1f52.tar.bz2 crupest-dc1f0c4c0096013799416664894c5194dc7e1f52.zip |
chore(store): move everything to store.
Diffstat (limited to 'store/works/life/compile-principle-experiment/3/lex.l')
-rw-r--r-- | store/works/life/compile-principle-experiment/3/lex.l | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/store/works/life/compile-principle-experiment/3/lex.l b/store/works/life/compile-principle-experiment/3/lex.l new file mode 100644 index 0000000..ddea92d --- /dev/null +++ b/store/works/life/compile-principle-experiment/3/lex.l @@ -0,0 +1,17 @@ +%{ +#include "main.h" +#include "syn.h" +%} +%option noyywrap +%% +[ \t] { ; } /* skip blanks and tabs */ +[0-9]+\.?|[0-9]*\.[0-9]+ { + sscanf(yytext, "%lf", &yylval.val); 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]; } |