diff options
-rw-r--r-- | include/lex.h | 1 | ||||
-rw-r--r-- | src/lex.c | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/include/lex.h b/include/lex.h index 51485a5..0bf76a7 100644 --- a/include/lex.h +++ b/include/lex.h @@ -132,6 +132,7 @@ void lex_finish(struct lexer *lexer); struct location lex_loc(struct lexer *lexer); enum lexical_token lex(struct lexer *lexer, struct token *out); +enum lexical_token lex_any(struct lexer *lexer, struct token *out); void unlex(struct lexer *lexer, const struct token *in); bool match(struct lexer *lexer, enum lexical_token token); @@ -252,6 +252,13 @@ lex_comment(struct lexer *lexer, struct token *out) enum lexical_token lex(struct lexer *lexer, struct token *out) { + while (lex_any(lexer, out) == T_COMMENT); + return out->token; +} + +enum lexical_token +lex_any(struct lexer *lexer, struct token *out) +{ if (lexer->un.token != T_NONE) { *out = lexer->un; lexer->un.token = T_NONE; |