ElementSyntax : '{' elt=ElementID (',' eltIDs+=ElementID)* '}' ; ElementID: name=ID ; ExcludeDecision: 'and' 'exclude' rule=[Rule] 'for' elementID=[ElementSyntax] ;
]]>
/********************** Alternative *************************/
Alternative:
'Alternative' id=INT ':'
for='for' name=ElementSyntax select='select' ':'
rule=Rule (params+=RuleList)* ';' ;
RuleList:
'or' rule=Rule ;
/********************** End Alternative **********************/
/********************** Decision *************************/
Decision:
'Decision' id=Entier ':' select=Select ';'
'consequences' ':' consequenceDecl=ConsequencesDeclaration ;
ConsequencesDeclaration:
NoneDecision | (subDecisions+=SubDecision)+ | SelectDecision
;
NoneDecision:
name='none' ';' ;
SubDecision:
'decision' i=[Entier]'.'j=Entier ':' select=Select (excludes+=ExcludeDecision)+ ';' ;
SelectDecision:
select=Select (excludes+=ExcludeDecision)+ ';' ;
ExcludeDecision:
'and' 'exclude' rule=[Rule] 'for' elementID=ElementSyntax ; //[ElementSyntax]
Select:
'select' rule=[Rule] 'for' elementID=ElementSyntax ; //[ElementSyntax]
Entier :
id=INT ;
/********************** End Decision **********************/
ElementSyntax :
'{' elt=ElementID (',' eltIDs+=ElementID)* '}' ;
ElementSyntax : '{' elt=ElementID (',' eltIDs+=ElementID)* '}' ;
ElementSyntax : '{' name=ID (',' eltIDs+=ElementID)* '}' ;
ElementSyntax : '{' elt=ElementID (',' eltIDs+=ElementID)* '}' ;
ElementSyntaxContainer : '{' syntaxes+=ElementSyntax* (',' syntaxes+=ElementSyntax)* '}' ; ElementSyntax: name=ID; ... 'for' elementID=ElementSyntaxContainer ; /
Select: 'select' rule=[Rule] 'for' elementID=[ElementSyntax] ; //
Root: root+=RootElement+; RootElement: ElementIwantAReference | GetReference; GetReference: retreiveReference = [ElementIwantAReference]; ElementIwantAReference: '{' elt=Element (elts+=Element)* '}'; Element: name=ID;
ElementSyntax: name=ElementSyntaxName ; ElementSyntaxName: '{' ID (',' ID)* '}'; .... 'for' element=[ElementSyntax|ElementSyntaxName];