Previous: An Extended Example, Up: GNAT Project Manager


10.15 Project File Complete Syntax

     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)