Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
727 lines (432 sloc) 26.4 KB
2.3: identifier ::= identifier_start {identifier_start | identifier_extend}
2.3: identifier_start ::= letter_uppercase | letter_lowercase
| letter_titlecase | letter_modifier | letter_other | number_letter
2.3: identifier_extend ::= mark_non_spacing
| mark_spacing_combining | number_decimal | punctuation_connector | other_format
2.4: numeric_literal ::= decimal_literal | based_literal
2.4.1: decimal_literal ::= numeral [.numeral] [exponent]
2.4.1: numeral ::= digit {[underline] digit}
2.4.1: exponent ::= E [+] numeral | E – numeral
2.4.1: digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
2.4.2: based_literal ::= base # based_numeral [.based_numeral] # [exponent]
2.4.2: base ::= numeral
2.4.2: based_numeral ::= extended_digit {[underline] extended_digit}
2.4.2: extended_digit ::= digit | A | B | C | D | E | F
2.5: character_literal ::= 'graphic_character'
2.6: string_literal ::= "{string_element}"
2.6: string_element ::= "" | non_quotation_mark_graphic_character
2.7: comment ::= --{non_end_of_line_character}
2.8: pragma ::= pragma identifier [(pragma_argument_association {, pragma_argument_association})];
2.8: pragma_argument_association ::= [pragma_argument_identifier =>] name
| [pragma_argument_identifier =>] expression
3.1: basic_declaration ::=type_declaration
| object_declaration| subprogram_declaration| null_procedure_declaration| renaming_declaration| generic_declaration
| subtype_declaration| number_declaration| abstract_subprogram_declaration| package_declaration| exception_declaration| generic_instantiation
3.1: defining_identifier ::= identifier
3.2.1: type_declaration ::= full_type_declaration| incomplete_type_declaration| private_type_declaration| private_extension_declaration
3.2.1: full_type_declaration ::= type defining_identifier [known_discriminant_part] is type_definition;
| task_type_declaration | protected_type_declaration
3.2.1: type_definition ::=enumeration_type_definition
| real_type_definition| record_type_definition| derived_type_definition
| integer_type_definition| array_type_definition| access_type_definition| interface_type_definition
3.2.2: subtype_declaration ::=subtype defining_identifier is subtype_indication;
3.2.2: subtype_indication ::= [null_exclusion] subtype_mark [constraint]
3.2.2: subtype_mark ::= subtype_name
3.2.2: constraint ::= scalar_constraint | composite_constraint
3.2.2: scalar_constraint ::= range_constraint | digits_constraint | delta_constraint
3.2.2: composite_constraint ::= index_constraint | discriminant_constraint
3.3.1: object_declaration ::= defining_identifier_list : [aliased] [constant] subtype_indication [:= expression];
| defining_identifier_list : [aliased] [constant] access_definition [:= expression]; | defining_identifier_list : [aliased] [constant] array_type_definition [:= expression]; | single_task_declaration | single_protected_declaration
3.3.1: defining_identifier_list ::= defining_identifier {, defining_identifier}
3.3.2: number_declaration ::= defining_identifier_list : constant := static_expression;
3.4: derived_type_definition ::= [abstract] [limited] new parent_subtype_indication [[and interface_list] record_extension_part]
3.5: range_constraint ::= range range
3.5: range ::= range_attribute_reference | simple_expression .. simple_expression
3.5.1: enumeration_type_definition ::= (enumeration_literal_specification {, enumeration_literal_specification})
3.5.1: enumeration_literal_specification ::= defining_identifier | defining_character_literal
3.5.1: defining_character_literal ::= character_literal
3.5.4: integer_type_definition ::= signed_integer_type_definition | modular_type_definition
3.5.4: signed_integer_type_definition ::= range static_simple_expression .. static_simple_expression
3.5.4: modular_type_definition ::= mod static_expression
3.5.6: real_type_definition ::= floating_point_definition | fixed_point_definition
3.5.7: floating_point_definition ::= digits static_expression [real_range_specification]
3.5.7: real_range_specification ::= range static_simple_expression .. static_simple_expression
3.5.9: fixed_point_definition ::= ordinary_fixed_point_definition | decimal_fixed_point_definition
3.5.9: ordinary_fixed_point_definition ::= delta static_expression real_range_specification
3.5.9: decimal_fixed_point_definition ::= delta static_expression digits static_expression [real_range_specification]
3.5.9: digits_constraint ::= digits static_expression [range_constraint]
3.6: array_type_definition ::= unconstrained_array_definition | constrained_array_definition
3.6: unconstrained_array_definition ::= array(index_subtype_definition {, index_subtype_definition}) of component_definition
3.6: index_subtype_definition ::= subtype_mark range <>
3.6: constrained_array_definition ::= array (discrete_subtype_definition {, discrete_subtype_definition}) of component_definition
3.6: discrete_subtype_definition ::= discrete_subtype_indication | range
3.6: component_definition ::= [aliased] subtype_indication
| [aliased] access_definition
3.6.1: index_constraint ::= (discrete_range {, discrete_range})
3.6.1: discrete_range ::= discrete_subtype_indication | range
3.7: discriminant_part ::= unknown_discriminant_part | known_discriminant_part
3.7: unknown_discriminant_part ::= (<>)
3.7: known_discriminant_part ::= (discriminant_specification {; discriminant_specification})
3.7: discriminant_specification ::= defining_identifier_list : [null_exclusion] subtype_mark [:= default_expression]
| defining_identifier_list : access_definition [:= default_expression]
3.7: default_expression ::= expression
3.7.1: discriminant_constraint ::= (discriminant_association {, discriminant_association})
3.7.1: discriminant_association ::= [discriminant_selector_name {| discriminant_selector_name} =>] expression
3.8: record_type_definition ::= [[abstract] tagged] [limited] record_definition
3.8: record_definition ::=
record
component_list
end record | null record
3.8: component_list ::= component_item {component_item}
| {component_item} variant_part | null;
3.8: component_item ::= component_declaration | aspect_clause
3.8: component_declaration ::= defining_identifier_list : component_definition [:= default_expression];
3.8.1: variant_part ::= case discriminant_direct_name is
variant {variant}
end case;
3.8.1: variant ::= when discrete_choice_list =>
component_list
3.8.1: discrete_choice_list ::= discrete_choice {| discrete_choice}
3.8.1: discrete_choice ::= expression | discrete_range | others
3.9.1: record_extension_part ::= with record_definition
3.9.3: abstract_subprogram_declaration ::= [overriding_indicator] subprogram_specification is abstract;
3.9.4: interface_type_definition ::= [limited | task | protected | synchronized] interface [and interface_list]
3.9.4: interface_list ::= interface_subtype_mark {and interface_subtype_mark}
3.10: access_type_definition ::= [null_exclusion] access_to_object_definition
| [null_exclusion] access_to_subprogram_definition
3.10: access_to_object_definition ::= access [general_access_modifier] subtype_indication
3.10: general_access_modifier ::= all | constant
3.10: access_to_subprogram_definition ::= access [protected] procedure parameter_profile
| access [protected] function parameter_and_result_profile
3.10: null_exclusion ::= not null
3.10: access_definition ::= [null_exclusion] access [constant] subtype_mark
| [null_exclusion] access [protected] procedure parameter_profile | [null_exclusion] access [protected] function parameter_and_result_profile
3.10.1: incomplete_type_declaration ::= type defining_identifier [discriminant_part] [is tagged];
3.11: declarative_part ::= {declarative_item}
3.11: declarative_item ::= basic_declarative_item | body
3.11: basic_declarative_item ::= basic_declaration | aspect_clause | use_clause
3.11: body ::= proper_body | body_stub
3.11: proper_body ::= subprogram_body | package_body | task_body | protected_body
4.1: name ::= direct_name
| indexed_component | selected_component | type_conversion | character_literal
| explicit_dereference | slice | attribute_reference | function_call
4.1: direct_name ::= identifier | operator_symbol
4.1: prefix ::= name | implicit_dereference
4.1: explicit_dereference ::= name.all
4.1: implicit_dereference ::= name
4.1.1: indexed_component ::= prefix(expression {, expression})
4.1.2: slice ::= prefix(discrete_range)
4.1.3: selected_component ::= prefix . selector_name
4.1.3: selector_name ::= identifier | character_literal | operator_symbol
4.1.4: attribute_reference ::= prefix'attribute_designator
4.1.4: attribute_designator ::= identifier[(static_expression)]
| Access | Delta | Digits
4.1.4: range_attribute_reference ::= prefix'range_attribute_designator
4.1.4: range_attribute_designator ::= Range[(static_expression)]
4.3: aggregate ::= record_aggregate | extension_aggregate | array_aggregate
4.3.1: record_aggregate ::= (record_component_association_list)
4.3.1: record_component_association_list ::= record_component_association {, record_component_association}
| null record
4.3.1: record_component_association ::= [component_choice_list =>] expression
| component_choice_list => <>
4.3.1: component_choice_list ::= component_selector_name {| component_selector_name}
| others
4.3.2: extension_aggregate ::= (ancestor_part with record_component_association_list)
4.3.2: ancestor_part ::= expression | subtype_mark
4.3.3: array_aggregate ::= positional_array_aggregate | named_array_aggregate
4.3.3: positional_array_aggregate ::= (expression, expression {, expression})
| (expression {, expression}, others => expression) | (expression {, expression}, others => <>)
4.3.3: named_array_aggregate ::= (array_component_association {, array_component_association})
4.3.3: array_component_association ::= discrete_choice_list => expression
| discrete_choice_list => <>
4.4: expression ::=relation {and relation}
| relation {or relation}| relation {xor relation}
| relation {and then relation}| relation {or else relation}
4.4: relation ::=simple_expression [relational_operator simple_expression]
| simple_expression [not] in range| simple_expression [not] in subtype_mark
4.4: simple_expression ::= [unary_adding_operator] term {binary_adding_operator term}
4.4: term ::= factor {multiplying_operator factor}
4.4: factor ::= primary [** primary] | abs primary | not primary
4.4: primary ::= numeric_literal | null | string_literal | aggregate
| name | qualified_expression | allocator | (expression)
4.5: logical_operator ::=
and|or |xor
4.5: relational_operator ::=
= |/= |< |<=|>|>=
4.5: binary_adding_operator ::=
+|–|&
4.5: unary_adding_operator ::=
+|–
4.5: multiplying_operator ::=
* |/ |mod|rem
4.5: highest_precedence_operator ::=
** |abs|not
4.6: type_conversion ::= subtype_mark(expression)
| subtype_mark(name)
4.7: qualified_expression ::=subtype_mark'(expression) | subtype_mark'aggregate
4.8: allocator ::= new subtype_indication | new qualified_expression
5.1: sequence_of_statements ::= statement {statement}
5.1: statement ::= {label} simple_statement | {label} compound_statement
5.1: simple_statement ::= null_statement| assignment_statement| goto_statement| simple_return_statement
| requeue_statement| abort_statement| code_statement
| exit_statement| procedure_call_statement| entry_call_statement| delay_statement| raise_statement
5.1: compound_statement ::=if_statement
| loop_statement| extended_return_statement| accept_statement
| case_statement| block_statement
| select_statement
5.1:null_statement ::= null;
5.1:label ::= <<label_statement_identifier>>
5.1: statement_identifier ::= direct_name
5.2: assignment_statement ::=variable_name := expression;
5.3: if_statement ::= if condition then
sequence_of_statements {elsif condition then
sequence_of_statements} [else
sequence_of_statements] end if;
5.3: condition ::= boolean_expression
5.4: case_statement ::= case expression is
case_statement_alternative {case_statement_alternative}
end case;
5.4: case_statement_alternative ::= when discrete_choice_list =>
sequence_of_statements
5.5: loop_statement ::= [loop_statement_identifier:]
[iteration_scheme] loop sequence_of_statements
end loop [loop_identifier];
5.5: iteration_scheme ::= while condition| for loop_parameter_specification
5.5: loop_parameter_specification ::=defining_identifier in [reverse] discrete_subtype_definition
5.6: block_statement ::=[block_statement_identifier:]
[declaredeclarative_part]
begin
handled_sequence_of_statementsend [block_identifier];
5.7: exit_statement ::=exit [loop_name] [when condition];
5.8:goto_statement ::= goto label_name;
6.1: subprogram_declaration ::=[overriding_indicator]subprogram_specification;
6.1: subprogram_specification ::=procedure_specification
| function_specification
6.1: procedure_specification ::= procedure defining_program_unit_name parameter_profile
6.1: function_specification ::= function defining_designator parameter_and_result_profile
6.1: designator ::= [parent_unit_name . ]identifier | operator_symbol
6.1: defining_designator ::= defining_program_unit_name | defining_operator_symbol
6.1: defining_program_unit_name ::= [parent_unit_name . ]defining_identifier
6.1: operator_symbol ::= string_literal
6.1: defining_operator_symbol ::= operator_symbol
6.1: parameter_profile ::= [formal_part]
6.1: parameter_and_result_profile ::= [formal_part] return [null_exclusion] subtype_mark
| [formal_part] return access_definition
6.1: formal_part ::= (parameter_specification {; parameter_specification})
6.1: parameter_specification ::= defining_identifier_list : mode [null_exclusion] subtype_mark [:= default_expression]
| defining_identifier_list : access_definition [:= default_expression]
6.1: mode ::= [in] | in out | out
6.3: subprogram_body ::= [overriding_indicator] subprogram_specification is
declarative_part
begin
handled_sequence_of_statements end [designator];
6.4: procedure_call_statement ::= procedure_name;
| procedure_prefix actual_parameter_part;
6.4: function_call ::= function_name
| function_prefix actual_parameter_part
6.4: actual_parameter_part ::= (parameter_association {, parameter_association})
6.4: parameter_association ::= [formal_parameter_selector_name =>] explicit_actual_parameter
6.4: explicit_actual_parameter ::= expression | variable_name
6.5: simple_return_statement ::= return [expression];
6.5: extended_return_statement ::= return defining_identifier : [aliased] return_subtype_indication [:= expression] [do
handled_sequence_of_statements
end return];
6.5: return_subtype_indication ::= subtype_indication | access_definition
6.7: null_procedure_declaration ::= [overriding_indicator] procedure_specification is null;
7.1: package_declaration ::= package_specification;
7.1: package_specification ::= package defining_program_unit_name is
{basic_declarative_item} [private
{basic_declarative_item}] end [[parent_unit_name.]identifier]
7.2: package_body ::= package body defining_program_unit_name is
declarative_part
[begin handled_sequence_of_statements]
end [[parent_unit_name.]identifier];
7.3: private_type_declaration ::= type defining_identifier [discriminant_part] is [[abstract] tagged] [limited] private;
7.3: private_extension_declaration ::= type defining_identifier [discriminant_part] is
[abstract] [limited | synchronized] new ancestor_subtype_indication [and interface_list] with private;
8.3.1: overriding_indicator ::= [not] overriding
8.4: use_clause ::= use_package_clause | use_type_clause
8.4: use_package_clause ::= use package_name {, package_name};
8.4: use_type_clause ::= use type subtype_mark {, subtype_mark};
8.5: renaming_declaration ::= object_renaming_declaration
| exception_renaming_declaration | package_renaming_declaration | subprogram_renaming_declaration | generic_renaming_declaration
8.5.1: object_renaming_declaration ::= defining_identifier : [null_exclusion] subtype_mark renames object_name;
| defining_identifier : access_definition renames object_name;
8.5.2: exception_renaming_declaration ::= defining_identifier : exception renames exception_name;
8.5.3: package_renaming_declaration ::= package defining_program_unit_name renames package_name;
8.5.4: subprogram_renaming_declaration ::= [overriding_indicator] subprogram_specification renames callable_entity_name;
8.5.5: generic_renaming_declaration ::=
generic packagedefining_program_unit_name renames generic_package_name;
| generic proceduredefining_program_unit_name renames generic_procedure_name;
| generic function
defining_program_unit_name renames generic_function_name;
9.1: task_type_declaration ::=task type defining_identifier [known_discriminant_part] [is
[new interface_list with]task_definition];
9.1: single_task_declaration ::=task defining_identifier [is[new interface_list with]
task_definition];
9.1: task_definition ::={task_item}
[ private{task_item}]
end [task_identifier]
9.1: task_item ::= entry_declaration | aspect_clause
9.1: task_body ::= task body defining_identifier is
declarative_part
begin
handled_sequence_of_statements end [task_identifier];
9.4: protected_type_declaration ::= protected type defining_identifier [known_discriminant_part] is
[new interface_list with] protected_definition;
9.4: single_protected_declaration ::= protected defining_identifier is
[new interface_list with] protected_definition;
9.4: protected_definition ::= { protected_operation_declaration }
[ private { protected_element_declaration } ]
end [protected_identifier]
9.4: protected_operation_declaration ::= subprogram_declaration | entry_declaration | aspect_clause
9.4: protected_element_declaration ::= protected_operation_declaration | component_declaration
9.4: protected_body ::= protected body defining_identifier is
{ protected_operation_item } end [protected_identifier];
9.4: protected_operation_item ::= subprogram_declaration | subprogram_body | entry_body | aspect_clause
9.5.2: entry_declaration ::= [overriding_indicator] entry defining_identifier [(discrete_subtype_definition)] parameter_profile;
9.5.2: accept_statement ::= accept entry_direct_name [(entry_index)] parameter_profile [do
handled_sequence_of_statements end [entry_identifier]];
9.5.2: entry_index ::= expression
9.5.2: entry_body ::= entry defining_identifier entry_body_formal_part entry_barrier is
declarative_part
begin
handled_sequence_of_statements end [entry_identifier];
9.5.2: entry_body_formal_part ::= [(entry_index_specification)] parameter_profile
9.5.2: entry_barrier ::= when condition
9.5.2: entry_index_specification ::= for defining_identifier in discrete_subtype_definition
9.5.3: entry_call_statement ::= entry_name [actual_parameter_part];
9.5.4: requeue_statement ::= requeue entry_name [with abort];
9.6: delay_statement ::= delay_until_statement | delay_relative_statement
9.6: delay_until_statement ::= delay until delay_expression;
9.6: delay_relative_statement ::= delay delay_expression;
9.7: select_statement ::= selective_accept | timed_entry_call
| conditional_entry_call | asynchronous_select
9.7.1: selective_accept ::=
select
[guard] select_alternative
{ or [guard]
select_alternative } [ else
sequence_of_statements ] end select;
9.7.1: guard ::= when condition =>
9.7.1: select_alternative ::= accept_alternative
| delay_alternative | terminate_alternative
9.7.1: accept_alternative ::= accept_statement [sequence_of_statements]
9.7.1: delay_alternative ::= delay_statement [sequence_of_statements]
9.7.1: terminate_alternative ::= terminate;
9.7.2: timed_entry_call ::=
select
entry_call_alternative
or
delay_alternative
end select;
9.7.2: entry_call_alternative ::= procedure_or_entry_call [sequence_of_statements]
9.7.2: procedure_or_entry_call ::= procedure_call_statement | entry_call_statement
9.7.3: conditional_entry_call ::=
select
entry_call_alternative
else
sequence_of_statements
end select;
9.7.4: asynchronous_select ::=
select
triggering_alternative
then abort
abortable_part
end select;
9.7.4: triggering_alternative ::= triggering_statement [sequence_of_statements]
9.7.4: triggering_statement ::= procedure_or_entry_call | delay_statement
9.7.4: abortable_part ::= sequence_of_statements
9.8: abort_statement ::= abort task_name {, task_name};
10.1.1: compilation ::= {compilation_unit}
10.1.1: compilation_unit ::= context_clause library_item
| context_clause subunit
10.1.1: library_item ::= [private] library_unit_declaration
| library_unit_body | [private] library_unit_renaming_declaration
10.1.1: library_unit_declaration ::= subprogram_declaration | package_declaration
| generic_declaration | generic_instantiation
10.1.1: library_unit_renaming_declaration ::= package_renaming_declaration
| generic_renaming_declaration | subprogram_renaming_declaration
10.1.1: library_unit_body ::= subprogram_body | package_body
10.1.1: parent_unit_name ::= name
10.1.2: context_clause ::= {context_item}
10.1.2: context_item ::= with_clause | use_clause
10.1.2: with_clause ::= limited_with_clause | nonlimited_with_clause
10.1.2: limited_with_clause ::= limited [private] with library_unit_name {, library_unit_name};
10.1.2: nonlimited_with_clause ::= [private] with library_unit_name {, library_unit_name};
10.1.3: body_stub ::= subprogram_body_stub | package_body_stub | task_body_stub | protected_body_stub
10.1.3: subprogram_body_stub ::= [overriding_indicator] subprogram_specification is separate;
10.1.3: package_body_stub ::= package body defining_identifier is separate;
10.1.3: task_body_stub ::= task body defining_identifier is separate;
10.1.3: protected_body_stub ::= protected body defining_identifier is separate;
10.1.3: subunit ::= separate (parent_unit_name) proper_body
11.1: exception_declaration ::= defining_identifier_list : exception;
11.2: handled_sequence_of_statements ::= sequence_of_statements
[exception exception_handler
{exception_handler}]
11.2: exception_handler ::= when [choice_parameter_specification:] exception_choice {| exception_choice} =>
sequence_of_statements
11.2: choice_parameter_specification ::= defining_identifier
11.2: exception_choice ::= exception_name | others
11.3: raise_statement ::= raise;
| raise exception_name [with string_expression];
12.1: generic_declaration ::= generic_subprogram_declaration | generic_package_declaration
12.1: generic_subprogram_declaration ::= generic_formal_part subprogram_specification;
12.1: generic_package_declaration ::= generic_formal_part package_specification;
12.1: generic_formal_part ::= generic {generic_formal_parameter_declaration | use_clause}
12.1: generic_formal_parameter_declaration ::= formal_object_declaration
| formal_type_declaration | formal_subprogram_declaration | formal_package_declaration
12.3: generic_instantiation ::= package defining_program_unit_name is
new generic_package_name [generic_actual_part]; | [overriding_indicator]
procedure defining_program_unit_name is new generic_procedure_name [generic_actual_part];
| [overriding_indicator] function defining_designator is
new generic_function_name [generic_actual_part];
12.3: generic_actual_part ::=
(generic_association {, generic_association})
12.3: generic_association ::= [generic_formal_parameter_selector_name =>] explicit_generic_actual_parameter
12.3: explicit_generic_actual_parameter ::= expression | variable_name
| subprogram_name | entry_name | subtype_mark | package_instance_name
12.4: formal_object_declaration ::= defining_identifier_list : mode [null_exclusion] subtype_mark [:= default_expression]; defining_identifier_list : mode access_definition [:= default_expression];
12.5: formal_type_declaration ::= type defining_identifier[discriminant_part] is formal_type_definition;
12.5: formal_type_definition ::= formal_private_type_definition
| formal_derived_type_definition | formal_discrete_type_definition | formal_signed_integer_type_definition | formal_modular_type_definition | formal_floating_point_definition | formal_ordinary_fixed_point_definition | formal_decimal_fixed_point_definition | formal_array_type_definition | formal_access_type_definition | formal_interface_type_definition
12.5.1: formal_private_type_definition ::= [[abstract] tagged] [limited] private
12.5.1: formal_derived_type_definition ::= [abstract] [limited | synchronized] new subtype_mark [[and interface_list]with private]
12.5.2: formal_discrete_type_definition ::= (<>)
12.5.2: formal_signed_integer_type_definition ::= range <>
12.5.2: formal_modular_type_definition ::= mod <>
12.5.2: formal_floating_point_definition ::= digits <>
12.5.2: formal_ordinary_fixed_point_definition ::= delta <>
12.5.2: formal_decimal_fixed_point_definition ::= delta <> digits <>
12.5.3: formal_array_type_definition ::= array_type_definition
12.5.4: formal_access_type_definition ::= access_type_definition
12.5.5: formal_interface_type_definition ::= interface_type_definition
12.6: formal_subprogram_declaration ::= formal_concrete_subprogram_declaration | formal_abstract_subprogram_declaration
12.6: formal_concrete_subprogram_declaration ::= with subprogram_specification [is subprogram_default];
12.6: formal_abstract_subprogram_declaration ::= with subprogram_specification is abstract [subprogram_default];
12.6: subprogram_default ::= default_name | <> | null
12.6: default_name ::= name
12.7: formal_package_declaration ::= with package defining_identifier is new generic_package_name formal_package_actual_part;
12.7: formal_package_actual_part ::=
([others =>] <>) | [generic_actual_part] | (formal_package_association {, formal_package_association} [, others => <>])
12.7: formal_package_association ::= generic_association
| generic_formal_parameter_selector_name => <>
13.1: aspect_clause ::= attribute_definition_clause | enumeration_representation_clause | record_representation_clause | at_clause
13.1: local_name ::= direct_name | direct_name'attribute_designator | library_unit_name
13.3: attribute_definition_clause ::= for local_name'attribute_designator use expression;
| for local_name'attribute_designator use name;
13.4: enumeration_representation_clause ::= for first_subtype_local_name use enumeration_aggregate;
13.4: enumeration_aggregate ::= array_aggregate
13.5.1: record_representation_clause ::= for first_subtype_local_name use
record [mod_clause] {component_clause}
end record;
13.5.1: component_clause ::= component_local_name at position range first_bit .. last_bit;
13.5.1: position ::= static_expression
13.5.1: first_bit ::= static_simple_expression
13.5.1: last_bit ::= static_simple_expression
13.8: code_statement ::= qualified_expression;
13.12: restriction ::= restriction_identifier | restriction_parameter_identifier => restriction_parameter_argument
13.12: restriction_parameter_argument ::= name | expression
J.3: delta_constraint ::= delta static_expression [range_constraint]
J.7: at_clause ::= for direct_name use at expression;
J.8: mod_clause ::= at mod static_expression;