Update to GCC 15.1

This commit is contained in:
2025-05-14 23:05:52 +02:00
parent a02e053ed2
commit 981059e745
5 changed files with 218 additions and 393 deletions

View File

@ -108,7 +108,7 @@ along with GCC; see the file COPYING3. If not see
ELSE "else"
ELSIF "elsif"
RETURN "return"
REPEAT "repeat"
PROGRAM "program"
BREAK "break"
BEGIN_BLOCK "begin"
END_BLOCK "end"
@ -166,15 +166,15 @@ along with GCC; see the file COPYING3. If not see
%type <std::vector<std::string>> identifiers;
%%
program:
constant_part type_part variable_part procedure_part "begin" statements "end" "."
"program" constant_part type_part variable_part procedure_part "begin" statements "end" "."
{
auto tree = new boot::program(boot::make_position(@5));
auto tree = new boot::program(boot::make_position(@6));
std::swap(tree->constants, $1);
std::swap(tree->types , $2);
std::swap(tree->variables, $3);
std::swap(tree->procedures, $4);
std::swap(tree->body, $6);
std::swap(tree->constants, $2);
std::swap(tree->types , $3);
std::swap(tree->variables, $4);
std::swap(tree->procedures, $5);
std::swap(tree->body, $7);
driver.tree.reset(tree);
}
@ -211,12 +211,12 @@ procedure_heading:
}
}
procedure_definition:
"proc" identifier_definition procedure_heading ";" block
"proc" identifier_definition procedure_heading block
{
$$ = new boot::procedure_definition(boot::make_position(@1), std::move($2), $3.second, $5);
$$ = new boot::procedure_definition(boot::make_position(@1), std::move($2), $3.second, $4);
std::swap($3.first, $$->parameter_names);
}
| "proc" identifier_definition procedure_heading ";" "extern"
| "proc" identifier_definition procedure_heading "extern"
{
$$ = new boot::procedure_definition(boot::make_position(@1), std::move($2), $3.second);
std::swap($3.first, $$->parameter_names);
@ -419,8 +419,6 @@ statement:
| return_statement { $$ = $1; }
| "break" IDENTIFIER
{ $$ = new boot::escape_statement(boot::make_position(@1), boot::escape_direction::end, $2); }
| "repeat" IDENTIFIER
{ $$ = new boot::escape_statement(boot::make_position(@1), boot::escape_direction::begin, $2); }
| call_expression { $$ = $1; }
| "defer" statements "end" { $$ = new boot::defer_statement(boot::make_position(@1), std::move($2)); }
| "case" expression "of" switch_cases else_statements "end"