From 06eff276ce3440df22674572a660e86fc21637d5 Mon Sep 17 00:00:00 2001 From: Mel Date: Mon, 4 May 2026 18:39:54 +0200 Subject: Initial lowering pass 2 implementation, create shells for source expressions and statements Signed-off-by: Mel --- boot/visit/tree.c | 60 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 21 deletions(-) (limited to 'boot/visit/tree.c') diff --git a/boot/visit/tree.c b/boot/visit/tree.c index 48db391..efeffe9 100644 --- a/boot/visit/tree.c +++ b/boot/visit/tree.c @@ -33,19 +33,26 @@ struct Tree_Visit_Table void (*visit_statement_defer)(struct Tree_Visit* visitor, struct Tree_Statement* stmt); void (*visit_expression)(struct Tree_Visit* visitor, struct Tree_Expression* expr); - void (*visit_expression_integer_literal)(struct Tree_Visit* visitor, struct Tree_Expression* expr); - void (*visit_expression_float_literal)(struct Tree_Visit* visitor, struct Tree_Expression* expr); - void (*visit_expression_string_literal)(struct Tree_Visit* visitor, struct Tree_Expression* expr); - void (*visit_expression_boolean_literal)(struct Tree_Visit* visitor, struct Tree_Expression* expr); + void (*visit_expression_integer_literal)( + struct Tree_Visit* visitor, struct Tree_Expression* expr); + void (*visit_expression_float_literal)( + struct Tree_Visit* visitor, struct Tree_Expression* expr); + void (*visit_expression_string_literal)( + struct Tree_Visit* visitor, struct Tree_Expression* expr); + void (*visit_expression_boolean_literal)( + struct Tree_Visit* visitor, struct Tree_Expression* expr); void (*visit_expression_name)(struct Tree_Visit* visitor, struct Tree_Expression* expr); - void (*visit_expression_unary_operation)(struct Tree_Visit* visitor, struct Tree_Expression* expr); - void (*visit_expression_binary_operation)(struct Tree_Visit* visitor, struct Tree_Expression* expr); + void (*visit_expression_unary_operation)( + struct Tree_Visit* visitor, struct Tree_Expression* expr); + void (*visit_expression_binary_operation)( + struct Tree_Visit* visitor, struct Tree_Expression* expr); void (*visit_expression_group)(struct Tree_Visit* visitor, struct Tree_Expression* expr); void (*visit_expression_call)(struct Tree_Visit* visitor, struct Tree_Expression* expr); void (*visit_expression_construct)(struct Tree_Visit* visitor, struct Tree_Expression* expr); void (*visit_expression_subscript)(struct Tree_Visit* visitor, struct Tree_Expression* expr); void (*visit_expression_member)(struct Tree_Visit* visitor, struct Tree_Expression* expr); - void (*visit_expression_increment_decrement)(struct Tree_Visit* visitor, struct Tree_Expression* expr); + void (*visit_expression_increment_decrement)( + struct Tree_Visit* visitor, struct Tree_Expression* expr); void (*visit_expression_try)(struct Tree_Visit* visitor, struct Tree_Expression* expr); void (*visit_expression_must)(struct Tree_Visit* visitor, struct Tree_Expression* expr); void (*visit_expression_function)(struct Tree_Visit* visitor, struct Tree_Expression* expr); @@ -63,8 +70,10 @@ struct Tree_Visit_Table void (*visit_type_node_class)(struct Tree_Visit* visitor, struct Tree_Type* node); void (*visit_block_node)(struct Tree_Visit* visitor, struct Tree_Block* node); - void (*visit_bare_declaration_node)(struct Tree_Visit* visitor, struct Tree_Bare_Declaration* node); - void (*visit_function_header_node)(struct Tree_Visit* visitor, struct Tree_Function_Header* header); + void (*visit_bare_declaration_node)( + struct Tree_Visit* visitor, struct Tree_Bare_Declaration* node); + void (*visit_function_header_node)( + struct Tree_Visit* visitor, struct Tree_Function_Header* header); void (*visit_argument_group_node)(struct Tree_Visit* visitor, struct Tree_Argument_Group* node); void (*visit_pragma_node)(struct Tree_Visit* visitor, struct Tree_Pragma* node); }; @@ -291,7 +300,8 @@ tree_walk_expression_member(struct Tree_Visit* visit, struct Tree_Expression* ex } void -tree_walk_expression_increment_decrement(struct Tree_Visit* visit, struct Tree_Expression* expression) +tree_walk_expression_increment_decrement( + struct Tree_Visit* visit, struct Tree_Expression* expression) { VISIT(visit_expression, expression->value.increment_decrement.subject); } @@ -416,7 +426,9 @@ tree_walk_type_class(struct Tree_Visit* visit, struct Tree_Type* node) void tree_walk_block(struct Tree_Visit* visit, struct Tree_Block* node) { - FOR_EACH (struct Tree_Statement*, statement, node->statements) { VISIT(visit_statement, statement); } + FOR_EACH (struct Tree_Statement*, statement, node->statements) { + VISIT(visit_statement, statement); + } } void @@ -438,7 +450,9 @@ tree_walk_function_header(struct Tree_Visit* visit, struct Tree_Function_Header* void tree_walk_argument_group(struct Tree_Visit* visit, struct Tree_Argument_Group* node) { - FOR_EACH (struct Tree_Expression*, argument, node->arguments) { VISIT(visit_expression, argument); } + FOR_EACH (struct Tree_Expression*, argument, node->arguments) { + VISIT(visit_expression, argument); + } } void @@ -601,7 +615,8 @@ tree_printer_visit_statement_conditional(struct Tree_Visit* visit, struct Tree_S PRINT("(conditional"); for (uint i = 0; i < stmt->value.conditional.condition_count; ++i) { - const struct Tree_Statement_Conditional_Branch* branch = &stmt->value.conditional.conditions[i]; + const struct Tree_Statement_Conditional_Branch* branch = + &stmt->value.conditional.conditions[i]; PRINT(" "); if (branch->when) { PRINT("(when "); @@ -707,7 +722,8 @@ tree_printer_visit_expression(struct Tree_Visit* visit, struct Tree_Expression* } void -tree_printer_visit_expression_integer_literal(struct Tree_Visit* visit, struct Tree_Expression* expr) +tree_printer_visit_expression_integer_literal( + struct Tree_Visit* visit, struct Tree_Expression* expr) { TREE_PRINTER_PREAMBLE @@ -731,7 +747,8 @@ tree_printer_visit_expression_string_literal(struct Tree_Visit* visit, struct Tr } void -tree_printer_visit_expression_boolean_literal(struct Tree_Visit* visit, struct Tree_Expression* expr) +tree_printer_visit_expression_boolean_literal( + struct Tree_Visit* visit, struct Tree_Expression* expr) { TREE_PRINTER_PREAMBLE @@ -747,7 +764,8 @@ tree_printer_visit_expression_name(struct Tree_Visit* visit, struct Tree_Express } void -tree_printer_visit_expression_unary_operation(struct Tree_Visit* visit, struct Tree_Expression* expr) +tree_printer_visit_expression_unary_operation( + struct Tree_Visit* visit, struct Tree_Expression* expr) { TREE_PRINTER_PREAMBLE @@ -757,7 +775,8 @@ tree_printer_visit_expression_unary_operation(struct Tree_Visit* visit, struct T } void -tree_printer_visit_expression_binary_operation(struct Tree_Visit* visit, struct Tree_Expression* expr) +tree_printer_visit_expression_binary_operation( + struct Tree_Visit* visit, struct Tree_Expression* expr) { TREE_PRINTER_PREAMBLE @@ -827,7 +846,8 @@ tree_printer_visit_expression_member(struct Tree_Visit* visit, struct Tree_Expre } void -tree_printer_visit_expression_increment_decrement(struct Tree_Visit* visit, struct Tree_Expression* expr) +tree_printer_visit_expression_increment_decrement( + struct Tree_Visit* visit, struct Tree_Expression* expr) { TREE_PRINTER_PREAMBLE @@ -1016,9 +1036,7 @@ tree_printer_visit_bare_declaration(struct Tree_Visit* visit, struct Tree_Bare_D TREE_PRINTER_PREAMBLE PRINT("(declaration "); - FOR_EACH_ARRAY(struct String, name, &node->names, { - PRINT("%s ", name.data); - }) + FOR_EACH_ARRAY (struct String, name, &node->names) PRINT("%s ", name->data); if (node->type && node->type->type != TREE_TYPE_NONE) { VISIT(visit_type_node, node->type); -- cgit 1.4.1