Provide record initialization syntax

This commit is contained in:
2025-02-13 22:54:47 +01:00
parent 62d9398772
commit c564847c6b
7 changed files with 115 additions and 56 deletions

View File

@ -444,7 +444,7 @@ variable_declarations:
variable_part:
/* no variable declarations */ {}
| VAR variable_declarations SEMICOLON { std::swap($$, $2); }
constant_definition: identifier_definition EQUALS literal SEMICOLON
constant_definition: identifier_definition EQUALS literal
{
$$ = new elna::boot::constant_definition(elna::boot::make_position(@1), $1.first, $1.second, $3);
}
@ -464,15 +464,16 @@ type_definition: identifier_definition EQUALS type_expression
$$ = new elna::boot::type_definition(elna::boot::make_position(@1), $1.first, $1.second, $3);
}
type_definitions:
type_definition COMMA type_definitions
type_definition type_definitions
{
std::swap($$, $3);
std::swap($$, $2);
$$.emplace($$.cbegin(), std::move($1));
}
| type_definition { $$.emplace_back(std::move($1)); }
type_part:
/* no type definitions */ {}
| TYPE type_definitions SEMICOLON { std::swap($$, $2); }
| TYPE {}
| TYPE type_definitions { std::swap($$, $2); }
formal_parameter_list:
LEFT_PAREN RIGHT_PAREN {}
| LEFT_PAREN variable_declarations RIGHT_PAREN { std::swap($$, $2); }