ox

The Ox programming language, compiler and tools (WIP)
Log | Files | Refs | README | LICENSE

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*);