diff options
Diffstat (limited to 'lexer.c')
-rw-r--r-- | lexer.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -43,6 +43,7 @@ static unsigned int two_wide_tok(const char *s) case PAIR('+', '+'): return TOK_INCREMENT; case PAIR('=', '='): return TOK_COMP_EQ; case PAIR('!', '='): return TOK_COMP_NEQ; + case PAIR('/', '/'): return TOK_COMMENT; default: return TOK_NONE; } } @@ -73,6 +74,7 @@ Token *lexer(const char *s) toks[tok_i].column = column; toks[tok_i].line = line; const char *rem_s = s; + const int two_wide = two_wide_tok(s); if (*s == '"') { const char *end = strchr(s + 1, '"'); if (end == NULL) { @@ -120,8 +122,11 @@ Token *lexer(const char *s) toks[tok_i].type = TOK_INTEGER; tok_i += 1; s += len; - } else if (two_wide_tok(s) != TOK_NONE) { - toks[tok_i].type = two_wide_tok(s); + } else if (two_wide == TOK_COMMENT) { + while (*s != '\0' && *s != '\n') + s += 1; + } else if (two_wide != TOK_NONE) { + toks[tok_i].type = two_wide; toks[tok_i].v.c = *s; tok_i += 1; s += 2; |