diff options
Diffstat (limited to 'src/parser.c')
-rw-r--r-- | src/parser.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/parser.c b/src/parser.c index c7f2851..4468997 100644 --- a/src/parser.c +++ b/src/parser.c @@ -5,7 +5,7 @@ #include <stdio.h> #include <string.h> -/* + // initialize a parser parser_t* parser_init(lexer_t* lexer) { parser_t* parser = calloc(1, sizeof(struct PARSER_STRUC)); @@ -21,7 +21,7 @@ void parser_check_expect(parser_t* parser, int token_type) { if (parser->token->type == token_type) { parser->token = lexer_get_next_token(parser->lexer); } else { - printf("[ERRR] PARSE ERROR at %d\n\tUnexpected token '%s' with type '%d'.", + printf("[ERRR] [%d]\n\tUnexpected token '%s' with type '%d'.", parser->lexer->i, parser->token->value, parser->token->type); exit(1); @@ -56,25 +56,25 @@ tree_t* parser_parse_chunks(parser_t* parser) { tree_t* subtree = tree_init(TREE_SUBTREE); // initialize the subtree_val with unit size - subtree->subtree_val = calloc(1, sizeof(struct TREE_STRUC)); + subtree->data.subtree.size = calloc(1, sizeof(struct TREE_STRUC)); tree_t* tree_chunk = parser_parse_chunk(parser); - subtree->subtree_val[0] = tree_chunk; + subtree->data.subtree.val[0] = tree_chunk; while (parser->token->type == TOKEN_SEMI) { // expect semicolon parser_check_expect(parser, TOKEN_SEMI); // make room for new subtree - subtree->subtree_size ++; - subtree->subtree_val = realloc( - subtree->subtree_val, - subtree->subtree_size * sizeof(struct TREE_STRUC) + subtree->data.subtree.size ++; + subtree->data.subtree.val = realloc( + subtree->data.subtree.val, + subtree->data.subtree.size * sizeof(struct TREE_STRUC) ); // add to end of list - subtree->subtree_val[subtree->subtree_size - 1] = tree_chunk; + subtree->data.subtree.val[subtree->data.subtree.size - 1] = tree_chunk; } return subtree; @@ -91,4 +91,4 @@ tree_t* parser_parse_fn_call(parser_t* parser); tree_t* parser_parse_var(parser_t* parser); tree_t* parser_parse_str(parser_t* parser); -*/ + |