diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-04-09 02:50:34 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-04-09 02:50:34 +0300 |
| commit | e5f9d49e39210fe634305d57f1b01e013d66aa71 (patch) | |
| tree | 980b72d145339702a49557215567e3afbf3d7e35 /src/lexer.l | |
| parent | 170f3ddc3d8967c0b5d4755c0221c396db215b2f (diff) | |
| download | ek-e5f9d49e39210fe634305d57f1b01e013d66aa71.tar.gz ek-e5f9d49e39210fe634305d57f1b01e013d66aa71.zip | |
simplify ast definition
+ Makes it a lot nicer to work with.
Diffstat (limited to 'src/lexer.l')
| -rw-r--r-- | src/lexer.l | 36 |
1 files changed, 13 insertions, 23 deletions
diff --git a/src/lexer.l b/src/lexer.l index c819328..b38833d 100644 --- a/src/lexer.l +++ b/src/lexer.l @@ -84,36 +84,26 @@ STRING \"(\\.|[^"\\])*\" "%" {return REM;} "^" {return XOR;} -'[^'\\]' { - /* regular character constant, 'a' */ - yylval->integer = yytext[1]; - return INT; +"true" { + yylval->integer = 1; + return BOOL; } -'\\x[0-9a-fA-F]+' { - /* hex character constant, '\xef' */ - /* handling is slightly different from C, here it's more or less just - * another way to specify a hex integer */ - yylval->integer = strtoll(yytext + 3, NULL, 16); - return INT; -} - -'\\[0-8]+' { - /* octal character constant, '\033' */ - yylval->integer = strtoll(yytext + 2, NULL, 8); - return INT; +"false" { + yylval->integer = 0; + return BOOL; } -'\\b[01]+' { - /* binary character constant, '\b101' */ - yylval->integer = strtoll(yytext + 3, NULL, 2); - return INT; +'[^'\\]' { + /* regular character constant, 'a' */ + yylval->integer = yytext[1]; + return CHAR; } '\\.' { /* escaped character constant */ yylval->integer = match_escape(yytext[2]); - return INT; + return CHAR; } "?" {return QUESTION;} @@ -185,7 +175,7 @@ STRING \"(\\.|[^"\\])*\" } {ID} { - yylval->str = yytext; + yylval->str = strdup(yytext); return ID; } @@ -194,7 +184,7 @@ STRING \"(\\.|[^"\\])*\" char *s = yytext + strlen(yytext); s[-1] = '\0'; - yylval->str = yytext; + yylval->str = strdup(yytext); return APPLY; } |
