Add lexer and parser sources

This commit is contained in:
2025-06-14 23:57:48 +02:00
parent d5e2d53e9b
commit eec89436b1
22 changed files with 3423 additions and 395 deletions

View File

@ -318,7 +318,7 @@ namespace elna::gcc
}
}
void generic_visitor::declare_procedure(boot::procedure_definition *const definition)
void generic_visitor::declare_procedure(boot::procedure_declaration *const definition)
{
tree declaration_type = build_procedure_type(definition->heading());
tree fndecl = build_fn_decl(definition->identifier.identifier.c_str(), declaration_type);
@ -409,11 +409,11 @@ namespace elna::gcc
{
declaration->accept(this);
}
for (boot::constant_definition *const constant : unit->constants)
for (boot::constant_declaration *const constant : unit->constants)
{
constant->accept(this);
}
for (boot::type_definition *const type : unit->types)
for (boot::type_declaration *const type : unit->types)
{
type->accept(this);
}
@ -421,17 +421,17 @@ namespace elna::gcc
{
variable->accept(this);
}
for (boot::procedure_definition *const procedure : unit->procedures)
for (boot::procedure_declaration *const procedure : unit->procedures)
{
declare_procedure(procedure);
}
for (boot::procedure_definition *const procedure : unit->procedures)
for (boot::procedure_declaration *const procedure : unit->procedures)
{
procedure->accept(this);
}
}
void generic_visitor::visit(boot::procedure_definition *definition)
void generic_visitor::visit(boot::procedure_declaration *definition)
{
if (!definition->body.has_value())
{
@ -449,7 +449,7 @@ namespace elna::gcc
{
this->symbols->enter(IDENTIFIER_POINTER(DECL_NAME(argument_chain)), argument_chain);
}
for (boot::constant_definition *const constant : definition->body.value().constants())
for (boot::constant_declaration *const constant : definition->body.value().constants())
{
constant->accept(this);
}
@ -818,7 +818,7 @@ namespace elna::gcc
}
}
void generic_visitor::visit(boot::constant_definition *definition)
void generic_visitor::visit(boot::constant_declaration *definition)
{
location_t definition_location = get_location(&definition->position());
definition->body().accept(this);
@ -858,7 +858,7 @@ namespace elna::gcc
this->current_expression = NULL_TREE;
}
void generic_visitor::visit(boot::type_definition *definition)
void generic_visitor::visit(boot::type_declaration *definition)
{
location_t definition_location = get_location(&definition->position());
this->current_expression = this->unresolved.at(definition->identifier.identifier);