Full copyright information including the copyright information for the underlying Ada 95 Reference Manual are found here.
This grammar has been derived from
the Ada 95 Reference Manual.
Lexical and context-free syntax has been separated.
Some informal explanations have been implemented in the lexical syntax.
The nonterminal range has been renamed to range_definition
to avoid collision with the keyword range.
There are many unresolved bottom sorts carrying over from the Ada 95 RM.
If you have any remark or a question,
contact Ralf Lämmel
(Email: ralf@cwi.nl)
This is Version 1.0 of the grammar.
It has been released on December, 7th, 2000.
| pragma | = | pragma identifier [ "(" pragma_argument_association { "," pragma_argument_association }* ")" ] ";" |
| pragma_argument_association | = | ( [ pragma_argument_identifier "=>" ] name | [ pragma_argument_identifier "=>" ] expression ) |
| defining_identifier | = | identifier |
| type_declaration | = | ( full_type_declaration | incomplete_type_declaration | private_type_declaration | private_extension_declaration ) |
| full_type_declaration | = | ( "type" defining_identifier [ known_discriminant_part ] "is" type_definition ";" | task_type_declaration | protected_type_declaration ) |
| type_definition | = | ( enumeration_type_definition | integer_type_definition | real_type_definition | array_type_definition | record_type_definition | access_type_definition | derived_type_definition ) |
| subtype_declaration | = | "subtype" defining_identifier "is" subtype_indication ";" |
| subtype_indication | = | subtype_mark [ constraint ] |
| subtype_mark | = | subtype_name |
| constraint | = | ( scalar_constraint | composite_constraint ) |
| scalar_constraint | = | ( range_constraint | digits_constraint | delta_constraint ) |
| composite_constraint | = | ( index_constraint | discriminant_constraint ) |
| object_declaration | = | ( defining_identifier_list ":" [ "aliased" ] [ "constant" ] subtype_indication [ ":=" expression ] ";" | defining_identifier_list ":" [ "aliased" ] [ "constant" ] array_type_definition [ ":=" expression ] ";" | single_task_declaration | single_protected_declaration ) |
| defining_identifier_list | = | defining_identifier { "," defining_identifier }* |
| number_declaration | = | defining_identifier_list ":" "constant" ":=" static_expression ";" |
| derived_type_definition | = | [ "abstract" ] "new" parent_subtype_indication [ record_extension_part ] |
| range_constraint | = | "range" range_definition |
| range_definition | = | ( range_attribute_reference | simple_expression ".." simple_expression ) |
| enumeration_type_definition | = | "(" enumeration_literal_specification { "," enumeration_literal_specification }* ")" |
| enumeration_literal_specification | = | ( defining_identifier | defining_character_literal ) |
| defining_character_literal | = | character_literal |
| integer_type_definition | = | ( signed_integer_type_definition | modular_type_definition ) |
| signed_integer_type_definition | = | "range" static_simple_expression ".." static_simple_expression |
| modular_type_definition | = | "mod" static_expression |
| real_type_definition | = | ( floating_point_definition | fixed_point_definition ) |
| floating_point_definition | = | "digits" static_expression [ real_range_specification ] |
| real_range_specification | = | "range" static_simple_expression ".." static_simple_expression |
| fixed_point_definition | = | ( ordinary_fixed_point_definition | decimal_fixed_point_definition ) |
| ordinary_fixed_point_definition | = | "delta" static_expression real_range_specification |
| decimal_fixed_point_definition | = | "delta" static_expression "digits" static_expression [ real_range_specification ] |
| digits_constraint | = | "digits" static_expression [ range_constraint ] |
| array_type_definition | = | ( unconstrained_array_definition | constrained_array_definition ) |
| unconstrained_array_definition | = | "array" "(" index_subtype_definition { "," index_subtype_definition }* ")" "of" component_definition |
| index_subtype_definition | = | subtype_mark "range" "<>" |
| constrained_array_definition | = | "array" "(" discrete_subtype_definition { "," discrete_subtype_definition }* ")" "of" component_definition |
| discrete_subtype_definition | = | ( discrete_subtype_indication | "range" ) |
| component_definition | = | [ "aliased" ] subtype_indication |
| index_constraint | = | "(" discrete_range { "," discrete_range }* ")" |
| discrete_range | = | ( discrete_subtype_indication | range_definition ) |
| discriminant_part | = | ( unknown_discriminant_part | known_discriminant_part ) |
| unknown_discriminant_part | = | "(" "<>" ")" |
| known_discriminant_part | = | "(" discriminant_specification { ";" discriminant_specification }* ")" |
| discriminant_specification | = | ( defining_identifier_list ":" subtype_mark [ ":=" default_expression ] | defining_identifier_list ":" access_definition [ ":=" default_expression ] ) |
| default_expression | = | expression |
| discriminant_constraint | = | "(" discriminant_association { "," discriminant_association }* ")" |
| discriminant_association | = | [ discriminant_selector_name { "|" discriminant_selector_name }* "=>" ] expression |
| record_type_definition | = | [ [ "abstract" ] "tagged" ] [ "limited" ] record_definition |
| record_definition | = | ( "record" component_list "end" "record" | "null" "record" ) |
| component_list | = | ( component_item { component_item }* | { component_item }* variant_part | "null" ";" ) |
| component_item | = | ( component_declaration | representation_clause ) |
| component_declaration | = | defining_identifier_list ":" component_definition [ ":=" default_expression ] ";" |
| variant_part | = | "case" discriminant_direct_name "is" variant { variant }* "end" "case" ";" |
| variant | = | "when" discrete_choice_list "=>" component_list |
| discrete_choice_list | = | discrete_choice { "|" discrete_choice }* |
| discrete_choice | = | ( expression | discrete_range | "others" ) |
| record_extension_part | = | "with" record_definition |
| access_type_definition | = | ( access_to_object_definition | access_to_subprogram_definition ) |
| access_to_object_definition | = | "access" [ general_access_modifier ] subtype_indication |
| general_access_modifier | = | ( "all" | "constant" ) |
| access_to_subprogram_definition | = | ( "access" [ "protected" ] "procedure" parameter_profile | "access" [ "protected" ] "function" parameter_and_result_profile ) |
| access_definition | = | "access" subtype_mark |
| incomplete_type_declaration | = | "type" defining_identifier [ discriminant_part ] ";" |
| declarative_part | = | { declarative_item }* |
| declarative_item | = | ( basic_declarative_item | body ) |
| basic_declarative_item | = | ( basic_declaration | representation_clause | use_clause ) |
| body | = | ( proper_body | body_stub ) |
| proper_body | = | ( subprogram_body | package_body | task_body | protected_body ) |
| name | = | ( direct_name | explicit_dereference | indexed_component | slice | selected_component | attribute_reference | type_conversion | function_call | character_literal ) |
| direct_name | = | ( identifier | operator_symbol ) |
| prefix | = | ( name | implicit_dereference ) |
| explicit_dereference | = | name "." "all" |
| implicit_dereference | = | name |
| indexed_component | = | prefix "(" expression { "," expression }* ")" |
| slice | = | prefix "(" discrete_range ")" |
| selected_component | = | prefix "." selector_name |
| selector_name | = | ( identifier | character_literal | operator_symbol ) |
| attribute_reference | = | prefix "'" attribute_designator |
| attribute_designator | = | ( identifier [ "(" static_expression ")" ] | "Access" | "Delta" | "Digits" ) |
| range_attribute_reference | = | prefix "'" range_attribute_designator |
| range_attribute_designator | = | "Range" [ "(" static_expression ")" ] |
| aggregate | = | ( record_aggregate | extension_aggregate | array_aggregate ) |
| record_aggregate | = | "(" record_component_association_list ")" |
| record_component_association_list | = | ( record_component_association { "," record_component_association }* | "null" "record" ) |
| record_component_association | = | [ component_choice_list "=>" ] expression |
| component_choice_list | = | ( component_selector_name { "|" component_selector_name }* | "others" ) |
| extension_aggregate | = | "(" ancestor_part "with" record_component_association_list ")" |
| ancestor_part | = | ( expression | subtype_mark ) |
| array_aggregate | = | ( positional_array_aggregate | named_array_aggregate ) |
| positional_array_aggregate | = | ( "(" expression "," expression { "," expression }* ")" | "(" expression { "," expression }* "," "others" "=>" expression ")" ) |
| named_array_aggregate | = | "(" array_component_association { "," array_component_association }* ")" |
| array_component_association | = | discrete_choice_list "=>" expression |
| expression | = | ( relation { "and" relation }* | relation { "and" "then" relation }* | relation { "or" relation }* | relation { "or" "else" relation }* | relation { "xor" relation }* ) |
| relation | = | ( simple_expression [ relational_operator simple_expression ] | simple_expression [ "not" ] "in" range_definition | simple_expression [ "not" ] "in" subtype_mark ) |
| simple_expression | = | [ unary_adding_operator ] term { binary_adding_operator term }* |
| term | = | factor { multiplying_operator factor }* |
| factor | = | ( primary [ "**" primary ] | "abs" primary | "not" primary ) |
| primary | = | ( numeric_literal | "null" | string_literal | aggregate | name | qualified_expression | allocator | "(" expression ")" ) |
| logical_operator | = | ( "and" | "or" | "xor" ) |
| relational_operator | = | ( "=" | "/=" | "<" | "<=" | ">" | ">=" ) |
| binary_adding_operator | = | ( "+" | "-" | "&" ) |
| unary_adding_operator | = | ( "+" | "--" ) |
| multiplying_operator | = | ( "*" | "/" | "mod" | "rem" ) |
| highest_precedence_operator | = | ( "**" | "abs" | "not" ) |
| type_conversion | = | ( subtype_mark "(" expression ")" | subtype_mark "(" name ")" ) |
| qualified_expression | = | ( subtype_mark "'" "(" expression ")" | subtype_mark "'" aggregate ) |
| allocator | = | ( "new" subtype_indication | "new" qualified_expression ) |
| sequence_of_statements | = | statement { statement }* |
| statement | = | ( { label }* simple_statement | { label }* compound_statement ) |
| compound_statement | = | ( if_statement | case_statement | loop_statement | block_statement | accept_statement | select_statement ) |
| null_statement | = | "null" ";" |
| label | = | "<<" label_statement_identifier ">>" |
| statement_identifier | = | direct_name |
| assignment_statement | = | variable_name ":=" expression ";" |
| if_statement | = | "if" condition "then" sequence_of_statements { "elsif" condition "then" sequence_of_statements }* [ "else" sequence_of_statements ] "end" "if" ";" |
| condition | = | boolean_expression |
| case_statement | = | "case" expression "is" case_statement_alternative { case_statement_alternative }* "end" "case" ";" |
| case_statement_alternative | = | "when" discrete_choice_list "=>" sequence_of_statements |
| loop_statement | = | [ loop_statement_identifier ":" ] [ iteration_scheme ] "loop" sequence_of_statements "end" "loop" [ loop_identifier ] ";" |
| iteration_scheme | = | ( "while" condition | "for" loop_parameter_specification ) |
| loop_parameter_specification | = | defining_identifier "in" [ "reverse" ] discrete_subtype_definition |
| block_statement | = | [ block_statement_identifier ":" ] [ "declare" declarative_part ] "begin" handled_sequence_of_statements "end" [ block_identifier ] ";" |
| exit_statement | = | "exit" [ loop_name ] [ "when" condition ] ";" |
| goto_statement | = | "goto" label_name ";" |
| subprogram_declaration | = | subprogram_specification ";" |
| abstract_subprogram_declaration | = | subprogram_specification "is" "abstract" ";" |
| subprogram_specification | = | ( "procedure" defining_program_unit_name parameter_profile | "function" defining_designator parameter_and_result_profile ) |
| designator | = | ( [ parent_unit_name "." ] identifier | operator_symbol ) |
| defining_designator | = | ( defining_program_unit_name | defining_operator_symbol ) |
| defining_program_unit_name | = | [ parent_unit_name "." ] defining_identifier |
| operator_symbol | = | string_literal |
| defining_operator_symbol | = | operator_symbol |
| parameter_profile | = | [ formal_part ] |
| parameter_and_result_profile | = | [ formal_part ] "return" subtype_mark |
| formal_part | = | "(" parameter_specification { ";" parameter_specification }* ")" |
| parameter_specification | = | ( defining_identifier_list ":" mode subtype_mark [ ":=" default_expression ] | defining_identifier_list ":" access_definition [ ":=" default_expression ] ) |
| mode | = | ( [ "in" ] | "in" "out" | "out" ) |
| subprogram_body | = | subprogram_specification "is" declarative_part "begin" handled_sequence_of_statements "end" [ designator ] ";" |
| procedure_call_statement | = | ( procedure_name ";" | procedure_prefix actual_parameter_part ";" ) |
| function_call | = | ( function_name | function_prefix actual_parameter_part ) |
| actual_parameter_part | = | "(" parameter_association { "," parameter_association }* ")" |
| parameter_association | = | [ formal_parameter_selector_name "=>" ] explicit_actual_parameter |
| explicit_actual_parameter | = | ( expression | variable_name ) |
| return_statement | = | "return" [ expression ] ";" |
| package_declaration | = | package_specification ";" |
| package_specification | = | "package" defining_program_unit_name "is" { basic_declarative_item }* [ "private" { basic_declarative_item }* ] "end" [ [ parent_unit_name "." ] identifier ] |
| package_body | = | "package" body defining_program_unit_name "is" declarative_part [ "begin" handled_sequence_of_statements ] "end" [ [ parent_unit_name "." ] identifier ] ";" |
| private_type_declaration | = | "type" defining_identifier [ discriminant_part ] "is" [ [ "abstract" ] "tagged" ] [ "limited" ] "private" ";" |
| private_extension_declaration | = | "type" defining_identifier [ discriminant_part ] "is" [ "abstract" ] "new" ancestor_subtype_indication "with" "private" ";" |
| use_clause | = | ( use_package_clause | use_type_clause ) |
| use_package_clause | = | "use" package_name { "," package_name }* ";" |
| use_type_clause | = | "use" "type" subtype_mark { "," subtype_mark }* ";" |
| renaming_declaration | = | ( object_renaming_declaration | exception_renaming_declaration | package_renaming_declaration | subprogram_renaming_declaration | generic_renaming_declaration ) |
| object_renaming_declaration | = | defining_identifier ":" subtype_mark "renames" object_name ";" |
| exception_renaming_declaration | = | defining_identifier ":" "exception" "renames" exception_name ";" |
| package_renaming_declaration | = | "package" defining_program_unit_name renamespackage_name ";" |
| subprogram_renaming_declaration | = | subprogram_specification "renames" callable_entity_name ";" |
| generic_renaming_declaration | = | ( "generic" "package" defining_program_unit_name "renames" generic_package_name ";" | "generic" "procedure" defining_program_unit_name "renames" generic_procedure_name ";" | "generic" "function" defining_program_unit_name "renames" generic_function_name ";" ) |
| task_type_declaration | = | "task" "type" defining_identifier [ known_discriminant_part ] [ "is" task_definition ] ";" |
| single_task_declaration | = | "task" defining_identifier [ "is" task_definition ] ";" |
| task_definition | = | { task_item }* [ "private" { task_item }* ] "end" [ task_identifier ] |
| task_item | = | ( entry_declaration | representation_clause ) |
| task_body | = | "task" body defining_identifier "is" declarative_part "begin" handled_sequence_of_statements "end" [ task_identifier ] ";" |
| protected_type_declaration | = | "protected" "type" defining_identifier [ known_discriminant_part ] "is" protected_definition ";" |
| single_protected_declaration | = | "protected" defining_identifier "is" protected_definition ";" |
| protected_definition | = | { protected_operation_declaration }* [ "private" { protected_element_declaration }* ] "end" [ protected_identifier ] |
| protected_operation_declaration | = | ( subprogram_declaration | entry_declaration | representation_clause ) |
| protected_element_declaration | = | ( protected_operation_declaration | component_declaration ) |
| protected_body | = | "protected" body defining_identifier "is" { protected_operation_item }* "end" [ protected_identifier ] ";" |
| protected_operation_item | = | ( subprogram_declaration | subprogram_body | entry_body | representation_clause ) |
| entry_declaration | = | "entry" defining_identifier [ "(" discrete_subtype_definition ")" ] parameter_profile ";" |
| accept_statement | = | "accept" entry_direct_name [ "(" entry_index ")" ] parameter_profile [ "do" handled_sequence_of_statements "end" [ entry_identifier ] ] ";" |
| entry_index | = | expression |
| entry_body | = | "entry" defining_identifier entry_body_formal_part entry_barrier "is" declarative_part "begin" handled_sequence_of_statements "end" [ entry_identifier ] ";" |
| entry_body_formal_part | = | [ "(" entry_index_specification ")" ] parameter_profile |
| entry_barrier | = | "when" condition |
| entry_index_specification | = | "for" defining_identifier "in" discrete_subtype_definition |
| entry_call_statement | = | entry_name [ actual_parameter_part ] ";" |
| requeue_statement | = | "requeue" entry_name [ "with" "abort" ] ";" |
| delay_statement | = | ( delay_until_statement | delay_relative_statement ) |
| delay_until_statement | = | "delay" "until" delay_expression ";" |
| delay_relative_statement | = | "delay" delay_expression ";" |
| select_statement | = | ( selective_accept | timed_entry_call | conditional_entry_call | asynchronous_select ) |
| selective_accept | = | "select" [ guard ] select_alternative { "or" [ guard ] select_alternative }* [ "else" sequence_of_statements ] "end" "select" ";" |
| guard | = | "when" condition "=>" |
| select_alternative | = | ( accept_alternative | delay_alternative | terminate_alternative ) |
| accept_alternative | = | accept_statement [ sequence_of_statements ] |
| delay_alternative | = | delay_statement [ sequence_of_statements ] |
| terminate_alternative | = | "terminate" ";" |
| timed_entry_call | = | "select" entry_call_alternative "or" delay_alternative "end" "select" ";" |
| entry_call_alternative | = | entry_call_statement [ sequence_of_statements ] |
| conditional_entry_call | = | "select" entry_call_alternative "else" sequence_of_statements "end" "select" ";" |
| asynchronous_select | = | "select" triggering_alternative "then" "abort" abortable_part "end" "select" ";" |
| triggering_alternative | = | triggering_statement [ sequence_of_statements ] |
| triggering_statement | = | ( entry_call_statement | delay_statement ) |
| abortable_part | = | sequence_of_statements |
| abort_statement | = | "abort" task_name { "," task_name }* ";" |
| compilation | = | { compilation_unit }* |
| compilation_unit | = | ( context_clause library_item | context_clause subunit ) |
| library_item | = | ( [ "private" ] library_unit_declaration | library_unit_body | [ "private" ] library_unit_renaming_declaration ) |
| library_unit_declaration | = | ( subprogram_declaration | package_declaration | generic_declaration | generic_instantiation ) |
| library_unit_renaming_declaration | = | ( package_renaming_declaration | generic_renaming_declaration | subprogram_renaming_declaration ) |
| library_unit_body | = | ( subprogram_body | package_body ) |
| parent_unit_name | = | name |
| context_clause | = | { context_item }* |
| context_item | = | ( with_clause | use_clause ) |
| with_clause | = | "with" library_unit_name { "," library_unit_name }* ";" |
| body_stub | = | ( subprogram_body_stub | package_body_stub | task_body_stub | protected_body_stub ) |
| subprogram_body_stub | = | subprogram_specification "is" "separate" ";" |
| package_body_stub | = | "package" body defining_identifier "is" "separate" ";" |
| task_body_stub | = | "task" body defining_identifier "is" "separate" ";" |
| protected_body_stub | = | "protected" body defining_identifier "is" "separate" ";" |
| subunit | = | "separate" "(" parent_unit_name ")" proper_body |
| exception_declaration | = | defining_identifier_list ":" "exception" ";" |
| handled_sequence_of_statements | = | sequence_of_statements [ "exception" exception_handler { exception_handler }* ] |
| exception_handler | = | "when" [ choice_parameter_specification ":" ] exception_choice { "|" exception_choice }* "=>" sequence_of_statements |
| choice_parameter_specification | = | defining_identifier |
| exception_choice | = | ( exception_name | "others" ) |
| raise_statement | = | "raise" [ exception_name ] ";" |
| generic_declaration | = | ( generic_subprogram_declaration | generic_package_declaration ) |
| generic_subprogram_declaration | = | generic_formal_part subprogram_specification ";" |
| generic_package_declaration | = | generic_formal_part package_specification ";" |
| generic_formal_part | = | "generic" { ( generic_formal_parameter_declaration | use_clause ) }* |
| generic_formal_parameter_declaration | = | ( formal_object_declaration | formal_type_declaration | formal_subprogram_declaration | formal_package_declaration ) |
| generic_instantiation | = | ( "package" defining_program_unit_name "is" "new" generic_package_name [ generic_actual_part ] ";" | "procedure" defining_program_unit_name "is" "new" generic_procedure_name [ generic_actual_part ] ";" | "function" defining_designator "is" "new" generic_function_name [ generic_actual_part ] ";" ) |
| generic_actual_part | = | "(" generic_association { "," generic_association }* ")" |
| generic_association | = | [ generic_formal_parameter_selector_name "=>" ] explicit_generic_actual_parameter |
| explicit_generic_actual_parameter | = | ( expression | variable_name | subprogram_name | entry_name | subtype_mark | package_instance_name ) |
| formal_object_declaration | = | defining_identifier_list ":" mode subtype_mark [ ":=" default_expression ] ";" |
| formal_type_declaration | = | "type" defining_identifier [ discriminant_part ] "is" formal_type_definition ";" |
| formal_private_type_definition | = | [ [ "abstract" ] "tagged" ] [ "limited" ] "private" |
| formal_derived_type_definition | = | [ "abstract" ] "new" subtype_mark [ "with" "private" ] |
| formal_discrete_type_definition | = | "(" "<>" ")" |
| formal_signed_integer_type_definition | = | "range" "<>" |
| formal_modular_type_definition | = | "mod" "<>" |
| formal_floating_point_definition | = | "digits" "<>" |
| formal_ordinary_fixed_point_definition | = | "delta" "<>" |
| formal_decimal_fixed_point_definition | = | "delta" "<>" "digits" "<>" |
| formal_array_type_definition | = | array_type_definition |
| formal_access_type_definition | = | access_type_definition |
| formal_subprogram_declaration | = | "with" subprogram_specification [ "is" subprogram_default ] ";" |
| subprogram_default | = | ( default_name | "<>" ) |
| default_name | = | name |
| formal_package_declaration | = | "with" "package" defining_identifier "is" "new" generic_package_name formal_package_actual_part ";" |
| formal_package_actual_part | = | ( "(" "<>" ")" | [ generic_actual_part ] ) |
| representation_clause | = | ( attribute_definition_clause | enumeration_representation_clause | record_representation_clause | at_clause ) |
| local_name | = | ( direct_name | direct_name "'" attribute_designator | library_unit_name ) |
| attribute_definition_clause | = | ( "for" local_name "'" attribute_designator "use" expression ";" | "for" local_name "'" attribute_designator "use" name ";" ) |
| enumeration_representation_clause | = | "for" first_subtype_local_name "use" enumeration_aggregate ";" |
| enumeration_aggregate | = | array_aggregate |
| record_representation_clause | = | "for" first_subtype_local_name "use" "record" [ mod_clause ] { component_clause }* "end" "record" ";" |
| component_clause | = | component_local_name "at" position "range" first_bit ".." last_bit ";" |
| position | = | static_expression |
| first_bit | = | static_simple_expression |
| last_bit | = | static_simple_expression |
| code_statement | = | qualified_expression ";" |
| restriction | = | ( restriction_identifier | restriction_parameter_identifier "=>" expression ) |
| delta_constraint | = | "delta" static_expression [ range_constraint ] |
| at_clause | = | "for" direct_name "use" "at" expression ";" |
| mod_clause | = | "at" "mod" static_expression ";" |
The following description defines the lexical syntax of ADA'95. This lexical definition is written using some standard notation for regular expressions in the spirit of the LEX notation. Details of the notation are explained elsewhere.
% Several definitions carry over from Ada RM 95
=
| digit
identifier = identifier_letter (underline? letter_or_digit)*
| digit )
| based_literal )
decimal_literal = numeral ([\.] numeral)? exponent?
numeral = digit (underline? digit)*
exponent =
( [E] [\+]? numeral
| [E] [\-]? numeral )
based_literal = base [\#] based_numeral ([\.] based_numeral)? [\#] exponent?
based_numeral = extended_digit (underline? extended_digit)*
( digit
| [A-F] )
character_literal = [\'] graphic_character [\']
string_literal = [\"] string_element* [\"]
( [\"] [\"]
| non_quotation_mark_graphic_character )
comment = "--" non_end_of_line_character*
% Some implementation of informal explanations from Ada RM 95
= [0-9]
( upper_case_identifier_letter
| lower_case_identifier_letter )
underline = [\_]
% Ada RM 95: Any character of Row 00 of ISO 10646 BMP whose name begins ``Latin Capital Letter''.
= ...
% Ada RM 95: Any character of Row 00 of ISO 10646 BMP whose name begins ``Latin Small Letter''.
= ...
% Ada RM 95: The character of ISO 10646 BMP named ``Space''.
= ...
% Ada RM 95: Any character of the ISO 10646 BMP that is not reserved for a control function, and is not the space_character, an identifier_letter, or a digit.
= ...
% Ada RM 95: The control functions of ISO 6429 called character tabulation (HT), line tabulation (VT), carriage return (CR), line feed (LF), and form feed (FF).
= ...
% Ada RM 95: Any control function, other than a format_effector, that is allowed in a comment; the set of other_control_functions allowed in comments is implementation defined.
= ...
% Ada RM 95: a single graphic_character other than a quotation mark
= ...
% Not defined in Ada RM 95
= ...
[a] [b] [c] [d] [e] [f] [g] [h] [i] j [k] [l] [m] [n] [o] [p] [q] [r] [s] [t] [u] [v] [w] x y z
| ancestor_subtype_indication | private_extension_declaration |
| block_identifier | block_statement |
| block_statement_identifier | block_statement |
| boolean_expression | condition |
| callable_entity_name | subprogram_renaming_declaration |
| component_local_name | component_clause |
| component_selector_name | component_choice_list |
| delay_expression | |
| discrete_subtype_indication | |
| discriminant_direct_name | variant_part |
| discriminant_selector_name | discriminant_association |
| entry_direct_name | accept_statement |
| entry_identifier | |
| entry_name | |
| exception_name | |
| first_subtype_local_name | |
| formal_parameter_selector_name | parameter_association |
| function_name | function_call |
| function_prefix | function_call |
| generic_formal_parameter_selector_name | generic_association |
| generic_function_name | |
| generic_package_name | |
| generic_procedure_name | |
| label_name | goto_statement |
| label_statement_identifier | label |
| library_unit_name | |
| loop_identifier | loop_statement |
| loop_name | exit_statement |
| loop_statement_identifier | loop_statement |
| object_name | object_renaming_declaration |
| package_instance_name | explicit_generic_actual_parameter |
| package_name | use_package_clause |
| parent_subtype_indication | derived_type_definition |
| pragma_argument_identifier | pragma_argument_association |
| procedure_name | procedure_call_statement |
| procedure_prefix | procedure_call_statement |
| protected_identifier | |
| renamespackage_name | package_renaming_declaration |
| restriction_identifier | restriction |
| restriction_parameter_identifier | restriction |
| static_expression | |
| static_simple_expression | |
| subprogram_name | explicit_generic_actual_parameter |
| subtype_name | subtype_mark |
| task_identifier | |
| task_name | abort_statement |
| variable_name |
[A] B C [D] E F G H I J K L M N O P Q [R] S T U V W X Y Z
[a] [b] [c] [d] [e] [f] [g] h [i] j k [l] [m] [n] [o] [p] q [r] [s] [t] [u] v [w] [x] y z
___________________________________________________________________________________________________________________ | | | >>__pragma__identifier______________________________________________________________________________________;__>< | | |__(__pragma_argument_association_____________________________________________)__| | | | <_________________________________ | | | |____,__pragma_argument_association__|__| | |___________________________________________________________________________________________________________________|
|
|
________________________________________________________________ | | | >>___________________________________________name___________>< | | | |__pragma_argument_identifier__=>__| | | | |________________________________________expression__| | | |__pragma_argument_identifier__=>__| | |________________________________________________________________|
|
|
_______________________________________________ | | | >>_____type_declaration____________________>< | | |__subtype_declaration______________| | | |__object_declaration_______________| | | |__number_declaration_______________| | | |__subprogram_declaration___________| | | |__abstract_subprogram_declaration__| | | |__package_declaration______________| | | |__renaming_declaration_____________| | | |__exception_declaration____________| | | |__generic_declaration______________| | | |__generic_instantiation____________| | |_______________________________________________|
|
|
____________________ | | | >>__identifier__>< | |____________________|
|
|
_____________________________________________ | | | >>_____full_type_declaration_____________>< | | |__incomplete_type_declaration____| | | |__private_type_declaration_______| | | |__private_extension_declaration__| | |_____________________________________________|
|
|
________________________________________________________________________________________________ | | | >>_____type__defining_identifier_________________________________is__type_definition__;_____>< | | | |__known_discriminant_part__| | | | |__task_type_declaration_____________________________________________________________| | | |__protected_type_declaration________________________________________________________| | |________________________________________________________________________________________________|
|
|
___________________________________________ | | | >>_____enumeration_type_definition_____>< | | |__integer_type_definition______| | | |__real_type_definition_________| | | |__array_type_definition________| | | |__record_type_definition_______| | | |__access_type_definition_______| | | |__derived_type_definition______| | |___________________________________________|
|
|
_________________________________________________________________ | | | >>__subtype__defining_identifier__is__subtype_indication__;__>< | |_________________________________________________________________|
|
|
________________________________________ | | | >>__subtype_mark____________________>< | | |__constraint__| | |________________________________________|
|
|
______________________ | | | >>__subtype_name__>< | |______________________|
|
|
____________________________________ | | | >>_____scalar_constraint________>< | | |__composite_constraint__| | |____________________________________|
|
|
_________________________________ | | | >>_____range_constraint______>< | | |__digits_constraint__| | | |__delta_constraint___| | |_________________________________|
|
|
_______________________________________ | | | >>_____index_constraint____________>< | | |__discriminant_constraint__| | |_______________________________________|
|
|
__________________________________________________________________________________________________________________________ | | | >>_____defining_identifier_list__:_________________________________subtype_indication________________________;________>< | | | |__aliased__| |__constant__| |__:=__expression__| | | | |__defining_identifier_list__:_________________________________array_type_definition________________________;__| | | | |__aliased__| |__constant__| |__:=__expression__| | | | |__single_task_declaration_____________________________________________________________________________________| | | |__single_protected_declaration________________________________________________________________________________| | |__________________________________________________________________________________________________________________________|
|
|
________________________________________________________________ | | | >>__defining_identifier_____________________________________>< | | | <_________________________ | | | |____,__defining_identifier__|__| | |________________________________________________________________|
|
|
_________________________________________________________________________ | | | >>__defining_identifier_list__:__constant__:=__static_expression__;__>< | |_________________________________________________________________________|
|
|
_____________________________________________________________________________________ | | | >>__________________new__parent_subtype_indication_______________________________>< | | |__abstract__| |__record_extension_part__| | |_____________________________________________________________________________________|
|
|
_________________________________ | | | >>__range__range_definition__>< | |_________________________________|
|
|
________________________________________________________ | | | >>_____range_attribute_reference____________________>< | | |__simple_expression__..__simple_expression__| | |________________________________________________________|
|
|
__________________________________________________________________________________________________ | | | >>__(__enumeration_literal_specification___________________________________________________)__>< | | | <_______________________________________ | | | |____,__enumeration_literal_specification__|__| | |__________________________________________________________________________________________________|
|
|
__________________________________________ | | | >>_____defining_identifier____________>< | | |__defining_character_literal__| | |__________________________________________|
|
|
___________________________ | | | >>__character_literal__>< | |___________________________|
|
|
______________________________________________ | | | >>_____signed_integer_type_definition_____>< | | |__modular_type_definition_________| | |______________________________________________|
|
|
_______________________________________________________________________ | | | >>__range__static_simple_expression__..__static_simple_expression__>< | |_______________________________________________________________________|
|
|
________________________________ | | | >>__mod__static_expression__>< | |________________________________|
|
|
_________________________________________ | | | >>_____floating_point_definition_____>< | | |__fixed_point_definition_____| | |_________________________________________|
|
|
___________________________________________________________________ | | | >>__digits__static_expression__________________________________>< | | |__real_range_specification__| | |___________________________________________________________________|
|
|
_______________________________________________________________________ | | | >>__range__static_simple_expression__..__static_simple_expression__>< | |_______________________________________________________________________|
|
|
_______________________________________________ | | | >>_____ordinary_fixed_point_definition_____>< | | |__decimal_fixed_point_definition___| | |_______________________________________________|
|
|
____________________________________________________________ | | | >>__delta__static_expression__real_range_specification__>< | |____________________________________________________________|
|
|
_____________________________________________________________________________________________ | | | >>__delta__static_expression__digits__static_expression__________________________________>< | | |__real_range_specification__| | |_____________________________________________________________________________________________|
|
|
___________________________________________________________ | | | >>__digits__static_expression__________________________>< | | |__range_constraint__| | |___________________________________________________________|
|
|
______________________________________________ | | | >>_____unconstrained_array_definition_____>< | | |__constrained_array_definition____| | |______________________________________________|
|
|
_________________________________________________________________________________________________________________ | | | >>__array__(__index_subtype_definition__________________________________________)__of__component_definition__>< | | | <______________________________ | | | |____,__index_subtype_definition__|__| | |_________________________________________________________________________________________________________________|
|
|
_________________________________ | | | >>__subtype_mark__range__<>__>< | |_________________________________|
|
|
_______________________________________________________________________________________________________________________ | | | >>__array__(__discrete_subtype_definition_____________________________________________)__of__component_definition__>< | | | <_________________________________ | | | |____,__discrete_subtype_definition__|__| | |_______________________________________________________________________________________________________________________|
|
|
___________________________________________ | | | >>_____discrete_subtype_indication_____>< | | |__range________________________| | |___________________________________________|
|
|
___________________________________________ | | | >>_________________subtype_indication__>< | | |__aliased__| | |___________________________________________|
|
|
____________________________________________________________ | | | >>__(__discrete_range________________________________)__>< | | | <____________________ | | | |____,__discrete_range__|__| | |____________________________________________________________|
|
|
___________________________________________ | | | >>_____discrete_subtype_indication_____>< | | |__range_definition_____________| | |___________________________________________|
|
|
_________________________________________ | | | >>_____unknown_discriminant_part_____>< | | |__known_discriminant_part____| | |_________________________________________|
|
|
__________________ | | | >>__(__<>__)__>< | |__________________|
|
|
____________________________________________________________________________________ | | | >>__(__discriminant_specification____________________________________________)__>< | | | <________________________________ | | | |____;__discriminant_specification__|__| | |____________________________________________________________________________________|
|
|
____________________________________________________________________________________________ | | | >>_____defining_identifier_list__:__subtype_mark________________________________________>< | | | |__:=__default_expression__| | | | |__defining_identifier_list__:__access_definition________________________________| | | |__:=__default_expression__| | |____________________________________________________________________________________________|
|
|
____________________ | | | >>__expression__>< | |____________________|
|
|
________________________________________________________________________________ | | | >>__(__discriminant_association__________________________________________)__>< | | | <______________________________ | | | |____,__discriminant_association__|__| | |________________________________________________________________________________|
|
|
____________________________________________________________________________________________________ | | | >>__________________________________________________________________________________expression__>< | | |__discriminant_selector_name____________________________________________=>__| | | | <________________________________ | | | |____|__discriminant_selector_name__|__| | |____________________________________________________________________________________________________|
|
|
________________________________________________________________________ | | | >>_______________________________________________record_definition__>< | | |__________________tagged__| |__limited__| | | |__abstract__| | |________________________________________________________________________|
|
|
___________________________________________________ | | | >>_____record__component_list__end__record_____>< | | |__null__record_________________________| | |___________________________________________________|
|
|
_________________________________________________________ | | | >>_____component_item________________________________>< | | | | <_________________ | | | | | |____component_item__|__| | | | |_____________________________variant_part____| | | | | <_________________ | | | | | |____component_item__|__| | | | |__null__;____________________________________| | |_________________________________________________________|
|
|
_____________________________________ | | | >>_____component_declaration_____>< | | |__representation_clause__| | |_____________________________________|
|
|
____________________________________________________________________________________________ | | | >>__defining_identifier_list__:__component_definition________________________________;__>< | | |__:=__default_expression__| | |____________________________________________________________________________________________|
|
|
_______________________________________________________________________________________ | | | >>__case__discriminant_direct_name__is__variant______________________end__case__;__>< | | | <__________ | | | |____variant__|__| | |_______________________________________________________________________________________|
|
|
________________________________________________________ | | | >>__when__discrete_choice_list__=>__component_list__>< | |________________________________________________________|
|
|
________________________________________________________ | | | >>__discrete_choice_________________________________>< | | | <_____________________ | | | |____|__discrete_choice__|__| | |________________________________________________________|
|
|
______________________________ | | | >>_____expression_________>< | | |__discrete_range__| | | |__others__________| | |______________________________|
|
|
_________________________________ | | | >>__with__record_definition__>< | |_________________________________|
|
|
_______________________________________________ | | | >>_____access_to_object_definition_________>< | | |__access_to_subprogram_definition__| | |_______________________________________________|
|
|
___________________________________________________________________ | | | >>__access_________________________________subtype_indication__>< | | |__general_access_modifier__| | |___________________________________________________________________|
|
|
________________________ | | | >>_____all__________>< | | |__constant__| | |________________________|
|
|
_______________________________________________________________________________ | | | >>_____access___________________procedure__parameter_profile_______________>< | | | |__protected__| | | | |__access___________________function__parameter_and_result_profile__| | | |__protected__| | |_______________________________________________________________________________|
|
|
______________________________ | | | >>__access__subtype_mark__>< | |______________________________|
|
|
_______________________________________________________________ | | | >>__type__defining_identifier___________________________;__>< | | |__discriminant_part__| | |_______________________________________________________________|
|
|
_____________________________________ | | | >>_______________________________>< | | | <___________________ | | | |____declarative_item__|__| | |_____________________________________|
|
|
______________________________________ | | | >>_____basic_declarative_item_____>< | | |__body____________________| | |______________________________________|
|
|
_____________________________________ | | | >>_____basic_declaration_________>< | | |__representation_clause__| | | |__use_clause_____________| | |_____________________________________|
|
|
___________________________ | | | >>_____proper_body_____>< | | |__body_stub____| | |___________________________|
|
|
_______________________________ | | | >>_____subprogram_body_____>< | | |__package_body_____| | | |__task_body________| | | |__protected_body___| | |_______________________________|
|
|
____________________________________ | | | >>_____direct_name______________>< | | |__explicit_dereference__| | | |__indexed_component_____| | | |__slice_________________| | | |__selected_component____| | | |__attribute_reference___| | | |__type_conversion_______| | | |__function_call_________| | | |__character_literal_____| | |____________________________________|
|
|
_______________________________ | | | >>_____identifier__________>< | | |__operator_symbol__| | |_______________________________|
|
|
____________________________________ | | | >>_____name_____________________>< | | |__implicit_dereference__| | |____________________________________|
|
|
______________________ | | | >>__name__.__all__>< | |______________________|
|
|
______________ | | | >>__name__>< | |______________|
|
|
____________________________________________________________ | | | >>__prefix__(__expression____________________________)__>< | | | <________________ | | | |____,__expression__|__| | |____________________________________________________________|
|
|
______________________________________ | | | >>__prefix__(__discrete_range__)__>< | |______________________________________|
|
|
__________________________________ | | | >>__prefix__.__selector_name__>< | |__________________________________|
|
|
_________________________________ | | | >>_____identifier____________>< | | |__character_literal__| | | |__operator_symbol____| | |_________________________________|
|
|
_________________________________________ | | | >>__prefix__'__attribute_designator__>< | |_________________________________________|
|
|
_________________________________________________________ | | | >>_____identifier____________________________________>< | | | |__(__static_expression__)__| | | | |__Access_____________________________________| | | |__Delta______________________________________| | | |__Digits_____________________________________| | |_________________________________________________________|
|
|
_______________________________________________ | | | >>__prefix__'__range_attribute_designator__>< | |_______________________________________________|
|
|
______________________________________________ | | | >>__Range_________________________________>< | | |__(__static_expression__)__| | |______________________________________________|
|
|
___________________________________ | | | >>_____record_aggregate________>< | | |__extension_aggregate__| | | |__array_aggregate______| | |___________________________________|
|
|
_________________________________________________ | | | >>__(__record_component_association_list__)__>< | |_________________________________________________|
|
|
________________________________________________________________________________________ | | | >>_____record_component_association_________________________________________________>< | | | | <__________________________________ | | | | | |____,__record_component_association__|__| | | | |__null__record______________________________________________________________| | |________________________________________________________________________________________|
|
|
_____________________________________________________ | | | >>___________________________________expression__>< | | |__component_choice_list__=>__| | |_____________________________________________________|
|
|
______________________________________________________________________________ | | | >>_____component_selector_name____________________________________________>< | | | | <_____________________________ | | | | | |____|__component_selector_name__|__| | | | |__others__________________________________________________________| | |______________________________________________________________________________|
|
|
______________________________________________________________________ | | | >>__(__ancestor_part__with__record_component_association_list__)__>< | |______________________________________________________________________|
|
|
____________________________ | | | >>_____expression_______>< | | |__subtype_mark__| | |____________________________|
|
|
__________________________________________ | | | >>_____positional_array_aggregate_____>< | | |__named_array_aggregate_______| | |__________________________________________|
|
|
_____________________________________________________________________________________ | | | >>_____(__expression__,__expression____________________________)_________________>< | | | | <________________ | | | | | |____,__expression__|__| | | | |__(__expression____________________________,__others__=>__expression__)__| | | | <________________ | | | |____,__expression__|__| | |_____________________________________________________________________________________|
|
|
______________________________________________________________________________________ | | | >>__(__array_component_association_____________________________________________)__>< | | | <_________________________________ | | | |____,__array_component_association__|__| | |______________________________________________________________________________________|
|
|
______________________________________________ | | | >>__discrete_choice_list__=>__expression__>< | |______________________________________________|
|
|
________________________________________________________ | | | >>_____relation_____________________________________>< | | | | <________________ | | | | | |____and__relation__|__| | | | |__relation__________________________________| | | | | <______________________ | | | | | |____and__then__relation__|__| | | | |__relation__________________________________| | | | | <_______________ | | | | | |____or__relation__|__| | | | |__relation__________________________________| | | | | <_____________________ | | | | | |____or__else__relation__|__| | | | |__relation__________________________________| | | | <________________ | | | |____xor__relation__|__| | |________________________________________________________|
|
|
_______________________________________________________________________________ | | | >>_____simple_expression___________________________________________________>< | | | |__relational_operator__simple_expression__| | | | |__simple_expression_____________in__range_definition_______________| | | | |__not__| | | | |__simple_expression_____________in__subtype_mark___________________| | | |__not__| | |_______________________________________________________________________________|
|
|
____________________________________________________________________________________ | | | >>_______________________________term___________________________________________>< | | |__unary_adding_operator__| | <_______________________________ | | | |____binary_adding_operator__term__|__| | |____________________________________________________________________________________|
|
|
_________________________________________________________ | | | >>__factor___________________________________________>< | | | <_______________________________ | | | |____multiplying_operator__factor__|__| | |_________________________________________________________|
|
|
__________________________________________ | | | >>_____primary________________________>< | | | |__**__primary__| | | | |__abs__primary________________| | | |__not__primary________________| | |__________________________________________|
|
|
____________________________________ | | | >>_____numeric_literal__________>< | | |__null__________________| | | |__string_literal________| | | |__aggregate_____________| | | |__name__________________| | | |__qualified_expression__| | | |__allocator_____________| | | |__(__expression__)______| | |____________________________________|
|
|
___________________ | | | >>_____and_____>< | | |__or___| | | |__xor__| | |___________________|
|
|
__________________ | | | >>_____=______>< | | |__/=__| | | |__<___| | | |__<=__| | | |__>___| | | |__>=__| | |__________________|
|
|
_________________ | | | >>_____+_____>< | | |__-__| | | |__&__| | |_________________|
|
|
__________________ | | | >>_____+______>< | | |__--__| | |__________________|
|
|
___________________ | | | >>_____*_______>< | | |__/____| | | |__mod__| | | |__rem__| | |___________________|
|
|
___________________ | | | >>_____**______>< | | |__abs__| | | |__not__| | |___________________|
|
|
______________________________________________ | | | >>_____subtype_mark__(__expression__)_____>< | | |__subtype_mark__(__name__)________| | |______________________________________________|
|
|
_________________________________________________ | | | >>_____subtype_mark__'__(__expression__)_____>< | | |__subtype_mark__'__aggregate_________| | |_________________________________________________|
|
|
_________________________________________ | | | >>_____new__subtype_indication_______>< | | |__new__qualified_expression__| | |_________________________________________|
|
|
_________________________________________ | | | >>__statement________________________>< | | | <____________ | | | |____statement__|__| | |_________________________________________|
|
|
____________________________________________________ | | | >>_______________________simple_statement_______>< | | | | <________ | | | | | |____label__|__| | | | |____________________compound_statement__| | | | <________ | | | |____label__|__| | |____________________________________________________|
|
|
________________________________________ | | | >>_____null_statement_______________>< | | |__assignment_statement______| | | |__exit_statement____________| | | |__goto_statement____________| | | |__procedure_call_statement__| | | |__return_statement__________| | | |__entry_call_statement______| | | |__requeue_statement_________| | | |__delay_statement___________| | | |__abort_statement___________| | | |__raise_statement___________| | | |__code_statement____________| | |________________________________________|
|
|
________________________________ | | | >>_____if_statement_________>< | | |__case_statement____| | | |__loop_statement____| | | |__block_statement___| | | |__accept_statement__| | | |__select_statement__| | |________________________________|
|
|
_________________ | | | >>__null__;__>< | |_________________|
|
|
____________________________________________ | | | >>__<<__label_statement_identifier__>>__>< | |____________________________________________|
|
|
_____________________ | | | >>__direct_name__>< | |_____________________|
|
|
__________________________________________ | | | >>__variable_name__:=__expression__;__>< | |__________________________________________|
|
|
________________________________________________________________________________________________________________________________________________________________ | | | >>__if__condition__then__sequence_of_statements_________________________________________________________________________________________________end__if__;__>< | | | <_________________________________________________ | |__else__sequence_of_statements__| | | |____elsif__condition__then__sequence_of_statements__|__| | |________________________________________________________________________________________________________________________________________________________________|
|
|
____________________________ | | | >>__boolean_expression__>< | |____________________________|
|
|
_______________________________________________________________________________________________________________ | | | >>__case__expression__is__case_statement_alternative_________________________________________end__case__;__>< | | | <_____________________________ | | | |____case_statement_alternative__|__| | |_______________________________________________________________________________________________________________|
|
|
________________________________________________________________ | | | >>__when__discrete_choice_list__=>__sequence_of_statements__>< | |________________________________________________________________|
|
|
_______________________________________________________________________________________________________________________________________ | | | >>______________________________________________________________loop__sequence_of_statements__end__loop_________________________;__>< | | |__loop_statement_identifier__:__| |__iteration_scheme__| |__loop_identifier__| | |_______________________________________________________________________________________________________________________________________|
|
|
_________________________________________________ | | | >>_____while__condition______________________>< | | |__for__loop_parameter_specification__| | |_________________________________________________|
|
|
_____________________________________________________________________________ | | | >>__defining_identifier__in_________________discrete_subtype_definition__>< | | |__reverse__| | |_____________________________________________________________________________|
|
|
_____________________________________________________________________________________________________________________________________________________ | | | >>________________________________________________________________________begin__handled_sequence_of_statements__end__________________________;__>< | | |__block_statement_identifier__:__| |__declare__declarative_part__| |__block_identifier__| | |_____________________________________________________________________________________________________________________________________________________|
|
|
_________________________________________________________ | | | >>__exit__________________________________________;__>< | | |__loop_name__| |__when__condition__| | |_________________________________________________________|
|
|
_____________________________ | | | >>__goto__label_name__;__>< | |_____________________________|
|
|
_____________________________________ | | | >>__subprogram_specification__;__>< | |_____________________________________|
|
|
___________________________________________________ | | | >>__subprogram_specification__is__abstract__;__>< | |___________________________________________________|
|
|
___________________________________________________________________________ | | | >>_____procedure__defining_program_unit_name__parameter_profile________>< | | |__function__defining_designator__parameter_and_result_profile__| | |___________________________________________________________________________|
|
|
_____________________________________________________ | | | >>________________________________identifier_____>< | | | |__parent_unit_name__.__| | | | |__operator_symbol________________________| | |_____________________________________________________|
|
|
__________________________________________ | | | >>_____defining_program_unit_name_____>< | | |__defining_operator_symbol____| | |__________________________________________|
|
|
________________________________________________________ | | | >>_____________________________defining_identifier__>< | | |__parent_unit_name__.__| | |________________________________________________________|
|
|
________________________ | | | >>__string_literal__>< | |________________________|
|
|
_________________________ | | | >>__operator_symbol__>< | |_________________________|
|
|
___________________________ | | | >>_____________________>< | | |__formal_part__| | |___________________________|
|
|
_________________________________________________ | | | >>_____________________return__subtype_mark__>< | | |__formal_part__| | |_________________________________________________|
|
|
______________________________________________________________________________ | | | >>__(__parameter_specification_________________________________________)__>< | | | <_____________________________ | | | |____;__parameter_specification__|__| | |______________________________________________________________________________|
|
|
_____________________________________________________________________________________________ | | | >>_____defining_identifier_list__:__mode__subtype_mark___________________________________>< | | | |__:=__default_expression__| | | | |__defining_identifier_list__:__access_definition_________________________________| | | |__:=__default_expression__| | |_____________________________________________________________________________________________|
|
|
________________________ | | | >>__________________>< | | | |__in__| | | | |__in__out___| | | |__out_______| | |________________________|
|
|
_________________________________________________________________________________________________________________________ | | | >>__subprogram_specification__is__declarative_part__begin__handled_sequence_of_statements__end____________________;__>< | | |__designator__| | |_________________________________________________________________________________________________________________________|
|
|
__________________________________________________________ | | | >>_____procedure_name__;______________________________>< | | |__procedure_prefix__actual_parameter_part__;__| | |__________________________________________________________|
|
|
______________________________________________________ | | | >>_____function_name______________________________>< | | |__function_prefix__actual_parameter_part__| | |______________________________________________________|
|
|
__________________________________________________________________________ | | | >>__(__parameter_association_______________________________________)__>< | | | <___________________________ | | | |____,__parameter_association__|__| | |__________________________________________________________________________|
|
|
_____________________________________________________________________________ | | | >>____________________________________________explicit_actual_parameter__>< | | |__formal_parameter_selector_name__=>__| | |_____________________________________________________________________________|
|
|
_____________________________ | | | >>_____expression________>< | | |__variable_name__| | |_____________________________|
|
|
_____________________________________ | | | >>__return____________________;__>< | | |__expression__| | |_____________________________________|
|
|
__________________________________ | | | >>__package_specification__;__>< | |__________________________________|
|
|
________________________________________________________________________________________________________________________________________________________________________________________ | | | >>__package__defining_program_unit_name__is_______________________________________________________________________________________end_______________________________________________>< | | | <_________________________ | |__private_____________________________________| |_____________________________identifier__| | | |____basic_declarative_item__|__| | <_________________________ | |__parent_unit_name__.__| | | |____basic_declarative_item__|__| | |________________________________________________________________________________________________________________________________________________________________________________________|
|
|
___________________________________________________________________________________________________________________________________________________________________________ | | | >>__package__body__defining_program_unit_name__is__declarative_part_______________________________________________end_______________________________________________;__>< | | |__begin__handled_sequence_of_statements__| |_____________________________identifier__| | | |__parent_unit_name__.__| | |___________________________________________________________________________________________________________________________________________________________________________|
|
|
_________________________________________________________________________________________________________________________ | | | >>__type__defining_identifier___________________________is_______________________________________________private__;__>< | | |__discriminant_part__| |__________________tagged__| |__limited__| | | |__abstract__| | |_________________________________________________________________________________________________________________________|
|
|
____________________________________________________________________________________________________________________________________ | | | >>__type__defining_identifier___________________________is__________________new__ancestor_subtype_indication__with__private__;__>< | | |__discriminant_part__| |__abstract__| | |____________________________________________________________________________________________________________________________________|
|
|
__________________________________ | | | >>_____use_package_clause_____>< | | |__use_type_clause_____| | |__________________________________|
|
|
__________________________________________________________ | | | >>__use__package_name______________________________;__>< | | | <__________________ | | | |____,__package_name__|__| | |__________________________________________________________|
|
|
________________________________________________________________ | | | >>__use__type__subtype_mark______________________________;__>< | | | <__________________ | | | |____,__subtype_mark__|__| | |________________________________________________________________|
|
|
_______________________________________________ | | | >>_____object_renaming_declaration_________>< | | |__exception_renaming_declaration___| | | |__package_renaming_declaration_____| | | |__subprogram_renaming_declaration__| | | |__generic_renaming_declaration_____| | |_______________________________________________|
|
|
_______________________________________________________________________ | | | >>__defining_identifier__:__subtype_mark__renames__object_name__;__>< | |_______________________________________________________________________|
|
|
_______________________________________________________________________ | | | >>__defining_identifier__:__exception__renames__exception_name__;__>< | |_______________________________________________________________________|
|
|
_____________________________________________________________________ | | | >>__package__defining_program_unit_name__renamespackage_name__;__>< | |_____________________________________________________________________|
|
|
____________________________________________________________________ | | | >>__subprogram_specification__renames__callable_entity_name__;__>< | |____________________________________________________________________|
|
|
__________________________________________________________________________________________________ | | | >>_____generic__package__defining_program_unit_name__renames__generic_package_name__;_________>< | | |__generic__procedure__defining_program_unit_name__renames__generic_procedure_name__;__| | | |__generic__function__defining_program_unit_name__renames__generic_function_name__;____| | |__________________________________________________________________________________________________|
|
|
______________________________________________________________________________________________________ | | | >>__task__type__defining_identifier____________________________________________________________;__>< | | |__known_discriminant_part__| |__is__task_definition__| | |______________________________________________________________________________________________________|
|
|
_________________________________________________________________ | | | >>__task__defining_identifier_____________________________;__>< | | |__is__task_definition__| | |_________________________________________________________________|
|
|
_______________________________________________________________________________________________ | | | >>_____________________________________________________________end_________________________>< | | | <____________ | |__private________________________| |__task_identifier__| | | |____task_item__|__| | <____________ | | | |____task_item__|__| | |_______________________________________________________________________________________________|
|
|
_____________________________________ | | | >>_____entry_declaration_________>< | | |__representation_clause__| | |_____________________________________|
|
|
_____________________________________________________________________________________________________________________________________ | | | >>__task__body__defining_identifier__is__declarative_part__begin__handled_sequence_of_statements__end_________________________;__>< | | |__task_identifier__| | |_____________________________________________________________________________________________________________________________________|
|
|
__________________________________________________________________________________________________________ | | | >>__protected__type__defining_identifier_________________________________is__protected_definition__;__>< | | |__known_discriminant_part__| | |__________________________________________________________________________________________________________|
|
|
_____________________________________________________________________ | | | >>__protected__defining_identifier__is__protected_definition__;__>< | |_____________________________________________________________________|
|
|
______________________________________________________________________________________________________________________________________________ | | | >>_______________________________________________________________________________________________________end______________________________>< | | | <__________________________________ | |__private____________________________________________| |__protected_identifier__| | | |____protected_operation_declaration__|__| | <________________________________ | | | |____protected_element_declaration__|__| | |______________________________________________________________________________________________________________________________________________|
|
|
______________________________________ | | | >>_____subprogram_declaration_____>< | | |__entry_declaration_______| | | |__representation_clause___| | |______________________________________|
|
|
_______________________________________________ | | | >>_____protected_operation_declaration_____>< | | |__component_declaration____________| | |_______________________________________________|
|
|
___________________________________________________________________________________________________________________________ | | | >>__protected__body__defining_identifier__is_______________________________________end______________________________;__>< | | | <___________________________ | |__protected_identifier__| | | |____protected_operation_item__|__| | |___________________________________________________________________________________________________________________________|
|
|
______________________________________ | | | >>_____subprogram_declaration_____>< | | |__subprogram_body_________| | | |__entry_body______________| | | |__representation_clause___| | |______________________________________|
|
|
___________________________________________________________________________________________________ | | | >>__entry__defining_identifier___________________________________________parameter_profile__;__>< | | |__(__discrete_subtype_definition__)__| | |___________________________________________________________________________________________________|
|
|
_________________________________________________________________________________________________________________________________________________________ | | | >>__accept__entry_direct_name___________________________parameter_profile_________________________________________________________________________;__>< | | |__(__entry_index__)__| |__do__handled_sequence_of_statements__end__________________________| | | |__entry_identifier__| | |_________________________________________________________________________________________________________________________________________________________|
|
|
____________________ | | | >>__expression__>< | |____________________|
|
|
________________________________________________________________________________________________________________________________________________________________________ | | | >>__entry__defining_identifier__entry_body_formal_part__entry_barrier__is__declarative_part__begin__handled_sequence_of_statements__end__________________________;__>< | | |__entry_identifier__| | |________________________________________________________________________________________________________________________________________________________________________|
|
|
__________________________________________________________________ | | | >>_________________________________________parameter_profile__>< | | |__(__entry_index_specification__)__| | |__________________________________________________________________|
|
|
_________________________ | | | >>__when__condition__>< | |_________________________|
|
|
___________________________________________________________________ | | | >>__for__defining_identifier__in__discrete_subtype_definition__>< | |___________________________________________________________________|
|
|
____________________________________________________ | | | >>__entry_name_______________________________;__>< | | |__actual_parameter_part__| | |____________________________________________________|
|
|
___________________________________________________ | | | >>__requeue__entry_name_____________________;__>< | | |__with__abort__| | |___________________________________________________|
|
|
________________________________________ | | | >>_____delay_until_statement________>< | | |__delay_relative_statement__| | |________________________________________|
|
|
___________________________________________ | | | >>__delay__until__delay_expression__;__>< | |___________________________________________|
|
|
____________________________________ | | | >>__delay__delay_expression__;__>< | |____________________________________|
|
|
______________________________________ | | | >>_____selective_accept___________>< | | |__timed_entry_call________| | | |__conditional_entry_call__| | | |__asynchronous_select_____| | |______________________________________|
|
|
_____________________________________________________________________________________________________________________________________________________ | | | >>__select_______________select_alternative______________________________________________________________________________________end__select__;__>< | | |__guard__| | <______________________________________ | |__else__sequence_of_statements__| | | |____or_______________select_alternative__|__| | | |__guard__| | |_____________________________________________________________________________________________________________________________________________________|
|
|
_____________________________ | | | >>__when__condition__=>__>< | |_____________________________|
|
|
_____________________________________ | | | >>_____accept_alternative________>< | | |__delay_alternative______| | | |__terminate_alternative__| | |_____________________________________|
|
|
________________________________________________________ | | | >>__accept_statement________________________________>< | | |__sequence_of_statements__| | |________________________________________________________|
|
|
_______________________________________________________ | | | >>__delay_statement________________________________>< | | |__sequence_of_statements__| | |_______________________________________________________|
|
|
______________________ | | | >>__terminate__;__>< | |______________________|
|
|
_______________________________________________________________________________ | | | >>__select__entry_call_alternative__or__delay_alternative__end__select__;__>< | |_______________________________________________________________________________|
|
|
____________________________________________________________ | | | >>__entry_call_statement________________________________>< | | |__sequence_of_statements__| | |____________________________________________________________|
|
|
______________________________________________________________________________________ | | | >>__select__entry_call_alternative__else__sequence_of_statements__end__select__;__>< | |______________________________________________________________________________________|
|
|
_____________________________________________________________________________________ | | | >>__select__triggering_alternative__then__abort__abortable_part__end__select__;__>< | |_____________________________________________________________________________________|
|
|
____________________________________________________________ | | | >>__triggering_statement________________________________>< | | |__sequence_of_statements__| | |____________________________________________________________|
|
|
____________________________________ | | | >>_____entry_call_statement_____>< | | |__delay_statement_______| | |____________________________________|
|
|
________________________________ | | | >>__sequence_of_statements__>< | |________________________________|
|
|
______________________________________________________ | | | >>__abort__task_name___________________________;__>< | | | <_______________ | | | |____,__task_name__|__| | |______________________________________________________|
|
|
_____________________________________ | | | >>_______________________________>< | | | <___________________ | | | |____compilation_unit__|__| | |_____________________________________|
|
|
____________________________________________ | | | >>_____context_clause__library_item_____>< | | |__context_clause__subunit_______| | |____________________________________________|
|
|
________________________________________________________________ | | | >>____________________library_unit_declaration______________>< | | | |__private__| | | | |__library_unit_body_________________________________| | | |_________________library_unit_renaming_declaration__| | | |__private__| | |________________________________________________________________|
|
|
______________________________________ | | | >>_____subprogram_declaration_____>< | | |__package_declaration_____| | | |__generic_declaration_____| | | |__generic_instantiation___| | |______________________________________|
|
|
_______________________________________________ | | | >>_____package_renaming_declaration________>< | | |__generic_renaming_declaration_____| | | |__subprogram_renaming_declaration__| | |_______________________________________________|
|
|
_______________________________ | | | >>_____subprogram_body_____>< | | |__package_body_____| | |_______________________________|
|
|
______________ | | | >>__name__>< | |______________|
|
|
_________________________________ | | | >>___________________________>< | | | <_______________ | | | |____context_item__|__| | |_________________________________|
|
|
___________________________ | | | >>_____with_clause_____>< | | |__use_clause___| | |___________________________|
|
|
_____________________________________________________________________ | | | >>__with__library_unit_name___________________________________;__>< | | | <_______________________ | | | |____,__library_unit_name__|__| | |_____________________________________________________________________|
|
|
____________________________________ | | | >>_____subprogram_body_stub_____>< | | |__package_body_stub_____| | | |__task_body_stub________| | | |__protected_body_stub___| | |____________________________________|
|
|
___________________________________________________ | | | >>__subprogram_specification__is__separate__;__>< | |___________________________________________________|
|
|
_____________________________________________________________ | | | >>__package__body__defining_identifier__is__separate__;__>< | |_____________________________________________________________|
|
|
__________________________________________________________ | | | >>__task__body__defining_identifier__is__separate__;__>< | |__________________________________________________________|
|
|
_______________________________________________________________ | | | >>__protected__body__defining_identifier__is__separate__;__>< | |_______________________________________________________________|
|
|
_______________________________________________________ | | | >>__separate__(__parent_unit_name__)__proper_body__>< | |_______________________________________________________|
|
|
___________________________________________________ | | | >>__defining_identifier_list__:__exception__;__>< | |___________________________________________________|
|
|
__________________________________________________________________________________________________ | | | >>__sequence_of_statements____________________________________________________________________>< | | |__exception__exception_handler________________________________| | | | <____________________ | | | |____exception_handler__|__| | |__________________________________________________________________________________________________|
|
|
_____________________________________________________________________________________________________________________________________ | | | >>__when___________________________________________exception_choice__________________________________=>__sequence_of_statements__>< | | |__choice_parameter_specification__:__| | <______________________ | | | |____|__exception_choice__|__| | |_____________________________________________________________________________________________________________________________________|
|
|
_____________________________ | | | >>__defining_identifier__>< | |_____________________________|
|
|
______________________________ | | | >>_____exception_name_____>< | | |__others__________| | |______________________________|
|
|
________________________________________ | | | >>__raise________________________;__>< | | |__exception_name__| | |________________________________________|
|
|
______________________________________________ | | | >>_____generic_subprogram_declaration_____>< | | |__generic_package_declaration_____| | |______________________________________________|
|
|
__________________________________________________________ | | | >>__generic_formal_part__subprogram_specification__;__>< | |__________________________________________________________|
|
|
_______________________________________________________ | | | >>__generic_formal_part__package_specification__;__>< | |_______________________________________________________|
|
|
________________________________________________________________________ | | | >>__generic_________________________________________________________>< | | | <_____________________________________________ | | | |_______generic_formal_parameter_declaration_____|__| | | |__use_clause____________________________| | |________________________________________________________________________|
|
|
_____________________________________________ | | | >>_____formal_object_declaration_________>< | | |__formal_type_declaration________| | | |__formal_subprogram_declaration__| | | |__formal_package_declaration_____| | |_____________________________________________|
|
|
____________________________________________________________________________________________________________________ | | | >>_____package__defining_program_unit_name__is__new__generic_package_name_____________________________;_________>< | | | |__generic_actual_part__| | | | |__procedure__defining_program_unit_name__is__new__generic_procedure_name_____________________________;__| | | | |__generic_actual_part__| | | | |__function__defining_designator__is__new__generic_function_name_____________________________;___________| | | |__generic_actual_part__| | |____________________________________________________________________________________________________________________|
|
|
______________________________________________________________________ | | | >>__(__generic_association_____________________________________)__>< | | | <_________________________ | | | |____,__generic_association__|__| | |______________________________________________________________________|
|
|
_____________________________________________________________________________________________ | | | >>____________________________________________________explicit_generic_actual_parameter__>< | | |__generic_formal_parameter_selector_name__=>__| | |_____________________________________________________________________________________________|
|
|
_____________________________________ | | | >>_____expression________________>< | | |__variable_name__________| | | |__subprogram_name________| | | |__entry_name_____________| | | |__subtype_mark___________| | | |__package_instance_name__| | |_____________________________________|
|
|
__________________________________________________________________________________________ | | | >>__defining_identifier_list__:__mode__subtype_mark________________________________;__>< | | |__:=__default_expression__| | |__________________________________________________________________________________________|
|
|
___________________________________________________________________________________________ | | | >>__type__defining_identifier___________________________is__formal_type_definition__;__>< | | |__discriminant_part__| | |___________________________________________________________________________________________|
|
|
______________________________________________________ | | | >>_____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___________| | |______________________________________________________|
|
|
______________________________________________________________ | | | >>_______________________________________________private__>< | | |__________________tagged__| |__limited__| | | |__abstract__| | |______________________________________________________________|
|
|
________________________________________________________________ | | | >>__________________new__subtype_mark_______________________>< | | |__abstract__| |__with__private__| | |________________________________________________________________|
|
|
__________________ | | | >>__(__<>__)__>< | |__________________|
|
|
___________________ | | | >>__range__<>__>< | |___________________|
|
|
_________________ | | | >>__mod__<>__>< | |_________________|
|
|
____________________ | | | >>__digits__<>__>< | |____________________|
|
|
___________________ | | | >>__delta__<>__>< | |___________________|
|
|
_______________________________ | | | >>__delta__<>__digits__<>__>< | |_______________________________|
|
|
_______________________________ | | | >>__array_type_definition__>< | |_______________________________|
|
|
________________________________ | | | >>__access_type_definition__>< | |________________________________|
|
|
_________________________________________________________________________ | | | >>__with__subprogram_specification________________________________;__>< | | |__is__subprogram_default__| | |_________________________________________________________________________|
|
|
____________________________ | | | >>_____default_name_____>< | | |__<>____________| | |____________________________|
|
|
______________ | | | >>__name__>< | |______________|
|
|
__________________________________________________________________________________________________________ | | | >>__with__package__defining_identifier__is__new__generic_package_name__formal_package_actual_part__;__>< | |__________________________________________________________________________________________________________|
|
|
_________________________________________ | | | >>_____(__<>__)______________________>< | | |_____________________________| | | |__generic_actual_part__| | |_________________________________________|
|
|
_________________________________________________ | | | >>_____attribute_definition_clause___________>< | | |__enumeration_representation_clause__| | | |__record_representation_clause_______| | | |__at_clause__________________________| | |_________________________________________________|
|
|
____________________________________________________ | | | >>_____direct_name______________________________>< | | |__direct_name__'__attribute_designator__| | | |__library_unit_name_____________________| | |____________________________________________________|
|
|
____________________________________________________________________________ | | | >>_____for__local_name__'__attribute_designator__use__expression__;_____>< | | |__for__local_name__'__attribute_designator__use__name__;________| | |____________________________________________________________________________|
|
|
______________________________________________________________________ | | | >>__for__first_subtype_local_name__use__enumeration_aggregate__;__>< | |______________________________________________________________________|
|
|
_________________________ | | | >>__array_aggregate__>< | |_________________________|
|
|
___________________________________________________________________________________________________________________ | | | >>__for__first_subtype_local_name__use__record_________________________________________________end__record__;__>< | | |__mod_clause__| | <___________________ | | | |____component_clause__|__| | |___________________________________________________________________________________________________________________|
|
|
_______________________________________________________________________________ | | | >>__component_local_name__at__position__range__first_bit__..__last_bit__;__>< | |_______________________________________________________________________________|
|
|
___________________________ | | | >>__static_expression__>< | |___________________________|
|
|
__________________________________ | | | >>__static_simple_expression__>< | |__________________________________|
|
|
__________________________________ | | | >>__static_simple_expression__>< | |__________________________________|
|
|
_________________________________ | | | >>__qualified_expression__;__>< | |_________________________________|
|
|
________________________________________________________________ | | | >>_____restriction_identifier_______________________________>< | | |__restriction_parameter_identifier__=>__expression__| | |________________________________________________________________|
|
|
__________________________________________________________ | | | >>__delta__static_expression__________________________>< | | |__range_constraint__| | |__________________________________________________________|
|
|
__________________________________________________ | | | >>__for__direct_name__use__at__expression__;__>< | |__________________________________________________|
|
|
_______________________________________ | | | >>__at__mod__static_expression__;__>< | |_______________________________________|
|
|
The Ada 95 Reference Manual is covered by the following copyright statement:
Copyright (C) 1992,1993,1994,1995 Intermetrics, Inc.
Full copyright information is available here
This copyright is assigned to the U.S. Government.
All rights reserved.
The Browsable Ada 95 Grammar is covered by the following copyright statement:
Copyright (c) 2000, Ralf Lämmel & Chris Verhoef.
All rights reserved.
Permission is hereby granted by Ralf Lämmel and Chris Verhoef (the "Copyright holders"), free of charge, to any person obtaining a copy of this software in source code or binary form and associated files (the "Distribution"), to deal in the Distribution without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Distribution, and to permit persons to whom the Distribution is furnished to do so, subject to the following conditions:
DISCLAIMER
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS `AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.