We give now a grammar for ALLCOT programs.
| Program |
|
DefinitionSequence MainSequence |
| DefinitionSequence |
|
CategoryDefinition DefinitionSequence |
| DefinitionSequence |
|
DomainDefinition DefinitionSequence |
| DefinitionSequence |
|
|
| CategoryDefinition |
|
id: Category == ParentCategory WithBody |
| ParentCategory |
|
id |
| ParentCategory |
|
|
| WithBody |
|
with { FunctionDeclarationSequence } |
| FunctionDeclarationSequence |
|
FunctionDeclaration ; FunctionDeclarationSequence |
| FunctionDeclarationSequence |
|
|
| FunctionDeclaration |
|
id : (
TypeSequence )
|
| TypeSequence |
|
|
| TypeSequence |
|
Type |
| TypeSequence |
|
Type , MoreTypes |
| MoreTypes |
|
Type |
| MoreTypes |
|
Type , MoreTypes |
| Type |
|
% |
| Type |
|
id |
| TypeOrVoid |
|
Type |
| TypeOrVoid |
|
( ) |
| DomainDefinition |
|
id: id == ParentDomain AddBody |
| ParentDomain |
|
id |
| ParentDomain |
|
|
| AddBody |
|
add { AttribStatement ; |
| FunctionDefinitionSequence } | ||
| FunctionDefinitionSequence |
|
FunctionDefinition FunctionDefinitionSequence |
| FunctionDefinitionSequence |
|
|
| FunctionDefinition |
|
id ( FormalParameterSequence ) : |
| TypeOrVoid == FunctionBody | ||
| FormalParameterSequence |
|
|
| FormalParameterSequence |
|
FormalParameter |
| FormalParameterSequence |
|
FormalParameter , MoreFormalParameters |
| MoreFormalParameters |
|
FormalParameter |
| MoreFormalParameters |
|
FormalParameter , MoreFormalParameters |
| FormalParameter |
|
id: Type |
| FunctionBody |
|
Statement ; |
| FunctionBody |
|
{ StatementSequence } |
| StatementSequence |
|
Statement ; |
| StatementSequence |
|
Statement ; StatementSequence |
| MainSequence |
|
MainDefinition MainCall |
| MainDefinition |
|
main (): () == { StatementSequence } |
| MainCall |
|
main () ; |