aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2022-02-01 18:43:43 +0100
committerBad Diode <bd@badd10de.dev>2022-02-01 18:43:43 +0100
commit5af70ecc0c8eafa7d6d31e16576cb4cf0713f5cc (patch)
treebb5ad458f19f4369c6c1c11c4fe4b137d358fc5a /src
parentee1a5de91c875fb66724dc21c02333bfebe2a812 (diff)
downloadbdl-5af70ecc0c8eafa7d6d31e16576cb4cf0713f5cc.tar.gz
bdl-5af70ecc0c8eafa7d6d31e16576cb4cf0713f5cc.zip
Ensure EOF is handled properly
Diffstat (limited to 'src')
-rw-r--r--src/lexer.c13
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}