diff options
Diffstat (limited to 'src/lexer.c')
-rw-r--r-- | src/lexer.c | 13 |
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; |