diff --git a/src/parser.c b/src/parser.c index 8d9f365..b1f5287 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1,5 +1,6 @@ #include "parser.h" #include "lexer.h" +#include #include #include @@ -37,7 +38,24 @@ uint8_t node_rbp(ASTNode node) { } } +ASTNode ASTNodeSlice_next(ASTNodeSlice *slice) { + return slice->arr->data[slice->pos++]; +} +ASTNode ASTNodeSlice_peek(ASTNodeSlice *slice) { + return slice->arr->data[slice->pos]; +} + +bool ASTNodeSlice_is_valid(ASTNodeSlice *slice) { + if (slice->arr->len < 1) { + return false; + } + if (slice->pos >= slice->arr->len - 1) { + return false; + } + + return true; +} AST parse(ASTNodeArray *arr) { AST tree;