aboutsummaryrefslogtreecommitdiffhomepage
path: root/parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'parse.c')
-rw-r--r--parse.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/parse.c b/parse.c
index c902952..a0b2ff3 100644
--- a/parse.c
+++ b/parse.c
@@ -27,7 +27,7 @@ struct Func {
typedef struct Func Func;
struct Parser {
- Token* tokens;
+ TokenArray* tokens;
int pos;
LocalVar* lvars;
int n_lvars;
@@ -49,7 +49,7 @@ struct Parser {
};
typedef struct Parser Parser;
-Parser* parser_new(Token* tokens) {
+Parser* parser_new(TokenArray* tokens) {
Parser* p = calloc(1, sizeof(Parser));
p->tokens = tokens;
p->gvars = calloc(128, sizeof(GlobalVar));
@@ -70,12 +70,11 @@ Parser* parser_new(Token* tokens) {
}
Token* peek_token(Parser* p) {
- return p->tokens + p->pos;
+ return &p->tokens->data[p->pos];
}
Token* next_token(Parser* p) {
- ++p->pos;
- return p->tokens + p->pos - 1;
+ return &p->tokens->data[p->pos++];
}
BOOL eof(Parser* p) {
@@ -1248,7 +1247,7 @@ AstNode* parse_toplevel(Parser* p) {
}
}
-Program* parse(Token* tokens) {
+Program* parse(TokenArray* tokens) {
Parser* p = parser_new(tokens);
AstNode* funcs = ast_new_list(32);
AstNode* vars = ast_new_list(16);