Grammar StitchParser ANTLR-generated HTML file from C:\eclipse\data\eclipse-3.2\org.sa.rainbow.lang\src\org\sa\rainbow\stitch\parser/stitchP.g
Terence Parr, MageLang Institute
|
Definition of parser StitchParser, which is a subclass of LLkParser. script : MODULE IDENTIFIER SEMICOLON imports tactics strategies ; imports : ( importStmt )* ; tactics : ( tacticDesc )* ; strategies : ( strategyDesc )* ; importStmt : IMPORT ( LIB | MODEL | OP ) STRING_LIT ( importRenameClause | ) SEMICOLON ; importRenameClause : LBRACE importRenamePhrase ( COMMA importRenamePhrase )* RBRACE ; importRenamePhrase : IDENTIFIER AS IDENTIFIER ; tacticDesc : TACTIC signature LBRACE tacticBody RBRACE ; signature : IDENTIFIER LPAREN parameterList RPAREN ; tacticBody : tacticVars tacticConditionBlock tacticActionBlock tacticEffectBlock ; tacticVars : ( declaration SEMICOLON )* ; tacticConditionBlock : CONDITION LBRACE ( expression SEMICOLON )* RBRACE ; tacticActionBlock : ACTION LBRACE ( statement )* RBRACE ; tacticEffectBlock : EFFECT LBRACE ( expression SEMICOLON )* RBRACE ; declaration : dataType varDefinition ; expression : assignmentExpression ; statement : ( compoundStatement | declaration SEMICOLON | expression SEMICOLON | ifStatement | forStatement | whileStatement | SEMICOLON ) ; strategyDesc : STRATEGY signature LBRACE ( strategyBody | ) RBRACE ; strategyBody : strategyExpr ; strategyExpr : IDENTIFIER COLON strategyCond IMPLIES strategyOutcome ; strategyCond : LPAREN ( strategyProbExpr | ) ( expression | SUCCESS | DEFAULT ) ( strategyTimingExpr | ) RPAREN ; strategyOutcome : strategyClosedOutcome SEMICOLON | strategyOpenOutcome ( BAR DONE SEMICOLON | strategyBranchOutcome ) ; strategyProbExpr : HASH LBRACKET strategyProbValue RBRACKET ; strategyTimingExpr : AT LBRACKET strategyTimingValue RBRACKET ; strategyClosedOutcome : DONE | NULLTACTIC ( BAR DONE | ) | DO LBRACKET ( IDENTIFIER | INTEGER_LIT ) RBRACKET IDENTIFIER ; strategyOpenOutcome : IDENTIFIER LPAREN argList RPAREN ( strategyExitCond | ) ; strategyBranchOutcome : LBRACE ( strategyExpr )+ RBRACE ; argList : ( expressionList | ) ; strategyExitCond : LPAREN expression strategyTimingExpr RPAREN ; strategyProbValue : INTEGER_LIT | IDENTIFIER ( LBRACE IDENTIFIER RBRACE | ) ; strategyTimingValue : expression ; compoundStatement : LBRACE ( statement )* RBRACE ( failBlock | ) ; ifStatement : IF LPAREN expression RPAREN statement ELSE statement ; forStatement : FOR LPAREN ( traditionalForClause | forEachClause ) RPAREN statement ; whileStatement : WHILE LPAREN expression RPAREN statement ; failBlock : FAIL LBRACE ( LPAREN expression RPAREN statement )* RBRACE ; dataType : ( OBJECT | INT | FLOAT | BOOLEAN | CHAR | STRING | SET ( LBRACE dataType RBRACE | ) | SEQUENCE ( LT dataType GT | ) | RECORD ( LBRACKET ( IDENTIFIER ( COMMA IDENTIFIER )* ( COLON dataType | ) SEMICOLON )* RBRACKET | ) | ENUM ( LBRACE ( IDENTIFIER ( COMMA IDENTIFIER )* | ) RBRACE | ) | IDENTIFIER ) ; varDefinition : varDeclarator ( COMMA varDeclarator )* ; varDeclarator : IDENTIFIER varInitializer ; varInitializer : ( ASSIGN initializer | ) ; initializer : expression ; forInit : ( declaration | expressionList | ) ; traditionalForClause : forInit SEMICOLON forCond SEMICOLON forIter ; forEachClause : parameterDeclaration COLON expression ; forCond : ( expression | ) ; forIter : ( expressionList | ) ; expressionList : expression ( COMMA expression )* ; parameterDeclaration : dataType IDENTIFIER ; assignmentExpression : booleanExpression ( ( ASSIGN | PLUS_ASSIGN | MINUS_ASSIGN | STAR_ASSIGN | DIV_ASSIGN | MOD_ASSIGN ) assignmentExpression | ) ; booleanExpression : quantifiedExpression | impliesExpression ; quantifiedExpression : ( FORALL | EXISTS ( UNIQUE | ) ) quantifierDeclaration IN ( setExpression | identifierPrimary ) BAR booleanExpression ; impliesExpression : iffExpression ( IMPLIES impliesExpression | ) ; quantifierDeclaration : IDENTIFIER ( COMMA IDENTIFIER )* COLON dataType ; setExpression : setConstructor | literalSet ; identifierPrimary : IDENTIFIER ( LPAREN argList RPAREN | ) ; iffExpression : logicalOrExpression ( IFF iffExpression | ) ; logicalOrExpression : logicalAndExpression ( LOGICAL_OR logicalAndExpression )* ; logicalAndExpression : equalityExpression ( LOGICAL_AND equalityExpression )* ; equalityExpression : relationalExpression ( ( NE | EQ ) relationalExpression )* ; relationalExpression : additiveExpression ( ( LT | LE | GE | GT ) additiveExpression )* ; additiveExpression : multiplicativeExpression ( ( PLUS | MINUS ) multiplicativeExpression )* ; multiplicativeExpression : unaryExpression ( ( STAR | SLASH | MOD ) unaryExpression )* ; unaryExpression : INCR unaryExpression | DECR unaryExpression | MINUS unaryExpression | PLUS unaryExpression | unaryExpressionNotPlusMinus ; unaryExpressionNotPlusMinus : LOGICAL_NOT unaryExpression | postfixExpression ; postfixExpression : primaryExpression ( INCR | DECR | ) ; primaryExpression : identifierPrimary | setExpression | constant | LPAREN assignmentExpression RPAREN ; constant : INTEGER_LIT | FLOAT_LIT | STRING_LIT | CHAR_LIT | TRUE | FALSE | NULL ; setConstructor : LBRACE SELECT quantifierDeclaration IN ( setExpression | identifierPrimary ) BAR booleanExpression RBRACE ; literalSet : LBRACE ( ( identifierPrimary | constant ) ( COMMA ( identifierPrimary | constant ) )* | ) RBRACE ; parameterList : ( parameterDeclaration ( COMMA parameterDeclaration )* | ) ;