#ifndef RAVA_SEMANTIC_H #define RAVA_SEMANTIC_H #include "../parser/parser.h" #include "../types/types.h" #include "symbol_table.h" #include typedef struct { RavaSymbolTable_t *symbol_table; char *error_message; bool had_error; int error_count; } RavaSemanticAnalyzer_t; RavaSemanticAnalyzer_t* rava_semantic_analyzer_create(); void rava_semantic_analyzer_destroy(RavaSemanticAnalyzer_t *analyzer); bool rava_semantic_analyze(RavaSemanticAnalyzer_t *analyzer, RavaASTNode_t *root); RavaType_t* rava_semantic_get_expression_type(RavaSemanticAnalyzer_t *analyzer, RavaASTNode_t *expr); #endif