From 3bc44f85de340c8da88d74b561b75716162d84d0 Mon Sep 17 00:00:00 2001 From: Johnny Richard Date: Sat, 29 Apr 2023 20:49:51 +0200 Subject: ast: Remove ast visitor pattern to simplify the code I decided to remove the visitor pattern due to the lack of Object Oriented Programming support for C. Now if you want to navigate through the AST, you should do it with switch case and recursion. The code looks way simpler without visitor pattern. I have added a CFLAG -Werror which validates if the switch statement covers all branches for a given enum at compile time. Signed-off-by: Johnny Richard --- src/gas_assembly_generator.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/gas_assembly_generator.h') diff --git a/src/gas_assembly_generator.h b/src/gas_assembly_generator.h index c3192b7..4d4b28e 100644 --- a/src/gas_assembly_generator.h +++ b/src/gas_assembly_generator.h @@ -22,14 +22,13 @@ typedef struct gas_assembly_generator_t { - ast_visitor_t super; - FILE *out; + FILE *stream; } gas_assembly_generator_t; void -gas_assembly_generator_init(gas_assembly_generator_t *, FILE *); +gas_assembly_generator_init(gas_assembly_generator_t *gen, FILE *stream); void -gas_assembly_generator_visit(gas_assembly_generator_t *gen, ast_node_t *ast); +gas_assembly_generator_compile(gas_assembly_generator_t *gen, ast_node_t *ast); #endif /* GAS_ASSEMBLY_GENERATOR_H */ -- cgit v1.2.3