Previous: An Extended Example, Up: GNAT Project Manager
project ::=
context_clause project_declaration
context_clause ::=
{with_clause}
with_clause ::=
with path_name { , path_name } ;
path_name ::=
string_literal
project_declaration ::=
simple_project_declaration | project_extension
simple_project_declaration ::=
project <project_>simple_name is
{declarative_item}
end <project_>simple_name;
project_extension ::=
project <project_>simple_name extends path_name is
{declarative_item}
end <project_>simple_name;
declarative_item ::=
package_declaration |
typed_string_declaration |
other_declarative_item
package_declaration ::=
package_spec | package_renaming
package_spec ::=
package package_identifier is
{simple_declarative_item}
end package_identifier ;
package_identifier ::=
Naming | Builder | Compiler | Binder |
Linker | Finder | Cross_Reference |
gnatls | IDE | Pretty_Printer
package_renaming ::==
package package_identifier renames
<project_>simple_name.package_identifier ;
typed_string_declaration ::=
type <typed_string_>_simple_name is
( string_literal {, string_literal} );
other_declarative_item ::=
attribute_declaration |
typed_variable_declaration |
variable_declaration |
case_construction
attribute_declaration ::=
full_associative_array_declaration |
for attribute_designator use expression ;
full_associative_array_declaration ::=
for <associative_array_attribute_>simple_name use
<project_>simple_name [ . <package_>simple_Name ] ' <attribute_>simple_name ;
attribute_designator ::=
<simple_attribute_>simple_name |
<associative_array_attribute_>simple_name ( string_literal )
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
string_literal ::=
(same as Ada)
string_list ::=
( <string_>expression { , <string_>expression } )
external_value ::=
external ( string_literal [, string_literal] )
attribute_reference ::=
attribute_prefix ' <simple_attribute_>simple_name [ ( literal_string ) ]
attribute_prefix ::=
project |
<project_>simple_name | package_identifier |
<project_>simple_name . package_identifier
case_construction ::=
case <typed_variable_>name is
{case_item}
end case ;
case_item ::=
when discrete_choice_list =>
{case_construction | attribute_declaration}
discrete_choice_list ::=
string_literal {| string_literal} |
others
name ::=
simple_name {. simple_name}
simple_name ::=
identifier (same as Ada)