diff options
| author | Mel <mel@rnrd.eu> | 2025-06-14 00:14:58 +0200 |
|---|---|---|
| committer | Mel <mel@rnrd.eu> | 2025-06-14 00:14:58 +0200 |
| commit | 4a49045f77b5be5d82e84c6e3e57721686ec5a0a (patch) | |
| tree | 3143861a9a6d66e6acbe8c7273aaa0bbc0e486bc /boot/lex.c | |
| parent | 3e7acb02962b05db8cf83e5b6b082ac368c8c88e (diff) | |
| download | catskill-4a49045f77b5be5d82e84c6e3e57721686ec5a0a.tar.zst catskill-4a49045f77b5be5d82e84c6e3e57721686ec5a0a.zip | |
Disambiguate variable declaration and call/array access syntax with `var` + `let`
Signed-off-by: Mel <mel@rnrd.eu>
Diffstat (limited to 'boot/lex.c')
| -rw-r--r-- | boot/lex.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/boot/lex.c b/boot/lex.c index 52760e9..f09e5e3 100644 --- a/boot/lex.c +++ b/boot/lex.c @@ -97,6 +97,7 @@ enum Token_Kind TOKEN_WORD_SWITCH, TOKEN_WORD_RETURN, TOKEN_WORD_VAR, + TOKEN_WORD_LET, TOKEN_WORD_TYPE, TOKEN_WORD_VARIANT, TOKEN_WORD_CLASS, @@ -200,6 +201,8 @@ token_kind_to_string(enum Token_Kind kind) return "WORD_RETURN"; case TOKEN_WORD_VAR: return "WORD_VAR"; + case TOKEN_WORD_LET: + return "WORD_LET"; case TOKEN_WORD_TYPE: return "WORD_TYPE"; case TOKEN_WORD_VARIANT: @@ -407,6 +410,12 @@ token_can_begin_type(const struct Token* t) } bool +token_can_begin_declaration(const struct Token* t) +{ + return token_is(t, TOKEN_WORD_VAR) || token_is(t, TOKEN_WORD_LET); +} + +bool ascii_in_range(ascii c, ascii from, ascii to) { return c >= from && c <= to; @@ -793,6 +802,8 @@ lexer_word_from_name(struct Lexer* l, struct String word_or_name) return TOKEN_WORD_RETURN; case 1662845996: // "var" return TOKEN_WORD_VAR; + case 860722406: + return TOKEN_WORD_LET; case 91700392: // "type" return TOKEN_WORD_TYPE; case 3267162257: // "variant" |
