From 7c047df78502d53411fef09c6e39540d2b7e796a Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Tue, 27 Apr 2021 16:24:24 +0200 Subject: Fixed some overflows and enabled live parsing --- src/lexer.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/lexer.c') diff --git a/src/lexer.c b/src/lexer.c index 5b43cb5..9efe957 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -1,3 +1,4 @@ +#include #include #include #include @@ -16,8 +17,13 @@ void token_print(struct token *tok) { - if (!tok->length) + // Something terrible needs to happen to make this true + assert(tok->length || tok->type == END); + + if (tok->type == END) { + printf("\\0 (%d)\n", tok->type); return; + } char swp = tok->start[tok->length]; tok->start[tok->length] = 0; @@ -47,6 +53,9 @@ struct token token_resolve(char *str, u32 size) } else if (str[0] == '\n') { type = NEWLINE; length = 1; + } else if (str[0] == '\0') { + type = END; + length = 0; // Well } else if (str[0] == ' ') { type = SPACE; length = 1; -- cgit v1.2.3