DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T f

⟦f49acbf1d⟧ TextFile

    Length: 6820 (0x1aa4)
    Types: TextFile
    Names: »full-ada.bnf«

Derivation

└─⟦a05ed705a⟧ Bits:30007078 DKUUG GNU 2/12/89
    └─⟦dbcd4071d⟧ »./gnu-ada-1.05.tar.Z« 
        └─⟦999713de5⟧ 
            └─⟦this⟧ »full-ada.bnf« 

TextFile

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