|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T f
Length: 6820 (0x1aa4)
Types: TextFile
Names: »full-ada.bnf«
└─⟦a05ed705a⟧ Bits:30007078 DKUUG GNU 2/12/89
└─⟦dbcd4071d⟧ »./gnu-ada-1.05.tar.Z«
└─⟦999713de5⟧
└─⟦this⟧ »full-ada.bnf«
-- Make this a file called ada.bnf in ~/el
-- This is most of the bnf for the Ada language
-- Chapter 3: Declarations
\f
{basic_declaration} ::=
{object_declaration} |
{number_declaration} |
{type_declaration} |
{subtype_declaration} |
{subprogram_declaration} |
{package_declaration} |
{task_declaration} |
{generic_declaration} |
{exception_declaration} |
{generic_instantiation} |
{renaming_declaration} |
{deferred_constant_declaration}
\f
{type_declaration} ::=
{full_type_declaration} |
{incomplete_type_declaration} |
{private_type_declaration}
\f
{full_type_declaration} ::=
type {identifier} is {type_definition}; |
type {identifier} {discriminant_part} is {type_definition};
\f
{type_definition} ::=
{enumeration_type_definition} |
{integer_type_definition} |
{real_type_definition} |
{array_type_definition} |
{record_type_definition} |
{access_type_definition} |
{derived_type_definition}
\f
{basic_declarative_item_list} ::=
{basic_declarative_item}
{basic_declarative_item_list}
\f
{basic_declarative_item} ::=
{basic_declaration} |
{representation_clause} |
{use_clause}
\f
{later_declarative_item} ::=
{body} |
{subprogram_declaration} |
{package_declaration} |
{task_declaration} |
{generic_declaration} |
{use_clause} |
{generic_instantiation}
\f
-- Chapter 5: Statements
\f
{sequence_of_statements} ::=
{statement} |
{statement}
{sequence_of_statements}
\f
{statement} ::=
{labelled_simple_statement} |
{labelled_compound_statement} |
{simple_statement} |
{compound_statement}
\f
{labelled_simple_statement} ::=
<<{label}>>
{simple_statement}
\f
{labelled_compound_statement} ::=
<<{label}>>
{compound_statement}
\f
{simple_statement} ::=
{null_statement} |
{assignment_statement} |
{procedure_call_statement} |
{exit_statement} |
{return_statement} |
{goto_statement} |
{entry_call_statement} |
{delay_statement} |
{abort_statement} |
{raise_statement} |
{code_statement}
\f
{compound_statement} ::=
{if_statement} |
{case_statement} |
{loop_statement} |
{block_statement} |
{accept_statement} |
{select_statement}
\f
{null_statement} ::=
null;
\f
{assignment_statement} ::=
{variable_name} := {expression};
\f
{if_statement} ::=
if {condition} then
{sequence_of_statements}
{elsif_part}
{else_part}
end if;
\f
{elsif_part} ::=
elsif {condition} then
{sequence_of_statements}
\f
{else_part} ::=
else
{sequence_of_statements}
\f
{condition} ::=
{boolean_expression}
\f
{case_statement} ::=
case {expression} is
{case_statement_alternative}
{case_statement_alternative_list}
end case;
\f
{case_statement_alternative_list} ::=
{case_statement_alternative} |
{case_statement_alternative}
{case_statement_alternative_list}
\f
{case_statement_alternative} ::=
when {choice_list} =>
{sequence_of_statements}
\f
{loop_statement} ::=
{iteration_scheme} loop
{sequence_of_statements}
end loop {loop_simple_name};
\f
{iteration_scheme} ::=
while {condition} |
for {loop_parameter_specification}
\f
{loop_parameter_specification} ::=
{identifier} in {discrete_range} |
{identifier} in reverse {discrete_range}
\f
{block_statement} ::=
declare
{declarative_part}
begin
{sequence_of_statements}
{exception_part}
end;
\f
{exit_statement} ::=
exit {loop_name} |
exit {loop_name} when {condition};
\f
{return_statement} ::=
return {expression};
\f
{goto_statement} ::=
goto {label_name};
\f
-- Chapter 6: Subprograms
\f
{subprogram_declaration} ::=
{subprogram_specification};
\f
{subprogram_specification} ::=
procedure {identifier} |
procedure {identifier} {formal_part} |
function {identifier} return {type_mark} |
function {identifier} {formal_part} return {type_mark}
\f
{subprogram_body} ::=
{subprogram_specification} is
{declarative_part}
begin
{sequence_of_statements}
{exception_part}
end {designator};
\f
-- Chapter 7: Packages
\f
{package_declaration} ::=
{package_specification};
\f
{package_specification} ::=
package {identifier} is
{basic_declarative_item_list}
{private_part}
end {identifier};
\f
{private_part} ::=
private
{basic_declarative_item_list}
\f
{package_body} ::=
package body {package_simple_name} is
{declarative_part}
begin
{sequence_of_statements}
{exception_part}
end {package_simple_name};
\f
{task_declaration} ::=
{task_specification};
\f
{task_specification} ::=
task {identifier} |
task type {identifier} |
task {identifier} is
{entry_declaration_list}
{representation_clause_list}
end {task_simple_name} |
task type {identifier} is
{entry_declaration_list}
{representation_clause_list}
end {task_simple_name}
\f
-- Chapter 9: Tasking
\f
{accept_statement} ::=
accept {entry_simple_name} {entry_index} {formal_part} do
{sequence_of_statements}
end {entry_simple_name}; |
accept {entry_simple_name} {entry_index} {formal_part};
\f
{select_statement} ::=
{selective_wait} |
{conditional_entry_call} |
{timed_entry_call}
\f
{selective_wait} ::=
select
{select_alternative}
{rest_of_select_alternatives}
{select_else_part}
end select;
\f
{rest_of_select_alternatives} ::=
or
{select_alternative}
{rest_of_select_alternatives}
\f
{select_else_part} ::=
else
{sequence_of_statements}
\f
{select_alternative} ::=
{selective_wait_alternative} |
when {condition} =>
{selective_wait_alternative}
\f
{selective_wait_alternative} ::=
{accept_alternative} |
{delay_alternative} |
{terminate_alternative}
\f
{accept_alternative} ::=
{accept_statement} |
{accept_statement}
{sequence_of_statements}
\f
{delay_alternative} ::=
{delay_statement} |
{delay_statement}
{sequence_of_statements}
\f
{terminate_alternative} ::=
terminate;
\f
{conditional_entry_call} ::=
select
{entry_call_statement}
{sequence_of_statements}
else
{sequence_of_statements}
end select;
\f
{timed_entry_call} ::=
select
{entry_call_statement}
{sequence_of_statements}
or
{delay_alternative}
end select;
\f
-- Chapter 10: Compilation & Library Units
\f
{compilation} ::=
{compilation_unit}
\f
{compilation_unit} ::=
{context_clause}
{library_unit} |
{context_clause}
{secondary_unit}
\f
{library_unit} ::=
{subprogram_declaration} |
{package_declaration} |
{generic_declaration} |
{generic_instantiation} |
{subprogram_body}
\f
{secondary_unit} ::=
{library_unit_body} |
{subunit}
\f
{library_unit_body} ::=
{subprogram_body} |
{package_body}
\f
{context_clause} ::=
{with_clause} |
{with_clause} {use_clause}
\f
{with_clause} ::=
with {unit_simple_name_list}
\f
{unit_simple_name_list} ::=
{unit_simple_name} |
{unit_simple_name}, {unit_simple_name_list}
\f
{body_stub} ::=
{subprogram_specification} is separate; |
package body {package_simple_name} is separate; |
task body {task_simple_name} is separate;
\f
{subunit} ::=
separate ({parent_unit_name}) {proper_body}
\f
{exception_declaration} ::=
{identifier_list} : exception;
\f
{exception_handler} ::=
when {exception_choice_list} =>
{sequence_of_statements}
\f
{exception_part} ::=
{exception_handler} |
{exception_part}
{exception_handler}
\f