summaryrefslogtreecommitdiff
path: root/src/lexer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lexer.c')
-rw-r--r--src/lexer.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/lexer.c b/src/lexer.c
index 9f2a57b..7245a41 100644
--- a/src/lexer.c
+++ b/src/lexer.c
@@ -229,13 +229,16 @@ lexer_load_file_contents(lexer_t *lexer)
}
void
-lexer_peek_next_token(lexer_t *lexer, token_t *token)
+lexer_lookahead(lexer_t *lexer, token_t *token, size_t level)
{
uint32_t cur = lexer->cur;
uint32_t row = lexer->row;
uint32_t bol = lexer->bol;
- lexer_next_token(lexer, token);
+ while (level != 0) {
+ lexer_next_token(lexer, token);
+ level--;
+ }
lexer->cur = cur;
lexer->row = row;
@@ -243,6 +246,12 @@ lexer_peek_next_token(lexer_t *lexer, token_t *token)
}
void
+lexer_peek_next_token(lexer_t *lexer, token_t *token)
+{
+ lexer_lookahead(lexer, token, 1);
+}
+
+void
lexer_drop_next_token(lexer_t *lexer)
{
token_t token;