Various inlining of rules to simplify tree

This commit is contained in:
Emmanuel Briot 2022-12-09 09:54:14 +01:00
parent de1a5f3038
commit a41588c541
19 changed files with 45190 additions and 42826 deletions

View File

@ -48,11 +48,11 @@ module.exports = grammar({
// "'for' identifier * 'use'" could also be "'for' name * 'use'" as
// specified in at_clause.
[$.at_clause, $.name],
[$.at_clause, $._name],
// 'case' '(' identifier . '=>' ...
// ??? Invalid Ada
[$.name, $.component_choice_list],
[$._name, $.component_choice_list],
// 'case' '(' expression . ',' ...
[$.record_component_association_list, $.positional_array_aggregate],
@ -75,7 +75,7 @@ module.exports = grammar({
[$.defining_identifier_list, $.object_renaming_declaration],
[$.defining_identifier_list, $.object_renaming_declaration,
$.loop_label, $.exception_renaming_declaration],
[$.defining_identifier_list, $.name],
[$.defining_identifier_list, $._name],
// 'generic' . 'package' ...
[$.generic_formal_part, $.generic_renaming_declaration],
@ -96,16 +96,20 @@ module.exports = grammar({
// subprogram_specification 'is' 'begin'
// handled_sequence_of_statements 'end' string_literal . ';'
[$.name, $.subprogram_body],
[$._name, $.subprogram_body],
[$.function_call, $.procedure_call_statement],
[$.function_call, $.name],
[$.function_call, $._name],
[$.formal_derived_type_definition],
[$.name, $.aspect_mark],
[$.name, $.attribute_reference, $.qualified_expression],
[$.name, $.package_body_stub],
[$._name, $.aspect_mark],
[$._name, $.attribute_reference, $.qualified_expression],
[$._name, $.package_body_stub],
],
inline: $ => [
// To avoid conflicts
$.selected_component,
],
rules: {
compilation: $ => repeat(
@ -127,34 +131,34 @@ module.exports = grammar({
binary_adding_operator: $ => choice('+', '-', '&'),
unary_adding_operator: $ => choice('+', '-'),
multiplying_operator: $ => choice('*', '/', 'mod', 'rem'),
tick: $ => choice(
'\'', // But is not the start of a character_literal
),
tick: $ => '\'', // But is not the start of a character_literal
name: $ => choice(
seq( // inline selected_component from ada-mode
$.identifier,
optional(seq(
'.',
$.name,
)),
),
_name: $ => choice( // RM 4.1
$.identifier,
$.selected_component, // rule is inlined above
$.attribute_reference,
$.function_call,
$.qualified_expression,
'@',
//$.explicit_dereference, // covered by the first rule above
$.target_name,
// $.explicit_dereference, // covered by $.selected_component
$.character_literal,
$.string_literal, // name of an operator. However, in a
// number of places using a string doesn't
// make sense.
$.string_literal, // name of an operator. However, in a number of
// places using a string doesn't make sense.
),
name_list: $ => comma_separated_list_of($.name),
selected_component: $ => seq( // RM 4.1.3
$.identifier,
seq(
'.',
$._name,
),
),
target_name: $ => '@', // RM 5.2.1
_name_list: $ => prec.left(comma_separated_list_of($._name)),
defining_identifier_list: $ => comma_separated_list_of($.identifier),
attribute_reference: $ => choice(
seq(
$.name,
$._name,
$.tick,
$.attribute_designator,
),
@ -172,7 +176,7 @@ module.exports = grammar({
')',
),
reduction_specification: $ => seq(
$.name,
$._name,
',',
$.expression,
),
@ -240,7 +244,7 @@ module.exports = grammar({
reservedWord('of'),
),
optional(reservedWord('reverse')),
$.name,
field('iterator_name', $._name),
optional($.iterator_filter),
),
attribute_designator: $ => choice(
@ -250,12 +254,12 @@ module.exports = grammar({
reservedWord('digits'),
reservedWord('mod'),
),
function_call: $ => seq(
$.name,
function_call: $ => seq( // ARM 6.4
field('function_name', $._name),
$.actual_parameter_part,
),
qualified_expression: $ => seq( // ARM 4.7
$.name,
field('subtype_name', $._name),
$.tick,
choice(
seq('(', $.expression, ')'),
@ -302,7 +306,7 @@ module.exports = grammar({
),
package_specification: $ => seq(
reservedWord('package'),
field('name', $.name),
field('name', $._name),
optional($.aspect_specification),
reservedWord('is'),
repeat($._basic_declarative_item_pragma),
@ -311,28 +315,28 @@ module.exports = grammar({
repeat($._basic_declarative_item_pragma),
)),
reservedWord('end'),
field('endname', optional($.name)),
field('endname', optional($._name)),
),
with_clause: $ => seq(
with_clause: $ => seq( // ARM 10.1.2
field('is_limited', optional(reservedWord('limited'))),
field('is_private', optional(reservedWord('private'))),
reservedWord('with'),
field('names', $.name_list),
$._name_list,
';',
),
use_clause: $ => seq(
use_clause: $ => seq( // ARM 8.4
reservedWord('use'),
optional(seq(
field('is_all', optional(reservedWord('all'))),
field('is_type', reservedWord('type')),
)),
$.name_list,
$._name_list,
';',
),
subunit: $ => seq( // 10.1.3
reservedWord('separate'),
'(',
field('parent_unit_name', $.name),
field('parent_unit_name', $._name),
')',
$.proper_body,
),
@ -342,7 +346,7 @@ module.exports = grammar({
$.task_body,
$.protected_body,
),
subprogram_body: $ => seq(
subprogram_body: $ => seq( // ARM 6.3
optional($.overriding_indicator),
$.subprogram_specification,
optional($.aspect_specification),
@ -351,16 +355,13 @@ module.exports = grammar({
reservedWord('begin'),
$.handled_sequence_of_statements,
reservedWord('end'),
optional(choice(
$.name,
$.string_literal, // for operators
)),
optional(field('endname', $._name)),
';'
),
package_body: $ => seq(
reservedWord('package'),
reservedWord('body'),
field('name', $.name),
field('name', $._name),
optional($.aspect_specification),
reservedWord('is'),
optional($.non_empty_declarative_part),
@ -369,12 +370,12 @@ module.exports = grammar({
$.handled_sequence_of_statements,
)),
reservedWord('end'),
optional($.name),
optional(field('endname', $._name)),
';',
),
subtype_indication: $ => seq( // ARM 3.2.2
optional($.null_exclusion),
field('subtype_mark', $.name),
field('subtype_mark', $._name),
optional($.constraint),
),
constraint: $ => choice(
@ -386,9 +387,9 @@ module.exports = grammar({
$.digits_constraint,
$.delta_constraint,
),
range_g: $ => choice(
field('range_attribute_reference', seq(
$.name,
range_g: $ => choice( // ARM 3.5
field('range_attribute_reference', seq( // ARM 4.1.4
field('prefix', $._name),
$.tick,
$.range_attribute_designator,
)),
@ -433,9 +434,9 @@ module.exports = grammar({
),
$.raise_expression, // Added Ada 20x
),
raise_expression: $ => prec.right(1, seq(
raise_expression: $ => prec.right(1, seq( // ARM 11.3
reservedWord('raise'),
$.name,
field('exception_name', $._name),
optional(seq(
reservedWord('with'),
$.simple_expression,
@ -501,7 +502,7 @@ module.exports = grammar({
reservedWord('null'),
$.string_literal, // ada-mode puts this in name instead
$.aggregate,
$.name,
field('name', $._name),
$.allocator,
$._parenthesized_expression,
)),
@ -512,12 +513,12 @@ module.exports = grammar({
),
subtype_indication_paren_constraint: $ => seq(
optional($.null_exclusion),
$.name,
$._name,
optional($.index_constraint),
),
subpool_specification: $ => seq(
'(',
$.name,
field('subpool_handle_name', $._name),
')',
),
access_type_definition: $ => seq(
@ -550,13 +551,13 @@ module.exports = grammar({
$.parameter_and_result_profile,
),
),
access_definition: $ => seq(
access_definition: $ => seq( // ARM 3.10
optional($.null_exclusion),
reservedWord('access'),
choice(
seq(
optional(reservedWord('constant')),
$.name,
field('subtype_mark', $._name),
),
seq(
optional(reservedWord('protected')),
@ -576,7 +577,7 @@ module.exports = grammar({
comma_separated_list_of($.parameter_association),
// Those are not in the ARM, but added here for generic
// instantiations, which get the actual parameter part via $.name
// instantiations, which get the actual parameter part via $._name
// and its $.function_call
// ????
$.conditional_expression,
@ -794,7 +795,7 @@ module.exports = grammar({
$.subtype_indication,
optional(seq(
reservedWord('and'),
$.interface_list,
$._interface_list,
)),
reservedWord('with'),
reservedWord('private'),
@ -827,13 +828,13 @@ module.exports = grammar({
),
discriminant_specification_list: $ =>
prec.right(list_of(';', $.discriminant_specification)),
discriminant_specification: $ => seq(
discriminant_specification: $ => seq( // ARM 3.7
$.defining_identifier_list,
':',
choice(
seq(
optional($.null_exclusion),
$.name,
field('subtype_mark', $._name),
),
$.access_definition,
),
@ -881,8 +882,8 @@ module.exports = grammar({
),
_index_subtype_definition_list: $ =>
comma_separated_list_of($.index_subtype_definition),
index_subtype_definition: $ => seq(
$.name,
index_subtype_definition: $ => seq( // ARM 3.6
field('subtype_mark', $._name),
reservedWord('range'),
'<>',
),
@ -950,7 +951,7 @@ module.exports = grammar({
optional(seq(
optional(seq(
reservedWord('and'),
$.interface_list,
$._interface_list,
)),
$.record_extension_part,
)),
@ -965,11 +966,11 @@ module.exports = grammar({
reservedWord('interface'),
optional(seq(
reservedWord('and'),
$.interface_list,
$._interface_list,
)),
),
interface_list: $ =>
list_of(reservedWord('and'), $.name),
_interface_list: $ =>
list_of(reservedWord('and'), $._name),
record_extension_part: $ => seq(
reservedWord('with'), // record_extension_part in Ada grammar
$.record_definition,
@ -1134,9 +1135,9 @@ module.exports = grammar({
$.expression,
';',
),
attribute_definition_clause: $ => seq(
attribute_definition_clause: $ => seq( // ARM 13.3
reservedWord('for'),
$.name,
field('local_name', $._name),
$.tick,
$.attribute_designator,
reservedWord('use'),
@ -1224,7 +1225,7 @@ module.exports = grammar({
reservedWord('is'),
optional(seq(
reservedWord('new'),
$.interface_list,
$._interface_list,
reservedWord('with'),
)),
$.protected_definition,
@ -1237,7 +1238,7 @@ module.exports = grammar({
reservedWord('is'),
optional(seq(
reservedWord('new'),
$.interface_list,
$._interface_list,
reservedWord('with'),
)),
$.protected_definition,
@ -1264,8 +1265,8 @@ module.exports = grammar({
';',
),
choice_parameter_specification: $ => $.identifier, // ??? inline
component_clause: $ => seq(
$.name,
component_clause: $ => seq( // ARM 13.5.1
field('local_name', $._name),
reservedWord('at'),
field('position', $.expression),
reservedWord('range'),
@ -1319,16 +1320,16 @@ module.exports = grammar({
$.discrete_subtype_definition,
),
enumeration_aggregate: $ => $.array_aggregate, // ??? inline ARM 13.4
enumeration_representation_clause: $ => seq(
enumeration_representation_clause: $ => seq( // ARM 13.4
reservedWord('for'),
$.name,
field('local_name', $._name),
reservedWord('use'),
$.enumeration_aggregate,
';',
),
exception_choice_list: $ => list_of('|', $.exception_choice),
exception_choice: $ => choice(
$.name,
exception_choice: $ => choice( // ARM 11.2
field('exception_name', $._name),
reservedWord('others'),
),
exception_declaration: $ => seq(
@ -1359,7 +1360,7 @@ module.exports = grammar({
),
function_specification: $ => seq(
reservedWord('function'),
$.name,
field('name', $._name),
$.parameter_and_result_profile,
),
generic_declaration: $ => choice(
@ -1389,39 +1390,39 @@ module.exports = grammar({
$.package_specification,
';',
),
generic_instantiation: $ => seq(
generic_instantiation: $ => seq( // ARM 12.3
choice(
seq(
reservedWord('package'),
$.name,
field('name', $._name),
),
seq(
optional($.overriding_indicator),
choice(
seq(
reservedWord('procedure'),
$.name,
field('name', $._name),
),
seq(
reservedWord('function'),
$.name,
field('name', $._name),
),
),
),
),
reservedWord('is'),
reservedWord('new'),
$.name, // includes the generic_actual_part (via the function call)
field('generic_name', $._name), // includes the generic_actual_part (via the function call)
optional($.aspect_specification),
';',
),
formal_object_declaration: $ => choice(
formal_object_declaration: $ => choice( // ARM 12.4
seq(
$.defining_identifier_list,
':',
optional($.non_empty_mode),
optional($.null_exclusion),
$.name,
field('subtype_mark', $._name),
optional($.assign_value),
optional($.aspect_specification),
';',
@ -1440,7 +1441,7 @@ module.exports = grammar({
$.formal_complete_type_declaration,
$.formal_incomplete_type_declaration,
),
formal_complete_type_declaration: $ => seq(
formal_complete_type_declaration: $ => seq( // ARM 12.5
reservedWord('type'),
$.identifier,
optional($.discriminant_part),
@ -1449,7 +1450,7 @@ module.exports = grammar({
optional(seq(
reservedWord('or'),
reservedWord('use'),
$.name,
field('default_subtype_mark', $._name),
)),
optional($.aspect_specification),
';',
@ -1465,7 +1466,7 @@ module.exports = grammar({
optional(seq(
reservedWord('or'),
reservedWord('use'),
$.name,
field('default_subtype_mark', $._name),
)),
';',
),
@ -1490,18 +1491,18 @@ module.exports = grammar({
optional(reservedWord('limited')),
reservedWord('private'),
),
formal_derived_type_definition: $ => seq(
formal_derived_type_definition: $ => seq( // ARM 12.5.1
optional(reservedWord('abstract')),
optional(choice(
reservedWord('limited'),
reservedWord('synchronized'),
)),
reservedWord('new'),
$.name,
field('subtype_mark', $._name),
optional(seq(
optional(seq(
reservedWord('and'),
$.interface_list,
$._interface_list,
)),
reservedWord('with'),
reservedWord('private'),
@ -1561,17 +1562,17 @@ module.exports = grammar({
';',
),
subprogram_default: $ => choice(
field('default_name', $.name),
field('default_name', $._name),
'<>',
reservedWord('null'),
),
formal_package_declaration: $ => seq(
formal_package_declaration: $ => seq( // ARM 12.7
reservedWord('with'),
reservedWord('package'),
$.identifier,
reservedWord('is'),
reservedWord('new'),
$.name,
field('generic_package_name', $._name),
optional($.aspect_specification),
';',
),
@ -1579,46 +1580,44 @@ module.exports = grammar({
'null',
'all',
),
extended_global_aspect_definition: $ => choice(
seq(
reservedWord('use'),
field('formal_parameter_designator', choice(
$.formal_group_designator,
$.name,
)),
),
seq(
reservedWord('do'),
$.dispatching_operation_specifier,
),
),
disaptching_operation_set: $ =>
comma_separated_list_of($.dispatching_operation_specifier),
dispatching_operation_specifier: $ => seq(
$.name,
'(',
$.name,
')',
),
// extended_global_aspect_definition: $ => choice(
// seq(
// reservedWord('use'),
// field('formal_parameter_designator', choice(
// $.formal_group_designator,
// field('name', $._name),
// )),
// ),
// seq(
// reservedWord('do'),
// $.dispatching_operation_specifier,
// ),
// ),
// dispatching_operation_specifier: $ => seq(
// $._name,
// '(',
// $._name,
// ')',
// ),
extended_global_aspect_element: $ => choice(
seq(
reservedWord('use'),
field('formal_parameter_set', choice(
$.formal_group_designator,
comma_separated_list_of($.name),
comma_separated_list_of($._name),
)),
),
seq(
reservedWord('do'),
comma_separated_list_of($.dispatching_operation_specifier),
),
// seq(
// reservedWord('do'),
// comma_separated_list_of($.dispatching_operation_specifier),
// ),
),
global_aspect_definition: $ => choice(
global_aspect_definition: $ => choice( // ARM 6.1.2
seq(
$.global_mode,
// $.global_designator,
),
$.extended_global_aspect_definition,
// $.extended_global_aspect_definition,
seq(
'(',
comma_separated_list_of($.global_aspect_element),
@ -1628,17 +1627,14 @@ module.exports = grammar({
global_aspect_element: $ => choice(
seq(
$.global_mode,
$.global_set,
field('global_set', $._name_list),
),
$.extended_global_aspect_definition,
// $.extended_global_aspect_definition,
),
global_mode: $ => choice(
$.non_empty_mode,
reservedWord('overriding'),
),
global_set: $ => prec.left(
comma_separated_list_of($.name), // ??? name_list
),
handled_sequence_of_statements: $ => seq(
$.sequence_of_statements,
optional(seq(
@ -1714,7 +1710,7 @@ module.exports = grammar({
reservedWord('is'),
optional(seq(
reservedWord('new'),
$.interface_list,
$._interface_list,
reservedWord('with'),
)),
$.task_definition,
@ -1731,7 +1727,7 @@ module.exports = grammar({
reservedWord('is'),
optional(seq(
reservedWord('new'),
$.interface_list,
$._interface_list,
reservedWord('with'),
)),
$.task_definition,
@ -1782,13 +1778,13 @@ module.exports = grammar({
optional($.formal_part),
$.result_profile,
),
parameter_specification: $ => seq(
parameter_specification: $ => seq( // ARM 6.1
$.defining_identifier_list,
':',
optional(reservedWord('aliased')),
optional($.non_empty_mode),
optional($.null_exclusion),
$.name,
field('subtype_mark', $._name),
optional($.assign_value),
),
parameter_specification_list: $ => list_of(
@ -1834,19 +1830,19 @@ module.exports = grammar({
),
procedure_specification: $ => seq(
reservedWord('procedure'),
$.name,
field('name', $._name),
optional($.non_empty_parameter_profile),
),
record_representation_clause: $ => prec.left(seq(
record_representation_clause: $ => prec.left(seq( // ARM 13.5.1
reservedWord('for'),
$.name,
field('local_name', $._name),
reservedWord('use'),
reservedWord('record'),
optional($.mod_clause),
repeat($.component_clause),
reservedWord('end'),
reservedWord('record'),
optional($.name),
optional(field('end_local_name', $._name)),
';',
)),
renaming_declaration: $ => choice(
@ -1856,16 +1852,16 @@ module.exports = grammar({
$.subprogram_renaming_declaration,
$.generic_renaming_declaration,
),
object_renaming_declaration: $ => choice(
object_renaming_declaration: $ => choice( // ARM 8.5.1
seq(
$.identifier,
optional(seq(
':',
optional($.null_exclusion),
$.name,
field('subtype_mark', $._name),
)),
reservedWord('renames'),
$.name,
field('object_name', $._name),
optional($.aspect_specification),
';',
),
@ -1874,25 +1870,25 @@ module.exports = grammar({
':',
$.access_definition,
reservedWord('renames'),
$.name,
field('object_name', $._name),
optional($.aspect_specification),
';',
),
),
exception_renaming_declaration: $ => seq(
exception_renaming_declaration: $ => seq( // ARM 8.5.2
$.identifier,
':',
reservedWord('exception'),
reservedWord('renames'),
$.name,
field('exception_name', $._name),
optional($.aspect_specification),
';',
),
package_renaming_declaration: $ => seq(
reservedWord('package'),
$.name,
field('name', $._name),
reservedWord('renames'),
$.name,
field('package_name', $._name),
optional($.aspect_specification),
';',
),
@ -1900,7 +1896,7 @@ module.exports = grammar({
optional($.overriding_indicator),
$.subprogram_specification,
reservedWord('renames'),
$.name,
field('callable_entity_name', $._name),
optional($.aspect_specification),
';',
),
@ -1908,27 +1904,27 @@ module.exports = grammar({
seq(
reservedWord('generic'),
reservedWord('package'),
$.name,
field('defining_program_unit_name', $._name),
reservedWord('renames'),
$.name,
field('generic_package_name', $._name),
optional($.aspect_specification),
';',
),
seq(
reservedWord('generic'),
reservedWord('procedure'),
$.name,
field('defining_program_unit_name', $._name),
reservedWord('renames'),
$.name,
field('generic_procedure_name', $._name),
optional($.aspect_specification),
';',
),
seq(
reservedWord('generic'),
reservedWord('function'),
$.name,
field('defining_program_unit_name', $._name),
reservedWord('renames'),
$.name,
field('generic_function_name', $._name),
optional($.aspect_specification),
';',
),
@ -1938,7 +1934,7 @@ module.exports = grammar({
choice(
seq(
optional($.null_exclusion),
$.name,
field('subtype_mark', $._name),
),
$.access_definition,
),
@ -2055,12 +2051,12 @@ module.exports = grammar({
),
abort_statement: $ => seq(
reservedWord('abort'),
comma_separated_list_of($.name),
comma_separated_list_of($._name),
';',
),
requeue_statement: $ => seq(
requeue_statement: $ => seq( // ARM 9.5.4
reservedWord('requeue'),
$.name,
field('name', $._name),
optional(seq(
reservedWord('with'),
reservedWord('abort'),
@ -2131,9 +2127,9 @@ module.exports = grammar({
reservedWord('then'),
$.sequence_of_statements,
),
exit_statement: $ => seq(
exit_statement: $ => seq( // ARM 5.7
reservedWord('exit'),
optional($.name),
field('loop_name', optional($._name)),
optional(seq(
reservedWord('when'),
field('condition', $.expression),
@ -2142,7 +2138,7 @@ module.exports = grammar({
),
goto_statement: $ => seq(
reservedWord('goto'),
$.name,
field('label_name', $._name),
';',
),
delay_statement: $ => choice(
@ -2188,15 +2184,15 @@ module.exports = grammar({
$.subtype_indication,
$.access_definition,
),
procedure_call_statement: $ => seq(
$.name, // not an operator
procedure_call_statement: $ => seq( // ARM 6.4
field('name', $._name), // not an operator
optional($.actual_parameter_part),
';',
),
raise_statement: $ => seq(
reservedWord('raise'),
optional(seq(
$.name,
field('name', $._name),
optional(seq(
reservedWord('with'),
$.expression, // ada-mode allows "raise CE with raise with ..."
@ -2245,8 +2241,8 @@ module.exports = grammar({
// ),
// ),
),
assignment_statement: $ => seq(
$.name,
assignment_statement: $ => seq( // ARM 5.2
field('variable_name', $._name),
$.assign_value,
';',
),

View File

@ -103,21 +103,29 @@
;; Highlight the name of subprograms
(procedure_specification
(name) @function
name: (identifier) @function
)
(function_specification
(name) @function
name: (identifier) @function
)
(package_specification
name: (name) @function ;; Should use @module, but no default highlight
name: (identifier) @function ;; Should use @module
)
(package_body
(name) @function ;; Should use @module, but no default highlight
name: (identifier) @function ;; Should use @module
)
(generic_instantiation
. (name) @function
name: (identifier) @function
)
;; Some keywords should take different categories depending on the context
;; ??? Doesn't quite work because treesitter choses the longest name for the
;; final highlight
(use_clause "use" @include "type" @include)
(with_clause "private" @include)
(with_clause "limited" @include)
;; Change keyword categories inside type definitions.
;; WIP: waiting for simplified tree.
; [
@ -135,11 +143,14 @@
; "synchronized"
; ]* @keyword.type
(full_type_declaration
(identifier) @type
; (identifier) @type
"is" @type.definition
; (access_type_definition "access" @keyword.type)
)
;; Highlight full subprogram specifications
(subprogram_body (subprogram_specification) @function.spec)
;; Highlight errors in red. This is not very useful in practice, as text will
;; be highlighted as user types, and the error could be elsewhere in the code.
;; This also requires defining :hi @error guifg=Red for instance.

View File

@ -6,12 +6,11 @@
(subprogram_specification) @scope
(block_statement) @scope
(procedure_specification (name) @definition.var)
(function_specification (name) @definition.var)
(package_specification name: (name) @definition.var)
(package_body (name) @definition.var)
(generic_instantiation . (name) @definition.var)
(procedure_specification name: (identifier) @definition.var)
(function_specification name: (identifier) @definition.var)
(package_specification name: (identifier) @definition.var)
(package_body name: (identifier) @definition.var)
(generic_instantiation . name: (identifier) @definition.var)
(defining_identifier_list (identifier) @definition.var)
(identifier) @reference
(name) @reference

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

81925
src/parser.c

File diff suppressed because it is too large Load Diff

View File

@ -16,8 +16,7 @@ end;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(full_type_declaration
(identifier)
@ -25,8 +24,7 @@ end;
(access_type_definition
(access_to_object_definition
(subtype_indication
(name
(identifier))))))))
(identifier)))))))
(type_declaration
(full_type_declaration
(identifier)
@ -35,8 +33,7 @@ end;
(access_to_object_definition
(subtype_indication
(null_exclusion)
(name
(identifier))))))))
(identifier)))))))
(type_declaration
(full_type_declaration
(identifier)
@ -45,8 +42,7 @@ end;
(access_to_object_definition
(general_access_modifier)
(subtype_indication
(name
(identifier))))))))
(identifier)))))))
(type_declaration
(full_type_declaration
(identifier)
@ -55,7 +51,15 @@ end;
(access_to_object_definition
(general_access_modifier)
(subtype_indication
(name
(identifier)))))))
(type_declaration
(full_type_declaration
(identifier)
(type_definition
(access_type_definition
(access_to_subprogram_definition
(parameter_and_result_profile
(result_profile
(identifier))))))))
(type_declaration
(full_type_declaration
@ -65,18 +69,7 @@ end;
(access_to_subprogram_definition
(parameter_and_result_profile
(result_profile
(name
(identifier)))))))))
(type_declaration
(full_type_declaration
(identifier)
(type_definition
(access_type_definition
(access_to_subprogram_definition
(parameter_and_result_profile
(result_profile
(name
(identifier))))))))))))
(identifier)))))))))))
================================================================================
Dereference
@ -96,15 +89,13 @@ end;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(simple_statement
(assignment_statement
(name
(identifier))
(identifier)
(assign_value
(expression
(relation
@ -112,25 +103,20 @@ end;
(term
(factor
(primary
(name
(identifier)
(name
(identifier)))))))))))))
(identifier)
(identifier)))))))))))
(statement
(simple_statement
(procedure_call_statement
(name
(function_call
(name
(identifier)
(name
(identifier)))
(actual_parameter_part
(parameter_association
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))))))))))))))
(identifier)
(function_call
(identifier)
(actual_parameter_part
(parameter_association
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))))))))))))))

View File

@ -13,8 +13,7 @@ end P;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(full_type_declaration
(identifier)
@ -35,14 +34,12 @@ end P;
(numeric_literal)))))))
(component_definition
(subtype_indication
(name
(identifier)))))))))
(identifier))))))))
(object_declaration
(defining_identifier_list
(identifier))
(subtype_indication
(name
(identifier)))
(identifier))
(assign_value
(expression
(relation
@ -69,8 +66,7 @@ end P;
(term
(factor
(primary
(name
(identifier)))))))))
(identifier))))))))
(array_component_association
(discrete_choice_list
(discrete_choice
@ -87,14 +83,12 @@ end P;
(term
(factor
(primary
(name
(identifier))))))))))))))))))))
(identifier)))))))))))))))))))
(object_declaration
(defining_identifier_list
(identifier))
(subtype_indication
(name
(identifier)))
(identifier))
(assign_value
(expression
(relation
@ -121,8 +115,7 @@ end P;
(term
(factor
(primary
(name
(identifier)))))))))
(identifier))))))))
(array_component_association
(discrete_choice_list
(discrete_choice))
@ -132,10 +125,8 @@ end P;
(term
(factor
(primary
(name
(identifier))))))))))))))))))))
(name
(identifier)))))
(identifier)))))))))))))))))))
(identifier))))
================================================================================
Definite-2
@ -148,70 +139,67 @@ end;
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(type_declaration
(full_type_declaration
(identifier)
(type_definition
(array_type_definition
(constrained_array_definition
(discrete_subtype_definition
(range_g
(simple_expression
(term
(factor
(primary
(numeric_literal)))))
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))
(component_definition
(subtype_indication
(name
(identifier)))))))))
(object_declaration
(defining_identifier_list
(identifier))
(subtype_indication
(name
(identifier)))
(assign_value
(expression
(relation
(simple_expression
(term
(factor
(primary
(aggregate
(array_aggregate
(positional_array_aggregate
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))))))))))))))))
(compilation
(compilation_unit
(package_specification
(identifier)
(type_declaration
(full_type_declaration
(identifier)
(type_definition
(array_type_definition
(constrained_array_definition
(discrete_subtype_definition
(range_g
(simple_expression
(term
(factor
(primary
(numeric_literal)))))
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))
(component_definition
(subtype_indication
(identifier))))))))
(object_declaration
(defining_identifier_list
(identifier))
(subtype_indication
(identifier))
(assign_value
(expression
(relation
(simple_expression
(term
(factor
(primary
(aggregate
(array_aggregate
(positional_array_aggregate
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))))))))))))))))
================================================================================
Indefinite
@ -227,8 +215,7 @@ end P;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(full_type_declaration
(identifier)
@ -236,18 +223,15 @@ end P;
(array_type_definition
(unconstrained_array_definition
(index_subtype_definition
(name
(identifier)))
(identifier))
(component_definition
(subtype_indication
(name
(identifier)))))))))
(identifier))))))))
(object_declaration
(defining_identifier_list
(identifier))
(subtype_indication
(name
(identifier)))
(identifier))
(assign_value
(expression
(relation
@ -278,10 +262,8 @@ end P;
(term
(factor
(primary
(name
(identifier))))))))))))))))))))
(name
(identifier)))))
(identifier)))))))))))))))))))
(identifier))))
================================================================================
2D
@ -297,8 +279,7 @@ end P;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(full_type_declaration
(identifier)
@ -306,21 +287,17 @@ end P;
(array_type_definition
(unconstrained_array_definition
(index_subtype_definition
(name
(identifier)))
(identifier))
(index_subtype_definition
(name
(identifier)))
(identifier))
(component_definition
(subtype_indication
(name
(identifier)))))))))
(identifier))))))))
(object_declaration
(defining_identifier_list
(identifier))
(subtype_indication
(name
(identifier)))
(identifier))
(assign_value
(expression
(relation
@ -374,87 +351,73 @@ end P;
(term
(factor
(primary
(name
(identifier))))))))))))))))))))))))))))))
(name
(identifier)))))
(identifier)))))))))))))))))))))))))))))
(identifier))))
=========
================================================================================
Index in array aggregates
=========
================================================================================
procedure P is
begin
Arr := (for Index in 1 .. Count => Function_Returning_Limited (Index));
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
(array_aggregate
(named_array_aggregate
(array_component_association
(iterated_element_association
(loop_parameter_specification
(identifier)
(discrete_subtype_definition
(range_g
(simple_expression
(term
(factor
(primary
(numeric_literal)))))
(simple_expression
(term
(factor
(primary
(name
(identifier)))))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(function_call
(name
(identifier))
(actual_parameter_part
(parameter_association
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier)))))))))))))))))))))))))))))))))))))))
(compilation
(compilation_unit
(proper_body
(subprogram_body
(subprogram_specification
(procedure_specification
(identifier)))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(simple_statement
(assignment_statement
(identifier)
(assign_value
(expression
(relation
(simple_expression
(term
(factor
(primary
(aggregate
(array_aggregate
(named_array_aggregate
(array_component_association
(iterated_element_association
(loop_parameter_specification
(identifier)
(discrete_subtype_definition
(range_g
(simple_expression
(term
(factor
(primary
(numeric_literal)))))
(simple_expression
(term
(factor
(primary
(identifier))))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(function_call
(identifier)
(actual_parameter_part
(parameter_association
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier)))))))))))))))))))))))))))))))))))))

View File

@ -21,22 +21,19 @@ end;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(non_empty_declarative_part
(declarative_item_pragma
(object_declaration
(defining_identifier_list
(identifier))
(subtype_indication
(name
(identifier))
(identifier)
(constraint
(index_constraint
(discrete_range
(range_g
(name
(identifier))
(identifier)
(tick)
(range_attribute_designator
(expression
@ -56,8 +53,7 @@ end;
(identifier)
(discrete_subtype_definition
(range_g
(name
(identifier))
(identifier)
(tick)
(range_attribute_designator)))))
(sequence_of_statements
@ -72,8 +68,7 @@ end;
(identifier)
(discrete_subtype_definition
(range_g
(name
(identifier))
(identifier)
(tick)
(range_attribute_designator
(expression
@ -108,16 +103,14 @@ end;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(non_empty_declarative_part
(declarative_item_pragma
(object_declaration
(defining_identifier_list
(identifier))
(subtype_indication
(name
(identifier)))
(identifier))
(assign_value
(expression
(relation
@ -125,70 +118,62 @@ end;
(term
(factor
(primary
(name
(attribute_reference
(reduction_attribute_reference
(value_sequence
(iterated_element_association
(iterator_specification
(identifier)
(name
(identifier))
(iterator_filter
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier))))))
(relational_operator)
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(aggregate
(array_aggregate
(positional_array_aggregate
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier))))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))))))))))))
(tick)
(reduction_attribute_designator
(identifier)
(reduction_specification
(name
(string_literal))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))))))))))))))))
(attribute_reference
(reduction_attribute_reference
(value_sequence
(iterated_element_association
(iterator_specification
(identifier)
(identifier)
(iterator_filter
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier)))))
(relational_operator)
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(aggregate
(array_aggregate
(positional_array_aggregate
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier)))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))))))))))))
(tick)
(reduction_attribute_designator
(identifier)
(reduction_specification
(string_literal)
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))))))))))))))))
(handled_sequence_of_statements
(sequence_of_statements
(statement

View File

@ -24,8 +24,7 @@ end;
(formal_object_declaration
(defining_identifier_list
(identifier))
(name
(identifier))
(identifier)
(assign_value
(expression
(relation
@ -42,8 +41,7 @@ end;
(unknown_discriminant_part))
(formal_type_definition
(formal_private_type_definition))
(name
(identifier)))))
(identifier))))
(generic_formal_parameter_declaration
(formal_type_declaration
(formal_incomplete_type_declaration
@ -51,47 +49,41 @@ end;
(generic_formal_parameter_declaration
(formal_package_declaration
(identifier)
(name
(function_call
(name
(identifier))
(actual_parameter_part
(parameter_association
(component_choice_list
(identifier))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))
(parameter_association
(component_choice_list
(identifier))))))))
(function_call
(identifier)
(actual_parameter_part
(parameter_association
(component_choice_list
(identifier))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))
(parameter_association
(component_choice_list
(identifier)))))))
(generic_formal_parameter_declaration
(formal_subprogram_declaration
(formal_concrete_subprogram_declaration
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(subprogram_default))))
(generic_formal_parameter_declaration
(formal_subprogram_declaration
(formal_concrete_subprogram_declaration
(subprogram_specification
(function_specification
(name
(identifier))
(identifier)
(parameter_and_result_profile
(result_profile
(name
(identifier))))))
(identifier)))))
(subprogram_default)))))
(package_specification
(name
(identifier))
(identifier)
(pragma_g
(identifier)
(pragma_argument_association
@ -101,8 +93,7 @@ end;
(term
(factor
(primary
(name
(identifier)))))))))
(identifier))))))))
(pragma_argument_association
(expression
(relation

View File

@ -13,39 +13,25 @@ use Ada.Text_IO, System;
(compilation
(compilation_unit
(with_clause
(name_list
(name
(identifier)
(name
(identifier)))
(name
(identifier)))))
(identifier)
(identifier)
(identifier)))
(comment)
(compilation_unit
(with_clause
(name_list
(name
(identifier)))))
(identifier)))
(comment)
(compilation_unit
(with_clause
(name_list
(name
(identifier)))))
(identifier)))
(compilation_unit
(with_clause
(name_list
(name
(identifier)))))
(identifier)))
(compilation_unit
(use_clause
(name_list
(name
(identifier)
(name
(identifier)))
(name
(identifier))))))
(identifier)
(identifier)
(identifier))))
================================================================================
Case insensitive
@ -59,8 +45,7 @@ enD;
(compilation
(compilation_unit
(package_specification
(name
(identifier)))))
(identifier))))
================================================================================
multiple compilation units
@ -80,21 +65,15 @@ end;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(package_specification
(name
(identifier))
(name
(identifier)))
(name
(identifier))))
(identifier)
(identifier))
(identifier)))
(compilation_unit
(package_specification
(name
(identifier)
(name
(identifier)))
(identifier)
(identifier)
(comment))))
================================================================================
@ -116,32 +95,26 @@ end Child.P2;
(compilation_unit
(proper_body
(package_body
(name
(identifier)
(name
(identifier)))
(identifier)
(identifier)
(non_empty_declarative_part
(declarative_item_pragma
(proper_body
(package_body
(name
(identifier))
(identifier)
(handled_sequence_of_statements
(sequence_of_statements
(statement
(simple_statement
(null_statement)))))
(name
(identifier))))))
(identifier)))))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(simple_statement
(null_statement)))))
(name
(identifier)
(name
(identifier)))))))
(identifier)
(identifier)))))
================================================================================
separate
@ -155,12 +128,10 @@ end;
(compilation
(compilation_unit
(subunit
(name
(identifier))
(identifier)
(proper_body
(package_body
(name
(identifier)))))))
(identifier))))))
================================================================================
private types
@ -177,8 +148,7 @@ end;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(private_type_declaration
(identifier)))
@ -186,8 +156,7 @@ end;
(private_extension_declaration
(identifier)
(subtype_indication
(name
(identifier)))))
(identifier))))
(type_declaration
(private_type_declaration
(identifier)
@ -222,8 +191,7 @@ end;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(incomplete_type_declaration
(identifier)))
@ -236,8 +204,7 @@ end;
(discriminant_specification
(defining_identifier_list
(identifier))
(name
(identifier))))))))
(identifier)))))))
(type_declaration
(incomplete_type_declaration
(identifier)

View File

@ -32,8 +32,7 @@ end;
(compilation_unit
(proper_body
(package_body
(name
(identifier))
(identifier)
(non_empty_declarative_part
(declarative_item_pragma
(object_declaration
@ -44,18 +43,15 @@ end;
(subprogram_declaration
(subprogram_specification
(procedure_specification
(name
(identifier))))))
(identifier)))))
(protected_operation_declaration
(subprogram_declaration
(subprogram_specification
(function_specification
(name
(identifier))
(identifier)
(parameter_and_result_profile
(result_profile
(name
(identifier))))))))
(identifier)))))))
(protected_operation_declaration
(entry_declaration
(identifier)))
@ -64,23 +60,20 @@ end;
(identifier)
(discrete_subtype_definition
(subtype_indication
(name
(identifier))))
(identifier)))
(formal_part
(parameter_specification_list
(parameter_specification
(defining_identifier_list
(identifier))
(name
(identifier)))))))
(identifier))))))
(protected_element_declaration
(component_declaration
(defining_identifier_list
(identifier))
(component_definition
(subtype_indication
(name
(identifier))))))
(identifier)))))
(identifier)))))
(declarative_item_pragma
(proper_body
@ -90,25 +83,21 @@ end;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(simple_statement
(abort_statement
(name
(identifier)))))))))
(identifier))))))))
(protected_operation_item
(subprogram_body
(subprogram_specification
(function_specification
(name
(identifier))
(identifier)
(parameter_and_result_profile
(result_profile
(name
(identifier))))))
(identifier)))))
(handled_sequence_of_statements
(sequence_of_statements
(statement
@ -120,8 +109,7 @@ end;
(term
(factor
(primary
(name
(identifier)))))))))))))))
(identifier))))))))))))))
(protected_operation_item
(entry_body
(identifier)
@ -132,8 +120,7 @@ end;
(term
(factor
(primary
(name
(identifier))))))
(identifier)))))
(relational_operator)
(simple_expression
(term
@ -145,8 +132,7 @@ end;
(statement
(simple_statement
(requeue_statement
(name
(identifier)))))))
(identifier))))))
(identifier)))
(protected_operation_item
(entry_body
@ -156,15 +142,13 @@ end;
(identifier)
(discrete_subtype_definition
(subtype_indication
(name
(identifier)))))
(identifier))))
(formal_part
(parameter_specification_list
(parameter_specification
(defining_identifier_list
(identifier))
(name
(identifier))))))
(identifier)))))
(entry_barrier
(expression
(relation
@ -172,8 +156,7 @@ end;
(term
(factor
(primary
(name
(identifier)))))))))
(identifier))))))))
(handled_sequence_of_statements
(sequence_of_statements
(statement

View File

@ -11,8 +11,7 @@ end;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(full_type_declaration
(identifier)
@ -41,8 +40,7 @@ end;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(full_type_declaration
(identifier)
@ -56,16 +54,14 @@ end;
(identifier))
(component_definition
(subtype_indication
(name
(identifier))))))
(identifier)))))
(component_item
(component_declaration
(defining_identifier_list
(identifier))
(component_definition
(subtype_indication
(name
(identifier))
(identifier)
(constraint
(scalar_constraint
(range_constraint
@ -88,15 +84,12 @@ end;
(component_definition
(access_definition
(null_exclusion)
(name
(identifier))))))))))))
(identifier)))))))))))
(aspect_clause
(record_representation_clause
(name
(identifier))
(identifier)
(component_clause
(name
(identifier))
(identifier)
(expression
(relation
(simple_expression
@ -130,8 +123,7 @@ end;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(full_type_declaration
(identifier)
@ -146,8 +138,7 @@ end;
(identifier))
(component_definition
(subtype_indication
(name
(identifier)))))))))))))))
(identifier))))))))))))))
================================================================================
Discriminated
@ -164,8 +155,7 @@ end;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(full_type_declaration
(identifier)
@ -174,13 +164,11 @@ end;
(discriminant_specification
(defining_identifier_list
(identifier))
(name
(identifier)))
(identifier))
(discriminant_specification
(defining_identifier_list
(identifier))
(name
(identifier)))))
(identifier))))
(type_definition
(record_type_definition
(record_definition
@ -191,8 +179,7 @@ end;
(identifier))
(component_definition
(subtype_indication
(name
(identifier)))))))))))))))
(identifier))))))))))))))
================================================================================
tagged
@ -210,8 +197,7 @@ end;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(full_type_declaration
(identifier)
@ -224,8 +210,7 @@ end;
(type_definition
(derived_type_definition
(subtype_indication
(name
(identifier)))
(identifier))
(record_extension_part
(record_definition
(component_list
@ -235,8 +220,7 @@ end;
(identifier))
(component_definition
(subtype_indication
(name
(identifier))))))))))))))))
(identifier)))))))))))))))
================================================================================
Variant
@ -258,8 +242,7 @@ end;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(full_type_declaration
(identifier)
@ -268,8 +251,7 @@ end;
(discriminant_specification
(defining_identifier_list
(identifier))
(name
(identifier)))))
(identifier))))
(type_definition
(record_type_definition
(record_definition
@ -306,8 +288,7 @@ end;
(identifier))
(component_definition
(subtype_indication
(name
(identifier))))))))
(identifier)))))))
(variant
(discrete_choice_list
(discrete_choice))
@ -328,8 +309,7 @@ end;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(full_type_declaration
(identifier)
@ -340,20 +320,15 @@ end;
(identifier)
(type_definition
(interface_type_definition
(interface_list
(name
(identifier)))))))
(identifier)))))
(type_declaration
(full_type_declaration
(identifier)
(type_definition
(derived_type_definition
(subtype_indication
(name
(identifier)))
(interface_list
(name
(identifier)))
(identifier))
(identifier)
(record_extension_part
(record_definition)))))))))
@ -374,15 +349,13 @@ end;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(simple_statement
(assignment_statement
(name
(identifier))
(identifier)
(assign_value
(expression
(relation
@ -429,15 +402,13 @@ end;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(simple_statement
(assignment_statement
(name
(identifier))
(identifier)
(assign_value
(expression
(relation
@ -453,8 +424,7 @@ end;
(term
(factor
(primary
(name
(identifier))))))))
(identifier)))))))
(record_component_association_list
(component_choice_list
(identifier))
@ -483,15 +453,13 @@ end;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(simple_statement
(assignment_statement
(name
(identifier))
(identifier)
(assign_value
(expression
(relation
@ -508,8 +476,7 @@ end;
(term
(factor
(primary
(name
(identifier))))))))
(identifier)))))))
(record_component_association_list
(component_choice_list
(identifier))

View File

@ -21,66 +21,52 @@ end P;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(non_empty_declarative_part
(declarative_item_pragma
(renaming_declaration
(object_renaming_declaration
(identifier)
(name
(identifier)))))
(identifier))))
(declarative_item_pragma
(renaming_declaration
(object_renaming_declaration
(identifier)
(name
(identifier))
(name
(identifier)))))
(identifier)
(identifier))))
(declarative_item_pragma
(renaming_declaration
(exception_renaming_declaration
(identifier)
(name
(identifier)))))
(identifier))))
(declarative_item_pragma
(renaming_declaration
(package_renaming_declaration
(name
(identifier))
(name
(identifier)
(name
(identifier))))))
(identifier)
(identifier)
(identifier))))
(declarative_item_pragma
(renaming_declaration
(subprogram_renaming_declaration
(subprogram_specification
(procedure_specification
(name
(identifier))
(identifier)
(non_empty_parameter_profile
(formal_part
(parameter_specification_list
(parameter_specification
(defining_identifier_list
(identifier))
(name
(identifier))))))))
(name
(identifier)))))
(identifier)))))))
(identifier))))
(declarative_item_pragma
(renaming_declaration
(generic_renaming_declaration
(name
(identifier))
(name
(identifier))))))
(identifier)
(identifier)))))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(simple_statement
(null_statement)))))
(name
(identifier))))))
(identifier)))))

View File

@ -13,8 +13,7 @@ end;
(compilation_unit
(proper_body
(package_body
(name
(identifier))
(identifier)
(non_empty_declarative_part
(declarative_item_pragma
(body_stub
@ -22,8 +21,7 @@ end;
(overriding_indicator)
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(aspect_specification
(aspect_mark_list
(aspect_association
@ -35,12 +33,10 @@ end;
(overriding_indicator)
(subprogram_specification
(function_specification
(name
(identifier))
(identifier)
(parameter_and_result_profile
(result_profile
(name
(identifier))))))
(identifier)))))
(aspect_specification
(aspect_mark_list
(aspect_association
@ -61,8 +57,7 @@ end;
(compilation_unit
(proper_body
(package_body
(name
(identifier))
(identifier)
(non_empty_declarative_part
(declarative_item_pragma
(body_stub
@ -83,15 +78,13 @@ end P;
(compilation_unit
(proper_body
(package_body
(name
(identifier))
(identifier)
(non_empty_declarative_part
(declarative_item_pragma
(body_stub
(protected_body_stub
(identifier)))))
(name
(identifier))))))
(identifier)))))
================================================================================
Separate task
@ -107,12 +100,10 @@ end P;
(compilation_unit
(proper_body
(package_body
(name
(identifier))
(identifier)
(non_empty_declarative_part
(declarative_item_pragma
(body_stub
(task_body_stub
(identifier)))))
(name
(identifier))))))
(identifier)))))

View File

@ -18,8 +18,7 @@ end;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(handled_sequence_of_statements
(sequence_of_statements
(statement
@ -32,8 +31,7 @@ end;
(term
(factor
(primary
(name
(identifier)))))))))
(identifier))))))))
(sequence_of_statements
(statement
(simple_statement
@ -47,8 +45,7 @@ end;
(term
(factor
(primary
(name
(identifier))))))
(identifier)))))
(relational_operator)
(simple_expression
(term
@ -81,8 +78,7 @@ end P;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(handled_sequence_of_statements
(sequence_of_statements
(statement
@ -91,21 +87,17 @@ end P;
(iteration_scheme
(iterator_specification
(identifier)
(name
(identifier)
(attribute_reference
(identifier)
(name
(attribute_reference
(name
(identifier))
(tick)
(attribute_designator
(identifier)))))))
(tick)
(attribute_designator
(identifier)))))
(sequence_of_statements
(statement
(simple_statement
(goto_statement
(name
(identifier)))))
(identifier))))
(label
(identifier))))))
(statement
@ -114,8 +106,7 @@ end P;
(iteration_scheme
(iterator_specification
(identifier)
(name
(identifier))))
(identifier)))
(sequence_of_statements
(statement
(simple_statement
@ -128,8 +119,7 @@ end P;
(factor
(primary
(numeric_literal)))))))))))))))))
(name
(identifier))))))
(identifier)))))
================================================================================
Named loop
@ -151,8 +141,7 @@ end;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(handled_sequence_of_statements
(sequence_of_statements
(statement
@ -164,8 +153,7 @@ end;
(statement
(simple_statement
(exit_statement
(name
(identifier))))))
(identifier)))))
(identifier))))))))))
================================================================================
@ -188,12 +176,10 @@ end F;
(subprogram_body
(subprogram_specification
(function_specification
(name
(identifier))
(identifier)
(parameter_and_result_profile
(result_profile
(name
(identifier))))))
(identifier)))))
(handled_sequence_of_statements
(sequence_of_statements
(statement
@ -205,8 +191,7 @@ end F;
(term
(factor
(primary
(name
(identifier)))))))))))
(identifier))))))))))
(statement
(compound_statement
(extended_return_statement
@ -214,8 +199,7 @@ end F;
(identifier)
(return_subtype_indication
(subtype_indication
(name
(identifier))))
(identifier)))
(assign_value
(expression
(relation
@ -226,22 +210,21 @@ end F;
(aggregate
(record_aggregate
(record_component_association_list
(component_choice_list
(identifier))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))))))))))))
(component_choice_list
(identifier))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))))))))))))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(simple_statement
(null_statement))))))))))
(name
(identifier))))))
(identifier)))))
================================================================================
Procedure call
@ -260,23 +243,20 @@ end P;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))
(identifier)
(non_empty_parameter_profile
(formal_part
(parameter_specification_list
(parameter_specification
(defining_identifier_list
(identifier))
(name
(identifier))))))))
(identifier)))))))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(simple_statement
(procedure_call_statement
(name
(identifier))
(identifier)
(actual_parameter_part
(parameter_association
(expression
@ -293,10 +273,8 @@ end P;
(term
(factor
(primary
(name
(identifier)))))))))))))))
(name
(identifier))))))
(identifier))))))))))))))
(identifier)))))
================================================================================
Raise exception
@ -316,20 +294,17 @@ end;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(simple_statement
(raise_statement
(name
(identifier)))))
(identifier))))
(statement
(simple_statement
(raise_statement
(name
(identifier))
(identifier)
(expression
(relation
(simple_expression
@ -356,23 +331,20 @@ end;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(non_empty_declarative_part
(declarative_item_pragma
(object_declaration
(defining_identifier_list
(identifier))
(subtype_indication
(name
(identifier))))))
(identifier)))))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(simple_statement
(assignment_statement
(name
(identifier))
(identifier)
(assign_value
(expression
(relation
@ -380,21 +352,19 @@ end;
(term
(factor
(primary
(name
(function_call
(name
(identifier))
(actual_parameter_part
(parameter_association
(component_choice_list
(identifier))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))))))))))))))))))))))
(function_call
(identifier)
(actual_parameter_part
(parameter_association
(component_choice_list
(identifier))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))))))))))))))))))))
================================================================================
if statement
@ -430,8 +400,7 @@ end P;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(handled_sequence_of_statements
(sequence_of_statements
(statement
@ -443,8 +412,7 @@ end P;
(term
(factor
(primary
(name
(identifier))))))
(identifier)))))
(relational_operator)
(simple_expression
(term
@ -456,8 +424,7 @@ end P;
(term
(factor
(primary
(name
(identifier))))))
(identifier)))))
(relational_operator)
(simple_expression
(term
@ -480,8 +447,7 @@ end P;
(term
(factor
(primary
(name
(identifier))))))
(identifier)))))
(relational_operator)
(simple_expression
(term
@ -498,8 +464,7 @@ end P;
(defining_identifier_list
(identifier))
(subtype_indication
(name
(identifier))))))
(identifier)))))
(handled_sequence_of_statements
(sequence_of_statements
(statement
@ -509,8 +474,7 @@ end P;
(exception_handler
(exception_choice_list
(exception_choice
(name
(identifier))))
(identifier)))
(sequence_of_statements
(statement
(simple_statement
@ -524,8 +488,7 @@ end P;
(statement
(simple_statement
(null_statement))))))))))))))
(name
(identifier))))))
(identifier)))))
================================================================================
Case statement
@ -549,8 +512,7 @@ end;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(handled_sequence_of_statements
(sequence_of_statements
(statement
@ -562,21 +524,19 @@ end;
(term
(factor
(primary
(name
(function_call
(name
(identifier))
(actual_parameter_part
(parameter_association
(component_choice_list
(identifier))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))))))))))))
(function_call
(identifier)
(actual_parameter_part
(parameter_association
(component_choice_list
(identifier))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))))))))))
(case_statement_alternative
(discrete_choice_list
(discrete_choice
@ -585,14 +545,12 @@ end;
(term
(factor
(primary
(name
(character_literal))))))
(character_literal)))))
(simple_expression
(term
(factor
(primary
(name
(character_literal)))))))))
(character_literal))))))))
(sequence_of_statements
(statement
(simple_statement
@ -606,8 +564,7 @@ end;
(term
(factor
(primary
(name
(character_literal)))))))))
(character_literal))))))))
(discrete_choice
(expression
(relation
@ -615,8 +572,7 @@ end;
(term
(factor
(primary
(name
(character_literal))))))))))
(character_literal)))))))))
(sequence_of_statements
(statement
(simple_statement
@ -640,15 +596,13 @@ end;
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(simple_statement
(assignment_statement
(name
(identifier))
(identifier)
(assign_value
(expression
(relation
@ -658,13 +612,11 @@ end;
(primary
(allocator
(subtype_indication_paren_constraint
(name
(identifier))))))))))))))
(identifier)))))))))))))
(statement
(simple_statement
(assignment_statement
(name
(identifier))
(identifier)
(assign_value
(expression
(relation
@ -674,39 +626,34 @@ end;
(primary
(allocator
(subpool_specification
(name
(identifier)
(name
(identifier))))
(identifier)
(identifier))
(subtype_indication_paren_constraint
(name
(qualified_expression
(name
(identifier))
(tick)
(expression
(relation
(simple_expression
(term
(factor
(primary
(aggregate
(record_aggregate
(record_component_association_list
(component_choice_list
(identifier))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))))))))))))))))))))))))))))))
(qualified_expression
(identifier)
(tick)
(expression
(relation
(simple_expression
(term
(factor
(primary
(aggregate
(record_aggregate
(record_component_association_list
(component_choice_list
(identifier))
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))))))))))))))))))))))))))))))
========
================================================================================
Filtered for loops
========
================================================================================
procedure P is
begin
@ -715,49 +662,46 @@ begin
end loop;
end;
-------
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(proper_body
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(compound_statement
(loop_statement
(iteration_scheme
(iterator_specification
(identifier)
(name
(identifier))
(iterator_filter
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier))))))
(relational_operator)
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))))
(sequence_of_statements
(statement
(simple_statement
(null_statement)))))))))))))
(compilation
(compilation_unit
(proper_body
(subprogram_body
(subprogram_specification
(procedure_specification
(identifier)))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(compound_statement
(loop_statement
(iteration_scheme
(iterator_specification
(identifier)
(identifier)
(iterator_filter
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier)))))
(relational_operator)
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))))
(sequence_of_statements
(statement
(simple_statement
(null_statement)))))))))))))
=======
================================================================================
Assignment target name
=======
================================================================================
procedure P is
begin
@ -765,86 +709,75 @@ begin
Another_Very_Long.And_Complex (Expression) := Function_Call (@);
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
(function_call
(name
(identifier)
(name
(identifier)))
(actual_parameter_part
(parameter_association
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier))))))))))))
(assign_value
(compilation
(compilation_unit
(proper_body
(subprogram_body
(subprogram_specification
(procedure_specification
(identifier)))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(simple_statement
(assignment_statement
(identifier)
(function_call
(identifier)
(actual_parameter_part
(parameter_association
(expression
(relation
(simple_expression
(term
(factor
(primary
(name))))
(binary_adding_operator)
(term
(factor
(primary
(numeric_literal)))))))))))
(statement
(simple_statement
(assignment_statement
(name
(function_call
(name
(identifier)
(name
(identifier)))
(actual_parameter_part
(parameter_association
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier))))))))))))
(assign_value
(identifier))))))))))
(assign_value
(expression
(relation
(simple_expression
(term
(factor
(primary
(target_name))))
(binary_adding_operator)
(term
(factor
(primary
(numeric_literal)))))))))))
(statement
(simple_statement
(assignment_statement
(identifier)
(function_call
(identifier)
(actual_parameter_part
(parameter_association
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(function_call
(name
(identifier))
(actual_parameter_part
(parameter_association
(expression
(relation
(simple_expression
(term
(factor
(primary
(name)))))))))))))))))))))))))))
(identifier))))))))))
(assign_value
(expression
(relation
(simple_expression
(term
(factor
(primary
(function_call
(identifier)
(actual_parameter_part
(parameter_association
(expression
(relation
(simple_expression
(term
(factor
(primary
(target_name))))))))))))))))))))))))))

View File

@ -13,21 +13,17 @@ end;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(null_procedure_declaration
(procedure_specification
(name
(identifier))))
(identifier)))
(null_procedure_declaration
(overriding_indicator)
(procedure_specification
(name
(identifier))))
(identifier)))
(null_procedure_declaration
(procedure_specification
(name
(identifier)))
(identifier))
(aspect_specification
(aspect_mark_list
(aspect_association
@ -48,13 +44,11 @@ end;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(subprogram_declaration
(subprogram_specification
(procedure_specification
(name
(identifier))
(identifier)
(non_empty_parameter_profile
(formal_part
(parameter_specification_list
@ -62,13 +56,11 @@ end;
(defining_identifier_list
(identifier)
(identifier))
(name
(identifier)))
(identifier))
(parameter_specification
(defining_identifier_list
(identifier))
(name
(identifier))))))))
(identifier)))))))
(aspect_specification
(aspect_mark_list
(aspect_association
@ -89,19 +81,16 @@ end;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(subprogram_declaration
(subprogram_specification
(procedure_specification
(name
(identifier)))))
(identifier))))
(subprogram_declaration
(overriding_indicator)
(subprogram_specification
(procedure_specification
(name
(identifier))))
(identifier)))
(aspect_specification
(aspect_mark_list
(aspect_association
@ -122,13 +111,11 @@ end;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(subprogram_declaration
(subprogram_specification
(function_specification
(name
(identifier))
(identifier)
(parameter_and_result_profile
(formal_part
(parameter_specification_list
@ -136,13 +123,11 @@ end;
(defining_identifier_list
(identifier)
(identifier))
(name
(identifier)))))
(identifier))))
(result_profile
(access_definition
(null_exclusion)
(name
(identifier)))))))
(identifier))))))
(aspect_specification
(aspect_mark_list
(aspect_association
@ -158,8 +143,7 @@ end;
(term
(factor
(primary
(name
(identifier))))))))))))))))
(identifier)))))))))))))))
================================================================================
subprogram body
@ -179,39 +163,34 @@ end;
(compilation_unit
(proper_body
(package_body
(name
(identifier))
(identifier)
(non_empty_declarative_part
(declarative_item_pragma
(proper_body
(subprogram_body
(subprogram_specification
(procedure_specification
(name
(identifier))
(identifier)
(non_empty_parameter_profile
(formal_part
(parameter_specification_list
(parameter_specification
(defining_identifier_list
(identifier))
(name
(identifier))))))))
(identifier)))))))
(non_empty_declarative_part
(declarative_item_pragma
(object_declaration
(defining_identifier_list
(identifier))
(subtype_indication
(name
(identifier))))))
(identifier)))))
(handled_sequence_of_statements
(sequence_of_statements
(statement
(simple_statement
(null_statement)))))
(name
(identifier))))))))))
(identifier)))))))))
================================================================================
Expression function membership
@ -226,36 +205,30 @@ function F2 (A : Integer) return Boolean
(compilation_unit
(expression_function_declaration
(function_specification
(name
(identifier))
(identifier)
(parameter_and_result_profile
(formal_part
(parameter_specification_list
(parameter_specification
(defining_identifier_list
(identifier))
(name
(identifier)))))
(identifier))))
(result_profile
(name
(identifier)))))
(expression
(relation
(identifier))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier)))))
(membership_choice_list
(membership_choice
(simple_expression
(term
(factor
(primary
(name
(identifier))))))
(membership_choice_list
(membership_choice
(simple_expression
(term
(factor
(primary
(name
(identifier)))))))))))))
(identifier))))))))))))
================================================================================
Expression function declare
@ -270,49 +243,43 @@ function F2 (A : Integer) return Boolean
(compilation_unit
(expression_function_declaration
(function_specification
(name
(identifier))
(identifier)
(parameter_and_result_profile
(formal_part
(parameter_specification_list
(parameter_specification
(defining_identifier_list
(identifier))
(name
(identifier)))))
(identifier))))
(result_profile
(name
(identifier)))))
(declare_expression
(declare_item
(object_declaration
(defining_identifier_list
(identifier))
(subtype_indication
(name
(identifier)))
(assign_value
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier)))))
(binary_adding_operator)
(term
(factor
(primary
(numeric_literal))))))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier))))))))))))
(identifier))))
(declare_expression
(declare_item
(object_declaration
(defining_identifier_list
(identifier))
(subtype_indication
(identifier))
(assign_value
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier))))
(binary_adding_operator)
(term
(factor
(primary
(numeric_literal))))))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier)))))))))))
================================================================================
Expression function raise
@ -327,17 +294,14 @@ function F3 return Boolean
(compilation_unit
(expression_function_declaration
(function_specification
(name
(identifier))
(identifier)
(parameter_and_result_profile
(result_profile
(name
(identifier)))))
(expression
(relation
(raise_expression
(name
(identifier))))))))
(identifier))))
(expression
(relation
(raise_expression
(identifier)))))))
================================================================================
Expression function simple
@ -351,20 +315,17 @@ function F4 return Boolean is (True);
(compilation_unit
(expression_function_declaration
(function_specification
(name
(identifier))
(identifier)
(parameter_and_result_profile
(result_profile
(name
(identifier)))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier)))))))))))
(identifier))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier))))))))))
================================================================================
Expression function if
@ -379,64 +340,57 @@ function F (A : Integer) return Boolean
(compilation_unit
(expression_function_declaration
(function_specification
(name
(identifier))
(identifier)
(parameter_and_result_profile
(formal_part
(parameter_specification_list
(parameter_specification
(defining_identifier_list
(identifier))
(name
(identifier)))))
(identifier))))
(result_profile
(name
(identifier)))))
(conditional_expression
(if_expression
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier))))))
(relational_operator)
(simple_expression
(term
(factor
(primary
(numeric_literal))))))
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier))))))
(relational_operator)
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier))))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier)))))))))))))
(identifier))))
(conditional_expression
(if_expression
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier)))))
(relational_operator)
(simple_expression
(term
(factor
(primary
(numeric_literal))))))
(relation
(simple_expression
(term
(factor
(primary
(identifier)))))
(relational_operator)
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier)))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier))))))))))))
================================================================================
Expression function if extra parenthesis
@ -451,57 +405,51 @@ function F5 (A : Integer) return Boolean
(compilation_unit
(expression_function_declaration
(function_specification
(name
(identifier))
(identifier)
(parameter_and_result_profile
(formal_part
(parameter_specification_list
(parameter_specification
(defining_identifier_list
(identifier))
(name
(identifier)))))
(identifier))))
(result_profile
(name
(identifier)))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(conditional_expression
(if_expression
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier))))))
(relational_operator)
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier))))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier)))))))))))))))))))
(identifier))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(conditional_expression
(if_expression
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier)))))
(relational_operator)
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier)))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier))))))))))))))))))
================================================================================
Expression function case
@ -518,79 +466,73 @@ function F (A : Integer) return Boolean
(compilation_unit
(expression_function_declaration
(function_specification
(name
(identifier))
(identifier)
(parameter_and_result_profile
(formal_part
(parameter_specification_list
(parameter_specification
(defining_identifier_list
(identifier))
(name
(identifier)))))
(identifier))))
(result_profile
(name
(identifier)))))
(conditional_expression
(case_expression
(expression
(relation
(identifier))))
(conditional_expression
(case_expression
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier))))
(binary_adding_operator)
(term
(factor
(primary
(numeric_literal)))))))
(case_expression_alternative
(discrete_choice_list
(discrete_choice
(range_g
(simple_expression
(term
(factor
(primary
(name
(identifier)))))
(binary_adding_operator)
(numeric_literal)))))
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))
(case_expression_alternative
(discrete_choice_list
(discrete_choice
(range_g
(simple_expression
(term
(factor
(primary
(numeric_literal)))))
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))
(discrete_choice
(range_g
(simple_expression
(term
(factor
(primary
(numeric_literal)))))
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier)))))))))
(case_expression_alternative
(discrete_choice_list
(discrete_choice))
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier))))))))))))))
(discrete_choice
(range_g
(simple_expression
(term
(factor
(primary
(numeric_literal)))))
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier))))))))
(case_expression_alternative
(discrete_choice_list
(discrete_choice))
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier)))))))))))))
================================================================================
Expression function array
@ -598,43 +540,40 @@ Expression function array
function F return My_Array is (1 .. 2 => True);
------
--------------------------------------------------------------------------------
(compilation
(compilation_unit
(expression_function_declaration
(function_specification
(name
(identifier))
(parameter_and_result_profile
(result_profile
(name
(identifier)))))
(aggregate
(array_aggregate
(named_array_aggregate
(array_component_association
(discrete_choice_list
(discrete_choice
(range_g
(simple_expression
(term
(factor
(primary
(numeric_literal)))))
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier)))))))))))))))
(compilation
(compilation_unit
(expression_function_declaration
(function_specification
(identifier)
(parameter_and_result_profile
(result_profile
(identifier))))
(aggregate
(array_aggregate
(named_array_aggregate
(array_component_association
(discrete_choice_list
(discrete_choice
(range_g
(simple_expression
(term
(factor
(primary
(numeric_literal)))))
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier))))))))))))))
================================================================================
Expression function quantified
@ -650,39 +589,34 @@ function F (A : My_Array) return Boolean
(compilation_unit
(expression_function_declaration
(function_specification
(name
(identifier))
(identifier)
(parameter_and_result_profile
(formal_part
(parameter_specification_list
(parameter_specification
(defining_identifier_list
(identifier))
(name
(identifier)))))
(identifier))))
(result_profile
(name
(identifier)))))
(quantified_expression
(quantifier)
(iterator_specification
(identifier)
(name
(identifier)))
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier))))))
(relational_operator)
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))))))
(identifier))))
(quantified_expression
(quantifier)
(iterator_specification
(identifier)
(identifier))
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier)))))
(relational_operator)
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))))))
================================================================================
Operators
@ -702,8 +636,7 @@ end "<";
(overriding_indicator)
(subprogram_specification
(function_specification
(name
(string_literal))
(string_literal)
(parameter_and_result_profile
(formal_part
(parameter_specification_list
@ -711,11 +644,9 @@ end "<";
(defining_identifier_list
(identifier)
(identifier))
(name
(identifier)))))
(identifier))))
(result_profile
(name
(identifier))))))
(identifier)))))
(handled_sequence_of_statements
(sequence_of_statements
(statement
@ -727,6 +658,5 @@ end "<";
(term
(factor
(primary
(name
(identifier)))))))))))))
(identifier))))))))))))
(string_literal)))))

View File

@ -36,8 +36,7 @@ end P;
(compilation_unit
(proper_body
(package_body
(name
(identifier))
(identifier)
(non_empty_declarative_part
(declarative_item_pragma
(object_declaration
@ -52,8 +51,7 @@ end P;
(parameter_specification
(defining_identifier_list
(identifier))
(name
(identifier)))))))
(identifier))))))
(task_item
(entry_declaration
(identifier)))
@ -68,8 +66,7 @@ end P;
(defining_identifier_list
(identifier))
(subtype_indication
(name
(identifier))))))
(identifier)))))
(handled_sequence_of_statements
(sequence_of_statements
(statement
@ -81,8 +78,7 @@ end P;
(parameter_specification
(defining_identifier_list
(identifier))
(name
(identifier)))))
(identifier))))
(handled_sequence_of_statements
(sequence_of_statements
(statement
@ -95,8 +91,7 @@ end P;
(timed_entry_call
(entry_call_alternative
(procedure_call_statement
(name
(identifier))
(identifier)
(actual_parameter_part
(parameter_association
(expression
@ -122,8 +117,7 @@ end P;
(conditional_entry_call
(entry_call_alternative
(procedure_call_statement
(name
(identifier))
(identifier)
(actual_parameter_part
(parameter_association
(expression
@ -138,8 +132,7 @@ end P;
(simple_statement
(null_statement))))))))))
(identifier)))))
(name
(identifier))))))
(identifier)))))
================================================================================
Task types
@ -161,8 +154,7 @@ end;
(compilation_unit
(proper_body
(package_body
(name
(identifier))
(identifier)
(non_empty_declarative_part
(declarative_item_pragma
(type_declaration
@ -183,17 +175,14 @@ end;
(parameter_specification
(defining_identifier_list
(identifier))
(name
(identifier)))))))
(identifier))))))
(identifier))))))
(declarative_item_pragma
(type_declaration
(full_type_declaration
(task_type_declaration
(identifier)
(interface_list
(name
(identifier)))
(identifier)
(task_definition
(task_item
(entry_declaration
@ -225,8 +214,7 @@ end;
(compilation_unit
(proper_body
(package_body
(name
(identifier))
(identifier)
(non_empty_declarative_part
(declarative_item_pragma
(proper_body
@ -240,19 +228,17 @@ end;
(asynchronous_select
(triggering_alternative
(procedure_call_statement
(name
(function_call
(name
(identifier))
(actual_parameter_part
(parameter_association
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal))))))))))))
(function_call
(identifier)
(actual_parameter_part
(parameter_association
(expression
(relation
(simple_expression
(term
(factor
(primary
(numeric_literal)))))))))))
(sequence_of_statements
(statement
(simple_statement
@ -261,8 +247,7 @@ end;
(statement
(simple_statement
(procedure_call_statement
(name
(identifier)))))))))))))))))))
(identifier))))))))))))))))))
(compilation_unit
(statement
(simple_statement
@ -271,11 +256,9 @@ end;
(statement
(simple_statement
(procedure_call_statement
(name
(identifier))))))
(identifier)))))
(compilation_unit
(statement
(simple_statement
(procedure_call_statement
(name
(identifier)))))))
(identifier))))))

View File

@ -11,8 +11,7 @@ end P;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(full_type_declaration
(identifier)
@ -29,8 +28,7 @@ end P;
(factor
(primary
(numeric_literal))))))))))
(name
(identifier)))))
(identifier))))
================================================================================
Derived type
@ -46,16 +44,14 @@ end P;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(full_type_declaration
(identifier)
(type_definition
(derived_type_definition
(subtype_indication
(name
(identifier)))))
(identifier))))
(aspect_specification
(aspect_mark_list
(aspect_association
@ -69,8 +65,7 @@ end P;
(factor
(primary
(numeric_literal)))))))))))))
(name
(identifier)))))
(identifier))))
================================================================================
Modular types
@ -85,8 +80,7 @@ end P;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(full_type_declaration
(identifier)
@ -100,8 +94,7 @@ end P;
(factor
(primary
(numeric_literal))))))))))))
(name
(identifier)))))
(identifier))))
================================================================================
Floats
@ -118,16 +111,14 @@ end P;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(full_type_declaration
(identifier)
(type_definition
(derived_type_definition
(subtype_indication
(name
(identifier))
(identifier)
(constraint
(scalar_constraint
(range_constraint
@ -188,8 +179,7 @@ end P;
(factor
(primary
(numeric_literal))))))))))))
(name
(identifier)))))
(identifier))))
================================================================================
Enumerations
@ -205,8 +195,7 @@ end P;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(type_declaration
(full_type_declaration
(identifier)
@ -216,8 +205,7 @@ end P;
(identifier)))))
(aspect_clause
(enumeration_representation_clause
(name
(identifier))
(identifier)
(enumeration_aggregate
(array_aggregate
(named_array_aggregate
@ -230,8 +218,7 @@ end P;
(term
(factor
(primary
(name
(identifier))))))))))
(identifier)))))))))
(expression
(relation
(simple_expression
@ -242,15 +229,13 @@ end P;
(array_component_association
(discrete_choice_list
(discrete_choice
(expression
(relation
(simple_expression
(term
(factor
(primary
(name
(identifier))))))))))
(expression
(relation
(simple_expression
(term
(factor
(primary
(identifier)))))))))
(expression
(relation
(simple_expression
@ -258,8 +243,7 @@ end P;
(factor
(primary
(numeric_literal)))))))))))))
(name
(identifier)))))
(identifier))))
================================================================================
Subtypes
@ -275,13 +259,11 @@ end P;
(compilation
(compilation_unit
(package_specification
(name
(identifier))
(identifier)
(subtype_declaration
(identifier)
(subtype_indication
(name
(identifier))
(identifier)
(constraint
(scalar_constraint
(range_constraint
@ -299,8 +281,7 @@ end P;
(subtype_declaration
(identifier)
(subtype_indication
(name
(identifier))
(identifier)
(constraint
(index_constraint
(discrete_range
@ -327,5 +308,4 @@ end P;
(factor
(primary
(numeric_literal)))))))))))
(name
(identifier)))))
(identifier))))