From 3444b5b58a78c12a79365bb35e54cfa029fccd99 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Tue, 12 Oct 2021 10:53:20 +0200 Subject: Add error dispatch procedure --- src/bootstrap/lexer.c | 52 ++++++++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 23 deletions(-) (limited to 'src/bootstrap/lexer.c') diff --git a/src/bootstrap/lexer.c b/src/bootstrap/lexer.c index 1add4dc..49431d0 100644 --- a/src/bootstrap/lexer.c +++ b/src/bootstrap/lexer.c @@ -134,6 +134,28 @@ skip_whitespace(Scanner *scanner) { } } +bool +is_delimiter(char c) { + switch (c) { + case EOF: + case '\0': + case ';': + case '"': + case '\'': + case '(': + case ')': + case ' ': + case '\f': + case '\n': + case '\r': + case '\t': + case '\v': { + return true; + } break; + } + return false; +} + TokenType find_primitive_type(StringView value) { bool is_fixnum = true; @@ -159,28 +181,6 @@ find_primitive_type(StringView value) { return TOKEN_SYMBOL; } -bool -is_delimiter(char c) { - switch (c) { - case EOF: - case '\0': - case ';': - case '"': - case '\'': - case '(': - case ')': - case ' ': - case '\f': - case '\n': - case '\r': - case '\t': - case '\v': { - return true; - } break; - } - return false; -} - Tokens tokenize(const StringView *sv) { Tokens tokens = (Tokens){0}; @@ -214,7 +214,13 @@ tokenize(const StringView *sv) { n++; } if (!found) { - // TODO: Report error: couldn't find the closing quotes. + error_push((Error){ + .type = ERR_TYPE_LEXER, + .value = ERR_UNMATCHED_STRING, + .line = line, + .col = col, + }); + return tokens; } Token token = (Token){ .value = (StringView){ -- cgit v1.2.1