Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
543 lines (543 sloc) 23.2 KB
2.1: character ::= graphic_character I formaLeffector I otheLcontml__function
2.1:
graphic_character ::= identfieLletter I digit I space_character I specialcharacter
2.3: identifier ::=
identifieLletter {}underline] letter__or_digit}
2.3: letteLor_digit ::= identifleLletter I digit
2.4: numeric_literal ::= decimal_literal I based_literal
2.4.1: decimal_literal ::= numeral [.numeral] [exponent]
2.4.1: numeral ::= digit { [underline] digit}
2.4.]: exponent ::= E [+] numeral I E - numeral
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 IA IB IC ID IE IF
2.5:
characteLliteral ::= 'graphic_character'
2.6:
string_literal ::= "{string_element }"
2.6:
string_element ::= "" I non_quotation_mark__graphic_character A string_element is either a pair of quotation marks C"),
or a single graphic_character other than a quotation mark.
2.7: comment ::= -- {non_end_of_line_character}
2.8:
pragma ::= pragma identifier [(pragma_argumenLassociation {, pragma__argument_association])];
2.8: pragma_argumenLassociation ::=
[pragmo_arg~ent_identifier=>] name [ [pragma_arg~entidentifier=>] expression
3.1:
basic_declaration ::= typedeclaration I subtype_declaration
I object_declaration I number_declaration I subprogram_declaration Iabstract_subprogram_declaration I package_declaration I renaming_declaration I exception_declaration I generic_declaration I genedc_instantiation
3.1:
defining_identifier ::= identifier
3.2.1: type_declaration ::= full_type_declaration
Iincomplete_type declaration I pdvate_type declaration I private_extension_declaration
3.2.]: full_type_declaration ::=
type defining_identifier [known_discdminant_part] is type_definition; I task_type_declaration I protectedtype_declaration
3.2.1: type_definition ::=
enumeration_type_definition I integer_type_definition I real_type_definition I array_type_definition I record_type_definition I access_type_definiUon I derived_type_definition
3.2.2: subtype_declarafion ::=
subtype defining_identifier is subtype_indication;
3.2.2: subtype_indication ::= subtype_mark [constraint]
3.2.2: subtype_mark ::= subtype_name
3.2.2:
constraint ::= scalar_constraint I composite_constraint
3.2.2: scalar_constraint ::=
range_constraint I digits_constraint I delta_constraint
3.2.2: composite_constraint ::=
index constraint I discriminant_.constralnt
3.3.1:
object_declaration ::= defining_identifier_list : [a|iased] [constant] subtype_indication [:= expression];
I defining_idanfifier_list : [aHased] [constant] array_type_definition [:= expression]; I single_task_declaration I 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] new parent_subtype_indication[record_extension_part] 3.5:
range_constraint ::= range range
3.5:
range ::= range_attribute_reference I simple_expression .. simple_expression
3.5.1: enumeration_type_definition ::=
(enumerationJiteral_specification {, enumeration_litsral_specification })
3.5.1:
enumeration_literal_specification ::= defining_identifier I defining_character literal
3.5.1:
defining_character_literal ::= character_literal
3.5.4: integer type_definition ::= signed_integer_type_definition I modular__type_definition
3.5.4: signed_integer_type_definition ::= range static_simple_expression .. static_simple_expression
3.5.4: modular_type_definition ::= rood staticexpression
3.5.6:
real__type_definition ::= floating_poinLdetinition Ifixed_point_definition
3.5.7:
floating_poinLdefinition ::= digits staticexpression [real_range_specification]
3.5.7:
real_range_specifica'don ::=
rangestatic_simple_expression ..staticsimple_expression 3.5.9:
fixed_pointdefinition ::= ordinary_fixed_pointdefinition I decimal_fixedpoint_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 ::=
unconstrainedarray_definition Iconstrained_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_subtypedefinition {, discrete_subtype_definition }) of component_definition
3.6:
discrete_subtype_definition ::= discrete_subtype_indication I range 3.6:
componenLdefinition ::= [afiased] subtype_indication
3.6.1: index constraint ::= (discrate_range {, discrete_range})
3.6.1: discrete_range ::= discrete_subtype_indication I range
3.7:
discriminantpart ::= unknown_discriminent_part I known_discriminant part
3.7:
unknown_discriminant_part ::= (<>)
3.7: known_discriminant part ::=
(discriminant_specification {; discdminant_specification })
3.7:
discriminant_specification ::= defining_identifier_list : subtype_mark [:= default_expression]
I defining_identifier_list : access_definition [:= default.expression] 3.7:
defaulLexpression ::= expression
3.7.1:
discriminanLconstraint ::= (discriminant_association {, discriminanLassociation })
3.7.1:
discriminant_association ::= [discriminant_selector_name {I discriminant_selector_name } =>] expression
3.8: record type definition ::= [[abstract] tagged] [limited] record_definition
3.8:
recorddefinition ::=
record
component_list
end record Inull record
3.8:
component_list ::= componenLitem {componenLitem}
I {component_item} variant_part
I null; 3.8:
component_item ::= componenLdeclaration I representation_clause
3.8:
componentdeclaration ::= defining_identifier_list : componentdefinition [:= defauit__expression];
3.8.1: variant_part ::=
case discriminantdirecLname is variant
{variant} end ease;
3.8.1: variant ::=
when discrete_choice_list => component list
3.8,1:
discrete_choice_list ::= discrete_choice {I discrete_choice}
discrete_choice ::= expression I discrete_range I others
3.9.1: record extension_part ::= with record_definition
3.10: access_type_definition ::=
accessjo objecLdefinition I accessjo subpregram_definition
3.10: access., to object__definition ::=
acceSS[general_access_modifier] subtype_indication
3.10: general_access_modifier ::= all I constant
3.10:
accessto_subprogram_definition ::= access [protected] procedure parameter_profile
I access [protected] function parameter_and_rasult_profile
3.10:
access_definition ::= access subtype_mark
3.10.1:
incomplete_type_declaration ::= type defining_identifier [discriminant_part];
3.11:
declarative_part ::= {declarative_item}
3.11:
declarative_item ::= basic_declarative_item I body
3.11:
basic_declarative_item ::= basic_declaration I representation_clause I use_clause
3.11: body ::= proper body I body_stub
3.11:
proper_body ::= subprogram_body I package_body I task_body I protected_body
4.1:
name ::= direcLname
I indexed_component I selected_component I type_conversion I character_literal
I expnciLdereference I slice I attribute_reference I function_call
4.1: direct_name ::= identifierIoperatoLsymbol
4.1:
prefix ::= name I implicit_dereference
4.1:
explicit__dereference ::= name.all
4.1: impliciLdereference ::= 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 I character_literal I operator_symbol
4.1.4:
attribute_reference ::= prefix'attribute_designator
4.1.4:
attribute_designator ::=
identifier[(stafic_expression)]
I Access I Delta I 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 I extension_aggregate I array_aggregate
4.3.1:
record_aggregate ::= (record_componenLassociation list)
4.3,1: record_component_association_list ::=
record_componenLassociation {, record component association}
Inull record
4.3.1:
record_component_association ::= [ componenLchoice list => ] expression
4.3.1:
componenLchoice list ::=
component_selector name { I component.selector_name}
I others
4.3.2: extension_aggregate ::=
(ancestor part with record_componenLassociation_list)
4.3.2: ancestor_part ::= expression I subtype_mark
4.3.3: array aggregate ::=
positional_array_aggregate I named array aggregate
4.3.3: positional_array aggregate ::=
(expression, expression {, expression}) I (expression {, expression }, others => expression)
4.3.3: named_array._aggregate ::=
(array_componentassociation {, array_componenLassociation })
4.3.3: arraycomponent_association ::=
discrete choice list => expression
4.4: expression ::=
relation {and relation} I relation {and then relation} I relation {or relation} I relation {or else relation} I relation {xor relation}
4.4: relation ::=
simple_expression [relational_operator simple_expression} I simple_expression [not] in range I 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] Iabs primary I not primary
4.4: pdmary ::=
numeric_literal Inull IstringJiteral Iaggregate Iname Iqualified_expression Iallocator I(expression)
4.5: logical operator ::= and I or I xor
4.5:
relational_operator ::= = I/= I < I <= I > I >=
4.5: binary_adding_operator ::= + I- I&
4.5:
unary_adding_operator ::= + I -
4.5: multiplying_operator ::= * I / I rood I rein
4.5: highest_precedence_operator ::= ** Iabs Inot
4.6: type_conversion ::=
subtype_mark(expression) I subtype_mark(name)
4.7:
qualified_expression ::= subtype_mark'(expression) Isubtype_mark'aggregate
4.8: allocator ::=
new subtype_indication I new qualified_expression
5.1:
sequence_of_statements ::= statement {statement}
5.1:
statement 1:= {label} simple_statement I {label} compound_statement
5.1:
simple_statement ::= null_statement
I assignmenLstatementI goto_statementI return_statementI requeue_statementI abo~_statement
I code_statement
I exit_statementI procedure_call_statement
I entry_call_statementI delay_statementI raise_statement
5.1:
compound_statement ::=if_statement
I loop_statementI acceptstatement
I case_statementI block_statementI selecLstatement
5.1:null_statement ::= null;
5.1:label ::= <<label_statemenLidentifier>>
5.1:
statement_identifier ::= direcLname
5.2:
assignmenLstatement ::=vaHab/e_name := expression;
5.3:if_statement ::=
if condition thensequence_of_statements
{elsifcondition thensequence_of statements }
[else
sequence_oLstatements]
end if;5.3:
condition ::= boolean_expression
5.4:
case_statement ::=case expression is
case_statementalte rnative{ case_statement_altemafive }
end case;
5.4: case_statemenLaltemative ::=
when discrete_choice_list => sequence_of_statements
5.5:
loop_statement ::=
[loop_statemenLidentifier:]
[iteration_scheme] loop sequence_of statements end loop [loop_identifier];
5.5: iteration_scheme ::= while condition
I for loop_parameter_specification
5.5:
loop_parameter_specification ::= defining_identifier in [reverse] discrete_subtype_definition
5.6:
block_statement ::=
[block_statement_identifier:]
5.7:
[declare declarative_part]
begin
handled_sequence of_statements end [block_identifier];
exit_statement ::= exit [loop_name] [when condition];
5.8: goto_statement ::= goto label_name;
6.1:
subprogram_declaration ::= subprogram_specification;
6.1:
abstract_subprogram_declaration::=subprogram_specification isabstract;
6.1:
subprogram_specification ::= procedure defining_program_unit_name parameter profile
Ifunction defining_designator parameter_and_result_profile
6.1: designator ::= [parenLuniLname. ]identifier I operator_symbol
6.1:
defining_designator ::= defining_program_unit_name I defining_operator_symbol
6.1:
defining_program_unit_name ::= [parent__unit_name. ]defining_identifier
6.1:
operatoLsymbol ::= string_literal
6.1: defining_operator_symbol::=operator symbol
6.1:
parameter_profile ::= [formal_part]
6.1:
parameter_and_result_profile ::= [formal_part] return subtype_mark
6.1:
formal_part ::= (parameter_specification [; parameter_specification})
6.1:
parameter_specification ::= defining_identifier_list : mode subtype_mark [:= defaulLexpression]
Idefining_identifier_list:access_definition [:=default_expression
6.1: mode ::= [in] Iin out Iout
6.3:
subprogram_body ::= subprogramspecification is
declarative_part
begin
handled_sequence_of_statements end [designator];
6.4: procedure_call_statement ::=
procedurename; Iprocedureprefix actual_parameter_part;
6.4: function_call ::=
function_name
Ifunction_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 Ivariablename 6.5:
return_statement ::= return [expression]; 7.1:
package_declaration ::= package_specitication;
7.1: package_specification ::= -
package defining_program_unit_nameis {basic_declarative item}
[private { basic_declarative_item} ]
end [[parenLuniLname.]identifier]
7.2: package_body ::=
package body deflning_pmgram_uniLname is declarative_part
[begin handled_sequence of_statements]
end [[parenLunit_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 [discdminant oart] is
[abstract] new Gncestor_subtype_indication with private; 8.4:
use_clause ::= use_package_clause I use_typeclause 8.4:
use_package_clause::=usepacl~ge_name {,pacl~ge_name};
8.4: use_typeclause ::= use type subtype_mark {, subtype_mark};
8.5:
renaming_declaration ::= objecLmnaming_declaration
I exception_renaming_declaration I package_renaming_declaration I subprogram_renaming_declaration I generic_renaming_declaration
8.5.1:
objecLranaming_declaration ::= defining_identifier : subtype_mark renames object_name; 8.5.2:
exception_ranaming_deelaration ::= defining_identifier : exception renames exception_name; 8.5.3:
package_renaming_declaration ::= package defining_program_uniLname renames package_name; 8.5.4:
subprogram_ranaming_declaration ::= subprogram_specification renames callable_entity_name;
8.5.5:
generic renaming_declaration ::=
generic package Igeneric procedure Igeneric function
defining_program_unit_name renames generic_package_name; defining_program_uniLname renames generic_.procedure_name; detining._program_unit_name renames generic_function_name;
9.1: task_type_declaration ::=
task type defining_iden•er [known_diseriminant_part] [is task_definition];
9.1: single_task_declaration ::=
task defining_identifier [is task_definition];
9.1:
task_definition ::= {task_item}
[ private {task_item}]
end [task_identifier]
9.1:
task_item ::= entry_declaration I representation_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_diecriminant_part] is protecteddefinition;
9.4: single._protected_declaration ::=
protected defining_identifier is protected_definition;
9.4: protecteddefinition ::=
{ protected operation_declaration }
[ private { protected_element_declaration } ]
end [protectedidentifier] 9.4:
protected_operation_declaration ::=subprogram_declaration I entry_declaration I representation_clause
9.4: protected_element_declaration ::= protected_operation_declaration
I componenLdeclaration
9.4: protected_body ::=
protected body defining_iden'dfier is { protected_operation_item }
end [protected_identifier];
9.4: protected__operation_item ::= subprogram_declaration
I subprogram_body I entry_body I representation_ctsuse
9.5.2: entry_declarafion ::=
entry defining_identifier [(discrete_subtypedefinition)] parameter_profile;
9.5.2: accept__statement ::=
accept entry_direct_name [(entry_index)] parameter_profile [do handled_sequence of_statements
end [entry_identifier]I;
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_formalpart ::= [(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: rsqueue_statement ::= requeue entryname [with abort];
9.6: delay_statement ::= delay_until_statement I delay_relative_statement
9.6: delay_until_statement::= delay until delay_expression;
9.6: delay_relative_statement::= delay delay_expression;
9.7:
selecLstatement ::= selective_accept I timed_entry_call
Iconditional_entry call I asynchronousselect
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 ::= acceptaltemative I delay_alternative
I 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 ent ry_call_altemative
or delay alternative
end select;
9.7.2: entrycall_alternative ::=
entry_call_statement [sequence_of_statements]
9.7.3: conditional_entry_call ::=
select entry_call_alternative
else sequence_of statements
end select;
9.7.4:
asynchronous_select ::=
select
triggeringalternative then abort
abortable_part end select;
9.7.4: triggering_alternative ::= triggering_statement [sequence_oLstatements]
9.7.4: triggering_statement ::= entry_call_statement I delaystatement
9.7.4: abortable_part ::= sequence_of_statements
9.8: abort_statement ::= abort task_name {, taskname };
10.1.1: compilation ::= {compilation_unit}
10.1.1: compilation_unit ::=
context_clause library_item I contextclause subunit
10.1.1:
library_item ::= [private] library_uniLdeclaration
I library_unit_body I[private] library_unit_renaming_declaration
10.1.1: library_unit_declaration ::=
subprogram_declaration I package_declaration I generic_declaration I generic_instantiation
10.1.1:
library_unit_renaming_declaration ::= package_renaming_declaration
I generic_renaming_declaration I subprogram_ranaming_declaration
10.1.1:
library_unit_body ::= subprogram_body I package_body
10.1.1: parent_unit_name ::= name
10.1.2: context_clause ::= {context_item}
10.1.2:
context_item ::= with_clause I use_clause
10.1.2: with_clause ::= with library_unit_name{, library_unit_name};
10.1.3: body_stub ::= subprogram_body_stub I peckage_body_stub I task_body_stub I protected_body_stub
10.1.3: subprogram_body_stub ::= 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_uniUname) 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~oarameter_specification:] exceptionchoice (I exception_choice} =>
sequence_of_statements
11.2:
choice_parameter_specification ::= defining_identifier
11.2:
exception_choice ::= exception_nameI others 11.3:
raise_statement ::= raise [exceptionname];
12.1:
generic_declaration ::= generic_subprogram_declaration I generic_package_declaration
12.1: genedc_subprogram_declaration ::=
generic_formal_part subprogram_specification;
12.1: genedc~oackage_declaration ::=
generic_formal_part package_specification;
12.1: generic_formal_part ::= generic {genedc_fornkaLparameter_declaration I use_clause}
12.1: generic_formal_parameter_declaration ::=
formal_object_declaration I formal_type_declaration I formal_subprogramdeclaration I formal_package_declaration
12.3: generic_instantiation ::=
package defining_program uniLname is new generic_package_name[generic_actual_part];
Iprocedure defining_program_unit_name is new generic_procedure_name[generic_actual_part];
I function defining_designator is new generic_jrunction_name[genedc actual part];
12.3:
generic_actual_part ::= (generic_association {, generic_association})
12,3: generic_association ::=
[generic_formal_parameter_selector_name=>] explicit__genedc_actual_parameter
12.3: explicitgeneric_actual_parameter ::= expression I variable_name
Isubprogram_nameIentry_name Isubtype_mark Ipackage_instance_name
12.4: formal_object_declaration ::=
defining identifier_list : mode subtype_mark [:= default_expression];
12.5: formaltype_declaration ::=
type defining_identilier[discriminant_part] is formal_type_definition;
12.5: formal_type_definition ::=
formal_private_type_definition I formal_derived type_definition I formal_discrete_type_definition I formal_signed_integer type_definition I formalmodular_type_definition I formal_floating_poinLdefinition I formal_ordinary_fixed_point_definition I formal_decimal_fixed_point_definition I formalarray_type_definition I formal_access_typedefinition
12.5.1: formal_.private_type_definition ::= [[abstract] tagged] [limited] private
12.5.1: formal_derived_type_definition ::= [abstract] new subtype_mark [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 ::= mad o
12.5.2:
formal_floating_point_definition ::= digits <>
12.5.2: formal ordinary_fixed_point_definition ::= delta <>
12.5.2: formal_decimal_fixed_poinLdefinition ::= delta <> digits <>
formal_array_type_definition ::= array_type_definition
12.5.4:
formal_ access- - type- - definition ::= access- - type- - definition
12.6:
formal_subprogram_declaration ::= with subprogram_specification [is subprogram_default];
12.6:
subprogram_default ::= default_name I <>
12.6:
default_name ::= name
12.7: formai_paekage_declaration ::=
with package defining_identifier is new generic_.package_name formaljoaekage_actual_part;
12.7: formal_package_actual_part ::=
(<>) I[generic_actual_part]
13.1:
representation_clause ::= attributedefinition_clause I enumeration_representation_clause I record_representation_clause I at_clause
13.1:
local_name ::= direcLname I direcLname'attribute_designator I library_unit_name
13.3: attribute_definition_clause ::=
for Iocal_name'attribute_designator use expression; I for Iocal_name'attributs_designator use name;
13.4: enumeration_representation_clause ::=
forfirst_subtypelocal_name use enumeration_aggregate; 13.4:
enumeration_aggregate ::= array_aggregate
13.5.1: record_representation_clause ::=
forfirst subtype_locaUname use
record [mod_clause] {eomponent__clause }
end record;
13.5.1:
component_clause ::= component_local_name at position range firsLbit .. 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
I restriction_parameter_identifier => expression J.3:
delta_constraint ::= ddta static expression [range_constraint] J.7:
at_clause ::= for direct_name use at expression;
J.8: mod_clause ::= at mod static._expression;