summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lexer.c14
-rw-r--r--src/lexer.h3
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);