diff options
Diffstat (limited to 'src/ast.c')
-rw-r--r-- | src/ast.c | 42 |
1 files changed, 0 insertions, 42 deletions
@@ -19,42 +19,6 @@ #include <stdio.h> #include <stdlib.h> -void -ast_node_accept_visitor(ast_node_t *node, ast_visitor_t *visitor) -{ - assert(node); - assert(node->accept_visitor); - node->accept_visitor(node, visitor); -} - -static void -ast_node_function_accept_visitor(ast_node_t *node, ast_visitor_t *visitor) -{ - assert(visitor->visit_function && "unimplemented visit_function"); - visitor->visit_function(visitor, &node->data.function); -} - -static void -ast_node_return_stmt_accept_visitor(ast_node_t *node, ast_visitor_t *visitor) -{ - assert(visitor->visit_return_stmt && "unimplemented visit_return_stmt"); - visitor->visit_return_stmt(visitor, &node->data.return_stmt); -} - -static void -ast_node_literal_visitor(ast_node_t *node, ast_visitor_t *visitor) -{ - assert(visitor->visit_literal && "unimplemented visit_literal"); - visitor->visit_literal(visitor, &node->data.literal); -} - -static void -ast_node_binary_operation_visitor(ast_node_t *node, ast_visitor_t *visitor) -{ - assert(visitor->visit_binary_operation && "unimplemented visit_binary_operation"); - visitor->visit_binary_operation(visitor, &node->data.binary_operation); -} - ast_node_t * ast_node_new() { @@ -108,7 +72,6 @@ ast_node_destroy(ast_node_t *node) void ast_node_init_return_stmt(ast_node_t *node, ast_node_t *argument) { - node->accept_visitor = &ast_node_return_stmt_accept_visitor; node->kind = AST_RETURN_STMT; node->data.return_stmt = (ast_return_stmt_t){ .argument = argument }; } @@ -116,7 +79,6 @@ ast_node_init_return_stmt(ast_node_t *node, ast_node_t *argument) void ast_node_init_function_declaration(ast_node_t *node, string_view_t name, type_t return_type, vector_t *body) { - node->accept_visitor = &ast_node_function_accept_visitor; node->kind = AST_FUNCTION_DECLARATION; node->data = (ast_node_data_t){ .function = { .name = name, .return_type = return_type, .body = body } }; } @@ -124,7 +86,6 @@ ast_node_init_function_declaration(ast_node_t *node, string_view_t name, type_t void ast_literal_integer_create(ast_node_t *node, uint32_t number) { - node->accept_visitor = &ast_node_literal_visitor; node->kind = AST_LITERAL; node->data.literal = (ast_literal_t){ .kind = AST_LITERAL_INTEGER, .value = { .integer = number } }; } @@ -132,7 +93,6 @@ ast_literal_integer_create(ast_node_t *node, uint32_t number) void ast_node_init_binary_operation(ast_node_t *node, ast_binary_operation_kind_t kind, ast_node_t *left, ast_node_t *right) { - node->accept_visitor = &ast_node_binary_operation_visitor; node->kind = AST_BINARY_OPERATION; node->data = (ast_node_data_t){ .binary_operation = { .kind = kind, .left = left, .right = right } }; } @@ -140,7 +100,6 @@ ast_node_init_binary_operation(ast_node_t *node, ast_binary_operation_kind_t kin void ast_node_init_variable_declaration(ast_node_t *node, string_view_t variable_name, type_t type, ast_node_t *value) { - // FIXME: define the visitor strategy node->kind = AST_VARIABLE_DECLARATION; node->data = (ast_node_data_t){ .variable = { .name = variable_name, .type = type, .value = value } }; } @@ -148,7 +107,6 @@ ast_node_init_variable_declaration(ast_node_t *node, string_view_t variable_name void ast_node_init_identifier(ast_node_t *node, string_view_t name) { - // FIXME: define the visitor strategy node->kind = AST_IDENTIFIER; node->data.identifier = (ast_identifier_t){ .name = name }; } |