aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/lex.h1
-rw-r--r--src/lex.c7
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);
diff --git a/src/lex.c b/src/lex.c
index e616160..8990e88 100644
--- a/src/lex.c
+++ b/src/lex.c
@@ -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;