Add a symbol table with type info

This commit is contained in:
2025-03-09 00:53:13 +01:00
parent 868db6e0bf
commit 55ee8ff56d
6 changed files with 448 additions and 342 deletions

View File

@ -47,6 +47,7 @@ elna_OBJS = \
elna/lexer.o \
elna/parser.o \
elna/semantic.o \
elna/symbol.o \
elna/result.o \
$(END)

View File

@ -65,12 +65,13 @@ namespace gcc
void do_semantic_analysis(std::shared_ptr<symbol_table> symbols, std::unique_ptr<boot::program>& ast)
{
boot::declaration_visitor declaration_visitor;
auto info_table = boot::builtin_symbol_table();
boot::declaration_visitor declaration_visitor(info_table);
declaration_visitor.visit(ast.get());
for (auto unresolved : declaration_visitor.unresolved)
{
auto inner_alias = elna::gcc::get_inner_alias(symbols, boot::type(unresolved.second));
auto inner_alias = get_inner_alias(symbols, boot::type(unresolved.second));
symbols->enter(unresolved.first, inner_alias);
}
}