|
#ifndef RAVA_SEMANTIC_H
|
|
#define RAVA_SEMANTIC_H
|
|
|
|
#include "../parser/parser.h"
|
|
#include "../types/types.h"
|
|
#include "symbol_table.h"
|
|
#include <stdbool.h>
|
|
|
|
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
|