From fb5a2b68b00022006534d57060445622864776d8 Mon Sep 17 00:00:00 2001 From: Emmanuel Briot Date: Tue, 25 Oct 2022 09:58:04 +0200 Subject: [PATCH] Remove selector_name rule Was a choice() with a single alternative --- corpus/generics.txt | 6 +- corpus/records.txt | 318 +++++++++++++++++++++--------------------- corpus/statements.txt | 12 +- grammar.js | 14 +- 4 files changed, 167 insertions(+), 183 deletions(-) diff --git a/corpus/generics.txt b/corpus/generics.txt index f6c5c2d..65f0847 100644 --- a/corpus/generics.txt +++ b/corpus/generics.txt @@ -58,8 +58,7 @@ end; (actual_parameter_part (parameter_association (component_choice_list - (selector_name - (identifier))) + (identifier)) (assoc_expression (expression (relation @@ -70,8 +69,7 @@ end; (numeric_literal))))))))) (parameter_association (component_choice_list - (selector_name - (identifier))) + (identifier)) (assoc_expression))))))) (generic_formal_parameter_declaration (formal_subprogram_declaration diff --git a/corpus/records.txt b/corpus/records.txt index 1620e26..5597131 100644 --- a/corpus/records.txt +++ b/corpus/records.txt @@ -357,178 +357,174 @@ end; (record_extension_part (record_definition))))))))) -======== +================================================================================ record aggregates -======== +================================================================================ procedure P is begin A := (F1 => 1, F2 => 2); end; -------- +-------------------------------------------------------------------------------- - (compilation - (compilation_unit - (proper_body - (subprogram_body - (subprogram_specification - (procedure_specification - (name - (identifier)))) - (handled_sequence_of_statements - (sequence_of_statements - (statement - (simple_statement - (assignment_statement - (name - (identifier)) - (assign_value - (expression - (relation - (simple_expression - (term - (factor - (primary - (aggregate - (record_aggregate - (record_component_association_list - (record_component_association - (component_choice_list - (selector_name - (identifier))) - (assoc_expression - (expression - (relation - (simple_expression - (term - (factor - (primary - (numeric_literal))))))))) - (record_component_association - (component_choice_list - (selector_name - (identifier))) - (assoc_expression - (expression - (relation - (simple_expression - (term - (factor - (primary - (numeric_literal)))))))))))))))))))))))))))) - -====== -record aggregate extension -====== - -procedure P is -begin - A := (B with F3 => 2); -end; - ---------- - - (compilation - (compilation_unit - (proper_body - (subprogram_body - (subprogram_specification - (procedure_specification - (name - (identifier)))) - (handled_sequence_of_statements - (sequence_of_statements - (statement - (simple_statement - (assignment_statement - (name - (identifier)) - (assign_value - (expression - (relation - (simple_expression - (term - (factor - (primary - (aggregate - (extension_aggregate - (expression - (relation - (simple_expression - (term - (factor - (primary - (name - (identifier)))))))) - (record_component_association_list - (record_component_association - (component_choice_list - (selector_name - (identifier))) - (assoc_expression - (expression - (relation - (simple_expression - (term - (factor - (primary - (numeric_literal)))))))))))))))))))))))))))) - -====== -record delta aggregate -====== - -procedure P is -begin - A := (B with delta F3 => 2); -end; - -------- - - (compilation - (compilation_unit - (proper_body - (subprogram_body - (subprogram_specification - (procedure_specification - (name - (identifier)))) - (handled_sequence_of_statements - (sequence_of_statements - (statement - (simple_statement - (assignment_statement - (name - (identifier)) - (assign_value - (expression - (relation - (simple_expression - (term - (factor - (primary - (aggregate - (delta_aggregate - (record_delta_aggregate +(compilation + (compilation_unit + (proper_body + (subprogram_body + (subprogram_specification + (procedure_specification + (name + (identifier)))) + (handled_sequence_of_statements + (sequence_of_statements + (statement + (simple_statement + (assignment_statement + (name + (identifier)) + (assign_value + (expression + (relation + (simple_expression + (term + (factor + (primary + (aggregate + (record_aggregate + (record_component_association_list + (record_component_association + (component_choice_list + (identifier)) + (assoc_expression (expression (relation (simple_expression (term (factor (primary - (name - (identifier)))))))) - (record_component_association_list - (record_component_association - (component_choice_list - (selector_name - (identifier))) - (assoc_expression - (expression - (relation - (simple_expression - (term - (factor - (primary - (numeric_literal))))))))))))))))))))))))))))) + (numeric_literal))))))))) + (record_component_association + (component_choice_list + (identifier)) + (assoc_expression + (expression + (relation + (simple_expression + (term + (factor + (primary + (numeric_literal)))))))))))))))))))))))))))) + +================================================================================ +record aggregate extension +================================================================================ + +procedure P is +begin + A := (B with F3 => 2); +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (proper_body + (subprogram_body + (subprogram_specification + (procedure_specification + (name + (identifier)))) + (handled_sequence_of_statements + (sequence_of_statements + (statement + (simple_statement + (assignment_statement + (name + (identifier)) + (assign_value + (expression + (relation + (simple_expression + (term + (factor + (primary + (aggregate + (extension_aggregate + (expression + (relation + (simple_expression + (term + (factor + (primary + (name + (identifier)))))))) + (record_component_association_list + (record_component_association + (component_choice_list + (identifier)) + (assoc_expression + (expression + (relation + (simple_expression + (term + (factor + (primary + (numeric_literal)))))))))))))))))))))))))))) + +================================================================================ +record delta aggregate +================================================================================ + +procedure P is +begin + A := (B with delta F3 => 2); +end; + +-------------------------------------------------------------------------------- + +(compilation + (compilation_unit + (proper_body + (subprogram_body + (subprogram_specification + (procedure_specification + (name + (identifier)))) + (handled_sequence_of_statements + (sequence_of_statements + (statement + (simple_statement + (assignment_statement + (name + (identifier)) + (assign_value + (expression + (relation + (simple_expression + (term + (factor + (primary + (aggregate + (delta_aggregate + (record_delta_aggregate + (expression + (relation + (simple_expression + (term + (factor + (primary + (name + (identifier)))))))) + (record_component_association_list + (record_component_association + (component_choice_list + (identifier)) + (assoc_expression + (expression + (relation + (simple_expression + (term + (factor + (primary + (numeric_literal))))))))))))))))))))))))))))) diff --git a/corpus/statements.txt b/corpus/statements.txt index a8d59e2..692bbf1 100644 --- a/corpus/statements.txt +++ b/corpus/statements.txt @@ -228,8 +228,7 @@ end F; (record_component_association_list (record_component_association (component_choice_list - (selector_name - (identifier))) + (identifier)) (assoc_expression (expression (relation @@ -390,8 +389,7 @@ end; (actual_parameter_part (parameter_association (component_choice_list - (selector_name - (identifier))) + (identifier)) (assoc_expression (expression (relation @@ -574,8 +572,7 @@ end; (actual_parameter_part (parameter_association (component_choice_list - (selector_name - (identifier))) + (identifier)) (assoc_expression (expression (relation @@ -702,8 +699,7 @@ end; (record_component_association_list (record_component_association (component_choice_list - (selector_name - (identifier))) + (identifier)) (assoc_expression (expression (relation diff --git a/grammar.js b/grammar.js index bf13c7d..38041f0 100644 --- a/grammar.js +++ b/grammar.js @@ -50,9 +50,9 @@ module.exports = grammar({ // specified in at_clause. [$.at_clause, $.name], - // name ':=' '(' _direct_name . '=>' - // Where the direct_name could be a name or selector_name - [$.name, $.selector_name], + // 'case' '(' _direct_name . '=>' ... + // ??? Invalid Ada + [$.name, $.component_choice_list], // name ':=' '(' expression . ',' ... [$.expression_list, $.record_component_association], @@ -111,7 +111,6 @@ module.exports = grammar({ [$.function_call, $.procedure_call_statement], [$.function_call, $.name], - [$.selector_name, $.primary], [$.formal_derived_type_definition], [$._direct_name, $.aspect_mark], [$.name, $.attribute_reference, $.qualified_expression], @@ -165,11 +164,6 @@ module.exports = grammar({ name_list: $ => comma_separated_list_of($.name), defining_identifier_list: $ => comma_separated_list_of($.identifier), - selector_name: $ => choice( - $._direct_name, - // $.character_literal, // was in ada-mode, moved to primary instead - // reservedWord('others'), - ), attribute_reference: $ => choice( seq( $.name, @@ -641,7 +635,7 @@ module.exports = grammar({ $._non_default_assoc_expression, ), component_choice_list: $ => - list_of('|', $.selector_name), + list_of('|', $._direct_name), aggregate: $ => choice( $.record_aggregate, $.extension_aggregate,