Previous: An Extended Example, Up: GNAT Project Manager
project ::= context_clause project_declaration context_clause ::= {with_clause} with_clause ::= with literal_string { , literal_string } ; project_declaration ::= project <project_>simple_name [ extends literal_string ] is {declarative_item} end <project_>simple_name; declarative_item ::= package_declaration | typed_string_declaration | other_declarative_item package_declaration ::= package <package_>simple_name package_completion package_completion ::= package_body | package_renaming package body ::= is {other_declarative_item} end <package_>simple_name ; package_renaming ::== renames <project_>simple_name.<package_>simple_name ; typed_string_declaration ::= type <typed_string_>_simple_name is ( literal_string {, literal_string} ); other_declarative_item ::= attribute_declaration | typed_variable_declaration | variable_declaration | case_construction attribute_declaration ::= for attribute use expression ; attribute ::= <simple_attribute_>simple_name | <associative_array_attribute_>simple_name ( literal_string ) typed_variable_declaration ::= <typed_variable_>simple_name : <typed_string_>name := string_expression ; variable_declaration ::= <variable_>simple_name := expression; expression ::= term {& term} term ::= literal_string | string_list | <variable_>name | external_value | attribute_reference literal_string ::= (same as Ada) string_list ::= ( <string_>expression { , <string_>expression } ) external_value ::= external ( literal_string [, literal_string] ) attribute_reference ::= attribute_parent ' <simple_attribute_>simple_name [ ( literal_string ) ] attribute_parent ::= project | <project_or_package>simple_name | <project_>simple_name . <package_>simple_name case_construction ::= case <typed_variable_>name is {case_item} end case ; case_item ::= when discrete_choice_list => {case_construction | attribute_declaration} discrete_choice_list ::= literal_string {| literal_string} name ::= simple_name {. simple_name} simple_name ::= identifier (same as Ada)