diff options
author | Bad Diode <bd@badd10de.dev> | 2022-02-01 18:43:43 +0100 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2022-02-01 18:43:43 +0100 |
commit | 5af70ecc0c8eafa7d6d31e16576cb4cf0713f5cc (patch) | |
tree | bb5ad458f19f4369c6c1c11c4fe4b137d358fc5a /src | |
parent | ee1a5de91c875fb66724dc21c02333bfebe2a812 (diff) | |
download | bdl-5af70ecc0c8eafa7d6d31e16576cb4cf0713f5cc.tar.gz bdl-5af70ecc0c8eafa7d6d31e16576cb4cf0713f5cc.zip |
Ensure EOF is handled properly
Diffstat (limited to 'src')
-rw-r--r-- | src/lexer.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/lexer.c b/src/lexer.c index 56b670b..80ef3ad 100644 --- a/src/lexer.c +++ b/src/lexer.c | |||
@@ -262,6 +262,10 @@ tokenize(const StringView *sv) { | |||
262 | case '.': { token.type = TOKEN_DOT; } break; | 262 | case '.': { token.type = TOKEN_DOT; } break; |
263 | case '@': { token.type = TOKEN_AT; } break; | 263 | case '@': { token.type = TOKEN_AT; } break; |
264 | default: { | 264 | default: { |
265 | if (c == EOF || c == '\0') { | ||
266 | token.type = TOKEN_EOF; | ||
267 | break; | ||
268 | } | ||
265 | size_t n = 1; | 269 | size_t n = 1; |
266 | if (c == '-' && !is_delimiter(scan_peek(&scanner))) { | 270 | if (c == '-' && !is_delimiter(scan_peek(&scanner))) { |
267 | n += scan_number_token(&scanner); | 271 | n += scan_number_token(&scanner); |
@@ -304,14 +308,5 @@ tokenize(const StringView *sv) { | |||
304 | } | 308 | } |
305 | array_push(tokens, token); | 309 | array_push(tokens, token); |
306 | } | 310 | } |
307 | |||
308 | // Push EOF token. | ||
309 | Token token = (Token){ | ||
310 | .type = TOKEN_EOF, | ||
311 | .line = scanner.line_number, | ||
312 | .col = 1, | ||
313 | }; | ||
314 | array_push(tokens, token); | ||
315 | |||
316 | return tokens; | 311 | return tokens; |
317 | } | 312 | } |