From d5a1ec3ca6f0accd62cc052acd86b8b1beca3820 Mon Sep 17 00:00:00 2001 From: Matteo Flebus Date: Tue, 20 Jan 2026 20:06:25 +0100 Subject: [PATCH] fix(parser): adapting to new lexer --- src/parser/parsing_utils.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/parser/parsing_utils.c b/src/parser/parsing_utils.c index 12b0f9b..08ef540 100644 --- a/src/parser/parsing_utils.c +++ b/src/parser/parsing_utils.c @@ -56,7 +56,7 @@ static bool is_end_of_list(struct token *token) struct ast *parse_input(struct lexer_context *ctx) { - return parse_list(); + return parse_list(ctx); } struct ast *parse_list(struct lexer_context *ctx) @@ -79,7 +79,7 @@ struct ast *parse_list(struct lexer_context *ctx) token = POP_TOKEN(); if (!isterminator(token)) // Follow(list) { - current_node = parse_and_or(); + current_node = parse_and_or(ctx); if (current_node == NULL) { // TODO free list @@ -97,12 +97,12 @@ struct ast *parse_list(struct lexer_context *ctx) struct ast *parse_and_or(struct lexer_context *ctx) { - return parse_pipeline(); + return parse_pipeline(ctx); } struct ast *parse_pipeline(struct lexer_context *ctx) { - return parse_command(); + return parse_command(ctx); } struct ast *parse_command(struct lexer_context *ctx) @@ -111,11 +111,11 @@ struct ast *parse_command(struct lexer_context *ctx) if (token->type == TOKEN_WORD) { - return parse_simple_command(); + return parse_simple_command(ctx); } else if (token->type == TOKEN_IF) { - return parse_shell_command(); + return parse_shell_command(ctx); } else { @@ -135,7 +135,7 @@ struct ast *parse_simple_command(struct lexer_context *ctx) while (token->type == TOKEN_WORD) { - token = pop_token(); + token = pop_token(ctx); if (token == NULL) { // TODO free @@ -150,7 +150,7 @@ struct ast *parse_simple_command(struct lexer_context *ctx) return NULL; } command_elements = list_append(command_elements, word); - token = peek_token(); + token = peek_token(ctx); if (token == NULL) { // TODO free @@ -168,7 +168,7 @@ struct ast *parse_simple_command(struct lexer_context *ctx) struct ast *parse_shell_command(struct lexer_context *ctx) { - return parse_if_rule(); + return parse_if_rule(ctx); } struct ast *parse_if_rule(struct lexer_context *ctx) @@ -183,7 +183,7 @@ struct ast *parse_if_rule(struct lexer_context *ctx) } // Condition content - struct ast *condition_content = parse_compound_list(); + struct ast *condition_content = parse_compound_list(ctx); // Then keyword token = POP_TOKEN(); @@ -195,7 +195,7 @@ struct ast *parse_if_rule(struct lexer_context *ctx) } // Then content - struct ast *then_content = parse_compound_list(); + struct ast *then_content = parse_compound_list(ctx); if (then_content == NULL) { ast_free(&condition_content); @@ -204,7 +204,7 @@ struct ast *parse_if_rule(struct lexer_context *ctx) } // Eventual else/elif clause(s) - struct ast *else_content = parse_else_clause(); + struct ast *else_content = parse_else_clause(ctx); if (else_content == NULL) { ast_free(&condition_content); @@ -249,7 +249,7 @@ struct ast *parse_compound_list(struct lexer_context *ctx) } // and_or - current_cmd = parse_and_or(); + current_cmd = parse_and_or(ctx); if (current_cmd == NULL) return NULL; list_append(result_list, current_cmd); @@ -267,7 +267,7 @@ struct ast *parse_compound_list(struct lexer_context *ctx) } // and_or - current_cmd = parse_and_or(); + current_cmd = parse_and_or(ctx); if (current_cmd == NULL) return NULL; list_append(result_list, current_cmd); @@ -300,7 +300,7 @@ struct ast *parse_else_clause(struct lexer_context *ctx) { // Condition token = POP_TOKEN(); - struct ast *condition = parse_compound_list(); + struct ast *condition = parse_compound_list(ctx); // 'then' token = POP_TOKEN(); @@ -311,14 +311,14 @@ struct ast *parse_else_clause(struct lexer_context *ctx) } // Then clause - struct ast *then_content = parse_compound_list(); + struct ast *then_content = parse_compound_list(ctx); // Eventual else clause (recursive) struct ast *else_content = NULL; token = PEEK_TOKEN(); if (token->type == TOKEN_ELSE || token->type == TOKEN_ELIF) { - else_content = parse_else_clause(); + else_content = parse_else_clause(ctx); } struct ast *result = @@ -332,12 +332,12 @@ struct ast *parse_else_clause(struct lexer_context *ctx) if (token->type == TOKEN_ELSE) { - result = parse_compound_list(); + result = parse_compound_list(ctx); token = POP_TOKEN(); // Forward } if (result == NULL) - result = ast_create_void(); + result = ast_create_void(ctx); return result; }