diff options
-rw-r--r-- | lexer.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -65,7 +65,7 @@ get_current_loc(void) { struct location l; l.line = line_number; l.column = column_number + 1; - l.leading_whitespace_len = leading_whitespace_len; + l.leading_whitespace_len = leading_whitespace_len == -1 ? 0 : leading_whitespace_len; return l; } @@ -92,6 +92,10 @@ static void add_token(struct token t) { struct token *last = tok_cursor; + if (leading_whitespace_len == -1) { + leading_whitespace_len = 0; + } + tok_cursor = malloc(sizeof(*tok_cursor)); if (tok_cursor == NULL) { emit_error("Internal error: malloc failed:"); @@ -189,7 +193,7 @@ lex_colon(void) { static int lex_line(void) { size_t length = strlen(buf); - leading_whitespace_len = 0; + leading_whitespace_len = -1; while (column_number < length && column_number < strlen(buf)) { switch (buf[column_number]) { @@ -199,7 +203,7 @@ lex_line(void) { case ' ': case '\t': eat_whitespace(); - if (leading_whitespace_len == 0) { + if (leading_whitespace_len == -1) { leading_whitespace_len = column_number; } break; |