Browsable Ada 95 Grammar

Copyright (C) 2000 Ralf Lämmel (CWI, Amsterdam) & Chris Verhoef (Free University, Amsterdam)

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.


Contents


Summary


Context-free syntax

The following rules define the context-free syntax of ADA'95 using a variant of EBNF (Extended Backus Naur Form). Details of the notation are explained elsewhere. All sorts on right-hand sides are linked to the corresponding definitions, whereas the sorts on the left-hand sides are linked to the table of all sorts which is useful to navigate to the use sites of a sort.

pragma = pragma identifier [ "(pragma_argument_association { ",pragma_argument_association }* ")" ] ";"

Diagrams  Uses  Top  Help

pragma_argument_association = ( [ pragma_argument_identifier "=>" ] name | [ pragma_argument_identifier "=>" ] expression )

Diagrams  Uses  Top  Help

basic_declaration = type_declaration | subtype_declaration | object_declaration | number_declaration | subprogram_declaration | abstract_subprogram_declaration | package_declaration | renaming_declaration | exception_declaration | generic_declaration | generic_instantiation )

Diagrams  Uses  Top  Help

defining_identifier = identifier

Diagrams  Uses  Top  Help

type_declaration = full_type_declaration | incomplete_type_declaration | private_type_declaration | private_extension_declaration )

Diagrams  Uses  Top  Help

full_type_declaration = ( "typedefining_identifier [ known_discriminant_part ] "istype_definition ";" | task_type_declaration | protected_type_declaration )

Diagrams  Uses  Top  Help

type_definition = enumeration_type_definition | integer_type_definition | real_type_definition | array_type_definition | record_type_definition | access_type_definition | derived_type_definition )

Diagrams  Uses  Top  Help

subtype_declaration = "subtypedefining_identifier "issubtype_indication ";"

Diagrams  Uses  Top  Help

subtype_indication = subtype_mark [ constraint ]

Diagrams  Uses  Top  Help

subtype_mark = subtype_name

Diagrams  Uses  Top  Help

constraint = scalar_constraint | composite_constraint )

Diagrams  Uses  Top  Help

scalar_constraint = range_constraint | digits_constraint | delta_constraint )

Diagrams  Uses  Top  Help

composite_constraint = index_constraint | discriminant_constraint )

Diagrams  Uses  Top  Help

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 )

Diagrams  Uses  Top  Help

defining_identifier_list = defining_identifier { ",defining_identifier }*

Diagrams  Uses  Top  Help

number_declaration = defining_identifier_list ":" "constant" ":=" static_expression ";"

Diagrams  Uses  Top  Help

derived_type_definition = [ "abstract" ] "new" parent_subtype_indication [ record_extension_part ]

Diagrams  Uses  Top  Help

range_constraint = "rangerange_definition

Diagrams  Uses  Top  Help

range_definition = range_attribute_reference | simple_expression "..simple_expression )

Diagrams  Uses  Top  Help

enumeration_type_definition = "(enumeration_literal_specification { ",enumeration_literal_specification }* ")"

Diagrams  Uses  Top  Help

enumeration_literal_specification = defining_identifier | defining_character_literal )

Diagrams  Uses  Top  Help

defining_character_literal = character_literal

Diagrams  Uses  Top  Help

integer_type_definition = signed_integer_type_definition | modular_type_definition )

Diagrams  Uses  Top  Help

signed_integer_type_definition = "range" static_simple_expression ".." static_simple_expression

Diagrams  Uses  Top  Help

modular_type_definition = "mod" static_expression

Diagrams  Uses  Top  Help

real_type_definition = floating_point_definition | fixed_point_definition )

Diagrams  Uses  Top  Help

floating_point_definition = "digits" static_expression [ real_range_specification ]

Diagrams  Uses  Top  Help

real_range_specification = "range" static_simple_expression ".." static_simple_expression

Diagrams  Uses  Top  Help

fixed_point_definition = ordinary_fixed_point_definition | decimal_fixed_point_definition )

Diagrams  Uses  Top  Help

ordinary_fixed_point_definition = "delta" static_expression real_range_specification

Diagrams  Uses  Top  Help

decimal_fixed_point_definition = "delta" static_expression "digits" static_expression [ real_range_specification ]

Diagrams  Uses  Top  Help

digits_constraint = "digits" static_expression [ range_constraint ]

Diagrams  Uses  Top  Help

array_type_definition = unconstrained_array_definition | constrained_array_definition )

Diagrams  Uses  Top  Help

unconstrained_array_definition = "array" "(index_subtype_definition { ",index_subtype_definition }* ")" "ofcomponent_definition

Diagrams  Uses  Top  Help

index_subtype_definition = subtype_mark "range" "<>"

Diagrams  Uses  Top  Help

constrained_array_definition = "array" "(discrete_subtype_definition { ",discrete_subtype_definition }* ")" "ofcomponent_definition

Diagrams  Uses  Top  Help

discrete_subtype_definition = ( discrete_subtype_indication | "range" )

Diagrams  Uses  Top  Help

component_definition = [ "aliased" ] subtype_indication

Diagrams  Uses  Top  Help

index_constraint = "(discrete_range { ",discrete_range }* ")"

Diagrams  Uses  Top  Help

discrete_range = ( discrete_subtype_indication | range_definition )

Diagrams  Uses  Top  Help

discriminant_part = unknown_discriminant_part | known_discriminant_part )

Diagrams  Uses  Top  Help

unknown_discriminant_part = "(" "<>" ")"

Diagrams  Uses  Top  Help

known_discriminant_part = "(discriminant_specification { ";discriminant_specification }* ")"

Diagrams  Uses  Top  Help

discriminant_specification = defining_identifier_list ":subtype_mark [ ":=default_expression ] | defining_identifier_list ":access_definition [ ":=default_expression ] )

Diagrams  Uses  Top  Help

default_expression = expression

Diagrams  Uses  Top  Help

discriminant_constraint = "(discriminant_association { ",discriminant_association }* ")"

Diagrams  Uses  Top  Help

discriminant_association = [ discriminant_selector_name { "|" discriminant_selector_name }* "=>" ] expression

Diagrams  Uses  Top  Help

record_type_definition = [ [ "abstract" ] "tagged" ] [ "limited" ] record_definition

Diagrams  Uses  Top  Help

record_definition = ( "recordcomponent_list "end" "record" | "null" "record" )

Diagrams  Uses  Top  Help

component_list = component_item { component_item }* | { component_item }* variant_part | "null" ";" )

Diagrams  Uses  Top  Help

component_item = component_declaration | representation_clause )

Diagrams  Uses  Top  Help

component_declaration = defining_identifier_list ":component_definition [ ":=default_expression ] ";"

Diagrams  Uses  Top  Help

variant_part = "case" discriminant_direct_name "isvariant { variant }* "end" "case" ";"

Diagrams  Uses  Top  Help

variant = "whendiscrete_choice_list "=>component_list

Diagrams  Uses  Top  Help

discrete_choice_list = discrete_choice { "|discrete_choice }*

Diagrams  Uses  Top  Help

discrete_choice = expression | discrete_range | "others" )

Diagrams  Uses  Top  Help

record_extension_part = "withrecord_definition

Diagrams  Uses  Top  Help

access_type_definition = access_to_object_definition | access_to_subprogram_definition )

Diagrams  Uses  Top  Help

access_to_object_definition = "access" [ general_access_modifier ] subtype_indication

Diagrams  Uses  Top  Help

general_access_modifier = ( "all" | "constant" )

Diagrams  Uses  Top  Help

access_to_subprogram_definition = ( "access" [ "protected" ] "procedureparameter_profile | "access" [ "protected" ] "functionparameter_and_result_profile )

Diagrams  Uses  Top  Help

access_definition = "accesssubtype_mark

Diagrams  Uses  Top  Help

incomplete_type_declaration = "typedefining_identifier [ discriminant_part ] ";"

Diagrams  Uses  Top  Help

declarative_part = declarative_item }*

Diagrams  Uses  Top  Help

declarative_item = basic_declarative_item | body )

Diagrams  Uses  Top  Help

basic_declarative_item = basic_declaration | representation_clause | use_clause )

Diagrams  Uses  Top  Help

body = proper_body | body_stub )

Diagrams  Uses  Top  Help

proper_body = subprogram_body | package_body | task_body | protected_body )

Diagrams  Uses  Top  Help

name = direct_name | explicit_dereference | indexed_component | slice | selected_component | attribute_reference | type_conversion | function_call | character_literal )

Diagrams  Uses  Top  Help

direct_name = identifier | operator_symbol )

Diagrams  Uses  Top  Help

prefix = name | implicit_dereference )

Diagrams  Uses  Top  Help

explicit_dereference = name "." "all"

Diagrams  Uses  Top  Help

implicit_dereference = name

Diagrams  Uses  Top  Help

indexed_component = prefix "(expression { ",expression }* ")"

Diagrams  Uses  Top  Help

slice = prefix "(discrete_range ")"

Diagrams  Uses  Top  Help

selected_component = prefix ".selector_name

Diagrams  Uses  Top  Help

selector_name = identifier | character_literal | operator_symbol )

Diagrams  Uses  Top  Help

attribute_reference = prefix "'attribute_designator

Diagrams  Uses  Top  Help

attribute_designator = identifier [ "(" static_expression ")" ] | "Access" | "Delta" | "Digits" )

Diagrams  Uses  Top  Help

range_attribute_reference = prefix "'range_attribute_designator

Diagrams  Uses  Top  Help

range_attribute_designator = "Range" [ "(" static_expression ")" ]

Diagrams  Uses  Top  Help

aggregate = record_aggregate | extension_aggregate | array_aggregate )

Diagrams  Uses  Top  Help

record_aggregate = "(record_component_association_list ")"

Diagrams  Uses  Top  Help

record_component_association_list = record_component_association { ",record_component_association }* | "null" "record" )

Diagrams  Uses  Top  Help

record_component_association = component_choice_list "=>" ] expression

Diagrams  Uses  Top  Help

component_choice_list = ( component_selector_name { "|" component_selector_name }* | "others" )

Diagrams  Uses  Top  Help

extension_aggregate = "(ancestor_part "withrecord_component_association_list ")"

Diagrams  Uses  Top  Help

ancestor_part = expression | subtype_mark )

Diagrams  Uses  Top  Help

array_aggregate = positional_array_aggregate | named_array_aggregate )

Diagrams  Uses  Top  Help

positional_array_aggregate = ( "(expression ",expression { ",expression }* ")" | "(expression { ",expression }* "," "others" "=>expression ")" )

Diagrams  Uses  Top  Help

named_array_aggregate = "(array_component_association { ",array_component_association }* ")"

Diagrams  Uses  Top  Help

array_component_association = discrete_choice_list "=>expression

Diagrams  Uses  Top  Help

expression = relation { "andrelation }* | relation { "and" "thenrelation }* | relation { "orrelation }* | relation { "or" "elserelation }* | relation { "xorrelation }* )

Diagrams  Uses  Top  Help

relation = simple_expression [ relational_operator simple_expression ] | simple_expression [ "not" ] "inrange_definition | simple_expression [ "not" ] "insubtype_mark )

Diagrams  Uses  Top  Help

simple_expression = unary_adding_operator ] term { binary_adding_operator term }*

Diagrams  Uses  Top  Help

term = factor { multiplying_operator factor }*

Diagrams  Uses  Top  Help

factor = primary [ "**primary ] | "absprimary | "notprimary )

Diagrams  Uses  Top  Help

primary = numeric_literal | "null" | string_literal | aggregate | name | qualified_expression | allocator | "(expression ")" )

Diagrams  Uses  Top  Help

logical_operator = ( "and" | "or" | "xor" )

Diagrams  Uses  Top  Help

relational_operator = ( "=" | "/=" | "<" | "<=" | ">" | ">=" )

Diagrams  Uses  Top  Help

binary_adding_operator = ( "+" | "-" | "&" )

Diagrams  Uses  Top  Help

unary_adding_operator = ( "+" | "--" )

Diagrams  Uses  Top  Help

multiplying_operator = ( "*" | "/" | "mod" | "rem" )

Diagrams  Uses  Top  Help

highest_precedence_operator = ( "**" | "abs" | "not" )

Diagrams  Uses  Top  Help

type_conversion = subtype_mark "(expression ")" | subtype_mark "(name ")" )

Diagrams  Uses  Top  Help

qualified_expression = subtype_mark "'" "(expression ")" | subtype_mark "'aggregate )

Diagrams  Uses  Top  Help

allocator = ( "newsubtype_indication | "newqualified_expression )

Diagrams  Uses  Top  Help

sequence_of_statements = statement { statement }*

Diagrams  Uses  Top  Help

statement = ( { label }* simple_statement | { label }* compound_statement )

Diagrams  Uses  Top  Help

simple_statement = 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 )

Diagrams  Uses  Top  Help

compound_statement = if_statement | case_statement | loop_statement | block_statement | accept_statement | select_statement )

Diagrams  Uses  Top  Help

null_statement = "null" ";"

Diagrams  Uses  Top  Help

label = "<<" label_statement_identifier ">>"

Diagrams  Uses  Top  Help

statement_identifier = direct_name

Diagrams  Uses  Top  Help

assignment_statement = variable_name ":=expression ";"

Diagrams  Uses  Top  Help

if_statement = "ifcondition "thensequence_of_statements { "elsifcondition "thensequence_of_statements }* [ "elsesequence_of_statements ] "end" "if" ";"

Diagrams  Uses  Top  Help

condition = boolean_expression

Diagrams  Uses  Top  Help

case_statement = "caseexpression "iscase_statement_alternative { case_statement_alternative }* "end" "case" ";"

Diagrams  Uses  Top  Help

case_statement_alternative = "whendiscrete_choice_list "=>sequence_of_statements

Diagrams  Uses  Top  Help

loop_statement = [ loop_statement_identifier ":" ] [ iteration_scheme ] "loopsequence_of_statements "end" "loop" [ loop_identifier ] ";"

Diagrams  Uses  Top  Help

iteration_scheme = ( "whilecondition | "forloop_parameter_specification )

Diagrams  Uses  Top  Help

loop_parameter_specification = defining_identifier "in" [ "reverse" ] discrete_subtype_definition

Diagrams  Uses  Top  Help

block_statement = [ block_statement_identifier ":" ] [ "declaredeclarative_part ] "beginhandled_sequence_of_statements "end" [ block_identifier ] ";"

Diagrams  Uses  Top  Help

exit_statement = "exit" [ loop_name ] [ "whencondition ] ";"

Diagrams  Uses  Top  Help

goto_statement = "goto" label_name ";"

Diagrams  Uses  Top  Help

subprogram_declaration = subprogram_specification ";"

Diagrams  Uses  Top  Help

abstract_subprogram_declaration = subprogram_specification "is" "abstract" ";"

Diagrams  Uses  Top  Help

subprogram_specification = ( "proceduredefining_program_unit_name parameter_profile | "functiondefining_designator parameter_and_result_profile )

Diagrams  Uses  Top  Help

designator = ( [ parent_unit_name "." ] identifier | operator_symbol )

Diagrams  Uses  Top  Help

defining_designator = defining_program_unit_name | defining_operator_symbol )

Diagrams  Uses  Top  Help

defining_program_unit_name = parent_unit_name "." ] defining_identifier

Diagrams  Uses  Top  Help

operator_symbol = string_literal

Diagrams  Uses  Top  Help

defining_operator_symbol = operator_symbol

Diagrams  Uses  Top  Help

parameter_profile = formal_part ]

Diagrams  Uses  Top  Help

parameter_and_result_profile = formal_part ] "returnsubtype_mark

Diagrams  Uses  Top  Help

formal_part = "(parameter_specification { ";parameter_specification }* ")"

Diagrams  Uses  Top  Help

parameter_specification = defining_identifier_list ":mode subtype_mark [ ":=default_expression ] | defining_identifier_list ":access_definition [ ":=default_expression ] )

Diagrams  Uses  Top  Help

mode = ( [ "in" ] | "in" "out" | "out" )

Diagrams  Uses  Top  Help

subprogram_body = subprogram_specification "isdeclarative_part "beginhandled_sequence_of_statements "end" [ designator ] ";"

Diagrams  Uses  Top  Help

procedure_call_statement = ( procedure_name ";" | procedure_prefix actual_parameter_part ";" )

Diagrams  Uses  Top  Help

function_call = ( function_name | function_prefix actual_parameter_part )

Diagrams  Uses  Top  Help

actual_parameter_part = "(parameter_association { ",parameter_association }* ")"

Diagrams  Uses  Top  Help

parameter_association = [ formal_parameter_selector_name "=>" ] explicit_actual_parameter

Diagrams  Uses  Top  Help

explicit_actual_parameter = expression | variable_name )

Diagrams  Uses  Top  Help

return_statement = "return" [ expression ] ";"

Diagrams  Uses  Top  Help

package_declaration = package_specification ";"

Diagrams  Uses  Top  Help

package_specification = "packagedefining_program_unit_name "is" { basic_declarative_item }* [ "private" { basic_declarative_item }* ] "end" [ [ parent_unit_name "." ] identifier ]

Diagrams  Uses  Top  Help

package_body = "packagebody defining_program_unit_name "isdeclarative_part [ "beginhandled_sequence_of_statements ] "end" [ [ parent_unit_name "." ] identifier ] ";"

Diagrams  Uses  Top  Help

private_type_declaration = "typedefining_identifier [ discriminant_part ] "is" [ [ "abstract" ] "tagged" ] [ "limited" ] "private" ";"

Diagrams  Uses  Top  Help

private_extension_declaration = "typedefining_identifier [ discriminant_part ] "is" [ "abstract" ] "new" ancestor_subtype_indication "with" "private" ";"

Diagrams  Uses  Top  Help

use_clause = use_package_clause | use_type_clause )

Diagrams  Uses  Top  Help

use_package_clause = "use" package_name { "," package_name }* ";"

Diagrams  Uses  Top  Help

use_type_clause = "use" "typesubtype_mark { ",subtype_mark }* ";"

Diagrams  Uses  Top  Help

renaming_declaration = object_renaming_declaration | exception_renaming_declaration | package_renaming_declaration | subprogram_renaming_declaration | generic_renaming_declaration )

Diagrams  Uses  Top  Help

object_renaming_declaration = defining_identifier ":subtype_mark "renames" object_name ";"

Diagrams  Uses  Top  Help

exception_renaming_declaration = defining_identifier ":" "exception" "renames" exception_name ";"

Diagrams  Uses  Top  Help

package_renaming_declaration = "packagedefining_program_unit_name renamespackage_name ";"

Diagrams  Uses  Top  Help

subprogram_renaming_declaration = subprogram_specification "renames" callable_entity_name ";"

Diagrams  Uses  Top  Help

generic_renaming_declaration = ( "generic" "packagedefining_program_unit_name "renames" generic_package_name ";" | "generic" "proceduredefining_program_unit_name "renames" generic_procedure_name ";" | "generic" "functiondefining_program_unit_name "renames" generic_function_name ";" )

Diagrams  Uses  Top  Help

task_type_declaration = "task" "typedefining_identifier [ known_discriminant_part ] [ "istask_definition ] ";"

Diagrams  Uses  Top  Help

single_task_declaration = "taskdefining_identifier [ "istask_definition ] ";"

Diagrams  Uses  Top  Help

task_definition = task_item }* [ "private" { task_item }* ] "end" [ task_identifier ]

Diagrams  Uses  Top  Help

task_item = entry_declaration | representation_clause )

Diagrams  Uses  Top  Help

task_body = "taskbody defining_identifier "isdeclarative_part "beginhandled_sequence_of_statements "end" [ task_identifier ] ";"

Diagrams  Uses  Top  Help

protected_type_declaration = "protected" "typedefining_identifier [ known_discriminant_part ] "isprotected_definition ";"

Diagrams  Uses  Top  Help

single_protected_declaration = "protecteddefining_identifier "isprotected_definition ";"

Diagrams  Uses  Top  Help

protected_definition = protected_operation_declaration }* [ "private" { protected_element_declaration }* ] "end" [ protected_identifier ]

Diagrams  Uses  Top  Help

protected_operation_declaration = subprogram_declaration | entry_declaration | representation_clause )

Diagrams  Uses  Top  Help

protected_element_declaration = protected_operation_declaration | component_declaration )

Diagrams  Uses  Top  Help

protected_body = "protectedbody defining_identifier "is" { protected_operation_item }* "end" [ protected_identifier ] ";"

Diagrams  Uses  Top  Help

protected_operation_item = subprogram_declaration | subprogram_body | entry_body | representation_clause )

Diagrams  Uses  Top  Help

entry_declaration = "entrydefining_identifier [ "(discrete_subtype_definition ")" ] parameter_profile ";"

Diagrams  Uses  Top  Help

accept_statement = "accept" entry_direct_name [ "(entry_index ")" ] parameter_profile [ "dohandled_sequence_of_statements "end" [ entry_identifier ] ] ";"

Diagrams  Uses  Top  Help

entry_index = expression

Diagrams  Uses  Top  Help

entry_body = "entrydefining_identifier entry_body_formal_part entry_barrier "isdeclarative_part "beginhandled_sequence_of_statements "end" [ entry_identifier ] ";"

Diagrams  Uses  Top  Help

entry_body_formal_part = [ "(entry_index_specification ")" ] parameter_profile

Diagrams  Uses  Top  Help

entry_barrier = "whencondition

Diagrams  Uses  Top  Help

entry_index_specification = "fordefining_identifier "indiscrete_subtype_definition

Diagrams  Uses  Top  Help

entry_call_statement = entry_name [ actual_parameter_part ] ";"

Diagrams  Uses  Top  Help

requeue_statement = "requeue" entry_name [ "with" "abort" ] ";"

Diagrams  Uses  Top  Help

delay_statement = delay_until_statement | delay_relative_statement )

Diagrams  Uses  Top  Help

delay_until_statement = "delay" "until" delay_expression ";"

Diagrams  Uses  Top  Help

delay_relative_statement = "delay" delay_expression ";"

Diagrams  Uses  Top  Help

select_statement = selective_accept | timed_entry_call | conditional_entry_call | asynchronous_select )

Diagrams  Uses  Top  Help

selective_accept = "select" [ guard ] select_alternative { "or" [ guard ] select_alternative }* [ "elsesequence_of_statements ] "end" "select" ";"

Diagrams  Uses  Top  Help

guard = "whencondition "=>"

Diagrams  Uses  Top  Help

select_alternative = accept_alternative | delay_alternative | terminate_alternative )

Diagrams  Uses  Top  Help

accept_alternative = accept_statement [ sequence_of_statements ]

Diagrams  Uses  Top  Help

delay_alternative = delay_statement [ sequence_of_statements ]

Diagrams  Uses  Top  Help

terminate_alternative = "terminate" ";"

Diagrams  Uses  Top  Help

timed_entry_call = "selectentry_call_alternative "ordelay_alternative "end" "select" ";"

Diagrams  Uses  Top  Help

entry_call_alternative = entry_call_statement [ sequence_of_statements ]

Diagrams  Uses  Top  Help

conditional_entry_call = "selectentry_call_alternative "elsesequence_of_statements "end" "select" ";"

Diagrams  Uses  Top  Help

asynchronous_select = "selecttriggering_alternative "then" "abortabortable_part "end" "select" ";"

Diagrams  Uses  Top  Help

triggering_alternative = triggering_statement [ sequence_of_statements ]

Diagrams  Uses  Top  Help

triggering_statement = entry_call_statement | delay_statement )

Diagrams  Uses  Top  Help

abortable_part = sequence_of_statements

Diagrams  Uses  Top  Help

abort_statement = "abort" task_name { "," task_name }* ";"

Diagrams  Uses  Top  Help

compilation = compilation_unit }*

Diagrams  Uses  Top  Help

compilation_unit = context_clause library_item | context_clause subunit )

Diagrams  Uses  Top  Help

library_item = ( [ "private" ] library_unit_declaration | library_unit_body | [ "private" ] library_unit_renaming_declaration )

Diagrams  Uses  Top  Help

library_unit_declaration = subprogram_declaration | package_declaration | generic_declaration | generic_instantiation )

Diagrams  Uses  Top  Help

library_unit_renaming_declaration = package_renaming_declaration | generic_renaming_declaration | subprogram_renaming_declaration )

Diagrams  Uses  Top  Help

library_unit_body = subprogram_body | package_body )

Diagrams  Uses  Top  Help

parent_unit_name = name

Diagrams  Uses  Top  Help

context_clause = context_item }*

Diagrams  Uses  Top  Help

context_item = with_clause | use_clause )

Diagrams  Uses  Top  Help

with_clause = "with" library_unit_name { "," library_unit_name }* ";"

Diagrams  Uses  Top  Help

body_stub = subprogram_body_stub | package_body_stub | task_body_stub | protected_body_stub )

Diagrams  Uses  Top  Help

subprogram_body_stub = subprogram_specification "is" "separate" ";"

Diagrams  Uses  Top  Help

package_body_stub = "packagebody defining_identifier "is" "separate" ";"

Diagrams  Uses  Top  Help

task_body_stub = "taskbody defining_identifier "is" "separate" ";"

Diagrams  Uses  Top  Help

protected_body_stub = "protectedbody defining_identifier "is" "separate" ";"

Diagrams  Uses  Top  Help

subunit = "separate" "(parent_unit_name ")proper_body

Diagrams  Uses  Top  Help

exception_declaration = defining_identifier_list ":" "exception" ";"

Diagrams  Uses  Top  Help

handled_sequence_of_statements = sequence_of_statements [ "exceptionexception_handler { exception_handler }* ]

Diagrams  Uses  Top  Help

exception_handler = "when" [ choice_parameter_specification ":" ] exception_choice { "|exception_choice }* "=>sequence_of_statements

Diagrams  Uses  Top  Help

choice_parameter_specification = defining_identifier

Diagrams  Uses  Top  Help

exception_choice = ( exception_name | "others" )

Diagrams  Uses  Top  Help

raise_statement = "raise" [ exception_name ] ";"

Diagrams  Uses  Top  Help

generic_declaration = generic_subprogram_declaration | generic_package_declaration )

Diagrams  Uses  Top  Help

generic_subprogram_declaration = generic_formal_part subprogram_specification ";"

Diagrams  Uses  Top  Help

generic_package_declaration = generic_formal_part package_specification ";"

Diagrams  Uses  Top  Help

generic_formal_part = "generic" { ( generic_formal_parameter_declaration | use_clause ) }*

Diagrams  Uses  Top  Help

generic_formal_parameter_declaration = formal_object_declaration | formal_type_declaration | formal_subprogram_declaration | formal_package_declaration )

Diagrams  Uses  Top  Help

generic_instantiation = ( "packagedefining_program_unit_name "is" "new" generic_package_name [ generic_actual_part ] ";" | "proceduredefining_program_unit_name "is" "new" generic_procedure_name [ generic_actual_part ] ";" | "functiondefining_designator "is" "new" generic_function_name [ generic_actual_part ] ";" )

Diagrams  Uses  Top  Help

generic_actual_part = "(generic_association { ",generic_association }* ")"

Diagrams  Uses  Top  Help

generic_association = [ generic_formal_parameter_selector_name "=>" ] explicit_generic_actual_parameter

Diagrams  Uses  Top  Help

explicit_generic_actual_parameter = expression | variable_name | subprogram_name | entry_name | subtype_mark | package_instance_name )

Diagrams  Uses  Top  Help

formal_object_declaration = defining_identifier_list ":mode subtype_mark [ ":=default_expression ] ";"

Diagrams  Uses  Top  Help

formal_type_declaration = "typedefining_identifier [ discriminant_part ] "isformal_type_definition ";"

Diagrams  Uses  Top  Help

formal_type_definition = formal_private_type_definition | formal_derived_type_definition | formal_discrete_type_definition | formal_signed_integer_type_definition | formal_modular_type_definition | formal_floating_point_definition | formal_ordinary_fixed_point_definition | formal_decimal_fixed_point_definition | formal_array_type_definition | formal_access_type_definition )

Diagrams  Uses  Top  Help

formal_private_type_definition = [ [ "abstract" ] "tagged" ] [ "limited" ] "private"

Diagrams  Uses  Top  Help

formal_derived_type_definition = [ "abstract" ] "newsubtype_mark [ "with" "private" ]

Diagrams  Uses  Top  Help

formal_discrete_type_definition = "(" "<>" ")"

Diagrams  Uses  Top  Help

formal_signed_integer_type_definition = "range" "<>"

Diagrams  Uses  Top  Help

formal_modular_type_definition = "mod" "<>"

Diagrams  Uses  Top  Help

formal_floating_point_definition = "digits" "<>"

Diagrams  Uses  Top  Help

formal_ordinary_fixed_point_definition = "delta" "<>"

Diagrams  Uses  Top  Help

formal_decimal_fixed_point_definition = "delta" "<>" "digits" "<>"

Diagrams  Uses  Top  Help

formal_array_type_definition = array_type_definition

Diagrams  Uses  Top  Help

formal_access_type_definition = access_type_definition

Diagrams  Uses  Top  Help

formal_subprogram_declaration = "withsubprogram_specification [ "issubprogram_default ] ";"

Diagrams  Uses  Top  Help

subprogram_default = default_name | "<>" )

Diagrams  Uses  Top  Help

default_name = name

Diagrams  Uses  Top  Help

formal_package_declaration = "with" "packagedefining_identifier "is" "new" generic_package_name formal_package_actual_part ";"

Diagrams  Uses  Top  Help

formal_package_actual_part = ( "(" "<>" ")" | [ generic_actual_part ] )

Diagrams  Uses  Top  Help

representation_clause = attribute_definition_clause | enumeration_representation_clause | record_representation_clause | at_clause )

Diagrams  Uses  Top  Help

local_name = direct_name | direct_name "'attribute_designator | library_unit_name )

Diagrams  Uses  Top  Help

attribute_definition_clause = ( "forlocal_name "'attribute_designator "useexpression ";" | "forlocal_name "'attribute_designator "usename ";" )

Diagrams  Uses  Top  Help

enumeration_representation_clause = "for" first_subtype_local_name "useenumeration_aggregate ";"

Diagrams  Uses  Top  Help

enumeration_aggregate = array_aggregate

Diagrams  Uses  Top  Help

record_representation_clause = "for" first_subtype_local_name "use" "record" [ mod_clause ] { component_clause }* "end" "record" ";"

Diagrams  Uses  Top  Help

component_clause = component_local_name "atposition "rangefirst_bit "..last_bit ";"

Diagrams  Uses  Top  Help

position = static_expression

Diagrams  Uses  Top  Help

first_bit = static_simple_expression

Diagrams  Uses  Top  Help

last_bit = static_simple_expression

Diagrams  Uses  Top  Help

code_statement = qualified_expression ";"

Diagrams  Uses  Top  Help

restriction = ( restriction_identifier | restriction_parameter_identifier "=>expression )

Diagrams  Uses  Top  Help

delta_constraint = "delta" static_expression [ range_constraint ]

Diagrams  Uses  Top  Help

at_clause = "fordirect_name "use" "atexpression ";"

Diagrams  Uses  Top  Help

mod_clause = "at" "mod" static_expression ";"

Diagrams  Uses  Top  Help


Lexical syntax

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

character = 

 ( graphic_character

 | format_effector

 | other_control_function )

Uses  Top  Help

graphic_character = 

 ( identifier_letter

 | digit

 | space_character

 | special_character )

Uses  Top  Help

identifier = identifier_letter (underlineletter_or_digit)*

Uses  Top  Help

letter_or_digit = 

 ( identifier_letter

 | digit )

Uses  Top  Help

numeric_literal = 

 ( decimal_literal

 | based_literal )

Uses  Top  Help

decimal_literal = numeral ([\.] numeral)? exponent?

Uses  Top  Help

numeral = digit (underlinedigit)*

Uses  Top  Help

exponent = 

 ( [E] [\+]? numeral

 | [E] [\-]? numeral )

Uses  Top  Help

based_literal = base [\#] based_numeral ([\.] based_numeral)? [\#] exponent?

Uses  Top  Help

base = numeral

Uses  Top  Help

based_numeral = extended_digit (underlineextended_digit)*

Uses  Top  Help

extended_digit = 

 ( digit

 | [A-F] )

Uses  Top  Help

character_literal = [\'] graphic_character [\']

Uses  Top  Help

string_literal = [\"] string_element* [\"]

Uses  Top  Help

string_element = 

 ( [\"] [\"]

 | non_quotation_mark_graphic_character )

Uses  Top  Help

comment = "--" non_end_of_line_character*

Uses  Top  Help

% Some implementation of informal explanations from Ada RM 95

digit = [0-9]

Uses  Top  Help

identifier_letter = 

 ( upper_case_identifier_letter

 | lower_case_identifier_letter )

Uses  Top  Help

underline = [\_]

Uses  Top  Help

% Ada RM 95: Any character of Row 00 of ISO 10646 BMP whose name begins ``Latin Capital Letter''. 

upper_case_identifier_letter = ...

Uses  Top  Help

% Ada RM 95: Any character of Row 00 of ISO 10646 BMP whose name begins ``Latin Small Letter''. 

lower_case_identifier_letter = ...

Uses  Top  Help

% Ada RM 95: The character of ISO 10646 BMP named ``Space''.

space_character = ...

Uses  Top  Help

% 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. 

special_character = ...

Uses  Top  Help

% 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). 

format_effector = ...

Uses  Top  Help

% 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.

other_control_function = ...

Uses  Top  Help

% Ada RM 95: a single graphic_character other than a quotation mark

non_quotation_mark_graphic_character = ...

Uses  Top  Help

% Not defined in Ada RM 95

non_end_of_line_character = ...

Uses  Top  Help


All sorts

In the table below all the sorts of the grammar are listed in alphabetical order. For each sort all the use sites are listed. There are sorts without any use site --- the so-called top sorts. The navigation bar below allows you to go directly to those sorts starting with a certain letter.

[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 

abort_statement simple_statement
abortable_part asynchronous_select
abstract_subprogram_declaration basic_declaration
accept_alternative select_alternative
accept_statement
access_definition
access_to_object_definition access_type_definition
access_to_subprogram_definition access_type_definition
access_type_definition
actual_parameter_part
aggregate
allocator primary
ancestor_part extension_aggregate
ancestor_subtype_indication private_extension_declaration
array_aggregate
array_component_association named_array_aggregate
array_type_definition
assignment_statement simple_statement
asynchronous_select select_statement
at_clause representation_clause
attribute_definition_clause representation_clause
attribute_designator
attribute_reference name
basic_declaration basic_declarative_item
basic_declarative_item
binary_adding_operator simple_expression
block_identifier block_statement
block_statement compound_statement
block_statement_identifier block_statement
body
body_stub body
boolean_expression condition
callable_entity_name subprogram_renaming_declaration
case_statement compound_statement
case_statement_alternative case_statement
character_literal
choice_parameter_specification exception_handler
code_statement simple_statement
compilation -
compilation_unit compilation
component_choice_list record_component_association
component_clause record_representation_clause
component_declaration
component_definition
component_item component_list
component_list
component_local_name component_clause
component_selector_name component_choice_list
composite_constraint constraint
compound_statement statement
condition
conditional_entry_call select_statement
constrained_array_definition array_type_definition
constraint subtype_indication
context_clause compilation_unit
context_item context_clause
decimal_fixed_point_definition fixed_point_definition
declarative_item declarative_part
declarative_part
default_expression
default_name subprogram_default
defining_character_literal enumeration_literal_specification
defining_designator
defining_identifier
defining_identifier_list
defining_operator_symbol defining_designator
defining_program_unit_name
delay_alternative
delay_expression
delay_relative_statement delay_statement
delay_statement
delay_until_statement delay_statement
delta_constraint scalar_constraint
derived_type_definition type_definition
designator subprogram_body
digits_constraint scalar_constraint
direct_name
discrete_choice discrete_choice_list
discrete_choice_list
discrete_range
discrete_subtype_definition
discrete_subtype_indication
discriminant_association discriminant_constraint
discriminant_constraint composite_constraint
discriminant_direct_name variant_part
discriminant_part
discriminant_selector_name discriminant_association
discriminant_specification known_discriminant_part
entry_barrier entry_body
entry_body protected_operation_item
entry_body_formal_part entry_body
entry_call_alternative
entry_call_statement
entry_declaration
entry_direct_name accept_statement
entry_identifier
entry_index accept_statement
entry_index_specification entry_body_formal_part
entry_name
enumeration_aggregate enumeration_representation_clause
enumeration_literal_specification enumeration_type_definition
enumeration_representation_clause representation_clause
enumeration_type_definition type_definition
exception_choice exception_handler
exception_declaration basic_declaration
exception_handler handled_sequence_of_statements
exception_name
exception_renaming_declaration renaming_declaration
exit_statement simple_statement
explicit_actual_parameter parameter_association
explicit_dereference name
explicit_generic_actual_parameter generic_association
expression
extension_aggregate aggregate
factor term
first_bit component_clause
first_subtype_local_name
fixed_point_definition real_type_definition
floating_point_definition real_type_definition
formal_access_type_definition formal_type_definition
formal_array_type_definition formal_type_definition
formal_decimal_fixed_point_definition formal_type_definition
formal_derived_type_definition formal_type_definition
formal_discrete_type_definition formal_type_definition
formal_floating_point_definition formal_type_definition
formal_modular_type_definition formal_type_definition
formal_object_declaration generic_formal_parameter_declaration
formal_ordinary_fixed_point_definition formal_type_definition
formal_package_actual_part formal_package_declaration
formal_package_declaration generic_formal_parameter_declaration
formal_parameter_selector_name parameter_association
formal_part
formal_private_type_definition formal_type_definition
formal_signed_integer_type_definition formal_type_definition
formal_subprogram_declaration generic_formal_parameter_declaration
formal_type_declaration generic_formal_parameter_declaration
formal_type_definition formal_type_declaration
full_type_declaration type_declaration
function_call name
function_name function_call
function_prefix function_call
general_access_modifier access_to_object_definition
generic_actual_part
generic_association generic_actual_part
generic_declaration
generic_formal_parameter_declaration generic_formal_part
generic_formal_parameter_selector_name generic_association
generic_formal_part
generic_function_name
generic_instantiation
generic_package_declaration generic_declaration
generic_package_name
generic_procedure_name
generic_renaming_declaration
generic_subprogram_declaration generic_declaration
goto_statement simple_statement
guard selective_accept
handled_sequence_of_statements
highest_precedence_operator -
identifier
if_statement compound_statement
implicit_dereference prefix
incomplete_type_declaration type_declaration
index_constraint composite_constraint
index_subtype_definition unconstrained_array_definition
indexed_component name
integer_type_definition type_definition
iteration_scheme loop_statement
known_discriminant_part
label statement
label_name goto_statement
label_statement_identifier label
last_bit component_clause
library_item compilation_unit
library_unit_body library_item
library_unit_declaration library_item
library_unit_name
library_unit_renaming_declaration library_item
local_name attribute_definition_clause
logical_operator -
loop_identifier loop_statement
loop_name exit_statement
loop_parameter_specification iteration_scheme
loop_statement compound_statement
loop_statement_identifier loop_statement
mod_clause record_representation_clause
mode
modular_type_definition integer_type_definition
multiplying_operator term
name
named_array_aggregate array_aggregate
null_statement simple_statement
number_declaration basic_declaration
numeric_literal primary
object_declaration basic_declaration
object_name object_renaming_declaration
object_renaming_declaration renaming_declaration
operator_symbol
ordinary_fixed_point_definition fixed_point_definition
package_body
package_body_stub body_stub
package_declaration
package_instance_name explicit_generic_actual_parameter
package_name use_package_clause
package_renaming_declaration
package_specification
parameter_and_result_profile
parameter_association actual_parameter_part
parameter_profile
parameter_specification formal_part
parent_subtype_indication derived_type_definition
parent_unit_name
position component_clause
positional_array_aggregate array_aggregate
pragma pragma
pragma_argument_association pragma
pragma_argument_identifier pragma_argument_association
prefix
primary factor
private_extension_declaration type_declaration
private_type_declaration type_declaration
procedure_call_statement simple_statement
procedure_name procedure_call_statement
procedure_prefix procedure_call_statement
proper_body
protected_body proper_body
protected_body_stub body_stub
protected_definition
protected_element_declaration protected_definition
protected_identifier
protected_operation_declaration
protected_operation_item protected_body
protected_type_declaration full_type_declaration
qualified_expression
raise_statement simple_statement
range_attribute_designator range_attribute_reference
range_attribute_reference range_definition
range_constraint
range_definition
real_range_specification
real_type_definition type_definition
record_aggregate aggregate
record_component_association record_component_association_list
record_component_association_list
record_definition
record_extension_part derived_type_definition
record_representation_clause representation_clause
record_type_definition type_definition
relation expression
relational_operator relation
renamespackage_name package_renaming_declaration
renaming_declaration basic_declaration
representation_clause
requeue_statement simple_statement
restriction -
restriction_identifier restriction
restriction_parameter_identifier restriction
return_statement simple_statement
scalar_constraint constraint
select_alternative selective_accept
select_statement compound_statement
selected_component name
selective_accept select_statement
selector_name selected_component
sequence_of_statements
signed_integer_type_definition integer_type_definition
simple_expression
simple_statement statement
single_protected_declaration object_declaration
single_task_declaration object_declaration
slice name
statement sequence_of_statements
statement_identifier -
static_expression
static_simple_expression
string_literal
subprogram_body
subprogram_body_stub body_stub
subprogram_declaration
subprogram_default formal_subprogram_declaration
subprogram_name explicit_generic_actual_parameter
subprogram_renaming_declaration
subprogram_specification
subtype_declaration basic_declaration
subtype_indication
subtype_mark
subtype_name subtype_mark
subunit compilation_unit
task_body proper_body
task_body_stub body_stub
task_definition
task_identifier
task_item task_definition
task_name abort_statement
task_type_declaration full_type_declaration
term simple_expression
terminate_alternative select_alternative
timed_entry_call select_statement
triggering_alternative asynchronous_select
triggering_statement triggering_alternative
type_conversion name
type_declaration basic_declaration
type_definition full_type_declaration
unary_adding_operator simple_expression
unconstrained_array_definition array_type_definition
unknown_discriminant_part discriminant_part
use_clause
use_package_clause use_clause
use_type_clause use_clause
variable_name
variant variant_part
variant_part component_list
with_clause context_item


Top sorts

Details of the terminology used (top sorts, bottom sorts etc.) are explained elsewhere.


Bottom sorts

Details of the terminology used (top sorts, bottom sorts etc.) are explained elsewhere.

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


Keywords

In the table below all the keywords used in the grammar are listed in alphabetical order. For each keyword all the use sites are listed. Tokens which do not start with a letter are listed at the beginning of the table.

[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 

& binary_adding_operator
'
(
)
* multiplying_operator
**
+
,
- binary_adding_operator
-- unary_adding_operator
.
..
/ multiplying_operator
/= relational_operator
:
:=
;
< relational_operator
<< label
<= relational_operator
<>
= relational_operator
=>
> relational_operator
>= relational_operator
>> label
Access attribute_designator
Delta attribute_designator
Digits attribute_designator
Range range_attribute_designator
abort
abs
abstract
accept accept_statement
access
aliased
all
and
array
at
begin
case
constant
declare block_statement
delay
delta
digits
do accept_statement
else
elsif if_statement
end
entry
exception
exit exit_statement
for
function
generic
goto goto_statement
if if_statement
in
is
limited
loop loop_statement
mod
new
not
null
of
or
others
out mode
package
private
procedure
protected
raise raise_statement
range
record
rem multiplying_operator
renames
requeue requeue_statement
return
reverse loop_parameter_specification
select
separate
subtype subtype_declaration
tagged
task
terminate terminate_alternative
then
type
until delay_until_statement
use
when
while iteration_scheme
with
xor
|


Diagrams

The diagrams below visualize the context-free syntax using a variant of syntax diagrams. Details of this notation are explained elsewhere. All sorts in the diagrams are linked to the corresponding definitions, whereas the section headers (i.e., the sorts defined by the actual diagrams) are linked to the table of all sorts which is useful to navigate to the use sites of a sort.


pragma

 ___________________________________________________________________________________________________________________ 
|                                                                                                                   |
| >>__pragma__identifier______________________________________________________________________________________;__>< |
|                         |__(__pragma_argument_association_____________________________________________)__|        |
|                                                            |  <_________________________________   |              |
|                                                            |____,__pragma_argument_association__|__|              |
|___________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

pragma_argument_association

 ________________________________________________________________ 
|                                                                |
| >>___________________________________________name___________>< |
|     |  |__pragma_argument_identifier__=>__|              |     |
|     |________________________________________expression__|     |
|        |__pragma_argument_identifier__=>__|                    |
|________________________________________________________________|

EBNF    Uses    Top    Help

basic_declaration

 _______________________________________________ 
|                                               |
| >>_____type_declaration____________________>< |
|     |__subtype_declaration______________|     |
|     |__object_declaration_______________|     |
|     |__number_declaration_______________|     |
|     |__subprogram_declaration___________|     |
|     |__abstract_subprogram_declaration__|     |
|     |__package_declaration______________|     |
|     |__renaming_declaration_____________|     |
|     |__exception_declaration____________|     |
|     |__generic_declaration______________|     |
|     |__generic_instantiation____________|     |
|_______________________________________________|

EBNF    Uses    Top    Help

defining_identifier

 ____________________ 
|                    |
| >>__identifier__>< |
|____________________|

EBNF    Uses    Top    Help

type_declaration

 _____________________________________________ 
|                                             |
| >>_____full_type_declaration_____________>< |
|     |__incomplete_type_declaration____|     |
|     |__private_type_declaration_______|     |
|     |__private_extension_declaration__|     |
|_____________________________________________|

EBNF    Uses    Top    Help

full_type_declaration

 ________________________________________________________________________________________________ 
|                                                                                                |
| >>_____type__defining_identifier_________________________________is__type_definition__;_____>< |
|     |                             |__known_discriminant_part__|                          |     |
|     |__task_type_declaration_____________________________________________________________|     |
|     |__protected_type_declaration________________________________________________________|     |
|________________________________________________________________________________________________|

EBNF    Uses    Top    Help

type_definition

 ___________________________________________ 
|                                           |
| >>_____enumeration_type_definition_____>< |
|     |__integer_type_definition______|     |
|     |__real_type_definition_________|     |
|     |__array_type_definition________|     |
|     |__record_type_definition_______|     |
|     |__access_type_definition_______|     |
|     |__derived_type_definition______|     |
|___________________________________________|

EBNF    Uses    Top    Help

subtype_declaration

 _________________________________________________________________ 
|                                                                 |
| >>__subtype__defining_identifier__is__subtype_indication__;__>< |
|_________________________________________________________________|

EBNF    Uses    Top    Help

subtype_indication

 ________________________________________ 
|                                        |
| >>__subtype_mark____________________>< |
|                   |__constraint__|     |
|________________________________________|

EBNF    Uses    Top    Help

subtype_mark

 ______________________ 
|                      |
| >>__subtype_name__>< |
|______________________|

EBNF    Uses    Top    Help

constraint

 ____________________________________ 
|                                    |
| >>_____scalar_constraint________>< |
|     |__composite_constraint__|     |
|____________________________________|

EBNF    Uses    Top    Help

scalar_constraint

 _________________________________ 
|                                 |
| >>_____range_constraint______>< |
|     |__digits_constraint__|     |
|     |__delta_constraint___|     |
|_________________________________|

EBNF    Uses    Top    Help

composite_constraint

 _______________________________________ 
|                                       |
| >>_____index_constraint____________>< |
|     |__discriminant_constraint__|     |
|_______________________________________|

EBNF    Uses    Top    Help

object_declaration

 __________________________________________________________________________________________________________________________ 
|                                                                                                                          |
| >>_____defining_identifier_list__:_________________________________subtype_indication________________________;________>< |
|     |                               |__aliased__|  |__constant__|                      |__:=__expression__|        |     |
|     |__defining_identifier_list__:_________________________________array_type_definition________________________;__|     |
|     |                               |__aliased__|  |__constant__|                         |__:=__expression__|     |     |
|     |__single_task_declaration_____________________________________________________________________________________|     |
|     |__single_protected_declaration________________________________________________________________________________|     |
|__________________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

defining_identifier_list

 ________________________________________________________________ 
|                                                                |
| >>__defining_identifier_____________________________________>< |
|                          |  <_________________________   |     |
|                          |____,__defining_identifier__|__|     |
|________________________________________________________________|

EBNF    Uses    Top    Help

number_declaration

 _________________________________________________________________________ 
|                                                                         |
| >>__defining_identifier_list__:__constant__:=__static_expression__;__>< |
|_________________________________________________________________________|

EBNF    Uses    Top    Help

derived_type_definition

 _____________________________________________________________________________________ 
|                                                                                     |
| >>__________________new__parent_subtype_indication_______________________________>< |
|     |__abstract__|                                  |__record_extension_part__|     |
|_____________________________________________________________________________________|

EBNF    Uses    Top    Help

range_constraint

 _________________________________ 
|                                 |
| >>__range__range_definition__>< |
|_________________________________|

EBNF    Uses    Top    Help

range_definition

 ________________________________________________________ 
|                                                        |
| >>_____range_attribute_reference____________________>< |
|     |__simple_expression__..__simple_expression__|     |
|________________________________________________________|

EBNF    Uses    Top    Help

enumeration_type_definition

 __________________________________________________________________________________________________ 
|                                                                                                  |
| >>__(__enumeration_literal_specification___________________________________________________)__>< |
|                                           |  <_______________________________________   |        |
|                                           |____,__enumeration_literal_specification__|__|        |
|__________________________________________________________________________________________________|

EBNF    Uses    Top    Help

enumeration_literal_specification

 __________________________________________ 
|                                          |
| >>_____defining_identifier____________>< |
|     |__defining_character_literal__|     |
|__________________________________________|

EBNF    Uses    Top    Help

defining_character_literal

 ___________________________ 
|                           |
| >>__character_literal__>< |
|___________________________|

EBNF    Uses    Top    Help

integer_type_definition

 ______________________________________________ 
|                                              |
| >>_____signed_integer_type_definition_____>< |
|     |__modular_type_definition_________|     |
|______________________________________________|

EBNF    Uses    Top    Help

signed_integer_type_definition

 _______________________________________________________________________ 
|                                                                       |
| >>__range__static_simple_expression__..__static_simple_expression__>< |
|_______________________________________________________________________|

EBNF    Uses    Top    Help

modular_type_definition

 ________________________________ 
|                                |
| >>__mod__static_expression__>< |
|________________________________|

EBNF    Uses    Top    Help

real_type_definition

 _________________________________________ 
|                                         |
| >>_____floating_point_definition_____>< |
|     |__fixed_point_definition_____|     |
|_________________________________________|

EBNF    Uses    Top    Help

floating_point_definition

 ___________________________________________________________________ 
|                                                                   |
| >>__digits__static_expression__________________________________>< |
|                                |__real_range_specification__|     |
|___________________________________________________________________|

EBNF    Uses    Top    Help

real_range_specification

 _______________________________________________________________________ 
|                                                                       |
| >>__range__static_simple_expression__..__static_simple_expression__>< |
|_______________________________________________________________________|

EBNF    Uses    Top    Help

fixed_point_definition

 _______________________________________________ 
|                                               |
| >>_____ordinary_fixed_point_definition_____>< |
|     |__decimal_fixed_point_definition___|     |
|_______________________________________________|

EBNF    Uses    Top    Help

ordinary_fixed_point_definition

 ____________________________________________________________ 
|                                                            |
| >>__delta__static_expression__real_range_specification__>< |
|____________________________________________________________|

EBNF    Uses    Top    Help

decimal_fixed_point_definition

 _____________________________________________________________________________________________ 
|                                                                                             |
| >>__delta__static_expression__digits__static_expression__________________________________>< |
|                                                          |__real_range_specification__|     |
|_____________________________________________________________________________________________|

EBNF    Uses    Top    Help

digits_constraint

 ___________________________________________________________ 
|                                                           |
| >>__digits__static_expression__________________________>< |
|                                |__range_constraint__|     |
|___________________________________________________________|

EBNF    Uses    Top    Help

array_type_definition

 ______________________________________________ 
|                                              |
| >>_____unconstrained_array_definition_____>< |
|     |__constrained_array_definition____|     |
|______________________________________________|

EBNF    Uses    Top    Help

unconstrained_array_definition

 _________________________________________________________________________________________________________________ 
|                                                                                                                 |
| >>__array__(__index_subtype_definition__________________________________________)__of__component_definition__>< |
|                                         |  <______________________________   |                                  |
|                                         |____,__index_subtype_definition__|__|                                  |
|_________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

index_subtype_definition

 _________________________________ 
|                                 |
| >>__subtype_mark__range__<>__>< |
|_________________________________|

EBNF    Uses    Top    Help

constrained_array_definition

 _______________________________________________________________________________________________________________________ 
|                                                                                                                       |
| >>__array__(__discrete_subtype_definition_____________________________________________)__of__component_definition__>< |
|                                            |  <_________________________________   |                                  |
|                                            |____,__discrete_subtype_definition__|__|                                  |
|_______________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

discrete_subtype_definition

 ___________________________________________ 
|                                           |
| >>_____discrete_subtype_indication_____>< |
|     |__range________________________|     |
|___________________________________________|

EBNF    Uses    Top    Help

component_definition

 ___________________________________________ 
|                                           |
| >>_________________subtype_indication__>< |
|     |__aliased__|                         |
|___________________________________________|

EBNF    Uses    Top    Help

index_constraint

 ____________________________________________________________ 
|                                                            |
| >>__(__discrete_range________________________________)__>< |
|                        |  <____________________   |        |
|                        |____,__discrete_range__|__|        |
|____________________________________________________________|

EBNF    Uses    Top    Help

discrete_range

 ___________________________________________ 
|                                           |
| >>_____discrete_subtype_indication_____>< |
|     |__range_definition_____________|     |
|___________________________________________|

EBNF    Uses    Top    Help

discriminant_part

 _________________________________________ 
|                                         |
| >>_____unknown_discriminant_part_____>< |
|     |__known_discriminant_part____|     |
|_________________________________________|

EBNF    Uses    Top    Help

unknown_discriminant_part

 __________________ 
|                  |
| >>__(__<>__)__>< |
|__________________|

EBNF    Uses    Top    Help

known_discriminant_part

 ____________________________________________________________________________________ 
|                                                                                    |
| >>__(__discriminant_specification____________________________________________)__>< |
|                                    |  <________________________________   |        |
|                                    |____;__discriminant_specification__|__|        |
|____________________________________________________________________________________|

EBNF    Uses    Top    Help

discriminant_specification

 ____________________________________________________________________________________________ 
|                                                                                            |
| >>_____defining_identifier_list__:__subtype_mark________________________________________>< |
|     |                                             |__:=__default_expression__|       |     |
|     |__defining_identifier_list__:__access_definition________________________________|     |
|                                                        |__:=__default_expression__|        |
|____________________________________________________________________________________________|

EBNF    Uses    Top    Help

default_expression

 ____________________ 
|                    |
| >>__expression__>< |
|____________________|

EBNF    Uses    Top    Help

discriminant_constraint

 ________________________________________________________________________________ 
|                                                                                |
| >>__(__discriminant_association__________________________________________)__>< |
|                                  |  <______________________________   |        |
|                                  |____,__discriminant_association__|__|        |
|________________________________________________________________________________|

EBNF    Uses    Top    Help

discriminant_association

 ____________________________________________________________________________________________________ 
|                                                                                                    |
| >>__________________________________________________________________________________expression__>< |
|     |__discriminant_selector_name____________________________________________=>__|                 |
|                                    |  <________________________________   |                        |
|                                    |____|__discriminant_selector_name__|__|                        |
|____________________________________________________________________________________________________|

EBNF    Uses    Top    Help

record_type_definition

 ________________________________________________________________________ 
|                                                                        |
| >>_______________________________________________record_definition__>< |
|     |__________________tagged__|  |__limited__|                        |
|        |__abstract__|                                                  |
|________________________________________________________________________|

EBNF    Uses    Top    Help

record_definition

 ___________________________________________________ 
|                                                   |
| >>_____record__component_list__end__record_____>< |
|     |__null__record_________________________|     |
|___________________________________________________|

EBNF    Uses    Top    Help

component_list

 _________________________________________________________ 
|                                                         |
| >>_____component_item________________________________>< |
|     |                  |  <_________________   |  |     |
|     |                  |____component_item__|__|  |     |
|     |_____________________________variant_part____|     |
|     |  |  <_________________   |                  |     |
|     |  |____component_item__|__|                  |     |
|     |__null__;____________________________________|     |
|_________________________________________________________|

EBNF    Uses    Top    Help

component_item

 _____________________________________ 
|                                     |
| >>_____component_declaration_____>< |
|     |__representation_clause__|     |
|_____________________________________|

EBNF    Uses    Top    Help

component_declaration

 ____________________________________________________________________________________________ 
|                                                                                            |
| >>__defining_identifier_list__:__component_definition________________________________;__>< |
|                                                        |__:=__default_expression__|        |
|____________________________________________________________________________________________|

EBNF    Uses    Top    Help

variant_part

 _______________________________________________________________________________________ 
|                                                                                       |
| >>__case__discriminant_direct_name__is__variant______________________end__case__;__>< |
|                                                  |  <__________   |                   |
|                                                  |____variant__|__|                   |
|_______________________________________________________________________________________|

EBNF    Uses    Top    Help

variant

 ________________________________________________________ 
|                                                        |
| >>__when__discrete_choice_list__=>__component_list__>< |
|________________________________________________________|

EBNF    Uses    Top    Help

discrete_choice_list

 ________________________________________________________ 
|                                                        |
| >>__discrete_choice_________________________________>< |
|                      |  <_____________________   |     |
|                      |____|__discrete_choice__|__|     |
|________________________________________________________|

EBNF    Uses    Top    Help

discrete_choice

 ______________________________ 
|                              |
| >>_____expression_________>< |
|     |__discrete_range__|     |
|     |__others__________|     |
|______________________________|

EBNF    Uses    Top    Help

record_extension_part

 _________________________________ 
|                                 |
| >>__with__record_definition__>< |
|_________________________________|

EBNF    Uses    Top    Help

access_type_definition

 _______________________________________________ 
|                                               |
| >>_____access_to_object_definition_________>< |
|     |__access_to_subprogram_definition__|     |
|_______________________________________________|

EBNF    Uses    Top    Help

access_to_object_definition

 ___________________________________________________________________ 
|                                                                   |
| >>__access_________________________________subtype_indication__>< |
|             |__general_access_modifier__|                         |
|___________________________________________________________________|

EBNF    Uses    Top    Help

general_access_modifier

 ________________________ 
|                        |
| >>_____all__________>< |
|     |__constant__|     |
|________________________|

EBNF    Uses    Top    Help

access_to_subprogram_definition

 _______________________________________________________________________________ 
|                                                                               |
| >>_____access___________________procedure__parameter_profile_______________>< |
|     |          |__protected__|                                          |     |
|     |__access___________________function__parameter_and_result_profile__|     |
|                |__protected__|                                                |
|_______________________________________________________________________________|

EBNF    Uses    Top    Help

access_definition

 ______________________________ 
|                              |
| >>__access__subtype_mark__>< |
|______________________________|

EBNF    Uses    Top    Help

incomplete_type_declaration

 _______________________________________________________________ 
|                                                               |
| >>__type__defining_identifier___________________________;__>< |
|                                |__discriminant_part__|        |
|_______________________________________________________________|

EBNF    Uses    Top    Help

declarative_part

 _____________________________________ 
|                                     |
| >>_______________________________>< |
|     |  <___________________   |     |
|     |____declarative_item__|__|     |
|_____________________________________|

EBNF    Uses    Top    Help

declarative_item

 ______________________________________ 
|                                      |
| >>_____basic_declarative_item_____>< |
|     |__body____________________|     |
|______________________________________|

EBNF    Uses    Top    Help

basic_declarative_item

 _____________________________________ 
|                                     |
| >>_____basic_declaration_________>< |
|     |__representation_clause__|     |
|     |__use_clause_____________|     |
|_____________________________________|

EBNF    Uses    Top    Help

body

 ___________________________ 
|                           |
| >>_____proper_body_____>< |
|     |__body_stub____|     |
|___________________________|

EBNF    Uses    Top    Help

proper_body

 _______________________________ 
|                               |
| >>_____subprogram_body_____>< |
|     |__package_body_____|     |
|     |__task_body________|     |
|     |__protected_body___|     |
|_______________________________|

EBNF    Uses    Top    Help

name

 ____________________________________ 
|                                    |
| >>_____direct_name______________>< |
|     |__explicit_dereference__|     |
|     |__indexed_component_____|     |
|     |__slice_________________|     |
|     |__selected_component____|     |
|     |__attribute_reference___|     |
|     |__type_conversion_______|     |
|     |__function_call_________|     |
|     |__character_literal_____|     |
|____________________________________|

EBNF    Uses    Top    Help

direct_name

 _______________________________ 
|                               |
| >>_____identifier__________>< |
|     |__operator_symbol__|     |
|_______________________________|

EBNF    Uses    Top    Help

prefix

 ____________________________________ 
|                                    |
| >>_____name_____________________>< |
|     |__implicit_dereference__|     |
|____________________________________|

EBNF    Uses    Top    Help

explicit_dereference

 ______________________ 
|                      |
| >>__name__.__all__>< |
|______________________|

EBNF    Uses    Top    Help

implicit_dereference

 ______________ 
|              |
| >>__name__>< |
|______________|

EBNF    Uses    Top    Help

indexed_component

 ____________________________________________________________ 
|                                                            |
| >>__prefix__(__expression____________________________)__>< |
|                            |  <________________   |        |
|                            |____,__expression__|__|        |
|____________________________________________________________|

EBNF    Uses    Top    Help

slice

 ______________________________________ 
|                                      |
| >>__prefix__(__discrete_range__)__>< |
|______________________________________|

EBNF    Uses    Top    Help

selected_component

 __________________________________ 
|                                  |
| >>__prefix__.__selector_name__>< |
|__________________________________|

EBNF    Uses    Top    Help

selector_name

 _________________________________ 
|                                 |
| >>_____identifier____________>< |
|     |__character_literal__|     |
|     |__operator_symbol____|     |
|_________________________________|

EBNF    Uses    Top    Help

attribute_reference

 _________________________________________ 
|                                         |
| >>__prefix__'__attribute_designator__>< |
|_________________________________________|

EBNF    Uses    Top    Help

attribute_designator

 _________________________________________________________ 
|                                                         |
| >>_____identifier____________________________________>< |
|     |              |__(__static_expression__)__|  |     |
|     |__Access_____________________________________|     |
|     |__Delta______________________________________|     |
|     |__Digits_____________________________________|     |
|_________________________________________________________|

EBNF    Uses    Top    Help

range_attribute_reference

 _______________________________________________ 
|                                               |
| >>__prefix__'__range_attribute_designator__>< |
|_______________________________________________|

EBNF    Uses    Top    Help

range_attribute_designator

 ______________________________________________ 
|                                              |
| >>__Range_________________________________>< |
|            |__(__static_expression__)__|     |
|______________________________________________|

EBNF    Uses    Top    Help

aggregate

 ___________________________________ 
|                                   |
| >>_____record_aggregate________>< |
|     |__extension_aggregate__|     |
|     |__array_aggregate______|     |
|___________________________________|

EBNF    Uses    Top    Help

record_aggregate

 _________________________________________________ 
|                                                 |
| >>__(__record_component_association_list__)__>< |
|_________________________________________________|

EBNF    Uses    Top    Help

record_component_association_list

 ________________________________________________________________________________________ 
|                                                                                        |
| >>_____record_component_association_________________________________________________>< |
|     |                                |  <__________________________________   |  |     |
|     |                                |____,__record_component_association__|__|  |     |
|     |__null__record______________________________________________________________|     |
|________________________________________________________________________________________|

EBNF    Uses    Top    Help

record_component_association

 _____________________________________________________ 
|                                                     |
| >>___________________________________expression__>< |
|     |__component_choice_list__=>__|                 |
|_____________________________________________________|

EBNF    Uses    Top    Help

component_choice_list

 ______________________________________________________________________________ 
|                                                                              |
| >>_____component_selector_name____________________________________________>< |
|     |                           |  <_____________________________   |  |     |
|     |                           |____|__component_selector_name__|__|  |     |
|     |__others__________________________________________________________|     |
|______________________________________________________________________________|

EBNF    Uses    Top    Help

extension_aggregate

 ______________________________________________________________________ 
|                                                                      |
| >>__(__ancestor_part__with__record_component_association_list__)__>< |
|______________________________________________________________________|

EBNF    Uses    Top    Help

ancestor_part

 ____________________________ 
|                            |
| >>_____expression_______>< |
|     |__subtype_mark__|     |
|____________________________|

EBNF    Uses    Top    Help

array_aggregate

 __________________________________________ 
|                                          |
| >>_____positional_array_aggregate_____>< |
|     |__named_array_aggregate_______|     |
|__________________________________________|

EBNF    Uses    Top    Help

positional_array_aggregate

 _____________________________________________________________________________________ 
|                                                                                     |
| >>_____(__expression__,__expression____________________________)_________________>< |
|     |                                |  <________________   |                 |     |
|     |                                |____,__expression__|__|                 |     |
|     |__(__expression____________________________,__others__=>__expression__)__|     |
|                       |  <________________   |                                      |
|                       |____,__expression__|__|                                      |
|_____________________________________________________________________________________|

EBNF    Uses    Top    Help

named_array_aggregate

 ______________________________________________________________________________________ 
|                                                                                      |
| >>__(__array_component_association_____________________________________________)__>< |
|                                     |  <_________________________________   |        |
|                                     |____,__array_component_association__|__|        |
|______________________________________________________________________________________|

EBNF    Uses    Top    Help

array_component_association

 ______________________________________________ 
|                                              |
| >>__discrete_choice_list__=>__expression__>< |
|______________________________________________|

EBNF    Uses    Top    Help

expression

 ________________________________________________________ 
|                                                        |
| >>_____relation_____________________________________>< |
|     |            |  <________________   |        |     |
|     |            |____and__relation__|__|        |     |
|     |__relation__________________________________|     |
|     |            |  <______________________   |  |     |
|     |            |____and__then__relation__|__|  |     |
|     |__relation__________________________________|     |
|     |            |  <_______________   |         |     |
|     |            |____or__relation__|__|         |     |
|     |__relation__________________________________|     |
|     |            |  <_____________________   |   |     |
|     |            |____or__else__relation__|__|   |     |
|     |__relation__________________________________|     |
|                  |  <________________   |              |
|                  |____xor__relation__|__|              |
|________________________________________________________|

EBNF    Uses    Top    Help

relation

 _______________________________________________________________________________ 
|                                                                               |
| >>_____simple_expression___________________________________________________>< |
|     |                     |__relational_operator__simple_expression__|  |     |
|     |__simple_expression_____________in__range_definition_______________|     |
|     |                     |__not__|                                     |     |
|     |__simple_expression_____________in__subtype_mark___________________|     |
|                           |__not__|                                           |
|_______________________________________________________________________________|

EBNF    Uses    Top    Help

simple_expression

 ____________________________________________________________________________________ 
|                                                                                    |
| >>_______________________________term___________________________________________>< |
|     |__unary_adding_operator__|        |  <_______________________________   |     |
|                                        |____binary_adding_operator__term__|__|     |
|____________________________________________________________________________________|

EBNF    Uses    Top    Help

term

 _________________________________________________________ 
|                                                         |
| >>__factor___________________________________________>< |
|             |  <_______________________________   |     |
|             |____multiplying_operator__factor__|__|     |
|_________________________________________________________|

EBNF    Uses    Top    Help

factor

 __________________________________________ 
|                                          |
| >>_____primary________________________>< |
|     |           |__**__primary__|  |     |
|     |__abs__primary________________|     |
|     |__not__primary________________|     |
|__________________________________________|

EBNF    Uses    Top    Help

primary

 ____________________________________ 
|                                    |
| >>_____numeric_literal__________>< |
|     |__null__________________|     |
|     |__string_literal________|     |
|     |__aggregate_____________|     |
|     |__name__________________|     |
|     |__qualified_expression__|     |
|     |__allocator_____________|     |
|     |__(__expression__)______|     |
|____________________________________|

EBNF    Uses    Top    Help

logical_operator

 ___________________ 
|                   |
| >>_____and_____>< |
|     |__or___|     |
|     |__xor__|     |
|___________________|

EBNF    Uses    Top    Help

relational_operator

 __________________ 
|                  |
| >>_____=______>< |
|     |__/=__|     |
|     |__<___|     |
|     |__<=__|     |
|     |__>___|     |
|     |__>=__|     |
|__________________|

EBNF    Uses    Top    Help

binary_adding_operator

 _________________ 
|                 |
| >>_____+_____>< |
|     |__-__|     |
|     |__&__|     |
|_________________|

EBNF    Uses    Top    Help

unary_adding_operator

 __________________ 
|                  |
| >>_____+______>< |
|     |__--__|     |
|__________________|

EBNF    Uses    Top    Help

multiplying_operator

 ___________________ 
|                   |
| >>_____*_______>< |
|     |__/____|     |
|     |__mod__|     |
|     |__rem__|     |
|___________________|

EBNF    Uses    Top    Help

highest_precedence_operator

 ___________________ 
|                   |
| >>_____**______>< |
|     |__abs__|     |
|     |__not__|     |
|___________________|

EBNF    Uses    Top    Help

type_conversion

 ______________________________________________ 
|                                              |
| >>_____subtype_mark__(__expression__)_____>< |
|     |__subtype_mark__(__name__)________|     |
|______________________________________________|

EBNF    Uses    Top    Help

qualified_expression

 _________________________________________________ 
|                                                 |
| >>_____subtype_mark__'__(__expression__)_____>< |
|     |__subtype_mark__'__aggregate_________|     |
|_________________________________________________|

EBNF    Uses    Top    Help

allocator

 _________________________________________ 
|                                         |
| >>_____new__subtype_indication_______>< |
|     |__new__qualified_expression__|     |
|_________________________________________|

EBNF    Uses    Top    Help

sequence_of_statements

 _________________________________________ 
|                                         |
| >>__statement________________________>< |
|                |  <____________   |     |
|                |____statement__|__|     |
|_________________________________________|

EBNF    Uses    Top    Help

statement

 ____________________________________________________ 
|                                                    |
| >>_______________________simple_statement_______>< |
|     |  |  <________   |                      |     |
|     |  |____label__|__|                      |     |
|     |____________________compound_statement__|     |
|        |  <________   |                            |
|        |____label__|__|                            |
|____________________________________________________|

EBNF    Uses    Top    Help

simple_statement

 ________________________________________ 
|                                        |
| >>_____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____________|     |
|________________________________________|

EBNF    Uses    Top    Help

compound_statement

 ________________________________ 
|                                |
| >>_____if_statement_________>< |
|     |__case_statement____|     |
|     |__loop_statement____|     |
|     |__block_statement___|     |
|     |__accept_statement__|     |
|     |__select_statement__|     |
|________________________________|

EBNF    Uses    Top    Help

null_statement

 _________________ 
|                 |
| >>__null__;__>< |
|_________________|

EBNF    Uses    Top    Help

label

 ____________________________________________ 
|                                            |
| >>__<<__label_statement_identifier__>>__>< |
|____________________________________________|

EBNF    Uses    Top    Help

statement_identifier

 _____________________ 
|                     |
| >>__direct_name__>< |
|_____________________|

EBNF    Uses    Top    Help

assignment_statement

 __________________________________________ 
|                                          |
| >>__variable_name__:=__expression__;__>< |
|__________________________________________|

EBNF    Uses    Top    Help

if_statement

 ________________________________________________________________________________________________________________________________________________________________ 
|                                                                                                                                                                |
| >>__if__condition__then__sequence_of_statements_________________________________________________________________________________________________end__if__;__>< |
|                                                  |  <_________________________________________________   |  |__else__sequence_of_statements__|                 |
|                                                  |____elsif__condition__then__sequence_of_statements__|__|                                                     |
|________________________________________________________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

condition

 ____________________________ 
|                            |
| >>__boolean_expression__>< |
|____________________________|

EBNF    Uses    Top    Help

case_statement

 _______________________________________________________________________________________________________________ 
|                                                                                                               |
| >>__case__expression__is__case_statement_alternative_________________________________________end__case__;__>< |
|                                                       |  <_____________________________   |                   |
|                                                       |____case_statement_alternative__|__|                   |
|_______________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

case_statement_alternative

 ________________________________________________________________ 
|                                                                |
| >>__when__discrete_choice_list__=>__sequence_of_statements__>< |
|________________________________________________________________|

EBNF    Uses    Top    Help

loop_statement

 _______________________________________________________________________________________________________________________________________ 
|                                                                                                                                       |
| >>______________________________________________________________loop__sequence_of_statements__end__loop_________________________;__>< |
|     |__loop_statement_identifier__:__|  |__iteration_scheme__|                                           |__loop_identifier__|        |
|_______________________________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

iteration_scheme

 _________________________________________________ 
|                                                 |
| >>_____while__condition______________________>< |
|     |__for__loop_parameter_specification__|     |
|_________________________________________________|

EBNF    Uses    Top    Help

loop_parameter_specification

 _____________________________________________________________________________ 
|                                                                             |
| >>__defining_identifier__in_________________discrete_subtype_definition__>< |
|                              |__reverse__|                                  |
|_____________________________________________________________________________|

EBNF    Uses    Top    Help

block_statement

 _____________________________________________________________________________________________________________________________________________________ 
|                                                                                                                                                     |
| >>________________________________________________________________________begin__handled_sequence_of_statements__end__________________________;__>< |
|     |__block_statement_identifier__:__|  |__declare__declarative_part__|                                              |__block_identifier__|        |
|_____________________________________________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

exit_statement

 _________________________________________________________ 
|                                                         |
| >>__exit__________________________________________;__>< |
|           |__loop_name__|  |__when__condition__|        |
|_________________________________________________________|

EBNF    Uses    Top    Help

goto_statement

 _____________________________ 
|                             |
| >>__goto__label_name__;__>< |
|_____________________________|

EBNF    Uses    Top    Help

subprogram_declaration

 _____________________________________ 
|                                     |
| >>__subprogram_specification__;__>< |
|_____________________________________|

EBNF    Uses    Top    Help

abstract_subprogram_declaration

 ___________________________________________________ 
|                                                   |
| >>__subprogram_specification__is__abstract__;__>< |
|___________________________________________________|

EBNF    Uses    Top    Help

subprogram_specification

 ___________________________________________________________________________ 
|                                                                           |
| >>_____procedure__defining_program_unit_name__parameter_profile________>< |
|     |__function__defining_designator__parameter_and_result_profile__|     |
|___________________________________________________________________________|

EBNF    Uses    Top    Help

designator

 _____________________________________________________ 
|                                                     |
| >>________________________________identifier_____>< |
|     |  |__parent_unit_name__.__|              |     |
|     |__operator_symbol________________________|     |
|_____________________________________________________|

EBNF    Uses    Top    Help

defining_designator

 __________________________________________ 
|                                          |
| >>_____defining_program_unit_name_____>< |
|     |__defining_operator_symbol____|     |
|__________________________________________|

EBNF    Uses    Top    Help

defining_program_unit_name

 ________________________________________________________ 
|                                                        |
| >>_____________________________defining_identifier__>< |
|     |__parent_unit_name__.__|                          |
|________________________________________________________|

EBNF    Uses    Top    Help

operator_symbol

 ________________________ 
|                        |
| >>__string_literal__>< |
|________________________|

EBNF    Uses    Top    Help

defining_operator_symbol

 _________________________ 
|                         |
| >>__operator_symbol__>< |
|_________________________|

EBNF    Uses    Top    Help

parameter_profile

 ___________________________ 
|                           |
| >>_____________________>< |
|     |__formal_part__|     |
|___________________________|

EBNF    Uses    Top    Help

parameter_and_result_profile

 _________________________________________________ 
|                                                 |
| >>_____________________return__subtype_mark__>< |
|     |__formal_part__|                           |
|_________________________________________________|

EBNF    Uses    Top    Help

formal_part

 ______________________________________________________________________________ 
|                                                                              |
| >>__(__parameter_specification_________________________________________)__>< |
|                                 |  <_____________________________   |        |
|                                 |____;__parameter_specification__|__|        |
|______________________________________________________________________________|

EBNF    Uses    Top    Help

parameter_specification

 _____________________________________________________________________________________________ 
|                                                                                             |
| >>_____defining_identifier_list__:__mode__subtype_mark___________________________________>< |
|     |                                                   |__:=__default_expression__|  |     |
|     |__defining_identifier_list__:__access_definition_________________________________|     |
|                                                        |__:=__default_expression__|         |
|_____________________________________________________________________________________________|

EBNF    Uses    Top    Help

mode

 ________________________ 
|                        |
| >>__________________>< |
|     |  |__in__|  |     |
|     |__in__out___|     |
|     |__out_______|     |
|________________________|

EBNF    Uses    Top    Help

subprogram_body

 _________________________________________________________________________________________________________________________ 
|                                                                                                                         |
| >>__subprogram_specification__is__declarative_part__begin__handled_sequence_of_statements__end____________________;__>< |
|                                                                                                 |__designator__|        |
|_________________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

procedure_call_statement

 __________________________________________________________ 
|                                                          |
| >>_____procedure_name__;______________________________>< |
|     |__procedure_prefix__actual_parameter_part__;__|     |
|__________________________________________________________|

EBNF    Uses    Top    Help

function_call

 ______________________________________________________ 
|                                                      |
| >>_____function_name______________________________>< |
|     |__function_prefix__actual_parameter_part__|     |
|______________________________________________________|

EBNF    Uses    Top    Help

actual_parameter_part

 __________________________________________________________________________ 
|                                                                          |
| >>__(__parameter_association_______________________________________)__>< |
|                               |  <___________________________   |        |
|                               |____,__parameter_association__|__|        |
|__________________________________________________________________________|

EBNF    Uses    Top    Help

parameter_association

 _____________________________________________________________________________ 
|                                                                             |
| >>____________________________________________explicit_actual_parameter__>< |
|     |__formal_parameter_selector_name__=>__|                                |
|_____________________________________________________________________________|

EBNF    Uses    Top    Help

explicit_actual_parameter

 _____________________________ 
|                             |
| >>_____expression________>< |
|     |__variable_name__|     |
|_____________________________|

EBNF    Uses    Top    Help

return_statement

 _____________________________________ 
|                                     |
| >>__return____________________;__>< |
|             |__expression__|        |
|_____________________________________|

EBNF    Uses    Top    Help

package_declaration

 __________________________________ 
|                                  |
| >>__package_specification__;__>< |
|__________________________________|

EBNF    Uses    Top    Help

package_specification

 ________________________________________________________________________________________________________________________________________________________________________________________ 
|                                                                                                                                                                                        |
| >>__package__defining_program_unit_name__is_______________________________________________________________________________________end_______________________________________________>< |
|                                              |  <_________________________   |  |__private_____________________________________|       |_____________________________identifier__|     |
|                                              |____basic_declarative_item__|__|              |  <_________________________   |             |__parent_unit_name__.__|                    |
|                                                                                             |____basic_declarative_item__|__|                                                          |
|________________________________________________________________________________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

package_body

 ___________________________________________________________________________________________________________________________________________________________________________ 
|                                                                                                                                                                           |
| >>__package__body__defining_program_unit_name__is__declarative_part_______________________________________________end_______________________________________________;__>< |
|                                                                      |__begin__handled_sequence_of_statements__|       |_____________________________identifier__|        |
|                                                                                                                           |__parent_unit_name__.__|                       |
|___________________________________________________________________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

private_type_declaration

 _________________________________________________________________________________________________________________________ 
|                                                                                                                         |
| >>__type__defining_identifier___________________________is_______________________________________________private__;__>< |
|                                |__discriminant_part__|      |__________________tagged__|  |__limited__|                 |
|                                                                |__abstract__|                                           |
|_________________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

private_extension_declaration

 ____________________________________________________________________________________________________________________________________ 
|                                                                                                                                    |
| >>__type__defining_identifier___________________________is__________________new__ancestor_subtype_indication__with__private__;__>< |
|                                |__discriminant_part__|      |__abstract__|                                                         |
|____________________________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

use_clause

 __________________________________ 
|                                  |
| >>_____use_package_clause_____>< |
|     |__use_type_clause_____|     |
|__________________________________|

EBNF    Uses    Top    Help

use_package_clause

 __________________________________________________________ 
|                                                          |
| >>__use__package_name______________________________;__>< |
|                        |  <__________________   |        |
|                        |____,__package_name__|__|        |
|__________________________________________________________|

EBNF    Uses    Top    Help

use_type_clause

 ________________________________________________________________ 
|                                                                |
| >>__use__type__subtype_mark______________________________;__>< |
|                              |  <__________________   |        |
|                              |____,__subtype_mark__|__|        |
|________________________________________________________________|

EBNF    Uses    Top    Help

renaming_declaration

 _______________________________________________ 
|                                               |
| >>_____object_renaming_declaration_________>< |
|     |__exception_renaming_declaration___|     |
|     |__package_renaming_declaration_____|     |
|     |__subprogram_renaming_declaration__|     |
|     |__generic_renaming_declaration_____|     |
|_______________________________________________|

EBNF    Uses    Top    Help

object_renaming_declaration

 _______________________________________________________________________ 
|                                                                       |
| >>__defining_identifier__:__subtype_mark__renames__object_name__;__>< |
|_______________________________________________________________________|

EBNF    Uses    Top    Help

exception_renaming_declaration

 _______________________________________________________________________ 
|                                                                       |
| >>__defining_identifier__:__exception__renames__exception_name__;__>< |
|_______________________________________________________________________|

EBNF    Uses    Top    Help

package_renaming_declaration

 _____________________________________________________________________ 
|                                                                     |
| >>__package__defining_program_unit_name__renamespackage_name__;__>< |
|_____________________________________________________________________|

EBNF    Uses    Top    Help

subprogram_renaming_declaration

 ____________________________________________________________________ 
|                                                                    |
| >>__subprogram_specification__renames__callable_entity_name__;__>< |
|____________________________________________________________________|

EBNF    Uses    Top    Help

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__;____|     |
|__________________________________________________________________________________________________|

EBNF    Uses    Top    Help

task_type_declaration

 ______________________________________________________________________________________________________ 
|                                                                                                      |
| >>__task__type__defining_identifier____________________________________________________________;__>< |
|                                      |__known_discriminant_part__|  |__is__task_definition__|        |
|______________________________________________________________________________________________________|

EBNF    Uses    Top    Help

single_task_declaration

 _________________________________________________________________ 
|                                                                 |
| >>__task__defining_identifier_____________________________;__>< |
|                                |__is__task_definition__|        |
|_________________________________________________________________|

EBNF    Uses    Top    Help

task_definition

 _______________________________________________________________________________________________ 
|                                                                                               |
| >>_____________________________________________________________end_________________________>< |
|     |  <____________   |  |__private________________________|       |__task_identifier__|     |
|     |____task_item__|__|              |  <____________   |                                    |
|                                       |____task_item__|__|                                    |
|_______________________________________________________________________________________________|

EBNF    Uses    Top    Help

task_item

 _____________________________________ 
|                                     |
| >>_____entry_declaration_________>< |
|     |__representation_clause__|     |
|_____________________________________|

EBNF    Uses    Top    Help

task_body

 _____________________________________________________________________________________________________________________________________ 
|                                                                                                                                     |
| >>__task__body__defining_identifier__is__declarative_part__begin__handled_sequence_of_statements__end_________________________;__>< |
|                                                                                                        |__task_identifier__|        |
|_____________________________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

protected_type_declaration

 __________________________________________________________________________________________________________ 
|                                                                                                          |
| >>__protected__type__defining_identifier_________________________________is__protected_definition__;__>< |
|                                           |__known_discriminant_part__|                                  |
|__________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

single_protected_declaration

 _____________________________________________________________________ 
|                                                                     |
| >>__protected__defining_identifier__is__protected_definition__;__>< |
|_____________________________________________________________________|

EBNF    Uses    Top    Help

protected_definition

 ______________________________________________________________________________________________________________________________________________ 
|                                                                                                                                              |
| >>_______________________________________________________________________________________________________end______________________________>< |
|     |  <__________________________________   |  |__private____________________________________________|       |__protected_identifier__|     |
|     |____protected_operation_declaration__|__|              |  <________________________________   |                                         |
|                                                             |____protected_element_declaration__|__|                                         |
|______________________________________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

protected_operation_declaration

 ______________________________________ 
|                                      |
| >>_____subprogram_declaration_____>< |
|     |__entry_declaration_______|     |
|     |__representation_clause___|     |
|______________________________________|

EBNF    Uses    Top    Help

protected_element_declaration

 _______________________________________________ 
|                                               |
| >>_____protected_operation_declaration_____>< |
|     |__component_declaration____________|     |
|_______________________________________________|

EBNF    Uses    Top    Help

protected_body

 ___________________________________________________________________________________________________________________________ 
|                                                                                                                           |
| >>__protected__body__defining_identifier__is_______________________________________end______________________________;__>< |
|                                               |  <___________________________   |       |__protected_identifier__|        |
|                                               |____protected_operation_item__|__|                                         |
|___________________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

protected_operation_item

 ______________________________________ 
|                                      |
| >>_____subprogram_declaration_____>< |
|     |__subprogram_body_________|     |
|     |__entry_body______________|     |
|     |__representation_clause___|     |
|______________________________________|

EBNF    Uses    Top    Help

entry_declaration

 ___________________________________________________________________________________________________ 
|                                                                                                   |
| >>__entry__defining_identifier___________________________________________parameter_profile__;__>< |
|                                 |__(__discrete_subtype_definition__)__|                           |
|___________________________________________________________________________________________________|

EBNF    Uses    Top    Help

accept_statement

 _________________________________________________________________________________________________________________________________________________________ 
|                                                                                                                                                         |
| >>__accept__entry_direct_name___________________________parameter_profile_________________________________________________________________________;__>< |
|                                |__(__entry_index__)__|                     |__do__handled_sequence_of_statements__end__________________________|        |
|                                                                                                                        |__entry_identifier__|           |
|_________________________________________________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

entry_index

 ____________________ 
|                    |
| >>__expression__>< |
|____________________|

EBNF    Uses    Top    Help

entry_body

 ________________________________________________________________________________________________________________________________________________________________________ 
|                                                                                                                                                                        |
| >>__entry__defining_identifier__entry_body_formal_part__entry_barrier__is__declarative_part__begin__handled_sequence_of_statements__end__________________________;__>< |
|                                                                                                                                          |__entry_identifier__|        |
|________________________________________________________________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

entry_body_formal_part

 __________________________________________________________________ 
|                                                                  |
| >>_________________________________________parameter_profile__>< |
|     |__(__entry_index_specification__)__|                        |
|__________________________________________________________________|

EBNF    Uses    Top    Help

entry_barrier

 _________________________ 
|                         |
| >>__when__condition__>< |
|_________________________|

EBNF    Uses    Top    Help

entry_index_specification

 ___________________________________________________________________ 
|                                                                   |
| >>__for__defining_identifier__in__discrete_subtype_definition__>< |
|___________________________________________________________________|

EBNF    Uses    Top    Help

entry_call_statement

 ____________________________________________________ 
|                                                    |
| >>__entry_name_______________________________;__>< |
|                 |__actual_parameter_part__|        |
|____________________________________________________|

EBNF    Uses    Top    Help

requeue_statement

 ___________________________________________________ 
|                                                   |
| >>__requeue__entry_name_____________________;__>< |
|                          |__with__abort__|        |
|___________________________________________________|

EBNF    Uses    Top    Help

delay_statement

 ________________________________________ 
|                                        |
| >>_____delay_until_statement________>< |
|     |__delay_relative_statement__|     |
|________________________________________|

EBNF    Uses    Top    Help

delay_until_statement

 ___________________________________________ 
|                                           |
| >>__delay__until__delay_expression__;__>< |
|___________________________________________|

EBNF    Uses    Top    Help

delay_relative_statement

 ____________________________________ 
|                                    |
| >>__delay__delay_expression__;__>< |
|____________________________________|

EBNF    Uses    Top    Help

select_statement

 ______________________________________ 
|                                      |
| >>_____selective_accept___________>< |
|     |__timed_entry_call________|     |
|     |__conditional_entry_call__|     |
|     |__asynchronous_select_____|     |
|______________________________________|

EBNF    Uses    Top    Help

selective_accept

 _____________________________________________________________________________________________________________________________________________________ 
|                                                                                                                                                     |
| >>__select_______________select_alternative______________________________________________________________________________________end__select__;__>< |
|             |__guard__|                      |  <______________________________________   |  |__else__sequence_of_statements__|                     |
|                                              |____or_______________select_alternative__|__|                                                         |
|                                                       |__guard__|                                                                                   |
|_____________________________________________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

guard

 _____________________________ 
|                             |
| >>__when__condition__=>__>< |
|_____________________________|

EBNF    Uses    Top    Help

select_alternative

 _____________________________________ 
|                                     |
| >>_____accept_alternative________>< |
|     |__delay_alternative______|     |
|     |__terminate_alternative__|     |
|_____________________________________|

EBNF    Uses    Top    Help

accept_alternative

 ________________________________________________________ 
|                                                        |
| >>__accept_statement________________________________>< |
|                       |__sequence_of_statements__|     |
|________________________________________________________|

EBNF    Uses    Top    Help

delay_alternative

 _______________________________________________________ 
|                                                       |
| >>__delay_statement________________________________>< |
|                      |__sequence_of_statements__|     |
|_______________________________________________________|

EBNF    Uses    Top    Help

terminate_alternative

 ______________________ 
|                      |
| >>__terminate__;__>< |
|______________________|

EBNF    Uses    Top    Help

timed_entry_call

 _______________________________________________________________________________ 
|                                                                               |
| >>__select__entry_call_alternative__or__delay_alternative__end__select__;__>< |
|_______________________________________________________________________________|

EBNF    Uses    Top    Help

entry_call_alternative

 ____________________________________________________________ 
|                                                            |
| >>__entry_call_statement________________________________>< |
|                           |__sequence_of_statements__|     |
|____________________________________________________________|

EBNF    Uses    Top    Help

conditional_entry_call

 ______________________________________________________________________________________ 
|                                                                                      |
| >>__select__entry_call_alternative__else__sequence_of_statements__end__select__;__>< |
|______________________________________________________________________________________|

EBNF    Uses    Top    Help

asynchronous_select

 _____________________________________________________________________________________ 
|                                                                                     |
| >>__select__triggering_alternative__then__abort__abortable_part__end__select__;__>< |
|_____________________________________________________________________________________|

EBNF    Uses    Top    Help

triggering_alternative

 ____________________________________________________________ 
|                                                            |
| >>__triggering_statement________________________________>< |
|                           |__sequence_of_statements__|     |
|____________________________________________________________|

EBNF    Uses    Top    Help

triggering_statement

 ____________________________________ 
|                                    |
| >>_____entry_call_statement_____>< |
|     |__delay_statement_______|     |
|____________________________________|

EBNF    Uses    Top    Help

abortable_part

 ________________________________ 
|                                |
| >>__sequence_of_statements__>< |
|________________________________|

EBNF    Uses    Top    Help

abort_statement

 ______________________________________________________ 
|                                                      |
| >>__abort__task_name___________________________;__>< |
|                       |  <_______________   |        |
|                       |____,__task_name__|__|        |
|______________________________________________________|

EBNF    Uses    Top    Help

compilation

 _____________________________________ 
|                                     |
| >>_______________________________>< |
|     |  <___________________   |     |
|     |____compilation_unit__|__|     |
|_____________________________________|

EBNF    Uses    Top    Help

compilation_unit

 ____________________________________________ 
|                                            |
| >>_____context_clause__library_item_____>< |
|     |__context_clause__subunit_______|     |
|____________________________________________|

EBNF    Uses    Top    Help

library_item

 ________________________________________________________________ 
|                                                                |
| >>____________________library_unit_declaration______________>< |
|     |  |__private__|                                     |     |
|     |__library_unit_body_________________________________|     |
|     |_________________library_unit_renaming_declaration__|     |
|        |__private__|                                           |
|________________________________________________________________|

EBNF    Uses    Top    Help

library_unit_declaration

 ______________________________________ 
|                                      |
| >>_____subprogram_declaration_____>< |
|     |__package_declaration_____|     |
|     |__generic_declaration_____|     |
|     |__generic_instantiation___|     |
|______________________________________|

EBNF    Uses    Top    Help

library_unit_renaming_declaration

 _______________________________________________ 
|                                               |
| >>_____package_renaming_declaration________>< |
|     |__generic_renaming_declaration_____|     |
|     |__subprogram_renaming_declaration__|     |
|_______________________________________________|

EBNF    Uses    Top    Help

library_unit_body

 _______________________________ 
|                               |
| >>_____subprogram_body_____>< |
|     |__package_body_____|     |
|_______________________________|

EBNF    Uses    Top    Help

parent_unit_name

 ______________ 
|              |
| >>__name__>< |
|______________|

EBNF    Uses    Top    Help

context_clause

 _________________________________ 
|                                 |
| >>___________________________>< |
|     |  <_______________   |     |
|     |____context_item__|__|     |
|_________________________________|

EBNF    Uses    Top    Help

context_item

 ___________________________ 
|                           |
| >>_____with_clause_____>< |
|     |__use_clause___|     |
|___________________________|

EBNF    Uses    Top    Help

with_clause

 _____________________________________________________________________ 
|                                                                     |
| >>__with__library_unit_name___________________________________;__>< |
|                              |  <_______________________   |        |
|                              |____,__library_unit_name__|__|        |
|_____________________________________________________________________|

EBNF    Uses    Top    Help

body_stub

 ____________________________________ 
|                                    |
| >>_____subprogram_body_stub_____>< |
|     |__package_body_stub_____|     |
|     |__task_body_stub________|     |
|     |__protected_body_stub___|     |
|____________________________________|

EBNF    Uses    Top    Help

subprogram_body_stub

 ___________________________________________________ 
|                                                   |
| >>__subprogram_specification__is__separate__;__>< |
|___________________________________________________|

EBNF    Uses    Top    Help

package_body_stub

 _____________________________________________________________ 
|                                                             |
| >>__package__body__defining_identifier__is__separate__;__>< |
|_____________________________________________________________|

EBNF    Uses    Top    Help

task_body_stub

 __________________________________________________________ 
|                                                          |
| >>__task__body__defining_identifier__is__separate__;__>< |
|__________________________________________________________|

EBNF    Uses    Top    Help

protected_body_stub

 _______________________________________________________________ 
|                                                               |
| >>__protected__body__defining_identifier__is__separate__;__>< |
|_______________________________________________________________|

EBNF    Uses    Top    Help

subunit

 _______________________________________________________ 
|                                                       |
| >>__separate__(__parent_unit_name__)__proper_body__>< |
|_______________________________________________________|

EBNF    Uses    Top    Help

exception_declaration

 ___________________________________________________ 
|                                                   |
| >>__defining_identifier_list__:__exception__;__>< |
|___________________________________________________|

EBNF    Uses    Top    Help

handled_sequence_of_statements

 __________________________________________________________________________________________________ 
|                                                                                                  |
| >>__sequence_of_statements____________________________________________________________________>< |
|                             |__exception__exception_handler________________________________|     |
|                                                              |  <____________________   |        |
|                                                              |____exception_handler__|__|        |
|__________________________________________________________________________________________________|

EBNF    Uses    Top    Help

exception_handler

 _____________________________________________________________________________________________________________________________________ 
|                                                                                                                                     |
| >>__when___________________________________________exception_choice__________________________________=>__sequence_of_statements__>< |
|           |__choice_parameter_specification__:__|                    |  <______________________   |                                 |
|                                                                      |____|__exception_choice__|__|                                 |
|_____________________________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

choice_parameter_specification

 _____________________________ 
|                             |
| >>__defining_identifier__>< |
|_____________________________|

EBNF    Uses    Top    Help

exception_choice

 ______________________________ 
|                              |
| >>_____exception_name_____>< |
|     |__others__________|     |
|______________________________|

EBNF    Uses    Top    Help

raise_statement

 ________________________________________ 
|                                        |
| >>__raise________________________;__>< |
|            |__exception_name__|        |
|________________________________________|

EBNF    Uses    Top    Help

generic_declaration

 ______________________________________________ 
|                                              |
| >>_____generic_subprogram_declaration_____>< |
|     |__generic_package_declaration_____|     |
|______________________________________________|

EBNF    Uses    Top    Help

generic_subprogram_declaration

 __________________________________________________________ 
|                                                          |
| >>__generic_formal_part__subprogram_specification__;__>< |
|__________________________________________________________|

EBNF    Uses    Top    Help

generic_package_declaration

 _______________________________________________________ 
|                                                       |
| >>__generic_formal_part__package_specification__;__>< |
|_______________________________________________________|

EBNF    Uses    Top    Help

generic_formal_part

 ________________________________________________________________________ 
|                                                                        |
| >>__generic_________________________________________________________>< |
|              |  <_____________________________________________   |     |
|              |_______generic_formal_parameter_declaration_____|__|     |
|                   |__use_clause____________________________|           |
|________________________________________________________________________|

EBNF    Uses    Top    Help

generic_formal_parameter_declaration

 _____________________________________________ 
|                                             |
| >>_____formal_object_declaration_________>< |
|     |__formal_type_declaration________|     |
|     |__formal_subprogram_declaration__|     |
|     |__formal_package_declaration_____|     |
|_____________________________________________|

EBNF    Uses    Top    Help

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__|                    |
|____________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

generic_actual_part

 ______________________________________________________________________ 
|                                                                      |
| >>__(__generic_association_____________________________________)__>< |
|                             |  <_________________________   |        |
|                             |____,__generic_association__|__|        |
|______________________________________________________________________|

EBNF    Uses    Top    Help

generic_association

 _____________________________________________________________________________________________ 
|                                                                                             |
| >>____________________________________________________explicit_generic_actual_parameter__>< |
|     |__generic_formal_parameter_selector_name__=>__|                                        |
|_____________________________________________________________________________________________|

EBNF    Uses    Top    Help

explicit_generic_actual_parameter

 _____________________________________ 
|                                     |
| >>_____expression________________>< |
|     |__variable_name__________|     |
|     |__subprogram_name________|     |
|     |__entry_name_____________|     |
|     |__subtype_mark___________|     |
|     |__package_instance_name__|     |
|_____________________________________|

EBNF    Uses    Top    Help

formal_object_declaration

 __________________________________________________________________________________________ 
|                                                                                          |
| >>__defining_identifier_list__:__mode__subtype_mark________________________________;__>< |
|                                                      |__:=__default_expression__|        |
|__________________________________________________________________________________________|

EBNF    Uses    Top    Help

formal_type_declaration

 ___________________________________________________________________________________________ 
|                                                                                           |
| >>__type__defining_identifier___________________________is__formal_type_definition__;__>< |
|                                |__discriminant_part__|                                    |
|___________________________________________________________________________________________|

EBNF    Uses    Top    Help

formal_type_definition

 ______________________________________________________ 
|                                                      |
| >>_____formal_private_type_definition_____________>< |
|     |__formal_derived_type_definition__________|     |
|     |__formal_discrete_type_definition_________|     |
|     |__formal_signed_integer_type_definition___|     |
|     |__formal_modular_type_definition__________|     |
|     |__formal_floating_point_definition________|     |
|     |__formal_ordinary_fixed_point_definition__|     |
|     |__formal_decimal_fixed_point_definition___|     |
|     |__formal_array_type_definition____________|     |
|     |__formal_access_type_definition___________|     |
|______________________________________________________|

EBNF    Uses    Top    Help

formal_private_type_definition

 ______________________________________________________________ 
|                                                              |
| >>_______________________________________________private__>< |
|     |__________________tagged__|  |__limited__|              |
|        |__abstract__|                                        |
|______________________________________________________________|

EBNF    Uses    Top    Help

formal_derived_type_definition

 ________________________________________________________________ 
|                                                                |
| >>__________________new__subtype_mark_______________________>< |
|     |__abstract__|                     |__with__private__|     |
|________________________________________________________________|

EBNF    Uses    Top    Help

formal_discrete_type_definition

 __________________ 
|                  |
| >>__(__<>__)__>< |
|__________________|

EBNF    Uses    Top    Help

formal_signed_integer_type_definition

 ___________________ 
|                   |
| >>__range__<>__>< |
|___________________|

EBNF    Uses    Top    Help

formal_modular_type_definition

 _________________ 
|                 |
| >>__mod__<>__>< |
|_________________|

EBNF    Uses    Top    Help

formal_floating_point_definition

 ____________________ 
|                    |
| >>__digits__<>__>< |
|____________________|

EBNF    Uses    Top    Help

formal_ordinary_fixed_point_definition

 ___________________ 
|                   |
| >>__delta__<>__>< |
|___________________|

EBNF    Uses    Top    Help

formal_decimal_fixed_point_definition

 _______________________________ 
|                               |
| >>__delta__<>__digits__<>__>< |
|_______________________________|

EBNF    Uses    Top    Help

formal_array_type_definition

 _______________________________ 
|                               |
| >>__array_type_definition__>< |
|_______________________________|

EBNF    Uses    Top    Help

formal_access_type_definition

 ________________________________ 
|                                |
| >>__access_type_definition__>< |
|________________________________|

EBNF    Uses    Top    Help

formal_subprogram_declaration

 _________________________________________________________________________ 
|                                                                         |
| >>__with__subprogram_specification________________________________;__>< |
|                                     |__is__subprogram_default__|        |
|_________________________________________________________________________|

EBNF    Uses    Top    Help

subprogram_default

 ____________________________ 
|                            |
| >>_____default_name_____>< |
|     |__<>____________|     |
|____________________________|

EBNF    Uses    Top    Help

default_name

 ______________ 
|              |
| >>__name__>< |
|______________|

EBNF    Uses    Top    Help

formal_package_declaration

 __________________________________________________________________________________________________________ 
|                                                                                                          |
| >>__with__package__defining_identifier__is__new__generic_package_name__formal_package_actual_part__;__>< |
|__________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

formal_package_actual_part

 _________________________________________ 
|                                         |
| >>_____(__<>__)______________________>< |
|     |_____________________________|     |
|        |__generic_actual_part__|        |
|_________________________________________|

EBNF    Uses    Top    Help

representation_clause

 _________________________________________________ 
|                                                 |
| >>_____attribute_definition_clause___________>< |
|     |__enumeration_representation_clause__|     |
|     |__record_representation_clause_______|     |
|     |__at_clause__________________________|     |
|_________________________________________________|

EBNF    Uses    Top    Help

local_name

 ____________________________________________________ 
|                                                    |
| >>_____direct_name______________________________>< |
|     |__direct_name__'__attribute_designator__|     |
|     |__library_unit_name_____________________|     |
|____________________________________________________|

EBNF    Uses    Top    Help

attribute_definition_clause

 ____________________________________________________________________________ 
|                                                                            |
| >>_____for__local_name__'__attribute_designator__use__expression__;_____>< |
|     |__for__local_name__'__attribute_designator__use__name__;________|     |
|____________________________________________________________________________|

EBNF    Uses    Top    Help

enumeration_representation_clause

 ______________________________________________________________________ 
|                                                                      |
| >>__for__first_subtype_local_name__use__enumeration_aggregate__;__>< |
|______________________________________________________________________|

EBNF    Uses    Top    Help

enumeration_aggregate

 _________________________ 
|                         |
| >>__array_aggregate__>< |
|_________________________|

EBNF    Uses    Top    Help

record_representation_clause

 ___________________________________________________________________________________________________________________ 
|                                                                                                                   |
| >>__for__first_subtype_local_name__use__record_________________________________________________end__record__;__>< |
|                                                 |__mod_clause__|  |  <___________________   |                     |
|                                                                   |____component_clause__|__|                     |
|___________________________________________________________________________________________________________________|

EBNF    Uses    Top    Help

component_clause

 _______________________________________________________________________________ 
|                                                                               |
| >>__component_local_name__at__position__range__first_bit__..__last_bit__;__>< |
|_______________________________________________________________________________|

EBNF    Uses    Top    Help

position

 ___________________________ 
|                           |
| >>__static_expression__>< |
|___________________________|

EBNF    Uses    Top    Help

first_bit

 __________________________________ 
|                                  |
| >>__static_simple_expression__>< |
|__________________________________|

EBNF    Uses    Top    Help

last_bit

 __________________________________ 
|                                  |
| >>__static_simple_expression__>< |
|__________________________________|

EBNF    Uses    Top    Help

code_statement

 _________________________________ 
|                                 |
| >>__qualified_expression__;__>< |
|_________________________________|

EBNF    Uses    Top    Help

restriction

 ________________________________________________________________ 
|                                                                |
| >>_____restriction_identifier_______________________________>< |
|     |__restriction_parameter_identifier__=>__expression__|     |
|________________________________________________________________|

EBNF    Uses    Top    Help

delta_constraint

 __________________________________________________________ 
|                                                          |
| >>__delta__static_expression__________________________>< |
|                               |__range_constraint__|     |
|__________________________________________________________|

EBNF    Uses    Top    Help

at_clause

 __________________________________________________ 
|                                                  |
| >>__for__direct_name__use__at__expression__;__>< |
|__________________________________________________|

EBNF    Uses    Top    Help

mod_clause

 _______________________________________ 
|                                       |
| >>__at__mod__static_expression__;__>< |
|_______________________________________|

EBNF    Uses    Top    Help


Copyright

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.


End Of Grammar