sem.h (563B)
#pragma once
#include <libgccjit.h>
#include <stdlib.h>
#include "types.h"
// Symbol table functions
void symbol_add(const char* name, TypeInfo* type);
TypeInfo* symbol_get_type(const char* name);
Symbol* symbol_find(const char* name);
// Scope management functions
Scope scope_init(Node*);
void scope_add_symbol(Scope* scope, const char* name, TypeInfo* type);
Symbol* scope_find_symbol(Scope* scope, const char* name);
// Type checking functions
int types_equal(TypeInfo* a, TypeInfo* b);
void scope_program(Scope*, Ast*);
void scope_print(Scope*, Ast*);