Implement enumeration type

This commit is contained in:
2025-04-04 22:48:12 +02:00
parent 50970f3289
commit 4737b1b4b0
13 changed files with 373 additions and 228 deletions

View File

@@ -103,7 +103,7 @@ namespace elna::boot
{
}
primitive_type_expression *type_expression::is_primitive()
named_type_expression *type_expression::is_named()
{
return nullptr;
}
@@ -133,17 +133,22 @@ namespace elna::boot
return nullptr;
}
primitive_type_expression::primitive_type_expression(const struct position position, const std::string& name)
enumeration_type_expression *type_expression::is_enumeration()
{
return nullptr;
}
named_type_expression::named_type_expression(const struct position position, const std::string& name)
: type_expression(position), name(name)
{
}
void primitive_type_expression::accept(parser_visitor *visitor)
void named_type_expression::accept(parser_visitor *visitor)
{
visitor->visit(this);
}
primitive_type_expression *primitive_type_expression::is_primitive()
named_type_expression *named_type_expression::is_named()
{
return this;
}
@@ -312,6 +317,26 @@ namespace elna::boot
visitor->visit(this);
}
procedure_type_expression *procedure_type_expression::is_procedure()
{
return this;
}
enumeration_type_expression::enumeration_type_expression(const struct position position, std::vector<std::string>&& members)
: type_expression(position), members(members)
{
}
void enumeration_type_expression::accept(parser_visitor *visitor)
{
visitor->visit(this);
}
enumeration_type_expression *enumeration_type_expression::is_enumeration()
{
return this;
}
procedure_definition::procedure_definition(const struct position position, const std::string& identifier,
const bool exported, procedure_type_expression *heading, block *body)
: definition(position, identifier, exported), m_heading(heading), body(body)
@@ -323,11 +348,6 @@ namespace elna::boot
visitor->visit(this);
}
procedure_type_expression *procedure_type_expression::is_procedure()
{
return this;
}
procedure_type_expression& procedure_definition::heading()
{
return *m_heading;