org.jaitools.jiffle.parser.JiffleParser Maven / Gradle / Ivy
// $ANTLR 3.3 Nov 30, 2010 12:46:29 org/jaitools/jiffle/parser/Jiffle.g 2012-10-10 10:44:30
package org.jaitools.jiffle.parser;
import java.util.Map;
import org.jaitools.CollectionFactory;
import org.jaitools.jiffle.Jiffle;
import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import org.antlr.runtime.tree.*;
/**
* Jiffle language parser grammar. Generates the primary AST
* from an input Jiffle script.
*
* @author Michael Bedward
*/
public class JiffleParser extends Parser {
public static final String[] tokenNames = new String[] {
"", "", "", "", "ABS_POS", "BAND_REF", "BLOCK", "CON_CALL", "DECL", "DECLARED_LIST", "EXPR_LIST", "FUNC_CALL", "IMAGE_POS", "JIFFLE_OPTION", "PAR", "PIXEL_REF", "POSTFIX", "PREFIX", "REL_POS", "SEQUENCE", "VAR_DEST", "VAR_IMAGE_SCOPE", "VAR_SOURCE", "CONSTANT", "IMAGE_WRITE", "LIST_NEW", "VAR_IMAGE", "VAR_PIXEL_SCOPE", "VAR_PROVIDED", "VAR_LOOP", "VAR_LIST", "OPTIONS", "LCURLY", "RCURLY", "ID", "EQ", "SEMI", "IMAGES", "READ", "WRITE", "INIT", "WHILE", "LPAR", "RPAR", "UNTIL", "FOREACH", "IN", "IF", "ELSE", "BREAKIF", "BREAK", "COMMA", "COLON", "CON", "APPEND", "TIMESEQ", "DIVEQ", "MODEQ", "PLUSEQ", "MINUSEQ", "QUESTION", "OR", "XOR", "AND", "LOGICALEQ", "NE", "GT", "GE", "LE", "LT", "PLUS", "MINUS", "TIMES", "DIV", "MOD", "NOT", "INCR", "DECR", "POW", "LSQUARE", "RSQUARE", "ABS_POS_PREFIX", "INT_LITERAL", "FLOAT_LITERAL", "TRUE", "FALSE", "NULL", "COMMENT", "INT_TYPE", "FLOAT_TYPE", "DOUBLE_TYPE", "BOOLEAN_TYPE", "Letter", "UNDERSCORE", "Digit", "Dot", "NonZeroDigit", "FloatExp", "WS", "ESC_SEQ", "CHAR", "HEX_DIGIT", "UNICODE_ESC", "OCTAL_ESC"
};
public static final int EOF=-1;
public static final int ABS_POS=4;
public static final int BAND_REF=5;
public static final int BLOCK=6;
public static final int CON_CALL=7;
public static final int DECL=8;
public static final int DECLARED_LIST=9;
public static final int EXPR_LIST=10;
public static final int FUNC_CALL=11;
public static final int IMAGE_POS=12;
public static final int JIFFLE_OPTION=13;
public static final int PAR=14;
public static final int PIXEL_REF=15;
public static final int POSTFIX=16;
public static final int PREFIX=17;
public static final int REL_POS=18;
public static final int SEQUENCE=19;
public static final int VAR_DEST=20;
public static final int VAR_IMAGE_SCOPE=21;
public static final int VAR_SOURCE=22;
public static final int CONSTANT=23;
public static final int IMAGE_WRITE=24;
public static final int LIST_NEW=25;
public static final int VAR_IMAGE=26;
public static final int VAR_PIXEL_SCOPE=27;
public static final int VAR_PROVIDED=28;
public static final int VAR_LOOP=29;
public static final int VAR_LIST=30;
public static final int OPTIONS=31;
public static final int LCURLY=32;
public static final int RCURLY=33;
public static final int ID=34;
public static final int EQ=35;
public static final int SEMI=36;
public static final int IMAGES=37;
public static final int READ=38;
public static final int WRITE=39;
public static final int INIT=40;
public static final int WHILE=41;
public static final int LPAR=42;
public static final int RPAR=43;
public static final int UNTIL=44;
public static final int FOREACH=45;
public static final int IN=46;
public static final int IF=47;
public static final int ELSE=48;
public static final int BREAKIF=49;
public static final int BREAK=50;
public static final int COMMA=51;
public static final int COLON=52;
public static final int CON=53;
public static final int APPEND=54;
public static final int TIMESEQ=55;
public static final int DIVEQ=56;
public static final int MODEQ=57;
public static final int PLUSEQ=58;
public static final int MINUSEQ=59;
public static final int QUESTION=60;
public static final int OR=61;
public static final int XOR=62;
public static final int AND=63;
public static final int LOGICALEQ=64;
public static final int NE=65;
public static final int GT=66;
public static final int GE=67;
public static final int LE=68;
public static final int LT=69;
public static final int PLUS=70;
public static final int MINUS=71;
public static final int TIMES=72;
public static final int DIV=73;
public static final int MOD=74;
public static final int NOT=75;
public static final int INCR=76;
public static final int DECR=77;
public static final int POW=78;
public static final int LSQUARE=79;
public static final int RSQUARE=80;
public static final int ABS_POS_PREFIX=81;
public static final int INT_LITERAL=82;
public static final int FLOAT_LITERAL=83;
public static final int TRUE=84;
public static final int FALSE=85;
public static final int NULL=86;
public static final int COMMENT=87;
public static final int INT_TYPE=88;
public static final int FLOAT_TYPE=89;
public static final int DOUBLE_TYPE=90;
public static final int BOOLEAN_TYPE=91;
public static final int Letter=92;
public static final int UNDERSCORE=93;
public static final int Digit=94;
public static final int Dot=95;
public static final int NonZeroDigit=96;
public static final int FloatExp=97;
public static final int WS=98;
public static final int ESC_SEQ=99;
public static final int CHAR=100;
public static final int HEX_DIGIT=101;
public static final int UNICODE_ESC=102;
public static final int OCTAL_ESC=103;
// delegates
// delegators
public JiffleParser(TokenStream input) {
this(input, new RecognizerSharedState());
}
public JiffleParser(TokenStream input, RecognizerSharedState state) {
super(input, state);
this.state.ruleMemo = new HashMap[110+1];
}
protected TreeAdaptor adaptor = new CommonTreeAdaptor();
public void setTreeAdaptor(TreeAdaptor adaptor) {
this.adaptor = adaptor;
}
public TreeAdaptor getTreeAdaptor() {
return adaptor;
}
public String[] getTokenNames() { return JiffleParser.tokenNames; }
public String getGrammarFileName() { return "org/jaitools/jiffle/parser/Jiffle.g"; }
@Override
protected Object recoverFromMismatchedToken(IntStream input, int ttype, BitSet follow) throws RecognitionException {
if (ttype == Token.EOF) {
throw new UnexpectedInputException("Invalid statement before end of file");
}
return super.recoverFromMismatchedToken(input, ttype, follow);
}
private List blocksFound = CollectionFactory.list();
private void checkBlock(Token blockToken) {
if ( blocksFound.contains(blockToken.getType()) ) {
throw new JiffleParserException("Duplicate " + blockToken.getText() + " block");
}
blocksFound.add(blockToken.getType());
}
private Map imageParams = CollectionFactory.map();
private void setImageVar(String varName, int type) {
Jiffle.ImageRole role = null;
switch (type) {
case READ:
role = Jiffle.ImageRole.SOURCE;
break;
case WRITE:
role = Jiffle.ImageRole.DEST;
break;
default:
throw new IllegalArgumentException("type must be READ or WRITE");
}
imageParams.put(varName, role);
}
public Map getImageParams() { return imageParams; }
public static class prog_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "prog"
// org/jaitools/jiffle/parser/Jiffle.g:126:1: prog : (blk= specialBlock )* ( statement )+ EOF ;
public final JiffleParser.prog_return prog() throws RecognitionException {
JiffleParser.prog_return retval = new JiffleParser.prog_return();
retval.start = input.LT(1);
int prog_StartIndex = input.index();
CommonTree root_0 = null;
Token EOF2=null;
JiffleParser.specialBlock_return blk = null;
JiffleParser.statement_return statement1 = null;
CommonTree EOF2_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 1) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:126:17: ( (blk= specialBlock )* ( statement )+ EOF )
// org/jaitools/jiffle/parser/Jiffle.g:126:19: (blk= specialBlock )* ( statement )+ EOF
{
root_0 = (CommonTree)adaptor.nil();
// org/jaitools/jiffle/parser/Jiffle.g:126:19: (blk= specialBlock )*
loop1:
do {
int alt1=2;
switch ( input.LA(1) ) {
case OPTIONS:
case IMAGES:
case INIT:
{
alt1=1;
}
break;
}
switch (alt1) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:126:20: blk= specialBlock
{
pushFollow(FOLLOW_specialBlock_in_prog299);
blk=specialBlock();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, blk.getTree());
if ( state.backtracking==0 ) {
checkBlock((blk!=null?((Token)blk.start):null));
}
}
break;
default :
break loop1;
}
} while (true);
// org/jaitools/jiffle/parser/Jiffle.g:126:66: ( statement )+
int cnt2=0;
loop2:
do {
int alt2=2;
switch ( input.LA(1) ) {
case LCURLY:
case ID:
case SEMI:
case WHILE:
case LPAR:
case UNTIL:
case FOREACH:
case IF:
case BREAKIF:
case BREAK:
case CON:
case PLUS:
case MINUS:
case NOT:
case INCR:
case DECR:
case LSQUARE:
case INT_LITERAL:
case FLOAT_LITERAL:
case TRUE:
case FALSE:
case NULL:
{
alt2=1;
}
break;
}
switch (alt2) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:0:0: statement
{
pushFollow(FOLLOW_statement_in_prog306);
statement1=statement();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, statement1.getTree());
}
break;
default :
if ( cnt2 >= 1 ) break loop2;
if (state.backtracking>0) {state.failed=true; return retval;}
EarlyExitException eee =
new EarlyExitException(2, input);
throw eee;
}
cnt2++;
} while (true);
EOF2=(Token)match(input,EOF,FOLLOW_EOF_in_prog309); if (state.failed) return retval;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (UnexpectedInputException ex) {
throw new JiffleParserException(ex);
}
catch (EarlyExitException ex) {
throw new JiffleParserException("Unexpected input at line " + ex.line);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 1, prog_StartIndex); }
}
return retval;
}
// $ANTLR end "prog"
public static class specialBlock_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "specialBlock"
// org/jaitools/jiffle/parser/Jiffle.g:136:1: specialBlock : ( optionsBlock | imagesBlock | initBlock );
public final JiffleParser.specialBlock_return specialBlock() throws RecognitionException {
JiffleParser.specialBlock_return retval = new JiffleParser.specialBlock_return();
retval.start = input.LT(1);
int specialBlock_StartIndex = input.index();
CommonTree root_0 = null;
JiffleParser.optionsBlock_return optionsBlock3 = null;
JiffleParser.imagesBlock_return imagesBlock4 = null;
JiffleParser.initBlock_return initBlock5 = null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 2) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:136:17: ( optionsBlock | imagesBlock | initBlock )
int alt3=3;
switch ( input.LA(1) ) {
case OPTIONS:
{
alt3=1;
}
break;
case IMAGES:
{
alt3=2;
}
break;
case INIT:
{
alt3=3;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 3, 0, input);
throw nvae;
}
switch (alt3) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:136:19: optionsBlock
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_optionsBlock_in_specialBlock383);
optionsBlock3=optionsBlock();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, optionsBlock3.getTree());
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:137:19: imagesBlock
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_imagesBlock_in_specialBlock403);
imagesBlock4=imagesBlock();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, imagesBlock4.getTree());
}
break;
case 3 :
// org/jaitools/jiffle/parser/Jiffle.g:138:19: initBlock
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_initBlock_in_specialBlock423);
initBlock5=initBlock();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, initBlock5.getTree());
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 2, specialBlock_StartIndex); }
}
return retval;
}
// $ANTLR end "specialBlock"
public static class optionsBlock_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "optionsBlock"
// org/jaitools/jiffle/parser/Jiffle.g:142:1: optionsBlock : OPTIONS LCURLY ( option )* RCURLY -> ( option )* ;
public final JiffleParser.optionsBlock_return optionsBlock() throws RecognitionException {
JiffleParser.optionsBlock_return retval = new JiffleParser.optionsBlock_return();
retval.start = input.LT(1);
int optionsBlock_StartIndex = input.index();
CommonTree root_0 = null;
Token OPTIONS6=null;
Token LCURLY7=null;
Token RCURLY9=null;
JiffleParser.option_return option8 = null;
CommonTree OPTIONS6_tree=null;
CommonTree LCURLY7_tree=null;
CommonTree RCURLY9_tree=null;
RewriteRuleTokenStream stream_LCURLY=new RewriteRuleTokenStream(adaptor,"token LCURLY");
RewriteRuleTokenStream stream_OPTIONS=new RewriteRuleTokenStream(adaptor,"token OPTIONS");
RewriteRuleTokenStream stream_RCURLY=new RewriteRuleTokenStream(adaptor,"token RCURLY");
RewriteRuleSubtreeStream stream_option=new RewriteRuleSubtreeStream(adaptor,"rule option");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 3) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:142:17: ( OPTIONS LCURLY ( option )* RCURLY -> ( option )* )
// org/jaitools/jiffle/parser/Jiffle.g:142:19: OPTIONS LCURLY ( option )* RCURLY
{
OPTIONS6=(Token)match(input,OPTIONS,FOLLOW_OPTIONS_in_optionsBlock452); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_OPTIONS.add(OPTIONS6);
LCURLY7=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_optionsBlock454); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LCURLY.add(LCURLY7);
// org/jaitools/jiffle/parser/Jiffle.g:142:34: ( option )*
loop4:
do {
int alt4=2;
switch ( input.LA(1) ) {
case ID:
{
alt4=1;
}
break;
}
switch (alt4) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:0:0: option
{
pushFollow(FOLLOW_option_in_optionsBlock456);
option8=option();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_option.add(option8.getTree());
}
break;
default :
break loop4;
}
} while (true);
RCURLY9=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_optionsBlock459); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RCURLY.add(RCURLY9);
// AST REWRITE
// elements: option
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 142:49: -> ( option )*
{
// org/jaitools/jiffle/parser/Jiffle.g:142:52: ( option )*
while ( stream_option.hasNext() ) {
adaptor.addChild(root_0, stream_option.nextTree());
}
stream_option.reset();
}
retval.tree = root_0;}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 3, optionsBlock_StartIndex); }
}
return retval;
}
// $ANTLR end "optionsBlock"
public static class option_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "option"
// org/jaitools/jiffle/parser/Jiffle.g:145:1: option : ID EQ optionValue SEMI -> ^( JIFFLE_OPTION ID optionValue ) ;
public final JiffleParser.option_return option() throws RecognitionException {
JiffleParser.option_return retval = new JiffleParser.option_return();
retval.start = input.LT(1);
int option_StartIndex = input.index();
CommonTree root_0 = null;
Token ID10=null;
Token EQ11=null;
Token SEMI13=null;
JiffleParser.optionValue_return optionValue12 = null;
CommonTree ID10_tree=null;
CommonTree EQ11_tree=null;
CommonTree SEMI13_tree=null;
RewriteRuleTokenStream stream_EQ=new RewriteRuleTokenStream(adaptor,"token EQ");
RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
RewriteRuleSubtreeStream stream_optionValue=new RewriteRuleSubtreeStream(adaptor,"rule optionValue");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 4) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:145:17: ( ID EQ optionValue SEMI -> ^( JIFFLE_OPTION ID optionValue ) )
// org/jaitools/jiffle/parser/Jiffle.g:145:19: ID EQ optionValue SEMI
{
ID10=(Token)match(input,ID,FOLLOW_ID_in_option498); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ID.add(ID10);
EQ11=(Token)match(input,EQ,FOLLOW_EQ_in_option500); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_EQ.add(EQ11);
pushFollow(FOLLOW_optionValue_in_option502);
optionValue12=optionValue();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_optionValue.add(optionValue12.getTree());
SEMI13=(Token)match(input,SEMI,FOLLOW_SEMI_in_option504); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_SEMI.add(SEMI13);
// AST REWRITE
// elements: optionValue, ID
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 145:42: -> ^( JIFFLE_OPTION ID optionValue )
{
// org/jaitools/jiffle/parser/Jiffle.g:145:45: ^( JIFFLE_OPTION ID optionValue )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(JIFFLE_OPTION, "JIFFLE_OPTION"), root_1);
adaptor.addChild(root_1, stream_ID.nextNode());
adaptor.addChild(root_1, stream_optionValue.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 4, option_StartIndex); }
}
return retval;
}
// $ANTLR end "option"
public static class optionValue_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "optionValue"
// org/jaitools/jiffle/parser/Jiffle.g:149:1: optionValue : ( ID | literal );
public final JiffleParser.optionValue_return optionValue() throws RecognitionException {
JiffleParser.optionValue_return retval = new JiffleParser.optionValue_return();
retval.start = input.LT(1);
int optionValue_StartIndex = input.index();
CommonTree root_0 = null;
Token ID14=null;
JiffleParser.literal_return literal15 = null;
CommonTree ID14_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 5) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:149:17: ( ID | literal )
int alt5=2;
switch ( input.LA(1) ) {
case ID:
{
alt5=1;
}
break;
case INT_LITERAL:
case FLOAT_LITERAL:
case TRUE:
case FALSE:
case NULL:
{
alt5=2;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 5, 0, input);
throw nvae;
}
switch (alt5) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:149:19: ID
{
root_0 = (CommonTree)adaptor.nil();
ID14=(Token)match(input,ID,FOLLOW_ID_in_optionValue544); if (state.failed) return retval;
if ( state.backtracking==0 ) {
ID14_tree = (CommonTree)adaptor.create(ID14);
adaptor.addChild(root_0, ID14_tree);
}
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:150:19: literal
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_literal_in_optionValue564);
literal15=literal();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, literal15.getTree());
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 5, optionValue_StartIndex); }
}
return retval;
}
// $ANTLR end "optionValue"
public static class imagesBlock_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "imagesBlock"
// org/jaitools/jiffle/parser/Jiffle.g:155:1: imagesBlock : IMAGES LCURLY ( imageVarDeclaration )* RCURLY ->;
public final JiffleParser.imagesBlock_return imagesBlock() throws RecognitionException {
JiffleParser.imagesBlock_return retval = new JiffleParser.imagesBlock_return();
retval.start = input.LT(1);
int imagesBlock_StartIndex = input.index();
CommonTree root_0 = null;
Token IMAGES16=null;
Token LCURLY17=null;
Token RCURLY19=null;
JiffleParser.imageVarDeclaration_return imageVarDeclaration18 = null;
CommonTree IMAGES16_tree=null;
CommonTree LCURLY17_tree=null;
CommonTree RCURLY19_tree=null;
RewriteRuleTokenStream stream_LCURLY=new RewriteRuleTokenStream(adaptor,"token LCURLY");
RewriteRuleTokenStream stream_IMAGES=new RewriteRuleTokenStream(adaptor,"token IMAGES");
RewriteRuleTokenStream stream_RCURLY=new RewriteRuleTokenStream(adaptor,"token RCURLY");
RewriteRuleSubtreeStream stream_imageVarDeclaration=new RewriteRuleSubtreeStream(adaptor,"rule imageVarDeclaration");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 6) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:155:17: ( IMAGES LCURLY ( imageVarDeclaration )* RCURLY ->)
// org/jaitools/jiffle/parser/Jiffle.g:155:19: IMAGES LCURLY ( imageVarDeclaration )* RCURLY
{
IMAGES16=(Token)match(input,IMAGES,FOLLOW_IMAGES_in_imagesBlock595); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_IMAGES.add(IMAGES16);
LCURLY17=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_imagesBlock597); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LCURLY.add(LCURLY17);
// org/jaitools/jiffle/parser/Jiffle.g:155:33: ( imageVarDeclaration )*
loop6:
do {
int alt6=2;
switch ( input.LA(1) ) {
case ID:
{
alt6=1;
}
break;
}
switch (alt6) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:0:0: imageVarDeclaration
{
pushFollow(FOLLOW_imageVarDeclaration_in_imagesBlock599);
imageVarDeclaration18=imageVarDeclaration();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_imageVarDeclaration.add(imageVarDeclaration18.getTree());
}
break;
default :
break loop6;
}
} while (true);
RCURLY19=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_imagesBlock602); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RCURLY.add(RCURLY19);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 155:61: ->
{
root_0 = null;
}
retval.tree = root_0;}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 6, imagesBlock_StartIndex); }
}
return retval;
}
// $ANTLR end "imagesBlock"
public static class imageVarDeclaration_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "imageVarDeclaration"
// org/jaitools/jiffle/parser/Jiffle.g:159:1: imageVarDeclaration : ID EQ role SEMI ;
public final JiffleParser.imageVarDeclaration_return imageVarDeclaration() throws RecognitionException {
JiffleParser.imageVarDeclaration_return retval = new JiffleParser.imageVarDeclaration_return();
retval.start = input.LT(1);
int imageVarDeclaration_StartIndex = input.index();
CommonTree root_0 = null;
Token ID20=null;
Token EQ21=null;
Token SEMI23=null;
JiffleParser.role_return role22 = null;
CommonTree ID20_tree=null;
CommonTree EQ21_tree=null;
CommonTree SEMI23_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 7) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:160:17: ( ID EQ role SEMI )
// org/jaitools/jiffle/parser/Jiffle.g:160:19: ID EQ role SEMI
{
root_0 = (CommonTree)adaptor.nil();
ID20=(Token)match(input,ID,FOLLOW_ID_in_imageVarDeclaration647); if (state.failed) return retval;
if ( state.backtracking==0 ) {
ID20_tree = (CommonTree)adaptor.create(ID20);
adaptor.addChild(root_0, ID20_tree);
}
EQ21=(Token)match(input,EQ,FOLLOW_EQ_in_imageVarDeclaration649); if (state.failed) return retval;
if ( state.backtracking==0 ) {
EQ21_tree = (CommonTree)adaptor.create(EQ21);
adaptor.addChild(root_0, EQ21_tree);
}
pushFollow(FOLLOW_role_in_imageVarDeclaration651);
role22=role();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, role22.getTree());
SEMI23=(Token)match(input,SEMI,FOLLOW_SEMI_in_imageVarDeclaration653); if (state.failed) return retval;
if ( state.backtracking==0 ) {
SEMI23_tree = (CommonTree)adaptor.create(SEMI23);
adaptor.addChild(root_0, SEMI23_tree);
}
if ( state.backtracking==0 ) {
setImageVar((ID20!=null?ID20.getText():null), (role22!=null?((Token)role22.start):null).getType());
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 7, imageVarDeclaration_StartIndex); }
}
return retval;
}
// $ANTLR end "imageVarDeclaration"
public static class role_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "role"
// org/jaitools/jiffle/parser/Jiffle.g:165:1: role : ( READ | WRITE );
public final JiffleParser.role_return role() throws RecognitionException {
JiffleParser.role_return retval = new JiffleParser.role_return();
retval.start = input.LT(1);
int role_StartIndex = input.index();
CommonTree root_0 = null;
Token set24=null;
CommonTree set24_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 8) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:165:17: ( READ | WRITE )
// org/jaitools/jiffle/parser/Jiffle.g:
{
root_0 = (CommonTree)adaptor.nil();
set24=(Token)input.LT(1);
if ( (input.LA(1)>=READ && input.LA(1)<=WRITE) ) {
input.consume();
if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set24));
state.errorRecovery=false;state.failed=false;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 8, role_StartIndex); }
}
return retval;
}
// $ANTLR end "role"
public static class initBlock_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "initBlock"
// org/jaitools/jiffle/parser/Jiffle.g:170:1: initBlock : INIT LCURLY ( varDeclaration )* RCURLY -> ( varDeclaration )* ;
public final JiffleParser.initBlock_return initBlock() throws RecognitionException {
JiffleParser.initBlock_return retval = new JiffleParser.initBlock_return();
retval.start = input.LT(1);
int initBlock_StartIndex = input.index();
CommonTree root_0 = null;
Token INIT25=null;
Token LCURLY26=null;
Token RCURLY28=null;
JiffleParser.varDeclaration_return varDeclaration27 = null;
CommonTree INIT25_tree=null;
CommonTree LCURLY26_tree=null;
CommonTree RCURLY28_tree=null;
RewriteRuleTokenStream stream_LCURLY=new RewriteRuleTokenStream(adaptor,"token LCURLY");
RewriteRuleTokenStream stream_INIT=new RewriteRuleTokenStream(adaptor,"token INIT");
RewriteRuleTokenStream stream_RCURLY=new RewriteRuleTokenStream(adaptor,"token RCURLY");
RewriteRuleSubtreeStream stream_varDeclaration=new RewriteRuleSubtreeStream(adaptor,"rule varDeclaration");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 9) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:170:17: ( INIT LCURLY ( varDeclaration )* RCURLY -> ( varDeclaration )* )
// org/jaitools/jiffle/parser/Jiffle.g:170:19: INIT LCURLY ( varDeclaration )* RCURLY
{
INIT25=(Token)match(input,INIT,FOLLOW_INIT_in_initBlock760); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_INIT.add(INIT25);
LCURLY26=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_initBlock762); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LCURLY.add(LCURLY26);
// org/jaitools/jiffle/parser/Jiffle.g:170:31: ( varDeclaration )*
loop7:
do {
int alt7=2;
switch ( input.LA(1) ) {
case ID:
{
alt7=1;
}
break;
}
switch (alt7) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:0:0: varDeclaration
{
pushFollow(FOLLOW_varDeclaration_in_initBlock764);
varDeclaration27=varDeclaration();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_varDeclaration.add(varDeclaration27.getTree());
}
break;
default :
break loop7;
}
} while (true);
RCURLY28=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_initBlock767); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RCURLY.add(RCURLY28);
// AST REWRITE
// elements: varDeclaration
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 170:54: -> ( varDeclaration )*
{
// org/jaitools/jiffle/parser/Jiffle.g:170:57: ( varDeclaration )*
while ( stream_varDeclaration.hasNext() ) {
adaptor.addChild(root_0, stream_varDeclaration.nextTree());
}
stream_varDeclaration.reset();
}
retval.tree = root_0;}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 9, initBlock_StartIndex); }
}
return retval;
}
// $ANTLR end "initBlock"
public static class varDeclaration_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "varDeclaration"
// org/jaitools/jiffle/parser/Jiffle.g:174:1: varDeclaration : ID ( EQ expression )? SEMI -> ^( DECL VAR_IMAGE_SCOPE ID ( expression )? ) ;
public final JiffleParser.varDeclaration_return varDeclaration() throws RecognitionException {
JiffleParser.varDeclaration_return retval = new JiffleParser.varDeclaration_return();
retval.start = input.LT(1);
int varDeclaration_StartIndex = input.index();
CommonTree root_0 = null;
Token ID29=null;
Token EQ30=null;
Token SEMI32=null;
JiffleParser.expression_return expression31 = null;
CommonTree ID29_tree=null;
CommonTree EQ30_tree=null;
CommonTree SEMI32_tree=null;
RewriteRuleTokenStream stream_EQ=new RewriteRuleTokenStream(adaptor,"token EQ");
RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 10) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:174:17: ( ID ( EQ expression )? SEMI -> ^( DECL VAR_IMAGE_SCOPE ID ( expression )? ) )
// org/jaitools/jiffle/parser/Jiffle.g:174:19: ID ( EQ expression )? SEMI
{
ID29=(Token)match(input,ID,FOLLOW_ID_in_varDeclaration799); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ID.add(ID29);
// org/jaitools/jiffle/parser/Jiffle.g:174:22: ( EQ expression )?
int alt8=2;
switch ( input.LA(1) ) {
case EQ:
{
alt8=1;
}
break;
}
switch (alt8) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:174:23: EQ expression
{
EQ30=(Token)match(input,EQ,FOLLOW_EQ_in_varDeclaration802); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_EQ.add(EQ30);
pushFollow(FOLLOW_expression_in_varDeclaration804);
expression31=expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expression.add(expression31.getTree());
}
break;
}
SEMI32=(Token)match(input,SEMI,FOLLOW_SEMI_in_varDeclaration808); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_SEMI.add(SEMI32);
// AST REWRITE
// elements: expression, ID
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 174:44: -> ^( DECL VAR_IMAGE_SCOPE ID ( expression )? )
{
// org/jaitools/jiffle/parser/Jiffle.g:174:47: ^( DECL VAR_IMAGE_SCOPE ID ( expression )? )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(DECL, "DECL"), root_1);
adaptor.addChild(root_1, (CommonTree)adaptor.create(VAR_IMAGE_SCOPE, "VAR_IMAGE_SCOPE"));
adaptor.addChild(root_1, stream_ID.nextNode());
// org/jaitools/jiffle/parser/Jiffle.g:174:73: ( expression )?
if ( stream_expression.hasNext() ) {
adaptor.addChild(root_1, stream_expression.nextTree());
}
stream_expression.reset();
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 10, varDeclaration_StartIndex); }
}
return retval;
}
// $ANTLR end "varDeclaration"
public static class block_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "block"
// org/jaitools/jiffle/parser/Jiffle.g:178:1: block : LCURLY ( statement )* RCURLY -> ^( BLOCK ( statement )* ) ;
public final JiffleParser.block_return block() throws RecognitionException {
JiffleParser.block_return retval = new JiffleParser.block_return();
retval.start = input.LT(1);
int block_StartIndex = input.index();
CommonTree root_0 = null;
Token LCURLY33=null;
Token RCURLY35=null;
JiffleParser.statement_return statement34 = null;
CommonTree LCURLY33_tree=null;
CommonTree RCURLY35_tree=null;
RewriteRuleTokenStream stream_LCURLY=new RewriteRuleTokenStream(adaptor,"token LCURLY");
RewriteRuleTokenStream stream_RCURLY=new RewriteRuleTokenStream(adaptor,"token RCURLY");
RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 11) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:178:17: ( LCURLY ( statement )* RCURLY -> ^( BLOCK ( statement )* ) )
// org/jaitools/jiffle/parser/Jiffle.g:178:19: LCURLY ( statement )* RCURLY
{
LCURLY33=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_block857); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LCURLY.add(LCURLY33);
// org/jaitools/jiffle/parser/Jiffle.g:178:26: ( statement )*
loop9:
do {
int alt9=2;
switch ( input.LA(1) ) {
case LCURLY:
case ID:
case SEMI:
case WHILE:
case LPAR:
case UNTIL:
case FOREACH:
case IF:
case BREAKIF:
case BREAK:
case CON:
case PLUS:
case MINUS:
case NOT:
case INCR:
case DECR:
case LSQUARE:
case INT_LITERAL:
case FLOAT_LITERAL:
case TRUE:
case FALSE:
case NULL:
{
alt9=1;
}
break;
}
switch (alt9) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:0:0: statement
{
pushFollow(FOLLOW_statement_in_block859);
statement34=statement();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_statement.add(statement34.getTree());
}
break;
default :
break loop9;
}
} while (true);
RCURLY35=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_block862); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RCURLY.add(RCURLY35);
// AST REWRITE
// elements: statement
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 178:44: -> ^( BLOCK ( statement )* )
{
// org/jaitools/jiffle/parser/Jiffle.g:178:47: ^( BLOCK ( statement )* )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(BLOCK, "BLOCK"), root_1);
// org/jaitools/jiffle/parser/Jiffle.g:178:55: ( statement )*
while ( stream_statement.hasNext() ) {
adaptor.addChild(root_1, stream_statement.nextTree());
}
stream_statement.reset();
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 11, block_StartIndex); }
}
return retval;
}
// $ANTLR end "block"
public static class statement_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "statement"
// org/jaitools/jiffle/parser/Jiffle.g:182:1: statement : ( ifCall | block | delimitedStatement SEMI | assignmentExpression SEMI | WHILE LPAR loopCondition RPAR statement -> ^( WHILE loopCondition statement ) | UNTIL LPAR loopCondition RPAR statement -> ^( UNTIL loopCondition statement ) | FOREACH LPAR ID IN loopSet RPAR statement -> ^( FOREACH ID loopSet statement ) | SEMI );
public final JiffleParser.statement_return statement() throws RecognitionException {
JiffleParser.statement_return retval = new JiffleParser.statement_return();
retval.start = input.LT(1);
int statement_StartIndex = input.index();
CommonTree root_0 = null;
Token SEMI39=null;
Token SEMI41=null;
Token WHILE42=null;
Token LPAR43=null;
Token RPAR45=null;
Token UNTIL47=null;
Token LPAR48=null;
Token RPAR50=null;
Token FOREACH52=null;
Token LPAR53=null;
Token ID54=null;
Token IN55=null;
Token RPAR57=null;
Token SEMI59=null;
JiffleParser.ifCall_return ifCall36 = null;
JiffleParser.block_return block37 = null;
JiffleParser.delimitedStatement_return delimitedStatement38 = null;
JiffleParser.assignmentExpression_return assignmentExpression40 = null;
JiffleParser.loopCondition_return loopCondition44 = null;
JiffleParser.statement_return statement46 = null;
JiffleParser.loopCondition_return loopCondition49 = null;
JiffleParser.statement_return statement51 = null;
JiffleParser.loopSet_return loopSet56 = null;
JiffleParser.statement_return statement58 = null;
CommonTree SEMI39_tree=null;
CommonTree SEMI41_tree=null;
CommonTree WHILE42_tree=null;
CommonTree LPAR43_tree=null;
CommonTree RPAR45_tree=null;
CommonTree UNTIL47_tree=null;
CommonTree LPAR48_tree=null;
CommonTree RPAR50_tree=null;
CommonTree FOREACH52_tree=null;
CommonTree LPAR53_tree=null;
CommonTree ID54_tree=null;
CommonTree IN55_tree=null;
CommonTree RPAR57_tree=null;
CommonTree SEMI59_tree=null;
RewriteRuleTokenStream stream_RPAR=new RewriteRuleTokenStream(adaptor,"token RPAR");
RewriteRuleTokenStream stream_FOREACH=new RewriteRuleTokenStream(adaptor,"token FOREACH");
RewriteRuleTokenStream stream_IN=new RewriteRuleTokenStream(adaptor,"token IN");
RewriteRuleTokenStream stream_LPAR=new RewriteRuleTokenStream(adaptor,"token LPAR");
RewriteRuleTokenStream stream_WHILE=new RewriteRuleTokenStream(adaptor,"token WHILE");
RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
RewriteRuleTokenStream stream_UNTIL=new RewriteRuleTokenStream(adaptor,"token UNTIL");
RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
RewriteRuleSubtreeStream stream_loopSet=new RewriteRuleSubtreeStream(adaptor,"rule loopSet");
RewriteRuleSubtreeStream stream_loopCondition=new RewriteRuleSubtreeStream(adaptor,"rule loopCondition");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 12) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:182:17: ( ifCall | block | delimitedStatement SEMI | assignmentExpression SEMI | WHILE LPAR loopCondition RPAR statement -> ^( WHILE loopCondition statement ) | UNTIL LPAR loopCondition RPAR statement -> ^( UNTIL loopCondition statement ) | FOREACH LPAR ID IN loopSet RPAR statement -> ^( FOREACH ID loopSet statement ) | SEMI )
int alt10=8;
alt10 = dfa10.predict(input);
switch (alt10) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:182:19: ifCall
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_ifCall_in_statement903);
ifCall36=ifCall();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, ifCall36.getTree());
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:183:19: block
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_block_in_statement923);
block37=block();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, block37.getTree());
}
break;
case 3 :
// org/jaitools/jiffle/parser/Jiffle.g:184:19: delimitedStatement SEMI
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_delimitedStatement_in_statement943);
delimitedStatement38=delimitedStatement();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, delimitedStatement38.getTree());
SEMI39=(Token)match(input,SEMI,FOLLOW_SEMI_in_statement945); if (state.failed) return retval;
}
break;
case 4 :
// org/jaitools/jiffle/parser/Jiffle.g:185:19: assignmentExpression SEMI
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_assignmentExpression_in_statement966);
assignmentExpression40=assignmentExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, assignmentExpression40.getTree());
SEMI41=(Token)match(input,SEMI,FOLLOW_SEMI_in_statement968); if (state.failed) return retval;
}
break;
case 5 :
// org/jaitools/jiffle/parser/Jiffle.g:186:19: WHILE LPAR loopCondition RPAR statement
{
WHILE42=(Token)match(input,WHILE,FOLLOW_WHILE_in_statement989); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_WHILE.add(WHILE42);
LPAR43=(Token)match(input,LPAR,FOLLOW_LPAR_in_statement991); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAR.add(LPAR43);
pushFollow(FOLLOW_loopCondition_in_statement993);
loopCondition44=loopCondition();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_loopCondition.add(loopCondition44.getTree());
RPAR45=(Token)match(input,RPAR,FOLLOW_RPAR_in_statement995); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RPAR.add(RPAR45);
pushFollow(FOLLOW_statement_in_statement997);
statement46=statement();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_statement.add(statement46.getTree());
// AST REWRITE
// elements: statement, loopCondition, WHILE
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 186:59: -> ^( WHILE loopCondition statement )
{
// org/jaitools/jiffle/parser/Jiffle.g:186:62: ^( WHILE loopCondition statement )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot(stream_WHILE.nextNode(), root_1);
adaptor.addChild(root_1, stream_loopCondition.nextTree());
adaptor.addChild(root_1, stream_statement.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
break;
case 6 :
// org/jaitools/jiffle/parser/Jiffle.g:187:19: UNTIL LPAR loopCondition RPAR statement
{
UNTIL47=(Token)match(input,UNTIL,FOLLOW_UNTIL_in_statement1027); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_UNTIL.add(UNTIL47);
LPAR48=(Token)match(input,LPAR,FOLLOW_LPAR_in_statement1029); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAR.add(LPAR48);
pushFollow(FOLLOW_loopCondition_in_statement1031);
loopCondition49=loopCondition();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_loopCondition.add(loopCondition49.getTree());
RPAR50=(Token)match(input,RPAR,FOLLOW_RPAR_in_statement1033); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RPAR.add(RPAR50);
pushFollow(FOLLOW_statement_in_statement1035);
statement51=statement();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_statement.add(statement51.getTree());
// AST REWRITE
// elements: UNTIL, statement, loopCondition
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 187:59: -> ^( UNTIL loopCondition statement )
{
// org/jaitools/jiffle/parser/Jiffle.g:187:62: ^( UNTIL loopCondition statement )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot(stream_UNTIL.nextNode(), root_1);
adaptor.addChild(root_1, stream_loopCondition.nextTree());
adaptor.addChild(root_1, stream_statement.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
break;
case 7 :
// org/jaitools/jiffle/parser/Jiffle.g:188:19: FOREACH LPAR ID IN loopSet RPAR statement
{
FOREACH52=(Token)match(input,FOREACH,FOLLOW_FOREACH_in_statement1065); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_FOREACH.add(FOREACH52);
LPAR53=(Token)match(input,LPAR,FOLLOW_LPAR_in_statement1067); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAR.add(LPAR53);
ID54=(Token)match(input,ID,FOLLOW_ID_in_statement1069); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ID.add(ID54);
IN55=(Token)match(input,IN,FOLLOW_IN_in_statement1071); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_IN.add(IN55);
pushFollow(FOLLOW_loopSet_in_statement1073);
loopSet56=loopSet();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_loopSet.add(loopSet56.getTree());
RPAR57=(Token)match(input,RPAR,FOLLOW_RPAR_in_statement1075); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RPAR.add(RPAR57);
pushFollow(FOLLOW_statement_in_statement1077);
statement58=statement();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_statement.add(statement58.getTree());
// AST REWRITE
// elements: statement, FOREACH, loopSet, ID
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 188:61: -> ^( FOREACH ID loopSet statement )
{
// org/jaitools/jiffle/parser/Jiffle.g:188:64: ^( FOREACH ID loopSet statement )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot(stream_FOREACH.nextNode(), root_1);
adaptor.addChild(root_1, stream_ID.nextNode());
adaptor.addChild(root_1, stream_loopSet.nextTree());
adaptor.addChild(root_1, stream_statement.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
break;
case 8 :
// org/jaitools/jiffle/parser/Jiffle.g:189:19: SEMI
{
root_0 = (CommonTree)adaptor.nil();
SEMI59=(Token)match(input,SEMI,FOLLOW_SEMI_in_statement1109); if (state.failed) return retval;
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 12, statement_StartIndex); }
}
return retval;
}
// $ANTLR end "statement"
public static class ifCall_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "ifCall"
// org/jaitools/jiffle/parser/Jiffle.g:193:1: ifCall : IF LPAR orExpression RPAR s1= statement ( ELSE s2= statement -> ^( IF orExpression $s1 $s2) | -> ^( IF orExpression $s1) ) ;
public final JiffleParser.ifCall_return ifCall() throws RecognitionException {
JiffleParser.ifCall_return retval = new JiffleParser.ifCall_return();
retval.start = input.LT(1);
int ifCall_StartIndex = input.index();
CommonTree root_0 = null;
Token IF60=null;
Token LPAR61=null;
Token RPAR63=null;
Token ELSE64=null;
JiffleParser.statement_return s1 = null;
JiffleParser.statement_return s2 = null;
JiffleParser.orExpression_return orExpression62 = null;
CommonTree IF60_tree=null;
CommonTree LPAR61_tree=null;
CommonTree RPAR63_tree=null;
CommonTree ELSE64_tree=null;
RewriteRuleTokenStream stream_RPAR=new RewriteRuleTokenStream(adaptor,"token RPAR");
RewriteRuleTokenStream stream_LPAR=new RewriteRuleTokenStream(adaptor,"token LPAR");
RewriteRuleTokenStream stream_IF=new RewriteRuleTokenStream(adaptor,"token IF");
RewriteRuleTokenStream stream_ELSE=new RewriteRuleTokenStream(adaptor,"token ELSE");
RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
RewriteRuleSubtreeStream stream_orExpression=new RewriteRuleSubtreeStream(adaptor,"rule orExpression");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 13) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:193:17: ( IF LPAR orExpression RPAR s1= statement ( ELSE s2= statement -> ^( IF orExpression $s1 $s2) | -> ^( IF orExpression $s1) ) )
// org/jaitools/jiffle/parser/Jiffle.g:193:19: IF LPAR orExpression RPAR s1= statement ( ELSE s2= statement -> ^( IF orExpression $s1 $s2) | -> ^( IF orExpression $s1) )
{
IF60=(Token)match(input,IF,FOLLOW_IF_in_ifCall1145); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_IF.add(IF60);
LPAR61=(Token)match(input,LPAR,FOLLOW_LPAR_in_ifCall1147); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAR.add(LPAR61);
pushFollow(FOLLOW_orExpression_in_ifCall1149);
orExpression62=orExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_orExpression.add(orExpression62.getTree());
RPAR63=(Token)match(input,RPAR,FOLLOW_RPAR_in_ifCall1151); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RPAR.add(RPAR63);
pushFollow(FOLLOW_statement_in_ifCall1155);
s1=statement();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_statement.add(s1.getTree());
// org/jaitools/jiffle/parser/Jiffle.g:194:19: ( ELSE s2= statement -> ^( IF orExpression $s1 $s2) | -> ^( IF orExpression $s1) )
int alt11=2;
switch ( input.LA(1) ) {
case ELSE:
{
int LA11_1 = input.LA(2);
if ( (synpred19_Jiffle()) ) {
alt11=1;
}
else if ( (true) ) {
alt11=2;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 11, 1, input);
throw nvae;
}
}
break;
case EOF:
case LCURLY:
case RCURLY:
case ID:
case SEMI:
case WHILE:
case LPAR:
case UNTIL:
case FOREACH:
case IF:
case BREAKIF:
case BREAK:
case CON:
case PLUS:
case MINUS:
case NOT:
case INCR:
case DECR:
case LSQUARE:
case INT_LITERAL:
case FLOAT_LITERAL:
case TRUE:
case FALSE:
case NULL:
{
alt11=2;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 11, 0, input);
throw nvae;
}
switch (alt11) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:194:21: ELSE s2= statement
{
ELSE64=(Token)match(input,ELSE,FOLLOW_ELSE_in_ifCall1177); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ELSE.add(ELSE64);
pushFollow(FOLLOW_statement_in_ifCall1181);
s2=statement();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_statement.add(s2.getTree());
// AST REWRITE
// elements: s2, IF, orExpression, s1
// token labels:
// rule labels: retval, s2, s1
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
RewriteRuleSubtreeStream stream_s2=new RewriteRuleSubtreeStream(adaptor,"rule s2",s2!=null?s2.tree:null);
RewriteRuleSubtreeStream stream_s1=new RewriteRuleSubtreeStream(adaptor,"rule s1",s1!=null?s1.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 194:39: -> ^( IF orExpression $s1 $s2)
{
// org/jaitools/jiffle/parser/Jiffle.g:194:42: ^( IF orExpression $s1 $s2)
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot(stream_IF.nextNode(), root_1);
adaptor.addChild(root_1, stream_orExpression.nextTree());
adaptor.addChild(root_1, stream_s1.nextTree());
adaptor.addChild(root_1, stream_s2.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:195:21:
{
// AST REWRITE
// elements: s1, IF, orExpression
// token labels:
// rule labels: retval, s1
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
RewriteRuleSubtreeStream stream_s1=new RewriteRuleSubtreeStream(adaptor,"rule s1",s1!=null?s1.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 195:21: -> ^( IF orExpression $s1)
{
// org/jaitools/jiffle/parser/Jiffle.g:195:24: ^( IF orExpression $s1)
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot(stream_IF.nextNode(), root_1);
adaptor.addChild(root_1, stream_orExpression.nextTree());
adaptor.addChild(root_1, stream_s1.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
break;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 13, ifCall_StartIndex); }
}
return retval;
}
// $ANTLR end "ifCall"
public static class delimitedStatement_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "delimitedStatement"
// org/jaitools/jiffle/parser/Jiffle.g:200:1: delimitedStatement : ( expression | BREAKIF LPAR expression RPAR -> ^( BREAKIF expression ) | BREAK );
public final JiffleParser.delimitedStatement_return delimitedStatement() throws RecognitionException {
JiffleParser.delimitedStatement_return retval = new JiffleParser.delimitedStatement_return();
retval.start = input.LT(1);
int delimitedStatement_StartIndex = input.index();
CommonTree root_0 = null;
Token BREAKIF66=null;
Token LPAR67=null;
Token RPAR69=null;
Token BREAK70=null;
JiffleParser.expression_return expression65 = null;
JiffleParser.expression_return expression68 = null;
CommonTree BREAKIF66_tree=null;
CommonTree LPAR67_tree=null;
CommonTree RPAR69_tree=null;
CommonTree BREAK70_tree=null;
RewriteRuleTokenStream stream_RPAR=new RewriteRuleTokenStream(adaptor,"token RPAR");
RewriteRuleTokenStream stream_LPAR=new RewriteRuleTokenStream(adaptor,"token LPAR");
RewriteRuleTokenStream stream_BREAKIF=new RewriteRuleTokenStream(adaptor,"token BREAKIF");
RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 14) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:201:17: ( expression | BREAKIF LPAR expression RPAR -> ^( BREAKIF expression ) | BREAK )
int alt12=3;
switch ( input.LA(1) ) {
case ID:
case LPAR:
case CON:
case PLUS:
case MINUS:
case NOT:
case INCR:
case DECR:
case LSQUARE:
case INT_LITERAL:
case FLOAT_LITERAL:
case TRUE:
case FALSE:
case NULL:
{
alt12=1;
}
break;
case BREAKIF:
{
alt12=2;
}
break;
case BREAK:
{
alt12=3;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 12, 0, input);
throw nvae;
}
switch (alt12) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:201:19: expression
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_expression_in_delimitedStatement1288);
expression65=expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, expression65.getTree());
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:202:19: BREAKIF LPAR expression RPAR
{
BREAKIF66=(Token)match(input,BREAKIF,FOLLOW_BREAKIF_in_delimitedStatement1308); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_BREAKIF.add(BREAKIF66);
LPAR67=(Token)match(input,LPAR,FOLLOW_LPAR_in_delimitedStatement1310); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAR.add(LPAR67);
pushFollow(FOLLOW_expression_in_delimitedStatement1312);
expression68=expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expression.add(expression68.getTree());
RPAR69=(Token)match(input,RPAR,FOLLOW_RPAR_in_delimitedStatement1314); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RPAR.add(RPAR69);
// AST REWRITE
// elements: expression, BREAKIF
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 202:48: -> ^( BREAKIF expression )
{
// org/jaitools/jiffle/parser/Jiffle.g:202:51: ^( BREAKIF expression )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot(stream_BREAKIF.nextNode(), root_1);
adaptor.addChild(root_1, stream_expression.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
break;
case 3 :
// org/jaitools/jiffle/parser/Jiffle.g:203:19: BREAK
{
root_0 = (CommonTree)adaptor.nil();
BREAK70=(Token)match(input,BREAK,FOLLOW_BREAK_in_delimitedStatement1342); if (state.failed) return retval;
if ( state.backtracking==0 ) {
BREAK70_tree = (CommonTree)adaptor.create(BREAK70);
adaptor.addChild(root_0, BREAK70_tree);
}
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 14, delimitedStatement_StartIndex); }
}
return retval;
}
// $ANTLR end "delimitedStatement"
public static class loopCondition_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "loopCondition"
// org/jaitools/jiffle/parser/Jiffle.g:207:1: loopCondition : orExpression ;
public final JiffleParser.loopCondition_return loopCondition() throws RecognitionException {
JiffleParser.loopCondition_return retval = new JiffleParser.loopCondition_return();
retval.start = input.LT(1);
int loopCondition_StartIndex = input.index();
CommonTree root_0 = null;
JiffleParser.orExpression_return orExpression71 = null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 15) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:207:17: ( orExpression )
// org/jaitools/jiffle/parser/Jiffle.g:207:19: orExpression
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_orExpression_in_loopCondition1370);
orExpression71=orExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, orExpression71.getTree());
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 15, loopCondition_StartIndex); }
}
return retval;
}
// $ANTLR end "loopCondition"
public static class loopSet_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "loopSet"
// org/jaitools/jiffle/parser/Jiffle.g:211:1: loopSet : ( listLiteral | sequence | ID );
public final JiffleParser.loopSet_return loopSet() throws RecognitionException {
JiffleParser.loopSet_return retval = new JiffleParser.loopSet_return();
retval.start = input.LT(1);
int loopSet_StartIndex = input.index();
CommonTree root_0 = null;
Token ID74=null;
JiffleParser.listLiteral_return listLiteral72 = null;
JiffleParser.sequence_return sequence73 = null;
CommonTree ID74_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 16) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:211:17: ( listLiteral | sequence | ID )
int alt13=3;
alt13 = dfa13.predict(input);
switch (alt13) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:211:19: listLiteral
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_listLiteral_in_loopSet1404);
listLiteral72=listLiteral();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, listLiteral72.getTree());
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:212:19: sequence
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_sequence_in_loopSet1424);
sequence73=sequence();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, sequence73.getTree());
}
break;
case 3 :
// org/jaitools/jiffle/parser/Jiffle.g:213:19: ID
{
root_0 = (CommonTree)adaptor.nil();
ID74=(Token)match(input,ID,FOLLOW_ID_in_loopSet1444); if (state.failed) return retval;
if ( state.backtracking==0 ) {
ID74_tree = (CommonTree)adaptor.create(ID74);
adaptor.addChild(root_0, ID74_tree);
}
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 16, loopSet_StartIndex); }
}
return retval;
}
// $ANTLR end "loopSet"
public static class expressionList_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "expressionList"
// org/jaitools/jiffle/parser/Jiffle.g:217:1: expressionList : ( expression ( COMMA expression )* )? -> ^( EXPR_LIST ( expression )* ) ;
public final JiffleParser.expressionList_return expressionList() throws RecognitionException {
JiffleParser.expressionList_return retval = new JiffleParser.expressionList_return();
retval.start = input.LT(1);
int expressionList_StartIndex = input.index();
CommonTree root_0 = null;
Token COMMA76=null;
JiffleParser.expression_return expression75 = null;
JiffleParser.expression_return expression77 = null;
CommonTree COMMA76_tree=null;
RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 17) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:217:17: ( ( expression ( COMMA expression )* )? -> ^( EXPR_LIST ( expression )* ) )
// org/jaitools/jiffle/parser/Jiffle.g:217:19: ( expression ( COMMA expression )* )?
{
// org/jaitools/jiffle/parser/Jiffle.g:217:19: ( expression ( COMMA expression )* )?
int alt15=2;
switch ( input.LA(1) ) {
case ID:
case LPAR:
case CON:
case PLUS:
case MINUS:
case NOT:
case INCR:
case DECR:
case LSQUARE:
case INT_LITERAL:
case FLOAT_LITERAL:
case TRUE:
case FALSE:
case NULL:
{
alt15=1;
}
break;
}
switch (alt15) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:217:20: expression ( COMMA expression )*
{
pushFollow(FOLLOW_expression_in_expressionList1472);
expression75=expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expression.add(expression75.getTree());
// org/jaitools/jiffle/parser/Jiffle.g:217:31: ( COMMA expression )*
loop14:
do {
int alt14=2;
switch ( input.LA(1) ) {
case COMMA:
{
alt14=1;
}
break;
}
switch (alt14) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:217:32: COMMA expression
{
COMMA76=(Token)match(input,COMMA,FOLLOW_COMMA_in_expressionList1475); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA76);
pushFollow(FOLLOW_expression_in_expressionList1477);
expression77=expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expression.add(expression77.getTree());
}
break;
default :
break loop14;
}
} while (true);
}
break;
}
// AST REWRITE
// elements: expression
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 217:54: -> ^( EXPR_LIST ( expression )* )
{
// org/jaitools/jiffle/parser/Jiffle.g:217:57: ^( EXPR_LIST ( expression )* )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(EXPR_LIST, "EXPR_LIST"), root_1);
// org/jaitools/jiffle/parser/Jiffle.g:217:69: ( expression )*
while ( stream_expression.hasNext() ) {
adaptor.addChild(root_1, stream_expression.nextTree());
}
stream_expression.reset();
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 17, expressionList_StartIndex); }
}
return retval;
}
// $ANTLR end "expressionList"
public static class sequence_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "sequence"
// org/jaitools/jiffle/parser/Jiffle.g:221:1: sequence : lo= expression COLON hi= expression -> ^( SEQUENCE $lo $hi) ;
public final JiffleParser.sequence_return sequence() throws RecognitionException {
JiffleParser.sequence_return retval = new JiffleParser.sequence_return();
retval.start = input.LT(1);
int sequence_StartIndex = input.index();
CommonTree root_0 = null;
Token COLON78=null;
JiffleParser.expression_return lo = null;
JiffleParser.expression_return hi = null;
CommonTree COLON78_tree=null;
RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 18) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:221:17: (lo= expression COLON hi= expression -> ^( SEQUENCE $lo $hi) )
// org/jaitools/jiffle/parser/Jiffle.g:221:19: lo= expression COLON hi= expression
{
pushFollow(FOLLOW_expression_in_sequence1526);
lo=expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expression.add(lo.getTree());
COLON78=(Token)match(input,COLON,FOLLOW_COLON_in_sequence1528); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COLON.add(COLON78);
pushFollow(FOLLOW_expression_in_sequence1532);
hi=expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expression.add(hi.getTree());
// AST REWRITE
// elements: lo, hi
// token labels:
// rule labels: lo, retval, hi
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_lo=new RewriteRuleSubtreeStream(adaptor,"rule lo",lo!=null?lo.tree:null);
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
RewriteRuleSubtreeStream stream_hi=new RewriteRuleSubtreeStream(adaptor,"rule hi",hi!=null?hi.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 221:53: -> ^( SEQUENCE $lo $hi)
{
// org/jaitools/jiffle/parser/Jiffle.g:221:56: ^( SEQUENCE $lo $hi)
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(SEQUENCE, "SEQUENCE"), root_1);
adaptor.addChild(root_1, stream_lo.nextTree());
adaptor.addChild(root_1, stream_hi.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 18, sequence_StartIndex); }
}
return retval;
}
// $ANTLR end "sequence"
public static class conCall_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "conCall"
// org/jaitools/jiffle/parser/Jiffle.g:230:1: conCall : CON LPAR expressionList RPAR -> ^( CON_CALL expressionList ) ;
public final JiffleParser.conCall_return conCall() throws RecognitionException {
JiffleParser.conCall_return retval = new JiffleParser.conCall_return();
retval.start = input.LT(1);
int conCall_StartIndex = input.index();
CommonTree root_0 = null;
Token CON79=null;
Token LPAR80=null;
Token RPAR82=null;
JiffleParser.expressionList_return expressionList81 = null;
CommonTree CON79_tree=null;
CommonTree LPAR80_tree=null;
CommonTree RPAR82_tree=null;
RewriteRuleTokenStream stream_RPAR=new RewriteRuleTokenStream(adaptor,"token RPAR");
RewriteRuleTokenStream stream_LPAR=new RewriteRuleTokenStream(adaptor,"token LPAR");
RewriteRuleTokenStream stream_CON=new RewriteRuleTokenStream(adaptor,"token CON");
RewriteRuleSubtreeStream stream_expressionList=new RewriteRuleSubtreeStream(adaptor,"rule expressionList");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 19) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:230:17: ( CON LPAR expressionList RPAR -> ^( CON_CALL expressionList ) )
// org/jaitools/jiffle/parser/Jiffle.g:230:19: CON LPAR expressionList RPAR
{
CON79=(Token)match(input,CON,FOLLOW_CON_in_conCall1580); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CON.add(CON79);
LPAR80=(Token)match(input,LPAR,FOLLOW_LPAR_in_conCall1582); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAR.add(LPAR80);
pushFollow(FOLLOW_expressionList_in_conCall1584);
expressionList81=expressionList();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expressionList.add(expressionList81.getTree());
RPAR82=(Token)match(input,RPAR,FOLLOW_RPAR_in_conCall1586); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RPAR.add(RPAR82);
// AST REWRITE
// elements: expressionList
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 230:48: -> ^( CON_CALL expressionList )
{
// org/jaitools/jiffle/parser/Jiffle.g:230:51: ^( CON_CALL expressionList )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(CON_CALL, "CON_CALL"), root_1);
adaptor.addChild(root_1, stream_expressionList.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 19, conCall_StartIndex); }
}
return retval;
}
// $ANTLR end "conCall"
public static class assignmentExpression_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "assignmentExpression"
// org/jaitools/jiffle/parser/Jiffle.g:239:1: assignmentExpression : ID assignmentOp expression ;
public final JiffleParser.assignmentExpression_return assignmentExpression() throws RecognitionException {
JiffleParser.assignmentExpression_return retval = new JiffleParser.assignmentExpression_return();
retval.start = input.LT(1);
int assignmentExpression_StartIndex = input.index();
CommonTree root_0 = null;
Token ID83=null;
JiffleParser.assignmentOp_return assignmentOp84 = null;
JiffleParser.expression_return expression85 = null;
CommonTree ID83_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 20) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:240:17: ( ID assignmentOp expression )
// org/jaitools/jiffle/parser/Jiffle.g:240:19: ID assignmentOp expression
{
root_0 = (CommonTree)adaptor.nil();
ID83=(Token)match(input,ID,FOLLOW_ID_in_assignmentExpression1638); if (state.failed) return retval;
if ( state.backtracking==0 ) {
ID83_tree = (CommonTree)adaptor.create(ID83);
adaptor.addChild(root_0, ID83_tree);
}
pushFollow(FOLLOW_assignmentOp_in_assignmentExpression1640);
assignmentOp84=assignmentOp();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) root_0 = (CommonTree)adaptor.becomeRoot(assignmentOp84.getTree(), root_0);
pushFollow(FOLLOW_expression_in_assignmentExpression1643);
expression85=expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, expression85.getTree());
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 20, assignmentExpression_StartIndex); }
}
return retval;
}
// $ANTLR end "assignmentExpression"
public static class expression_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "expression"
// org/jaitools/jiffle/parser/Jiffle.g:243:1: expression : ( conditionalExpression | ID APPEND expression );
public final JiffleParser.expression_return expression() throws RecognitionException {
JiffleParser.expression_return retval = new JiffleParser.expression_return();
retval.start = input.LT(1);
int expression_StartIndex = input.index();
CommonTree root_0 = null;
Token ID87=null;
Token APPEND88=null;
JiffleParser.conditionalExpression_return conditionalExpression86 = null;
JiffleParser.expression_return expression89 = null;
CommonTree ID87_tree=null;
CommonTree APPEND88_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 21) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:243:17: ( conditionalExpression | ID APPEND expression )
int alt16=2;
switch ( input.LA(1) ) {
case LPAR:
case CON:
case PLUS:
case MINUS:
case NOT:
case INCR:
case DECR:
case LSQUARE:
case INT_LITERAL:
case FLOAT_LITERAL:
case TRUE:
case FALSE:
case NULL:
{
alt16=1;
}
break;
case ID:
{
switch ( input.LA(2) ) {
case APPEND:
{
alt16=2;
}
break;
case EOF:
case SEMI:
case LPAR:
case RPAR:
case COMMA:
case COLON:
case QUESTION:
case OR:
case XOR:
case AND:
case LOGICALEQ:
case NE:
case GT:
case GE:
case LE:
case LT:
case PLUS:
case MINUS:
case TIMES:
case DIV:
case MOD:
case INCR:
case DECR:
case POW:
case LSQUARE:
case RSQUARE:
{
alt16=1;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 16, 2, input);
throw nvae;
}
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 16, 0, input);
throw nvae;
}
switch (alt16) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:243:19: conditionalExpression
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_conditionalExpression_in_expression1673);
conditionalExpression86=conditionalExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, conditionalExpression86.getTree());
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:244:19: ID APPEND expression
{
root_0 = (CommonTree)adaptor.nil();
ID87=(Token)match(input,ID,FOLLOW_ID_in_expression1693); if (state.failed) return retval;
if ( state.backtracking==0 ) {
ID87_tree = (CommonTree)adaptor.create(ID87);
adaptor.addChild(root_0, ID87_tree);
}
APPEND88=(Token)match(input,APPEND,FOLLOW_APPEND_in_expression1695); if (state.failed) return retval;
if ( state.backtracking==0 ) {
APPEND88_tree = (CommonTree)adaptor.create(APPEND88);
root_0 = (CommonTree)adaptor.becomeRoot(APPEND88_tree, root_0);
}
pushFollow(FOLLOW_expression_in_expression1698);
expression89=expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, expression89.getTree());
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 21, expression_StartIndex); }
}
return retval;
}
// $ANTLR end "expression"
public static class assignmentOp_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "assignmentOp"
// org/jaitools/jiffle/parser/Jiffle.g:248:1: assignmentOp : ( EQ | TIMESEQ | DIVEQ | MODEQ | PLUSEQ | MINUSEQ );
public final JiffleParser.assignmentOp_return assignmentOp() throws RecognitionException {
JiffleParser.assignmentOp_return retval = new JiffleParser.assignmentOp_return();
retval.start = input.LT(1);
int assignmentOp_StartIndex = input.index();
CommonTree root_0 = null;
Token set90=null;
CommonTree set90_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 22) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:248:17: ( EQ | TIMESEQ | DIVEQ | MODEQ | PLUSEQ | MINUSEQ )
// org/jaitools/jiffle/parser/Jiffle.g:
{
root_0 = (CommonTree)adaptor.nil();
set90=(Token)input.LT(1);
if ( input.LA(1)==EQ||(input.LA(1)>=TIMESEQ && input.LA(1)<=MINUSEQ) ) {
input.consume();
if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set90));
state.errorRecovery=false;state.failed=false;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 22, assignmentOp_StartIndex); }
}
return retval;
}
// $ANTLR end "assignmentOp"
public static class conditionalExpression_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "conditionalExpression"
// org/jaitools/jiffle/parser/Jiffle.g:257:1: conditionalExpression : orExpression ( QUESTION expression COLON expression )? ;
public final JiffleParser.conditionalExpression_return conditionalExpression() throws RecognitionException {
JiffleParser.conditionalExpression_return retval = new JiffleParser.conditionalExpression_return();
retval.start = input.LT(1);
int conditionalExpression_StartIndex = input.index();
CommonTree root_0 = null;
Token QUESTION92=null;
Token COLON94=null;
JiffleParser.orExpression_return orExpression91 = null;
JiffleParser.expression_return expression93 = null;
JiffleParser.expression_return expression95 = null;
CommonTree QUESTION92_tree=null;
CommonTree COLON94_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 23) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:258:17: ( orExpression ( QUESTION expression COLON expression )? )
// org/jaitools/jiffle/parser/Jiffle.g:258:19: orExpression ( QUESTION expression COLON expression )?
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_orExpression_in_conditionalExpression1869);
orExpression91=orExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, orExpression91.getTree());
// org/jaitools/jiffle/parser/Jiffle.g:258:32: ( QUESTION expression COLON expression )?
int alt17=2;
switch ( input.LA(1) ) {
case QUESTION:
{
alt17=1;
}
break;
}
switch (alt17) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:258:33: QUESTION expression COLON expression
{
QUESTION92=(Token)match(input,QUESTION,FOLLOW_QUESTION_in_conditionalExpression1872); if (state.failed) return retval;
if ( state.backtracking==0 ) {
QUESTION92_tree = (CommonTree)adaptor.create(QUESTION92);
root_0 = (CommonTree)adaptor.becomeRoot(QUESTION92_tree, root_0);
}
pushFollow(FOLLOW_expression_in_conditionalExpression1875);
expression93=expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, expression93.getTree());
COLON94=(Token)match(input,COLON,FOLLOW_COLON_in_conditionalExpression1877); if (state.failed) return retval;
pushFollow(FOLLOW_expression_in_conditionalExpression1880);
expression95=expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, expression95.getTree());
}
break;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 23, conditionalExpression_StartIndex); }
}
return retval;
}
// $ANTLR end "conditionalExpression"
public static class orExpression_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "orExpression"
// org/jaitools/jiffle/parser/Jiffle.g:262:1: orExpression : xorExpression ( OR xorExpression )* ;
public final JiffleParser.orExpression_return orExpression() throws RecognitionException {
JiffleParser.orExpression_return retval = new JiffleParser.orExpression_return();
retval.start = input.LT(1);
int orExpression_StartIndex = input.index();
CommonTree root_0 = null;
Token OR97=null;
JiffleParser.xorExpression_return xorExpression96 = null;
JiffleParser.xorExpression_return xorExpression98 = null;
CommonTree OR97_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 24) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:262:17: ( xorExpression ( OR xorExpression )* )
// org/jaitools/jiffle/parser/Jiffle.g:262:19: xorExpression ( OR xorExpression )*
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_xorExpression_in_orExpression1911);
xorExpression96=xorExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, xorExpression96.getTree());
// org/jaitools/jiffle/parser/Jiffle.g:262:33: ( OR xorExpression )*
loop18:
do {
int alt18=2;
switch ( input.LA(1) ) {
case OR:
{
alt18=1;
}
break;
}
switch (alt18) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:262:34: OR xorExpression
{
OR97=(Token)match(input,OR,FOLLOW_OR_in_orExpression1914); if (state.failed) return retval;
if ( state.backtracking==0 ) {
OR97_tree = (CommonTree)adaptor.create(OR97);
root_0 = (CommonTree)adaptor.becomeRoot(OR97_tree, root_0);
}
pushFollow(FOLLOW_xorExpression_in_orExpression1917);
xorExpression98=xorExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, xorExpression98.getTree());
}
break;
default :
break loop18;
}
} while (true);
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 24, orExpression_StartIndex); }
}
return retval;
}
// $ANTLR end "orExpression"
public static class xorExpression_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "xorExpression"
// org/jaitools/jiffle/parser/Jiffle.g:266:1: xorExpression : andExpression ( XOR andExpression )* ;
public final JiffleParser.xorExpression_return xorExpression() throws RecognitionException {
JiffleParser.xorExpression_return retval = new JiffleParser.xorExpression_return();
retval.start = input.LT(1);
int xorExpression_StartIndex = input.index();
CommonTree root_0 = null;
Token XOR100=null;
JiffleParser.andExpression_return andExpression99 = null;
JiffleParser.andExpression_return andExpression101 = null;
CommonTree XOR100_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 25) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:266:17: ( andExpression ( XOR andExpression )* )
// org/jaitools/jiffle/parser/Jiffle.g:266:19: andExpression ( XOR andExpression )*
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_andExpression_in_xorExpression1947);
andExpression99=andExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, andExpression99.getTree());
// org/jaitools/jiffle/parser/Jiffle.g:266:33: ( XOR andExpression )*
loop19:
do {
int alt19=2;
switch ( input.LA(1) ) {
case XOR:
{
alt19=1;
}
break;
}
switch (alt19) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:266:34: XOR andExpression
{
XOR100=(Token)match(input,XOR,FOLLOW_XOR_in_xorExpression1950); if (state.failed) return retval;
if ( state.backtracking==0 ) {
XOR100_tree = (CommonTree)adaptor.create(XOR100);
root_0 = (CommonTree)adaptor.becomeRoot(XOR100_tree, root_0);
}
pushFollow(FOLLOW_andExpression_in_xorExpression1953);
andExpression101=andExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, andExpression101.getTree());
}
break;
default :
break loop19;
}
} while (true);
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 25, xorExpression_StartIndex); }
}
return retval;
}
// $ANTLR end "xorExpression"
public static class andExpression_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "andExpression"
// org/jaitools/jiffle/parser/Jiffle.g:270:1: andExpression : eqExpression ( AND eqExpression )* ;
public final JiffleParser.andExpression_return andExpression() throws RecognitionException {
JiffleParser.andExpression_return retval = new JiffleParser.andExpression_return();
retval.start = input.LT(1);
int andExpression_StartIndex = input.index();
CommonTree root_0 = null;
Token AND103=null;
JiffleParser.eqExpression_return eqExpression102 = null;
JiffleParser.eqExpression_return eqExpression104 = null;
CommonTree AND103_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 26) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:270:17: ( eqExpression ( AND eqExpression )* )
// org/jaitools/jiffle/parser/Jiffle.g:270:19: eqExpression ( AND eqExpression )*
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_eqExpression_in_andExpression1983);
eqExpression102=eqExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, eqExpression102.getTree());
// org/jaitools/jiffle/parser/Jiffle.g:270:32: ( AND eqExpression )*
loop20:
do {
int alt20=2;
switch ( input.LA(1) ) {
case AND:
{
alt20=1;
}
break;
}
switch (alt20) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:270:33: AND eqExpression
{
AND103=(Token)match(input,AND,FOLLOW_AND_in_andExpression1986); if (state.failed) return retval;
if ( state.backtracking==0 ) {
AND103_tree = (CommonTree)adaptor.create(AND103);
root_0 = (CommonTree)adaptor.becomeRoot(AND103_tree, root_0);
}
pushFollow(FOLLOW_eqExpression_in_andExpression1989);
eqExpression104=eqExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, eqExpression104.getTree());
}
break;
default :
break loop20;
}
} while (true);
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 26, andExpression_StartIndex); }
}
return retval;
}
// $ANTLR end "andExpression"
public static class eqExpression_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "eqExpression"
// org/jaitools/jiffle/parser/Jiffle.g:274:1: eqExpression : compExpression ( ( LOGICALEQ | NE ) compExpression )? ;
public final JiffleParser.eqExpression_return eqExpression() throws RecognitionException {
JiffleParser.eqExpression_return retval = new JiffleParser.eqExpression_return();
retval.start = input.LT(1);
int eqExpression_StartIndex = input.index();
CommonTree root_0 = null;
Token LOGICALEQ106=null;
Token NE107=null;
JiffleParser.compExpression_return compExpression105 = null;
JiffleParser.compExpression_return compExpression108 = null;
CommonTree LOGICALEQ106_tree=null;
CommonTree NE107_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 27) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:274:17: ( compExpression ( ( LOGICALEQ | NE ) compExpression )? )
// org/jaitools/jiffle/parser/Jiffle.g:274:19: compExpression ( ( LOGICALEQ | NE ) compExpression )?
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_compExpression_in_eqExpression2020);
compExpression105=compExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, compExpression105.getTree());
// org/jaitools/jiffle/parser/Jiffle.g:274:34: ( ( LOGICALEQ | NE ) compExpression )?
int alt22=2;
switch ( input.LA(1) ) {
case LOGICALEQ:
case NE:
{
alt22=1;
}
break;
}
switch (alt22) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:274:35: ( LOGICALEQ | NE ) compExpression
{
// org/jaitools/jiffle/parser/Jiffle.g:274:35: ( LOGICALEQ | NE )
int alt21=2;
switch ( input.LA(1) ) {
case LOGICALEQ:
{
alt21=1;
}
break;
case NE:
{
alt21=2;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 21, 0, input);
throw nvae;
}
switch (alt21) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:274:36: LOGICALEQ
{
LOGICALEQ106=(Token)match(input,LOGICALEQ,FOLLOW_LOGICALEQ_in_eqExpression2024); if (state.failed) return retval;
if ( state.backtracking==0 ) {
LOGICALEQ106_tree = (CommonTree)adaptor.create(LOGICALEQ106);
root_0 = (CommonTree)adaptor.becomeRoot(LOGICALEQ106_tree, root_0);
}
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:274:49: NE
{
NE107=(Token)match(input,NE,FOLLOW_NE_in_eqExpression2029); if (state.failed) return retval;
if ( state.backtracking==0 ) {
NE107_tree = (CommonTree)adaptor.create(NE107);
root_0 = (CommonTree)adaptor.becomeRoot(NE107_tree, root_0);
}
}
break;
}
pushFollow(FOLLOW_compExpression_in_eqExpression2033);
compExpression108=compExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, compExpression108.getTree());
}
break;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 27, eqExpression_StartIndex); }
}
return retval;
}
// $ANTLR end "eqExpression"
public static class compExpression_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "compExpression"
// org/jaitools/jiffle/parser/Jiffle.g:278:1: compExpression : addExpression ( ( GT | GE | LE | LT ) addExpression )? ;
public final JiffleParser.compExpression_return compExpression() throws RecognitionException {
JiffleParser.compExpression_return retval = new JiffleParser.compExpression_return();
retval.start = input.LT(1);
int compExpression_StartIndex = input.index();
CommonTree root_0 = null;
Token GT110=null;
Token GE111=null;
Token LE112=null;
Token LT113=null;
JiffleParser.addExpression_return addExpression109 = null;
JiffleParser.addExpression_return addExpression114 = null;
CommonTree GT110_tree=null;
CommonTree GE111_tree=null;
CommonTree LE112_tree=null;
CommonTree LT113_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 28) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:278:17: ( addExpression ( ( GT | GE | LE | LT ) addExpression )? )
// org/jaitools/jiffle/parser/Jiffle.g:278:19: addExpression ( ( GT | GE | LE | LT ) addExpression )?
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_addExpression_in_compExpression2062);
addExpression109=addExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, addExpression109.getTree());
// org/jaitools/jiffle/parser/Jiffle.g:278:33: ( ( GT | GE | LE | LT ) addExpression )?
int alt24=2;
switch ( input.LA(1) ) {
case GT:
case GE:
case LE:
case LT:
{
alt24=1;
}
break;
}
switch (alt24) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:278:34: ( GT | GE | LE | LT ) addExpression
{
// org/jaitools/jiffle/parser/Jiffle.g:278:34: ( GT | GE | LE | LT )
int alt23=4;
switch ( input.LA(1) ) {
case GT:
{
alt23=1;
}
break;
case GE:
{
alt23=2;
}
break;
case LE:
{
alt23=3;
}
break;
case LT:
{
alt23=4;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 23, 0, input);
throw nvae;
}
switch (alt23) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:278:35: GT
{
GT110=(Token)match(input,GT,FOLLOW_GT_in_compExpression2066); if (state.failed) return retval;
if ( state.backtracking==0 ) {
GT110_tree = (CommonTree)adaptor.create(GT110);
root_0 = (CommonTree)adaptor.becomeRoot(GT110_tree, root_0);
}
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:278:41: GE
{
GE111=(Token)match(input,GE,FOLLOW_GE_in_compExpression2071); if (state.failed) return retval;
if ( state.backtracking==0 ) {
GE111_tree = (CommonTree)adaptor.create(GE111);
root_0 = (CommonTree)adaptor.becomeRoot(GE111_tree, root_0);
}
}
break;
case 3 :
// org/jaitools/jiffle/parser/Jiffle.g:278:47: LE
{
LE112=(Token)match(input,LE,FOLLOW_LE_in_compExpression2076); if (state.failed) return retval;
if ( state.backtracking==0 ) {
LE112_tree = (CommonTree)adaptor.create(LE112);
root_0 = (CommonTree)adaptor.becomeRoot(LE112_tree, root_0);
}
}
break;
case 4 :
// org/jaitools/jiffle/parser/Jiffle.g:278:53: LT
{
LT113=(Token)match(input,LT,FOLLOW_LT_in_compExpression2081); if (state.failed) return retval;
if ( state.backtracking==0 ) {
LT113_tree = (CommonTree)adaptor.create(LT113);
root_0 = (CommonTree)adaptor.becomeRoot(LT113_tree, root_0);
}
}
break;
}
pushFollow(FOLLOW_addExpression_in_compExpression2085);
addExpression114=addExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, addExpression114.getTree());
}
break;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 28, compExpression_StartIndex); }
}
return retval;
}
// $ANTLR end "compExpression"
public static class addExpression_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "addExpression"
// org/jaitools/jiffle/parser/Jiffle.g:282:1: addExpression : multExpression ( ( PLUS | MINUS ) multExpression )* ;
public final JiffleParser.addExpression_return addExpression() throws RecognitionException {
JiffleParser.addExpression_return retval = new JiffleParser.addExpression_return();
retval.start = input.LT(1);
int addExpression_StartIndex = input.index();
CommonTree root_0 = null;
Token PLUS116=null;
Token MINUS117=null;
JiffleParser.multExpression_return multExpression115 = null;
JiffleParser.multExpression_return multExpression118 = null;
CommonTree PLUS116_tree=null;
CommonTree MINUS117_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 29) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:282:17: ( multExpression ( ( PLUS | MINUS ) multExpression )* )
// org/jaitools/jiffle/parser/Jiffle.g:282:19: multExpression ( ( PLUS | MINUS ) multExpression )*
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_multExpression_in_addExpression2115);
multExpression115=multExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, multExpression115.getTree());
// org/jaitools/jiffle/parser/Jiffle.g:282:34: ( ( PLUS | MINUS ) multExpression )*
loop26:
do {
int alt26=2;
switch ( input.LA(1) ) {
case PLUS:
case MINUS:
{
alt26=1;
}
break;
}
switch (alt26) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:282:35: ( PLUS | MINUS ) multExpression
{
// org/jaitools/jiffle/parser/Jiffle.g:282:35: ( PLUS | MINUS )
int alt25=2;
switch ( input.LA(1) ) {
case PLUS:
{
alt25=1;
}
break;
case MINUS:
{
alt25=2;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 25, 0, input);
throw nvae;
}
switch (alt25) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:282:36: PLUS
{
PLUS116=(Token)match(input,PLUS,FOLLOW_PLUS_in_addExpression2119); if (state.failed) return retval;
if ( state.backtracking==0 ) {
PLUS116_tree = (CommonTree)adaptor.create(PLUS116);
root_0 = (CommonTree)adaptor.becomeRoot(PLUS116_tree, root_0);
}
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:282:44: MINUS
{
MINUS117=(Token)match(input,MINUS,FOLLOW_MINUS_in_addExpression2124); if (state.failed) return retval;
if ( state.backtracking==0 ) {
MINUS117_tree = (CommonTree)adaptor.create(MINUS117);
root_0 = (CommonTree)adaptor.becomeRoot(MINUS117_tree, root_0);
}
}
break;
}
pushFollow(FOLLOW_multExpression_in_addExpression2128);
multExpression118=multExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, multExpression118.getTree());
}
break;
default :
break loop26;
}
} while (true);
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 29, addExpression_StartIndex); }
}
return retval;
}
// $ANTLR end "addExpression"
public static class multExpression_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "multExpression"
// org/jaitools/jiffle/parser/Jiffle.g:286:1: multExpression : unaryExpression ( ( TIMES | DIV | MOD ) unaryExpression )* ;
public final JiffleParser.multExpression_return multExpression() throws RecognitionException {
JiffleParser.multExpression_return retval = new JiffleParser.multExpression_return();
retval.start = input.LT(1);
int multExpression_StartIndex = input.index();
CommonTree root_0 = null;
Token TIMES120=null;
Token DIV121=null;
Token MOD122=null;
JiffleParser.unaryExpression_return unaryExpression119 = null;
JiffleParser.unaryExpression_return unaryExpression123 = null;
CommonTree TIMES120_tree=null;
CommonTree DIV121_tree=null;
CommonTree MOD122_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 30) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:286:17: ( unaryExpression ( ( TIMES | DIV | MOD ) unaryExpression )* )
// org/jaitools/jiffle/parser/Jiffle.g:286:19: unaryExpression ( ( TIMES | DIV | MOD ) unaryExpression )*
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_unaryExpression_in_multExpression2157);
unaryExpression119=unaryExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, unaryExpression119.getTree());
// org/jaitools/jiffle/parser/Jiffle.g:286:35: ( ( TIMES | DIV | MOD ) unaryExpression )*
loop28:
do {
int alt28=2;
switch ( input.LA(1) ) {
case TIMES:
case DIV:
case MOD:
{
alt28=1;
}
break;
}
switch (alt28) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:286:36: ( TIMES | DIV | MOD ) unaryExpression
{
// org/jaitools/jiffle/parser/Jiffle.g:286:36: ( TIMES | DIV | MOD )
int alt27=3;
switch ( input.LA(1) ) {
case TIMES:
{
alt27=1;
}
break;
case DIV:
{
alt27=2;
}
break;
case MOD:
{
alt27=3;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 27, 0, input);
throw nvae;
}
switch (alt27) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:286:37: TIMES
{
TIMES120=(Token)match(input,TIMES,FOLLOW_TIMES_in_multExpression2161); if (state.failed) return retval;
if ( state.backtracking==0 ) {
TIMES120_tree = (CommonTree)adaptor.create(TIMES120);
root_0 = (CommonTree)adaptor.becomeRoot(TIMES120_tree, root_0);
}
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:286:46: DIV
{
DIV121=(Token)match(input,DIV,FOLLOW_DIV_in_multExpression2166); if (state.failed) return retval;
if ( state.backtracking==0 ) {
DIV121_tree = (CommonTree)adaptor.create(DIV121);
root_0 = (CommonTree)adaptor.becomeRoot(DIV121_tree, root_0);
}
}
break;
case 3 :
// org/jaitools/jiffle/parser/Jiffle.g:286:53: MOD
{
MOD122=(Token)match(input,MOD,FOLLOW_MOD_in_multExpression2171); if (state.failed) return retval;
if ( state.backtracking==0 ) {
MOD122_tree = (CommonTree)adaptor.create(MOD122);
root_0 = (CommonTree)adaptor.becomeRoot(MOD122_tree, root_0);
}
}
break;
}
pushFollow(FOLLOW_unaryExpression_in_multExpression2175);
unaryExpression123=unaryExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, unaryExpression123.getTree());
}
break;
default :
break loop28;
}
} while (true);
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 30, multExpression_StartIndex); }
}
return retval;
}
// $ANTLR end "multExpression"
public static class unaryExpression_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "unaryExpression"
// org/jaitools/jiffle/parser/Jiffle.g:290:1: unaryExpression : ( prefixOp unaryExpression -> ^( PREFIX prefixOp unaryExpression ) | powerExpression );
public final JiffleParser.unaryExpression_return unaryExpression() throws RecognitionException {
JiffleParser.unaryExpression_return retval = new JiffleParser.unaryExpression_return();
retval.start = input.LT(1);
int unaryExpression_StartIndex = input.index();
CommonTree root_0 = null;
JiffleParser.prefixOp_return prefixOp124 = null;
JiffleParser.unaryExpression_return unaryExpression125 = null;
JiffleParser.powerExpression_return powerExpression126 = null;
RewriteRuleSubtreeStream stream_prefixOp=new RewriteRuleSubtreeStream(adaptor,"rule prefixOp");
RewriteRuleSubtreeStream stream_unaryExpression=new RewriteRuleSubtreeStream(adaptor,"rule unaryExpression");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 31) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:290:17: ( prefixOp unaryExpression -> ^( PREFIX prefixOp unaryExpression ) | powerExpression )
int alt29=2;
switch ( input.LA(1) ) {
case PLUS:
case MINUS:
case NOT:
case INCR:
case DECR:
{
alt29=1;
}
break;
case ID:
case LPAR:
case CON:
case LSQUARE:
case INT_LITERAL:
case FLOAT_LITERAL:
case TRUE:
case FALSE:
case NULL:
{
alt29=2;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 29, 0, input);
throw nvae;
}
switch (alt29) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:290:19: prefixOp unaryExpression
{
pushFollow(FOLLOW_prefixOp_in_unaryExpression2203);
prefixOp124=prefixOp();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_prefixOp.add(prefixOp124.getTree());
pushFollow(FOLLOW_unaryExpression_in_unaryExpression2205);
unaryExpression125=unaryExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_unaryExpression.add(unaryExpression125.getTree());
// AST REWRITE
// elements: prefixOp, unaryExpression
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 290:44: -> ^( PREFIX prefixOp unaryExpression )
{
// org/jaitools/jiffle/parser/Jiffle.g:290:47: ^( PREFIX prefixOp unaryExpression )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(PREFIX, "PREFIX"), root_1);
adaptor.addChild(root_1, stream_prefixOp.nextTree());
adaptor.addChild(root_1, stream_unaryExpression.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:291:19: powerExpression
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_powerExpression_in_unaryExpression2235);
powerExpression126=powerExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, powerExpression126.getTree());
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 31, unaryExpression_StartIndex); }
}
return retval;
}
// $ANTLR end "unaryExpression"
public static class prefixOp_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "prefixOp"
// org/jaitools/jiffle/parser/Jiffle.g:295:1: prefixOp : ( PLUS | MINUS | NOT | incdecOp );
public final JiffleParser.prefixOp_return prefixOp() throws RecognitionException {
JiffleParser.prefixOp_return retval = new JiffleParser.prefixOp_return();
retval.start = input.LT(1);
int prefixOp_StartIndex = input.index();
CommonTree root_0 = null;
Token PLUS127=null;
Token MINUS128=null;
Token NOT129=null;
JiffleParser.incdecOp_return incdecOp130 = null;
CommonTree PLUS127_tree=null;
CommonTree MINUS128_tree=null;
CommonTree NOT129_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 32) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:295:17: ( PLUS | MINUS | NOT | incdecOp )
int alt30=4;
switch ( input.LA(1) ) {
case PLUS:
{
alt30=1;
}
break;
case MINUS:
{
alt30=2;
}
break;
case NOT:
{
alt30=3;
}
break;
case INCR:
case DECR:
{
alt30=4;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 30, 0, input);
throw nvae;
}
switch (alt30) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:295:19: PLUS
{
root_0 = (CommonTree)adaptor.nil();
PLUS127=(Token)match(input,PLUS,FOLLOW_PLUS_in_prefixOp2268); if (state.failed) return retval;
if ( state.backtracking==0 ) {
PLUS127_tree = (CommonTree)adaptor.create(PLUS127);
adaptor.addChild(root_0, PLUS127_tree);
}
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:296:19: MINUS
{
root_0 = (CommonTree)adaptor.nil();
MINUS128=(Token)match(input,MINUS,FOLLOW_MINUS_in_prefixOp2288); if (state.failed) return retval;
if ( state.backtracking==0 ) {
MINUS128_tree = (CommonTree)adaptor.create(MINUS128);
adaptor.addChild(root_0, MINUS128_tree);
}
}
break;
case 3 :
// org/jaitools/jiffle/parser/Jiffle.g:297:19: NOT
{
root_0 = (CommonTree)adaptor.nil();
NOT129=(Token)match(input,NOT,FOLLOW_NOT_in_prefixOp2308); if (state.failed) return retval;
if ( state.backtracking==0 ) {
NOT129_tree = (CommonTree)adaptor.create(NOT129);
adaptor.addChild(root_0, NOT129_tree);
}
}
break;
case 4 :
// org/jaitools/jiffle/parser/Jiffle.g:298:19: incdecOp
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_incdecOp_in_prefixOp2328);
incdecOp130=incdecOp();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, incdecOp130.getTree());
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 32, prefixOp_StartIndex); }
}
return retval;
}
// $ANTLR end "prefixOp"
public static class incdecOp_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "incdecOp"
// org/jaitools/jiffle/parser/Jiffle.g:302:1: incdecOp : ( INCR | DECR );
public final JiffleParser.incdecOp_return incdecOp() throws RecognitionException {
JiffleParser.incdecOp_return retval = new JiffleParser.incdecOp_return();
retval.start = input.LT(1);
int incdecOp_StartIndex = input.index();
CommonTree root_0 = null;
Token set131=null;
CommonTree set131_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 33) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:302:17: ( INCR | DECR )
// org/jaitools/jiffle/parser/Jiffle.g:
{
root_0 = (CommonTree)adaptor.nil();
set131=(Token)input.LT(1);
if ( (input.LA(1)>=INCR && input.LA(1)<=DECR) ) {
input.consume();
if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set131));
state.errorRecovery=false;state.failed=false;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 33, incdecOp_StartIndex); }
}
return retval;
}
// $ANTLR end "incdecOp"
public static class powerExpression_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "powerExpression"
// org/jaitools/jiffle/parser/Jiffle.g:307:1: powerExpression : primaryExpression ( POW primaryExpression )* ;
public final JiffleParser.powerExpression_return powerExpression() throws RecognitionException {
JiffleParser.powerExpression_return retval = new JiffleParser.powerExpression_return();
retval.start = input.LT(1);
int powerExpression_StartIndex = input.index();
CommonTree root_0 = null;
Token POW133=null;
JiffleParser.primaryExpression_return primaryExpression132 = null;
JiffleParser.primaryExpression_return primaryExpression134 = null;
CommonTree POW133_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 34) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:307:17: ( primaryExpression ( POW primaryExpression )* )
// org/jaitools/jiffle/parser/Jiffle.g:307:19: primaryExpression ( POW primaryExpression )*
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_primaryExpression_in_powerExpression2407);
primaryExpression132=primaryExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, primaryExpression132.getTree());
// org/jaitools/jiffle/parser/Jiffle.g:307:37: ( POW primaryExpression )*
loop31:
do {
int alt31=2;
switch ( input.LA(1) ) {
case POW:
{
alt31=1;
}
break;
}
switch (alt31) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:307:38: POW primaryExpression
{
POW133=(Token)match(input,POW,FOLLOW_POW_in_powerExpression2410); if (state.failed) return retval;
if ( state.backtracking==0 ) {
POW133_tree = (CommonTree)adaptor.create(POW133);
root_0 = (CommonTree)adaptor.becomeRoot(POW133_tree, root_0);
}
pushFollow(FOLLOW_primaryExpression_in_powerExpression2413);
primaryExpression134=primaryExpression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, primaryExpression134.getTree());
}
break;
default :
break loop31;
}
} while (true);
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 34, powerExpression_StartIndex); }
}
return retval;
}
// $ANTLR end "powerExpression"
public static class primaryExpression_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "primaryExpression"
// org/jaitools/jiffle/parser/Jiffle.g:311:1: primaryExpression : atom ( incdecOp )? -> {postfix}? ^( POSTFIX incdecOp atom ) -> atom ;
public final JiffleParser.primaryExpression_return primaryExpression() throws RecognitionException {
JiffleParser.primaryExpression_return retval = new JiffleParser.primaryExpression_return();
retval.start = input.LT(1);
int primaryExpression_StartIndex = input.index();
CommonTree root_0 = null;
JiffleParser.atom_return atom135 = null;
JiffleParser.incdecOp_return incdecOp136 = null;
RewriteRuleSubtreeStream stream_atom=new RewriteRuleSubtreeStream(adaptor,"rule atom");
RewriteRuleSubtreeStream stream_incdecOp=new RewriteRuleSubtreeStream(adaptor,"rule incdecOp");
boolean postfix = false;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 35) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:313:17: ( atom ( incdecOp )? -> {postfix}? ^( POSTFIX incdecOp atom ) -> atom )
// org/jaitools/jiffle/parser/Jiffle.g:313:19: atom ( incdecOp )?
{
pushFollow(FOLLOW_atom_in_primaryExpression2462);
atom135=atom();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_atom.add(atom135.getTree());
// org/jaitools/jiffle/parser/Jiffle.g:313:24: ( incdecOp )?
int alt32=2;
switch ( input.LA(1) ) {
case INCR:
case DECR:
{
alt32=1;
}
break;
}
switch (alt32) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:313:25: incdecOp
{
pushFollow(FOLLOW_incdecOp_in_primaryExpression2465);
incdecOp136=incdecOp();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_incdecOp.add(incdecOp136.getTree());
if ( state.backtracking==0 ) {
postfix = true;
}
}
break;
}
// AST REWRITE
// elements: atom, incdecOp, atom
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 314:19: -> {postfix}? ^( POSTFIX incdecOp atom )
if (postfix) {
// org/jaitools/jiffle/parser/Jiffle.g:314:33: ^( POSTFIX incdecOp atom )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(POSTFIX, "POSTFIX"), root_1);
adaptor.addChild(root_1, stream_incdecOp.nextTree());
adaptor.addChild(root_1, stream_atom.nextTree());
adaptor.addChild(root_0, root_1);
}
}
else // 315:19: -> atom
{
adaptor.addChild(root_0, stream_atom.nextTree());
}
retval.tree = root_0;}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 35, primaryExpression_StartIndex); }
}
return retval;
}
// $ANTLR end "primaryExpression"
public static class atom_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "atom"
// org/jaitools/jiffle/parser/Jiffle.g:319:1: atom : ( LPAR expression RPAR -> ^( PAR expression ) | literal | listLiteral | conCall | identifiedAtom );
public final JiffleParser.atom_return atom() throws RecognitionException {
JiffleParser.atom_return retval = new JiffleParser.atom_return();
retval.start = input.LT(1);
int atom_StartIndex = input.index();
CommonTree root_0 = null;
Token LPAR137=null;
Token RPAR139=null;
JiffleParser.expression_return expression138 = null;
JiffleParser.literal_return literal140 = null;
JiffleParser.listLiteral_return listLiteral141 = null;
JiffleParser.conCall_return conCall142 = null;
JiffleParser.identifiedAtom_return identifiedAtom143 = null;
CommonTree LPAR137_tree=null;
CommonTree RPAR139_tree=null;
RewriteRuleTokenStream stream_RPAR=new RewriteRuleTokenStream(adaptor,"token RPAR");
RewriteRuleTokenStream stream_LPAR=new RewriteRuleTokenStream(adaptor,"token LPAR");
RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 36) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:319:17: ( LPAR expression RPAR -> ^( PAR expression ) | literal | listLiteral | conCall | identifiedAtom )
int alt33=5;
switch ( input.LA(1) ) {
case LPAR:
{
alt33=1;
}
break;
case INT_LITERAL:
case FLOAT_LITERAL:
case TRUE:
case FALSE:
case NULL:
{
alt33=2;
}
break;
case LSQUARE:
{
alt33=3;
}
break;
case CON:
{
alt33=4;
}
break;
case ID:
{
alt33=5;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 33, 0, input);
throw nvae;
}
switch (alt33) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:319:19: LPAR expression RPAR
{
LPAR137=(Token)match(input,LPAR,FOLLOW_LPAR_in_atom2559); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LPAR.add(LPAR137);
pushFollow(FOLLOW_expression_in_atom2561);
expression138=expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expression.add(expression138.getTree());
RPAR139=(Token)match(input,RPAR,FOLLOW_RPAR_in_atom2563); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RPAR.add(RPAR139);
// AST REWRITE
// elements: expression
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 319:40: -> ^( PAR expression )
{
// org/jaitools/jiffle/parser/Jiffle.g:319:43: ^( PAR expression )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(PAR, "PAR"), root_1);
adaptor.addChild(root_1, stream_expression.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:320:19: literal
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_literal_in_atom2591);
literal140=literal();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, literal140.getTree());
}
break;
case 3 :
// org/jaitools/jiffle/parser/Jiffle.g:321:19: listLiteral
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_listLiteral_in_atom2611);
listLiteral141=listLiteral();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, listLiteral141.getTree());
}
break;
case 4 :
// org/jaitools/jiffle/parser/Jiffle.g:322:19: conCall
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_conCall_in_atom2631);
conCall142=conCall();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, conCall142.getTree());
}
break;
case 5 :
// org/jaitools/jiffle/parser/Jiffle.g:323:19: identifiedAtom
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_identifiedAtom_in_atom2651);
identifiedAtom143=identifiedAtom();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, identifiedAtom143.getTree());
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 36, atom_StartIndex); }
}
return retval;
}
// $ANTLR end "atom"
public static class identifiedAtom_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "identifiedAtom"
// org/jaitools/jiffle/parser/Jiffle.g:327:1: identifiedAtom : ( ID arguments -> ^( FUNC_CALL ID arguments ) | ID imagePos -> ^( IMAGE_POS ID imagePos ) | ID );
public final JiffleParser.identifiedAtom_return identifiedAtom() throws RecognitionException {
JiffleParser.identifiedAtom_return retval = new JiffleParser.identifiedAtom_return();
retval.start = input.LT(1);
int identifiedAtom_StartIndex = input.index();
CommonTree root_0 = null;
Token ID144=null;
Token ID146=null;
Token ID148=null;
JiffleParser.arguments_return arguments145 = null;
JiffleParser.imagePos_return imagePos147 = null;
CommonTree ID144_tree=null;
CommonTree ID146_tree=null;
CommonTree ID148_tree=null;
RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");
RewriteRuleSubtreeStream stream_arguments=new RewriteRuleSubtreeStream(adaptor,"rule arguments");
RewriteRuleSubtreeStream stream_imagePos=new RewriteRuleSubtreeStream(adaptor,"rule imagePos");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 37) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:327:17: ( ID arguments -> ^( FUNC_CALL ID arguments ) | ID imagePos -> ^( IMAGE_POS ID imagePos ) | ID )
int alt34=3;
switch ( input.LA(1) ) {
case ID:
{
switch ( input.LA(2) ) {
case LPAR:
{
alt34=1;
}
break;
case LSQUARE:
{
alt34=2;
}
break;
case EOF:
case SEMI:
case RPAR:
case COMMA:
case COLON:
case QUESTION:
case OR:
case XOR:
case AND:
case LOGICALEQ:
case NE:
case GT:
case GE:
case LE:
case LT:
case PLUS:
case MINUS:
case TIMES:
case DIV:
case MOD:
case INCR:
case DECR:
case POW:
case RSQUARE:
{
alt34=3;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 34, 1, input);
throw nvae;
}
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 34, 0, input);
throw nvae;
}
switch (alt34) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:327:19: ID arguments
{
ID144=(Token)match(input,ID,FOLLOW_ID_in_identifiedAtom2678); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ID.add(ID144);
pushFollow(FOLLOW_arguments_in_identifiedAtom2680);
arguments145=arguments();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_arguments.add(arguments145.getTree());
// AST REWRITE
// elements: arguments, ID
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 327:32: -> ^( FUNC_CALL ID arguments )
{
// org/jaitools/jiffle/parser/Jiffle.g:327:35: ^( FUNC_CALL ID arguments )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(FUNC_CALL, "FUNC_CALL"), root_1);
adaptor.addChild(root_1, stream_ID.nextNode());
adaptor.addChild(root_1, stream_arguments.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:328:19: ID imagePos
{
ID146=(Token)match(input,ID,FOLLOW_ID_in_identifiedAtom2710); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ID.add(ID146);
pushFollow(FOLLOW_imagePos_in_identifiedAtom2712);
imagePos147=imagePos();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_imagePos.add(imagePos147.getTree());
// AST REWRITE
// elements: imagePos, ID
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 328:31: -> ^( IMAGE_POS ID imagePos )
{
// org/jaitools/jiffle/parser/Jiffle.g:328:34: ^( IMAGE_POS ID imagePos )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(IMAGE_POS, "IMAGE_POS"), root_1);
adaptor.addChild(root_1, stream_ID.nextNode());
adaptor.addChild(root_1, stream_imagePos.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
break;
case 3 :
// org/jaitools/jiffle/parser/Jiffle.g:329:19: ID
{
root_0 = (CommonTree)adaptor.nil();
ID148=(Token)match(input,ID,FOLLOW_ID_in_identifiedAtom2742); if (state.failed) return retval;
if ( state.backtracking==0 ) {
ID148_tree = (CommonTree)adaptor.create(ID148);
adaptor.addChild(root_0, ID148_tree);
}
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 37, identifiedAtom_StartIndex); }
}
return retval;
}
// $ANTLR end "identifiedAtom"
public static class arguments_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "arguments"
// org/jaitools/jiffle/parser/Jiffle.g:333:1: arguments : LPAR expressionList RPAR ;
public final JiffleParser.arguments_return arguments() throws RecognitionException {
JiffleParser.arguments_return retval = new JiffleParser.arguments_return();
retval.start = input.LT(1);
int arguments_StartIndex = input.index();
CommonTree root_0 = null;
Token LPAR149=null;
Token RPAR151=null;
JiffleParser.expressionList_return expressionList150 = null;
CommonTree LPAR149_tree=null;
CommonTree RPAR151_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 38) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:333:17: ( LPAR expressionList RPAR )
// org/jaitools/jiffle/parser/Jiffle.g:333:19: LPAR expressionList RPAR
{
root_0 = (CommonTree)adaptor.nil();
LPAR149=(Token)match(input,LPAR,FOLLOW_LPAR_in_arguments2774); if (state.failed) return retval;
pushFollow(FOLLOW_expressionList_in_arguments2777);
expressionList150=expressionList();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, expressionList150.getTree());
RPAR151=(Token)match(input,RPAR,FOLLOW_RPAR_in_arguments2779); if (state.failed) return retval;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 38, arguments_StartIndex); }
}
return retval;
}
// $ANTLR end "arguments"
public static class imagePos_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "imagePos"
// org/jaitools/jiffle/parser/Jiffle.g:337:1: imagePos : ( bandSpecifier pixelSpecifier | pixelSpecifier | bandSpecifier );
public final JiffleParser.imagePos_return imagePos() throws RecognitionException {
JiffleParser.imagePos_return retval = new JiffleParser.imagePos_return();
retval.start = input.LT(1);
int imagePos_StartIndex = input.index();
CommonTree root_0 = null;
JiffleParser.bandSpecifier_return bandSpecifier152 = null;
JiffleParser.pixelSpecifier_return pixelSpecifier153 = null;
JiffleParser.pixelSpecifier_return pixelSpecifier154 = null;
JiffleParser.bandSpecifier_return bandSpecifier155 = null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 39) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:337:17: ( bandSpecifier pixelSpecifier | pixelSpecifier | bandSpecifier )
int alt35=3;
switch ( input.LA(1) ) {
case LSQUARE:
{
int LA35_1 = input.LA(2);
if ( (synpred60_Jiffle()) ) {
alt35=1;
}
else if ( (synpred61_Jiffle()) ) {
alt35=2;
}
else if ( (true) ) {
alt35=3;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 35, 1, input);
throw nvae;
}
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 35, 0, input);
throw nvae;
}
switch (alt35) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:337:19: bandSpecifier pixelSpecifier
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_bandSpecifier_in_imagePos2813);
bandSpecifier152=bandSpecifier();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, bandSpecifier152.getTree());
pushFollow(FOLLOW_pixelSpecifier_in_imagePos2815);
pixelSpecifier153=pixelSpecifier();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, pixelSpecifier153.getTree());
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:338:19: pixelSpecifier
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_pixelSpecifier_in_imagePos2835);
pixelSpecifier154=pixelSpecifier();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, pixelSpecifier154.getTree());
}
break;
case 3 :
// org/jaitools/jiffle/parser/Jiffle.g:339:19: bandSpecifier
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_bandSpecifier_in_imagePos2855);
bandSpecifier155=bandSpecifier();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, bandSpecifier155.getTree());
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 39, imagePos_StartIndex); }
}
return retval;
}
// $ANTLR end "imagePos"
public static class pixelSpecifier_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "pixelSpecifier"
// org/jaitools/jiffle/parser/Jiffle.g:343:1: pixelSpecifier : LSQUARE pixelPos COMMA pixelPos RSQUARE -> ^( PIXEL_REF pixelPos pixelPos ) ;
public final JiffleParser.pixelSpecifier_return pixelSpecifier() throws RecognitionException {
JiffleParser.pixelSpecifier_return retval = new JiffleParser.pixelSpecifier_return();
retval.start = input.LT(1);
int pixelSpecifier_StartIndex = input.index();
CommonTree root_0 = null;
Token LSQUARE156=null;
Token COMMA158=null;
Token RSQUARE160=null;
JiffleParser.pixelPos_return pixelPos157 = null;
JiffleParser.pixelPos_return pixelPos159 = null;
CommonTree LSQUARE156_tree=null;
CommonTree COMMA158_tree=null;
CommonTree RSQUARE160_tree=null;
RewriteRuleTokenStream stream_LSQUARE=new RewriteRuleTokenStream(adaptor,"token LSQUARE");
RewriteRuleTokenStream stream_RSQUARE=new RewriteRuleTokenStream(adaptor,"token RSQUARE");
RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
RewriteRuleSubtreeStream stream_pixelPos=new RewriteRuleSubtreeStream(adaptor,"rule pixelPos");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 40) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:343:17: ( LSQUARE pixelPos COMMA pixelPos RSQUARE -> ^( PIXEL_REF pixelPos pixelPos ) )
// org/jaitools/jiffle/parser/Jiffle.g:343:19: LSQUARE pixelPos COMMA pixelPos RSQUARE
{
LSQUARE156=(Token)match(input,LSQUARE,FOLLOW_LSQUARE_in_pixelSpecifier2882); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LSQUARE.add(LSQUARE156);
pushFollow(FOLLOW_pixelPos_in_pixelSpecifier2884);
pixelPos157=pixelPos();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_pixelPos.add(pixelPos157.getTree());
COMMA158=(Token)match(input,COMMA,FOLLOW_COMMA_in_pixelSpecifier2886); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_COMMA.add(COMMA158);
pushFollow(FOLLOW_pixelPos_in_pixelSpecifier2888);
pixelPos159=pixelPos();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_pixelPos.add(pixelPos159.getTree());
RSQUARE160=(Token)match(input,RSQUARE,FOLLOW_RSQUARE_in_pixelSpecifier2890); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RSQUARE.add(RSQUARE160);
// AST REWRITE
// elements: pixelPos, pixelPos
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 343:59: -> ^( PIXEL_REF pixelPos pixelPos )
{
// org/jaitools/jiffle/parser/Jiffle.g:343:62: ^( PIXEL_REF pixelPos pixelPos )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(PIXEL_REF, "PIXEL_REF"), root_1);
adaptor.addChild(root_1, stream_pixelPos.nextTree());
adaptor.addChild(root_1, stream_pixelPos.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 40, pixelSpecifier_StartIndex); }
}
return retval;
}
// $ANTLR end "pixelSpecifier"
public static class bandSpecifier_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "bandSpecifier"
// org/jaitools/jiffle/parser/Jiffle.g:347:1: bandSpecifier : LSQUARE expression RSQUARE -> ^( BAND_REF expression ) ;
public final JiffleParser.bandSpecifier_return bandSpecifier() throws RecognitionException {
JiffleParser.bandSpecifier_return retval = new JiffleParser.bandSpecifier_return();
retval.start = input.LT(1);
int bandSpecifier_StartIndex = input.index();
CommonTree root_0 = null;
Token LSQUARE161=null;
Token RSQUARE163=null;
JiffleParser.expression_return expression162 = null;
CommonTree LSQUARE161_tree=null;
CommonTree RSQUARE163_tree=null;
RewriteRuleTokenStream stream_LSQUARE=new RewriteRuleTokenStream(adaptor,"token LSQUARE");
RewriteRuleTokenStream stream_RSQUARE=new RewriteRuleTokenStream(adaptor,"token RSQUARE");
RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 41) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:347:17: ( LSQUARE expression RSQUARE -> ^( BAND_REF expression ) )
// org/jaitools/jiffle/parser/Jiffle.g:347:19: LSQUARE expression RSQUARE
{
LSQUARE161=(Token)match(input,LSQUARE,FOLLOW_LSQUARE_in_bandSpecifier2928); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LSQUARE.add(LSQUARE161);
pushFollow(FOLLOW_expression_in_bandSpecifier2930);
expression162=expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expression.add(expression162.getTree());
RSQUARE163=(Token)match(input,RSQUARE,FOLLOW_RSQUARE_in_bandSpecifier2932); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RSQUARE.add(RSQUARE163);
// AST REWRITE
// elements: expression
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 347:46: -> ^( BAND_REF expression )
{
// org/jaitools/jiffle/parser/Jiffle.g:347:49: ^( BAND_REF expression )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(BAND_REF, "BAND_REF"), root_1);
adaptor.addChild(root_1, stream_expression.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 41, bandSpecifier_StartIndex); }
}
return retval;
}
// $ANTLR end "bandSpecifier"
public static class pixelPos_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "pixelPos"
// org/jaitools/jiffle/parser/Jiffle.g:351:1: pixelPos : ( ABS_POS_PREFIX expression -> ^( ABS_POS expression ) | expression -> ^( REL_POS expression ) );
public final JiffleParser.pixelPos_return pixelPos() throws RecognitionException {
JiffleParser.pixelPos_return retval = new JiffleParser.pixelPos_return();
retval.start = input.LT(1);
int pixelPos_StartIndex = input.index();
CommonTree root_0 = null;
Token ABS_POS_PREFIX164=null;
JiffleParser.expression_return expression165 = null;
JiffleParser.expression_return expression166 = null;
CommonTree ABS_POS_PREFIX164_tree=null;
RewriteRuleTokenStream stream_ABS_POS_PREFIX=new RewriteRuleTokenStream(adaptor,"token ABS_POS_PREFIX");
RewriteRuleSubtreeStream stream_expression=new RewriteRuleSubtreeStream(adaptor,"rule expression");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 42) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:351:17: ( ABS_POS_PREFIX expression -> ^( ABS_POS expression ) | expression -> ^( REL_POS expression ) )
int alt36=2;
switch ( input.LA(1) ) {
case ABS_POS_PREFIX:
{
alt36=1;
}
break;
case ID:
case LPAR:
case CON:
case PLUS:
case MINUS:
case NOT:
case INCR:
case DECR:
case LSQUARE:
case INT_LITERAL:
case FLOAT_LITERAL:
case TRUE:
case FALSE:
case NULL:
{
alt36=2;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 36, 0, input);
throw nvae;
}
switch (alt36) {
case 1 :
// org/jaitools/jiffle/parser/Jiffle.g:351:19: ABS_POS_PREFIX expression
{
ABS_POS_PREFIX164=(Token)match(input,ABS_POS_PREFIX,FOLLOW_ABS_POS_PREFIX_in_pixelPos2973); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ABS_POS_PREFIX.add(ABS_POS_PREFIX164);
pushFollow(FOLLOW_expression_in_pixelPos2975);
expression165=expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expression.add(expression165.getTree());
// AST REWRITE
// elements: expression
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 351:45: -> ^( ABS_POS expression )
{
// org/jaitools/jiffle/parser/Jiffle.g:351:48: ^( ABS_POS expression )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ABS_POS, "ABS_POS"), root_1);
adaptor.addChild(root_1, stream_expression.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
break;
case 2 :
// org/jaitools/jiffle/parser/Jiffle.g:352:19: expression
{
pushFollow(FOLLOW_expression_in_pixelPos3003);
expression166=expression();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expression.add(expression166.getTree());
// AST REWRITE
// elements: expression
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 352:30: -> ^( REL_POS expression )
{
// org/jaitools/jiffle/parser/Jiffle.g:352:33: ^( REL_POS expression )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(REL_POS, "REL_POS"), root_1);
adaptor.addChild(root_1, stream_expression.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 42, pixelPos_StartIndex); }
}
return retval;
}
// $ANTLR end "pixelPos"
public static class literal_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "literal"
// org/jaitools/jiffle/parser/Jiffle.g:356:1: literal : ( INT_LITERAL | FLOAT_LITERAL | TRUE | FALSE | NULL );
public final JiffleParser.literal_return literal() throws RecognitionException {
JiffleParser.literal_return retval = new JiffleParser.literal_return();
retval.start = input.LT(1);
int literal_StartIndex = input.index();
CommonTree root_0 = null;
Token set167=null;
CommonTree set167_tree=null;
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 43) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:356:17: ( INT_LITERAL | FLOAT_LITERAL | TRUE | FALSE | NULL )
// org/jaitools/jiffle/parser/Jiffle.g:
{
root_0 = (CommonTree)adaptor.nil();
set167=(Token)input.LT(1);
if ( (input.LA(1)>=INT_LITERAL && input.LA(1)<=NULL) ) {
input.consume();
if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set167));
state.errorRecovery=false;state.failed=false;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 43, literal_StartIndex); }
}
return retval;
}
// $ANTLR end "literal"
public static class listLiteral_return extends ParserRuleReturnScope {
CommonTree tree;
public Object getTree() { return tree; }
};
// $ANTLR start "listLiteral"
// org/jaitools/jiffle/parser/Jiffle.g:364:1: listLiteral : LSQUARE expressionList RSQUARE -> ^( DECLARED_LIST expressionList ) ;
public final JiffleParser.listLiteral_return listLiteral() throws RecognitionException {
JiffleParser.listLiteral_return retval = new JiffleParser.listLiteral_return();
retval.start = input.LT(1);
int listLiteral_StartIndex = input.index();
CommonTree root_0 = null;
Token LSQUARE168=null;
Token RSQUARE170=null;
JiffleParser.expressionList_return expressionList169 = null;
CommonTree LSQUARE168_tree=null;
CommonTree RSQUARE170_tree=null;
RewriteRuleTokenStream stream_LSQUARE=new RewriteRuleTokenStream(adaptor,"token LSQUARE");
RewriteRuleTokenStream stream_RSQUARE=new RewriteRuleTokenStream(adaptor,"token RSQUARE");
RewriteRuleSubtreeStream stream_expressionList=new RewriteRuleSubtreeStream(adaptor,"rule expressionList");
try {
if ( state.backtracking>0 && alreadyParsedRule(input, 44) ) { return retval; }
// org/jaitools/jiffle/parser/Jiffle.g:364:17: ( LSQUARE expressionList RSQUARE -> ^( DECLARED_LIST expressionList ) )
// org/jaitools/jiffle/parser/Jiffle.g:364:19: LSQUARE expressionList RSQUARE
{
LSQUARE168=(Token)match(input,LSQUARE,FOLLOW_LSQUARE_in_listLiteral3155); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_LSQUARE.add(LSQUARE168);
pushFollow(FOLLOW_expressionList_in_listLiteral3157);
expressionList169=expressionList();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expressionList.add(expressionList169.getTree());
RSQUARE170=(Token)match(input,RSQUARE,FOLLOW_RSQUARE_in_listLiteral3159); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RSQUARE.add(RSQUARE170);
// AST REWRITE
// elements: expressionList
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);
root_0 = (CommonTree)adaptor.nil();
// 364:50: -> ^( DECLARED_LIST expressionList )
{
// org/jaitools/jiffle/parser/Jiffle.g:364:53: ^( DECLARED_LIST expressionList )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(DECLARED_LIST, "DECLARED_LIST"), root_1);
adaptor.addChild(root_1, stream_expressionList.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
if ( state.backtracking>0 ) { memoize(input, 44, listLiteral_StartIndex); }
}
return retval;
}
// $ANTLR end "listLiteral"
// $ANTLR start synpred19_Jiffle
public final void synpred19_Jiffle_fragment() throws RecognitionException {
JiffleParser.statement_return s2 = null;
// org/jaitools/jiffle/parser/Jiffle.g:194:21: ( ELSE s2= statement )
// org/jaitools/jiffle/parser/Jiffle.g:194:21: ELSE s2= statement
{
match(input,ELSE,FOLLOW_ELSE_in_synpred19_Jiffle1177); if (state.failed) return ;
pushFollow(FOLLOW_statement_in_synpred19_Jiffle1181);
s2=statement();
state._fsp--;
if (state.failed) return ;
}
}
// $ANTLR end synpred19_Jiffle
// $ANTLR start synpred22_Jiffle
public final void synpred22_Jiffle_fragment() throws RecognitionException {
// org/jaitools/jiffle/parser/Jiffle.g:211:19: ( listLiteral )
// org/jaitools/jiffle/parser/Jiffle.g:211:19: listLiteral
{
pushFollow(FOLLOW_listLiteral_in_synpred22_Jiffle1404);
listLiteral();
state._fsp--;
if (state.failed) return ;
}
}
// $ANTLR end synpred22_Jiffle
// $ANTLR start synpred23_Jiffle
public final void synpred23_Jiffle_fragment() throws RecognitionException {
// org/jaitools/jiffle/parser/Jiffle.g:212:19: ( sequence )
// org/jaitools/jiffle/parser/Jiffle.g:212:19: sequence
{
pushFollow(FOLLOW_sequence_in_synpred23_Jiffle1424);
sequence();
state._fsp--;
if (state.failed) return ;
}
}
// $ANTLR end synpred23_Jiffle
// $ANTLR start synpred60_Jiffle
public final void synpred60_Jiffle_fragment() throws RecognitionException {
// org/jaitools/jiffle/parser/Jiffle.g:337:19: ( bandSpecifier pixelSpecifier )
// org/jaitools/jiffle/parser/Jiffle.g:337:19: bandSpecifier pixelSpecifier
{
pushFollow(FOLLOW_bandSpecifier_in_synpred60_Jiffle2813);
bandSpecifier();
state._fsp--;
if (state.failed) return ;
pushFollow(FOLLOW_pixelSpecifier_in_synpred60_Jiffle2815);
pixelSpecifier();
state._fsp--;
if (state.failed) return ;
}
}
// $ANTLR end synpred60_Jiffle
// $ANTLR start synpred61_Jiffle
public final void synpred61_Jiffle_fragment() throws RecognitionException {
// org/jaitools/jiffle/parser/Jiffle.g:338:19: ( pixelSpecifier )
// org/jaitools/jiffle/parser/Jiffle.g:338:19: pixelSpecifier
{
pushFollow(FOLLOW_pixelSpecifier_in_synpred61_Jiffle2835);
pixelSpecifier();
state._fsp--;
if (state.failed) return ;
}
}
// $ANTLR end synpred61_Jiffle
// Delegated rules
public final boolean synpred23_Jiffle() {
state.backtracking++;
int start = input.mark();
try {
synpred23_Jiffle_fragment(); // can never throw exception
} catch (RecognitionException re) {
System.err.println("impossible: "+re);
}
boolean success = !state.failed;
input.rewind(start);
state.backtracking--;
state.failed=false;
return success;
}
public final boolean synpred60_Jiffle() {
state.backtracking++;
int start = input.mark();
try {
synpred60_Jiffle_fragment(); // can never throw exception
} catch (RecognitionException re) {
System.err.println("impossible: "+re);
}
boolean success = !state.failed;
input.rewind(start);
state.backtracking--;
state.failed=false;
return success;
}
public final boolean synpred19_Jiffle() {
state.backtracking++;
int start = input.mark();
try {
synpred19_Jiffle_fragment(); // can never throw exception
} catch (RecognitionException re) {
System.err.println("impossible: "+re);
}
boolean success = !state.failed;
input.rewind(start);
state.backtracking--;
state.failed=false;
return success;
}
public final boolean synpred22_Jiffle() {
state.backtracking++;
int start = input.mark();
try {
synpred22_Jiffle_fragment(); // can never throw exception
} catch (RecognitionException re) {
System.err.println("impossible: "+re);
}
boolean success = !state.failed;
input.rewind(start);
state.backtracking--;
state.failed=false;
return success;
}
public final boolean synpred61_Jiffle() {
state.backtracking++;
int start = input.mark();
try {
synpred61_Jiffle_fragment(); // can never throw exception
} catch (RecognitionException re) {
System.err.println("impossible: "+re);
}
boolean success = !state.failed;
input.rewind(start);
state.backtracking--;
state.failed=false;
return success;
}
protected DFA10 dfa10 = new DFA10(this);
protected DFA13 dfa13 = new DFA13(this);
static final String DFA10_eotS =
"\12\uffff";
static final String DFA10_eofS =
"\12\uffff";
static final String DFA10_minS =
"\1\40\3\uffff\1\43\5\uffff";
static final String DFA10_maxS =
"\1\126\3\uffff\1\117\5\uffff";
static final String DFA10_acceptS =
"\1\uffff\1\1\1\2\1\3\1\uffff\1\5\1\6\1\7\1\10\1\4";
static final String DFA10_specialS =
"\12\uffff}>";
static final String[] DFA10_transitionS = {
"\1\2\1\uffff\1\4\1\uffff\1\10\4\uffff\1\5\1\3\1\uffff\1\6\1"+
"\7\1\uffff\1\1\1\uffff\2\3\2\uffff\1\3\20\uffff\2\3\3\uffff"+
"\3\3\1\uffff\1\3\2\uffff\5\3",
"",
"",
"",
"\1\11\1\3\5\uffff\1\3\13\uffff\1\3\5\11\17\3\1\uffff\4\3",
"",
"",
"",
"",
""
};
static final short[] DFA10_eot = DFA.unpackEncodedString(DFA10_eotS);
static final short[] DFA10_eof = DFA.unpackEncodedString(DFA10_eofS);
static final char[] DFA10_min = DFA.unpackEncodedStringToUnsignedChars(DFA10_minS);
static final char[] DFA10_max = DFA.unpackEncodedStringToUnsignedChars(DFA10_maxS);
static final short[] DFA10_accept = DFA.unpackEncodedString(DFA10_acceptS);
static final short[] DFA10_special = DFA.unpackEncodedString(DFA10_specialS);
static final short[][] DFA10_transition;
static {
int numStates = DFA10_transitionS.length;
DFA10_transition = new short[numStates][];
for (int i=0; i ^( WHILE loopCondition statement ) | UNTIL LPAR loopCondition RPAR statement -> ^( UNTIL loopCondition statement ) | FOREACH LPAR ID IN loopSet RPAR statement -> ^( FOREACH ID loopSet statement ) | SEMI );";
}
}
static final String DFA13_eotS =
"\14\uffff";
static final String DFA13_eofS =
"\14\uffff";
static final String DFA13_minS =
"\1\42\1\0\7\uffff\1\0\2\uffff";
static final String DFA13_maxS =
"\1\126\1\0\7\uffff\1\0\2\uffff";
static final String DFA13_acceptS =
"\2\uffff\1\2\7\uffff\1\1\1\3";
static final String DFA13_specialS =
"\1\uffff\1\0\7\uffff\1\1\2\uffff}>";
static final String[] DFA13_transitionS = {
"\1\11\7\uffff\1\2\12\uffff\1\2\20\uffff\2\2\3\uffff\3\2\1\uffff"+
"\1\1\2\uffff\5\2",
"\1\uffff",
"",
"",
"",
"",
"",
"",
"",
"\1\uffff",
"",
""
};
static final short[] DFA13_eot = DFA.unpackEncodedString(DFA13_eotS);
static final short[] DFA13_eof = DFA.unpackEncodedString(DFA13_eofS);
static final char[] DFA13_min = DFA.unpackEncodedStringToUnsignedChars(DFA13_minS);
static final char[] DFA13_max = DFA.unpackEncodedStringToUnsignedChars(DFA13_maxS);
static final short[] DFA13_accept = DFA.unpackEncodedString(DFA13_acceptS);
static final short[] DFA13_special = DFA.unpackEncodedString(DFA13_specialS);
static final short[][] DFA13_transition;
static {
int numStates = DFA13_transitionS.length;
DFA13_transition = new short[numStates][];
for (int i=0; i=0 ) return s;
break;
case 1 :
int LA13_9 = input.LA(1);
int index13_9 = input.index();
input.rewind();
s = -1;
if ( (synpred23_Jiffle()) ) {s = 2;}
else if ( (true) ) {s = 11;}
input.seek(index13_9);
if ( s>=0 ) return s;
break;
}
if (state.backtracking>0) {state.failed=true; return -1;}
NoViableAltException nvae =
new NoViableAltException(getDescription(), 13, _s, input);
error(nvae);
throw nvae;
}
}
public static final BitSet FOLLOW_specialBlock_in_prog299 = new BitSet(new long[]{0x0026B73580000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_statement_in_prog306 = new BitSet(new long[]{0x0026B61500000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_EOF_in_prog309 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_optionsBlock_in_specialBlock383 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_imagesBlock_in_specialBlock403 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_initBlock_in_specialBlock423 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_OPTIONS_in_optionsBlock452 = new BitSet(new long[]{0x0000000100000000L});
public static final BitSet FOLLOW_LCURLY_in_optionsBlock454 = new BitSet(new long[]{0x0000000600000000L});
public static final BitSet FOLLOW_option_in_optionsBlock456 = new BitSet(new long[]{0x0000000600000000L});
public static final BitSet FOLLOW_RCURLY_in_optionsBlock459 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ID_in_option498 = new BitSet(new long[]{0x0000000800000000L});
public static final BitSet FOLLOW_EQ_in_option500 = new BitSet(new long[]{0x0000000400000000L,0x00000000007C0000L});
public static final BitSet FOLLOW_optionValue_in_option502 = new BitSet(new long[]{0x0000001000000000L});
public static final BitSet FOLLOW_SEMI_in_option504 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ID_in_optionValue544 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_literal_in_optionValue564 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_IMAGES_in_imagesBlock595 = new BitSet(new long[]{0x0000000100000000L});
public static final BitSet FOLLOW_LCURLY_in_imagesBlock597 = new BitSet(new long[]{0x0000000600000000L});
public static final BitSet FOLLOW_imageVarDeclaration_in_imagesBlock599 = new BitSet(new long[]{0x0000000600000000L});
public static final BitSet FOLLOW_RCURLY_in_imagesBlock602 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ID_in_imageVarDeclaration647 = new BitSet(new long[]{0x0000000800000000L});
public static final BitSet FOLLOW_EQ_in_imageVarDeclaration649 = new BitSet(new long[]{0x000000C000000000L});
public static final BitSet FOLLOW_role_in_imageVarDeclaration651 = new BitSet(new long[]{0x0000001000000000L});
public static final BitSet FOLLOW_SEMI_in_imageVarDeclaration653 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_set_in_role0 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_INIT_in_initBlock760 = new BitSet(new long[]{0x0000000100000000L});
public static final BitSet FOLLOW_LCURLY_in_initBlock762 = new BitSet(new long[]{0x0000000600000000L});
public static final BitSet FOLLOW_varDeclaration_in_initBlock764 = new BitSet(new long[]{0x0000000600000000L});
public static final BitSet FOLLOW_RCURLY_in_initBlock767 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ID_in_varDeclaration799 = new BitSet(new long[]{0x0000001800000000L});
public static final BitSet FOLLOW_EQ_in_varDeclaration802 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_expression_in_varDeclaration804 = new BitSet(new long[]{0x0000001000000000L});
public static final BitSet FOLLOW_SEMI_in_varDeclaration808 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_LCURLY_in_block857 = new BitSet(new long[]{0x0026B61700000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_statement_in_block859 = new BitSet(new long[]{0x0026B61700000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_RCURLY_in_block862 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ifCall_in_statement903 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_block_in_statement923 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_delimitedStatement_in_statement943 = new BitSet(new long[]{0x0000001000000000L});
public static final BitSet FOLLOW_SEMI_in_statement945 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_assignmentExpression_in_statement966 = new BitSet(new long[]{0x0000001000000000L});
public static final BitSet FOLLOW_SEMI_in_statement968 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_WHILE_in_statement989 = new BitSet(new long[]{0x0000040000000000L});
public static final BitSet FOLLOW_LPAR_in_statement991 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_loopCondition_in_statement993 = new BitSet(new long[]{0x0000080000000000L});
public static final BitSet FOLLOW_RPAR_in_statement995 = new BitSet(new long[]{0x0026B61500000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_statement_in_statement997 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_UNTIL_in_statement1027 = new BitSet(new long[]{0x0000040000000000L});
public static final BitSet FOLLOW_LPAR_in_statement1029 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_loopCondition_in_statement1031 = new BitSet(new long[]{0x0000080000000000L});
public static final BitSet FOLLOW_RPAR_in_statement1033 = new BitSet(new long[]{0x0026B61500000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_statement_in_statement1035 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_FOREACH_in_statement1065 = new BitSet(new long[]{0x0000040000000000L});
public static final BitSet FOLLOW_LPAR_in_statement1067 = new BitSet(new long[]{0x0000000400000000L});
public static final BitSet FOLLOW_ID_in_statement1069 = new BitSet(new long[]{0x0000400000000000L});
public static final BitSet FOLLOW_IN_in_statement1071 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_loopSet_in_statement1073 = new BitSet(new long[]{0x0000080000000000L});
public static final BitSet FOLLOW_RPAR_in_statement1075 = new BitSet(new long[]{0x0026B61500000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_statement_in_statement1077 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_SEMI_in_statement1109 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_IF_in_ifCall1145 = new BitSet(new long[]{0x0000040000000000L});
public static final BitSet FOLLOW_LPAR_in_ifCall1147 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_orExpression_in_ifCall1149 = new BitSet(new long[]{0x0000080000000000L});
public static final BitSet FOLLOW_RPAR_in_ifCall1151 = new BitSet(new long[]{0x0026B61500000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_statement_in_ifCall1155 = new BitSet(new long[]{0x0001000000000002L});
public static final BitSet FOLLOW_ELSE_in_ifCall1177 = new BitSet(new long[]{0x0026B61500000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_statement_in_ifCall1181 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_expression_in_delimitedStatement1288 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_BREAKIF_in_delimitedStatement1308 = new BitSet(new long[]{0x0000040000000000L});
public static final BitSet FOLLOW_LPAR_in_delimitedStatement1310 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_expression_in_delimitedStatement1312 = new BitSet(new long[]{0x0000080000000000L});
public static final BitSet FOLLOW_RPAR_in_delimitedStatement1314 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_BREAK_in_delimitedStatement1342 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_orExpression_in_loopCondition1370 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_listLiteral_in_loopSet1404 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_sequence_in_loopSet1424 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ID_in_loopSet1444 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_expression_in_expressionList1472 = new BitSet(new long[]{0x0008000000000002L});
public static final BitSet FOLLOW_COMMA_in_expressionList1475 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_expression_in_expressionList1477 = new BitSet(new long[]{0x0008000000000002L});
public static final BitSet FOLLOW_expression_in_sequence1526 = new BitSet(new long[]{0x0010000000000000L});
public static final BitSet FOLLOW_COLON_in_sequence1528 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_expression_in_sequence1532 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_CON_in_conCall1580 = new BitSet(new long[]{0x0000040000000000L});
public static final BitSet FOLLOW_LPAR_in_conCall1582 = new BitSet(new long[]{0x00200C0400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_expressionList_in_conCall1584 = new BitSet(new long[]{0x0000080000000000L});
public static final BitSet FOLLOW_RPAR_in_conCall1586 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ID_in_assignmentExpression1638 = new BitSet(new long[]{0x0F80000800000000L});
public static final BitSet FOLLOW_assignmentOp_in_assignmentExpression1640 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_expression_in_assignmentExpression1643 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_conditionalExpression_in_expression1673 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ID_in_expression1693 = new BitSet(new long[]{0x0040000000000000L});
public static final BitSet FOLLOW_APPEND_in_expression1695 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_expression_in_expression1698 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_set_in_assignmentOp0 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_orExpression_in_conditionalExpression1869 = new BitSet(new long[]{0x1000000000000002L});
public static final BitSet FOLLOW_QUESTION_in_conditionalExpression1872 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_expression_in_conditionalExpression1875 = new BitSet(new long[]{0x0010000000000000L});
public static final BitSet FOLLOW_COLON_in_conditionalExpression1877 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_expression_in_conditionalExpression1880 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_xorExpression_in_orExpression1911 = new BitSet(new long[]{0x2000000000000002L});
public static final BitSet FOLLOW_OR_in_orExpression1914 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_xorExpression_in_orExpression1917 = new BitSet(new long[]{0x2000000000000002L});
public static final BitSet FOLLOW_andExpression_in_xorExpression1947 = new BitSet(new long[]{0x4000000000000002L});
public static final BitSet FOLLOW_XOR_in_xorExpression1950 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_andExpression_in_xorExpression1953 = new BitSet(new long[]{0x4000000000000002L});
public static final BitSet FOLLOW_eqExpression_in_andExpression1983 = new BitSet(new long[]{0x8000000000000002L});
public static final BitSet FOLLOW_AND_in_andExpression1986 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_eqExpression_in_andExpression1989 = new BitSet(new long[]{0x8000000000000002L});
public static final BitSet FOLLOW_compExpression_in_eqExpression2020 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000003L});
public static final BitSet FOLLOW_LOGICALEQ_in_eqExpression2024 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_NE_in_eqExpression2029 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_compExpression_in_eqExpression2033 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_addExpression_in_compExpression2062 = new BitSet(new long[]{0x0000000000000002L,0x000000000000003CL});
public static final BitSet FOLLOW_GT_in_compExpression2066 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_GE_in_compExpression2071 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_LE_in_compExpression2076 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_LT_in_compExpression2081 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_addExpression_in_compExpression2085 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_multExpression_in_addExpression2115 = new BitSet(new long[]{0x0000000000000002L,0x00000000000000C0L});
public static final BitSet FOLLOW_PLUS_in_addExpression2119 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_MINUS_in_addExpression2124 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_multExpression_in_addExpression2128 = new BitSet(new long[]{0x0000000000000002L,0x00000000000000C0L});
public static final BitSet FOLLOW_unaryExpression_in_multExpression2157 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000700L});
public static final BitSet FOLLOW_TIMES_in_multExpression2161 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_DIV_in_multExpression2166 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_MOD_in_multExpression2171 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_unaryExpression_in_multExpression2175 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000700L});
public static final BitSet FOLLOW_prefixOp_in_unaryExpression2203 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_unaryExpression_in_unaryExpression2205 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_powerExpression_in_unaryExpression2235 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_PLUS_in_prefixOp2268 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_MINUS_in_prefixOp2288 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_NOT_in_prefixOp2308 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_incdecOp_in_prefixOp2328 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_set_in_incdecOp0 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_primaryExpression_in_powerExpression2407 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
public static final BitSet FOLLOW_POW_in_powerExpression2410 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_primaryExpression_in_powerExpression2413 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
public static final BitSet FOLLOW_atom_in_primaryExpression2462 = new BitSet(new long[]{0x0000000000000002L,0x00000000000038C0L});
public static final BitSet FOLLOW_incdecOp_in_primaryExpression2465 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_LPAR_in_atom2559 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_expression_in_atom2561 = new BitSet(new long[]{0x0000080000000000L});
public static final BitSet FOLLOW_RPAR_in_atom2563 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_literal_in_atom2591 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_listLiteral_in_atom2611 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_conCall_in_atom2631 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_identifiedAtom_in_atom2651 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ID_in_identifiedAtom2678 = new BitSet(new long[]{0x0000040000000000L});
public static final BitSet FOLLOW_arguments_in_identifiedAtom2680 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ID_in_identifiedAtom2710 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
public static final BitSet FOLLOW_imagePos_in_identifiedAtom2712 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ID_in_identifiedAtom2742 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_LPAR_in_arguments2774 = new BitSet(new long[]{0x00200C0400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_expressionList_in_arguments2777 = new BitSet(new long[]{0x0000080000000000L});
public static final BitSet FOLLOW_RPAR_in_arguments2779 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_bandSpecifier_in_imagePos2813 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
public static final BitSet FOLLOW_pixelSpecifier_in_imagePos2815 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_pixelSpecifier_in_imagePos2835 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_bandSpecifier_in_imagePos2855 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_LSQUARE_in_pixelSpecifier2882 = new BitSet(new long[]{0x0020040400000000L,0x00000000007EB8C0L});
public static final BitSet FOLLOW_pixelPos_in_pixelSpecifier2884 = new BitSet(new long[]{0x0008000000000000L});
public static final BitSet FOLLOW_COMMA_in_pixelSpecifier2886 = new BitSet(new long[]{0x0020040400000000L,0x00000000007EB8C0L});
public static final BitSet FOLLOW_pixelPos_in_pixelSpecifier2888 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
public static final BitSet FOLLOW_RSQUARE_in_pixelSpecifier2890 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_LSQUARE_in_bandSpecifier2928 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_expression_in_bandSpecifier2930 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
public static final BitSet FOLLOW_RSQUARE_in_bandSpecifier2932 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ABS_POS_PREFIX_in_pixelPos2973 = new BitSet(new long[]{0x0020040400000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_expression_in_pixelPos2975 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_expression_in_pixelPos3003 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_set_in_literal0 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_LSQUARE_in_listLiteral3155 = new BitSet(new long[]{0x0020040400000000L,0x00000000007DB8C0L});
public static final BitSet FOLLOW_expressionList_in_listLiteral3157 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
public static final BitSet FOLLOW_RSQUARE_in_listLiteral3159 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ELSE_in_synpred19_Jiffle1177 = new BitSet(new long[]{0x0026B61500000000L,0x00000000007CB8C0L});
public static final BitSet FOLLOW_statement_in_synpred19_Jiffle1181 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_listLiteral_in_synpred22_Jiffle1404 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_sequence_in_synpred23_Jiffle1424 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_bandSpecifier_in_synpred60_Jiffle2813 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
public static final BitSet FOLLOW_pixelSpecifier_in_synpred60_Jiffle2815 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_pixelSpecifier_in_synpred61_Jiffle2835 = new BitSet(new long[]{0x0000000000000002L});
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy