diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-08-13 22:40:51 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-08-15 10:06:21 +0900 |
| commit | 7685bff588632a486a9e677c63ae7123b112ba9e (patch) | |
| tree | 880d0be559c15e7bcdf857c3c17ee7f2629a4adb /parse.c | |
| parent | 56580d654dfc19d03900fa9df680980d3e60c4ee (diff) | |
| download | ducc-7685bff588632a486a9e677c63ae7123b112ba9e.tar.gz ducc-7685bff588632a486a9e677c63ae7123b112ba9e.tar.zst ducc-7685bff588632a486a9e677c63ae7123b112ba9e.zip | |
refactor: use TokenArray instead of raw pointer and length
Diffstat (limited to 'parse.c')
| -rw-r--r-- | parse.c | 11 |
1 files changed, 5 insertions, 6 deletions
@@ -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); |
