From 244449004fb62adbfd43b81e8dfce7500ca4a7e4 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Fri, 9 Oct 2026 09:55:53 +0200 Subject: Move export mark after the generic parameters --- boot/parser.yy | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) (limited to 'boot/parser.yy') diff --git a/boot/parser.yy b/boot/parser.yy index 65d3dba..855cc76 100644 --- a/boot/parser.yy +++ b/boot/parser.yy @@ -161,6 +161,7 @@ along with GCC; see the file COPYING3. If not see %type > attribute; %type > attributes; %type , bool>> import_declaration; +%type export_marker; %type > import_path; %type > required_identifiers optional_identifiers generic_parameters; %type > enumeration_member; @@ -244,9 +245,15 @@ optional_begin_statements: | statements { $$ = $1; } identifier: IDENTIFIER { $$ = std::make_unique($1, boot::make_position(@1)); } +export_marker: + "*" { $$ = true; } + | %empty { $$ = false; } identifier_definition: - IDENTIFIER "*" { $$ = std::make_unique($1, boot::make_position(@1), true); } - | IDENTIFIER { $$ = std::make_unique($1, boot::make_position(@1), false); } + IDENTIFIER generic_parameters export_marker + { + $$ = std::make_unique($1, boot::make_position(@1), + $3, std::move($2)); + } attribute: "#{" IDENTIFIER optional_expressions "}" { @@ -282,16 +289,14 @@ procedure_heading: $$->attributes = $4; } procedure_declaration: - "proc" identifier_definition generic_parameters procedure_heading procedure_body + "proc" identifier_definition procedure_heading procedure_body { $$ = new boot::procedure_declaration(boot::make_position(@$), - std::move(*$2), $4, std::move(*$5)); - $$->parameters = $3; + std::move(*$2), $3, std::move(*$4)); } - | "proc" identifier_definition generic_parameters procedure_heading "extern" + | "proc" identifier_definition procedure_heading "extern" { - $$ = new boot::procedure_declaration(boot::make_position(@$), std::move(*$2), $4); - $$->parameters = $3; + $$ = new boot::procedure_declaration(boot::make_position(@$), std::move(*$2), $3); } call_expression: designator_expression actual_parameter_list @@ -764,16 +769,14 @@ import_declarations: new boot::import_declaration(boot::make_position(@$), std::move(segments), exported)); } type_declaration: - identifier_definition generic_parameters "=" type_expression + identifier_definition "=" type_expression { - $$ = new boot::type_declaration(boot::make_position(@$), std::move(*$1), $4); - $$->parameters = $2; + $$ = new boot::type_declaration(boot::make_position(@$), std::move(*$1), $3); } - | identifier_definition generic_parameters "=" "extern" + | identifier_definition "=" "extern" { $$ = new boot::type_declaration(boot::make_position(@$), std::move(*$1), new boot::extern_type_expression(boot::make_position(@$))); - $$->parameters = $2; } type_declarations: type_declaration type_declarations -- cgit v1.2.3