diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lexer.c | 14 | ||||
-rw-r--r-- | src/lexer.h | 3 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/lexer.c b/src/lexer.c index 3730620..f937170 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -218,6 +218,20 @@ lexer_load_file_contents(lexer_t *lexer) } void +lexer_peek_next_token(lexer_t *lexer, token_t *token) +{ + uint32_t cur = lexer->cur; + uint32_t row = lexer->row; + uint32_t bol = lexer->bol; + + lexer_next_token(lexer, token); + + lexer->cur = cur; + lexer->row = row; + lexer->bol = bol; +} + +void lexer_step_back_to(lexer_t *lexer, token_t *token) { lexer->cur = token->bol + token->col; diff --git a/src/lexer.h b/src/lexer.h index d4e84e1..0b9f2ad 100644 --- a/src/lexer.h +++ b/src/lexer.h @@ -85,6 +85,9 @@ lexer_drop_char(lexer_t *lexer); void lexer_step_back_to(lexer_t *lexer, token_t *token); +void +lexer_peek_next_token(lexer_t *lexer, token_t *token); + char * token_kind_to_str(token_kind_t kind); |