All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jaitools.jiffle.parser.CheckAssignments Maven / Gradle / Ivy

// $ANTLR 3.3 Nov 30, 2010 12:46:29 org/jaitools/jiffle/parser/CheckAssignments.g 2012-10-10 10:44:32

package org.jaitools.jiffle.parser;

import java.util.Set;
import org.jaitools.CollectionFactory;


import org.antlr.runtime.*;
import org.antlr.runtime.tree.*;import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

/**
 * Checks for valid use of image variables.
 *
 * @author Michael Bedward
 */
public class CheckAssignments extends TreeParser {
    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 CheckAssignments(TreeNodeStream input) {
            this(input, new RecognizerSharedState());
        }
        public CheckAssignments(TreeNodeStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return CheckAssignments.tokenNames; }
    public String getGrammarFileName() { return "org/jaitools/jiffle/parser/CheckAssignments.g"; }



    private MessageTable msgTable;
    private SymbolScopeStack varScope;

    public CheckAssignments(TreeNodeStream input, MessageTable msgTable) {
        this(input);
        if (msgTable == null) {
            throw new IllegalArgumentException( "msgTable should not be null" );
        }
        this.msgTable = msgTable;

        varScope = new SymbolScopeStack();
    }




    // $ANTLR start "start"
    // org/jaitools/jiffle/parser/CheckAssignments.g:59:1: start : ( jiffleOption )* ( varDeclaration )* ( statement )+ ;
    public final void start() throws RecognitionException {

            varScope.addLevel("top");

        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:62:17: ( ( jiffleOption )* ( varDeclaration )* ( statement )+ )
            // org/jaitools/jiffle/parser/CheckAssignments.g:62:19: ( jiffleOption )* ( varDeclaration )* ( statement )+
            {
            // org/jaitools/jiffle/parser/CheckAssignments.g:62:19: ( jiffleOption )*
            loop1:
            do {
                int alt1=2;
                switch ( input.LA(1) ) {
                case JIFFLE_OPTION:
                    {
                    alt1=1;
                    }
                    break;

                }

                switch (alt1) {
            	case 1 :
            	    // org/jaitools/jiffle/parser/CheckAssignments.g:62:19: jiffleOption
            	    {
            	    pushFollow(FOLLOW_jiffleOption_in_start77);
            	    jiffleOption();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            // org/jaitools/jiffle/parser/CheckAssignments.g:62:33: ( varDeclaration )*
            loop2:
            do {
                int alt2=2;
                switch ( input.LA(1) ) {
                case DECL:
                    {
                    alt2=1;
                    }
                    break;

                }

                switch (alt2) {
            	case 1 :
            	    // org/jaitools/jiffle/parser/CheckAssignments.g:62:33: varDeclaration
            	    {
            	    pushFollow(FOLLOW_varDeclaration_in_start80);
            	    varDeclaration();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            // org/jaitools/jiffle/parser/CheckAssignments.g:62:49: ( statement )+
            int cnt3=0;
            loop3:
            do {
                int alt3=2;
                switch ( input.LA(1) ) {
                case BLOCK:
                case CON_CALL:
                case DECLARED_LIST:
                case FUNC_CALL:
                case IMAGE_POS:
                case PAR:
                case POSTFIX:
                case PREFIX:
                case VAR_DEST:
                case VAR_IMAGE_SCOPE:
                case VAR_SOURCE:
                case CONSTANT:
                case IMAGE_WRITE:
                case VAR_PIXEL_SCOPE:
                case VAR_LOOP:
                case VAR_LIST:
                case EQ:
                case WHILE:
                case UNTIL:
                case FOREACH:
                case IF:
                case BREAKIF:
                case BREAK:
                case APPEND:
                case TIMESEQ:
                case DIVEQ:
                case MODEQ:
                case PLUSEQ:
                case MINUSEQ:
                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 POW:
                case INT_LITERAL:
                case FLOAT_LITERAL:
                case TRUE:
                case FALSE:
                case NULL:
                    {
                    alt3=1;
                    }
                    break;

                }

                switch (alt3) {
            	case 1 :
            	    // org/jaitools/jiffle/parser/CheckAssignments.g:62:49: statement
            	    {
            	    pushFollow(FOLLOW_statement_in_start83);
            	    statement();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    if ( cnt3 >= 1 ) break loop3;
                        EarlyExitException eee =
                            new EarlyExitException(3, input);
                        throw eee;
                }
                cnt3++;
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "start"


    // $ANTLR start "jiffleOption"
    // org/jaitools/jiffle/parser/CheckAssignments.g:66:1: jiffleOption : ^( JIFFLE_OPTION ID . ) ;
    public final void jiffleOption() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:66:17: ( ^( JIFFLE_OPTION ID . ) )
            // org/jaitools/jiffle/parser/CheckAssignments.g:66:19: ^( JIFFLE_OPTION ID . )
            {
            match(input,JIFFLE_OPTION,FOLLOW_JIFFLE_OPTION_in_jiffleOption114); 

            match(input, Token.DOWN, null); 
            match(input,ID,FOLLOW_ID_in_jiffleOption116); 
            matchAny(input); 

            match(input, Token.UP, null); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "jiffleOption"


    // $ANTLR start "varDeclaration"
    // org/jaitools/jiffle/parser/CheckAssignments.g:70:1: varDeclaration : ( ^( DECL VAR_DEST ID ) | ^( DECL VAR_SOURCE ID ) | ^( DECL VAR_IMAGE_SCOPE ( . )? ) );
    public final void varDeclaration() throws RecognitionException {
        CommonTree VAR_IMAGE_SCOPE1=null;

        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:70:17: ( ^( DECL VAR_DEST ID ) | ^( DECL VAR_SOURCE ID ) | ^( DECL VAR_IMAGE_SCOPE ( . )? ) )
            int alt5=3;
            switch ( input.LA(1) ) {
            case DECL:
                {
                switch ( input.LA(2) ) {
                case DOWN:
                    {
                    switch ( input.LA(3) ) {
                    case VAR_DEST:
                        {
                        alt5=1;
                        }
                        break;
                    case VAR_SOURCE:
                        {
                        alt5=2;
                        }
                        break;
                    case VAR_IMAGE_SCOPE:
                        {
                        alt5=3;
                        }
                        break;
                    default:
                        NoViableAltException nvae =
                            new NoViableAltException("", 5, 2, input);

                        throw nvae;
                    }

                    }
                    break;
                default:
                    NoViableAltException nvae =
                        new NoViableAltException("", 5, 1, input);

                    throw nvae;
                }

                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }

            switch (alt5) {
                case 1 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:70:19: ^( DECL VAR_DEST ID )
                    {
                    match(input,DECL,FOLLOW_DECL_in_varDeclaration147); 

                    match(input, Token.DOWN, null); 
                    match(input,VAR_DEST,FOLLOW_VAR_DEST_in_varDeclaration149); 
                    match(input,ID,FOLLOW_ID_in_varDeclaration151); 

                    match(input, Token.UP, null); 

                    }
                    break;
                case 2 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:71:19: ^( DECL VAR_SOURCE ID )
                    {
                    match(input,DECL,FOLLOW_DECL_in_varDeclaration173); 

                    match(input, Token.DOWN, null); 
                    match(input,VAR_SOURCE,FOLLOW_VAR_SOURCE_in_varDeclaration175); 
                    match(input,ID,FOLLOW_ID_in_varDeclaration177); 

                    match(input, Token.UP, null); 

                    }
                    break;
                case 3 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:73:19: ^( DECL VAR_IMAGE_SCOPE ( . )? )
                    {
                    match(input,DECL,FOLLOW_DECL_in_varDeclaration200); 

                    match(input, Token.DOWN, null); 
                    VAR_IMAGE_SCOPE1=(CommonTree)match(input,VAR_IMAGE_SCOPE,FOLLOW_VAR_IMAGE_SCOPE_in_varDeclaration202); 
                    // org/jaitools/jiffle/parser/CheckAssignments.g:73:42: ( . )?
                    int alt4=2;
                    switch ( input.LA(1) ) {
                        case ABS_POS:
                        case BAND_REF:
                        case BLOCK:
                        case CON_CALL:
                        case DECL:
                        case DECLARED_LIST:
                        case EXPR_LIST:
                        case FUNC_CALL:
                        case IMAGE_POS:
                        case JIFFLE_OPTION:
                        case PAR:
                        case PIXEL_REF:
                        case POSTFIX:
                        case PREFIX:
                        case REL_POS:
                        case SEQUENCE:
                        case VAR_DEST:
                        case VAR_IMAGE_SCOPE:
                        case VAR_SOURCE:
                        case CONSTANT:
                        case IMAGE_WRITE:
                        case LIST_NEW:
                        case VAR_IMAGE:
                        case VAR_PIXEL_SCOPE:
                        case VAR_PROVIDED:
                        case VAR_LOOP:
                        case VAR_LIST:
                        case OPTIONS:
                        case LCURLY:
                        case RCURLY:
                        case ID:
                        case EQ:
                        case SEMI:
                        case IMAGES:
                        case READ:
                        case WRITE:
                        case INIT:
                        case WHILE:
                        case LPAR:
                        case RPAR:
                        case UNTIL:
                        case FOREACH:
                        case IN:
                        case IF:
                        case ELSE:
                        case BREAKIF:
                        case BREAK:
                        case COMMA:
                        case COLON:
                        case CON:
                        case APPEND:
                        case TIMESEQ:
                        case DIVEQ:
                        case MODEQ:
                        case PLUSEQ:
                        case MINUSEQ:
                        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 NOT:
                        case INCR:
                        case DECR:
                        case POW:
                        case LSQUARE:
                        case RSQUARE:
                        case ABS_POS_PREFIX:
                        case INT_LITERAL:
                        case FLOAT_LITERAL:
                        case TRUE:
                        case FALSE:
                        case NULL:
                        case COMMENT:
                        case INT_TYPE:
                        case FLOAT_TYPE:
                        case DOUBLE_TYPE:
                        case BOOLEAN_TYPE:
                        case Letter:
                        case UNDERSCORE:
                        case Digit:
                        case Dot:
                        case NonZeroDigit:
                        case FloatExp:
                        case WS:
                        case ESC_SEQ:
                        case CHAR:
                        case HEX_DIGIT:
                        case UNICODE_ESC:
                        case OCTAL_ESC:
                            {
                            alt4=1;
                            }
                            break;
                    }

                    switch (alt4) {
                        case 1 :
                            // org/jaitools/jiffle/parser/CheckAssignments.g:73:42: .
                            {
                            matchAny(input); 

                            }
                            break;

                    }


                    match(input, Token.UP, null); 
                     
                                        varScope.addSymbol((VAR_IMAGE_SCOPE1!=null?VAR_IMAGE_SCOPE1.getText():null), SymbolType.SCALAR, ScopeType.IMAGE);
                                    

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "varDeclaration"


    // $ANTLR start "block"
    // org/jaitools/jiffle/parser/CheckAssignments.g:80:1: block : ^( BLOCK ( statement )* ) ;
    public final void block() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:80:17: ( ^( BLOCK ( statement )* ) )
            // org/jaitools/jiffle/parser/CheckAssignments.g:80:19: ^( BLOCK ( statement )* )
            {
            match(input,BLOCK,FOLLOW_BLOCK_in_block261); 

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); 
                // org/jaitools/jiffle/parser/CheckAssignments.g:80:27: ( statement )*
                loop6:
                do {
                    int alt6=2;
                    switch ( input.LA(1) ) {
                    case BLOCK:
                    case CON_CALL:
                    case DECLARED_LIST:
                    case FUNC_CALL:
                    case IMAGE_POS:
                    case PAR:
                    case POSTFIX:
                    case PREFIX:
                    case VAR_DEST:
                    case VAR_IMAGE_SCOPE:
                    case VAR_SOURCE:
                    case CONSTANT:
                    case IMAGE_WRITE:
                    case VAR_PIXEL_SCOPE:
                    case VAR_LOOP:
                    case VAR_LIST:
                    case EQ:
                    case WHILE:
                    case UNTIL:
                    case FOREACH:
                    case IF:
                    case BREAKIF:
                    case BREAK:
                    case APPEND:
                    case TIMESEQ:
                    case DIVEQ:
                    case MODEQ:
                    case PLUSEQ:
                    case MINUSEQ:
                    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 POW:
                    case INT_LITERAL:
                    case FLOAT_LITERAL:
                    case TRUE:
                    case FALSE:
                    case NULL:
                        {
                        alt6=1;
                        }
                        break;

                    }

                    switch (alt6) {
                	case 1 :
                	    // org/jaitools/jiffle/parser/CheckAssignments.g:80:27: statement
                	    {
                	    pushFollow(FOLLOW_statement_in_block263);
                	    statement();

                	    state._fsp--;


                	    }
                	    break;

                	default :
                	    break loop6;
                    }
                } while (true);


                match(input, Token.UP, null); 
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "block"


    // $ANTLR start "statement"
    // org/jaitools/jiffle/parser/CheckAssignments.g:84:1: statement : ( block | ifCall | assignmentExpression | ^( WHILE loopCondition statement ) | ^( UNTIL loopCondition statement ) | foreachLoop | ^( BREAKIF expression ) | BREAK | expression );
    public final void statement() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:84:17: ( block | ifCall | assignmentExpression | ^( WHILE loopCondition statement ) | ^( UNTIL loopCondition statement ) | foreachLoop | ^( BREAKIF expression ) | BREAK | expression )
            int alt7=9;
            switch ( input.LA(1) ) {
            case BLOCK:
                {
                alt7=1;
                }
                break;
            case IF:
                {
                alt7=2;
                }
                break;
            case EQ:
            case TIMESEQ:
            case DIVEQ:
            case MODEQ:
            case PLUSEQ:
            case MINUSEQ:
                {
                alt7=3;
                }
                break;
            case WHILE:
                {
                alt7=4;
                }
                break;
            case UNTIL:
                {
                alt7=5;
                }
                break;
            case FOREACH:
                {
                alt7=6;
                }
                break;
            case BREAKIF:
                {
                alt7=7;
                }
                break;
            case BREAK:
                {
                alt7=8;
                }
                break;
            case CON_CALL:
            case DECLARED_LIST:
            case FUNC_CALL:
            case IMAGE_POS:
            case PAR:
            case POSTFIX:
            case PREFIX:
            case VAR_DEST:
            case VAR_IMAGE_SCOPE:
            case VAR_SOURCE:
            case CONSTANT:
            case IMAGE_WRITE:
            case VAR_PIXEL_SCOPE:
            case VAR_LOOP:
            case VAR_LIST:
            case APPEND:
            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 POW:
            case INT_LITERAL:
            case FLOAT_LITERAL:
            case TRUE:
            case FALSE:
            case NULL:
                {
                alt7=9;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 7, 0, input);

                throw nvae;
            }

            switch (alt7) {
                case 1 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:84:19: block
                    {
                    pushFollow(FOLLOW_block_in_statement297);
                    block();

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:85:19: ifCall
                    {
                    pushFollow(FOLLOW_ifCall_in_statement317);
                    ifCall();

                    state._fsp--;


                    }
                    break;
                case 3 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:86:19: assignmentExpression
                    {
                    pushFollow(FOLLOW_assignmentExpression_in_statement337);
                    assignmentExpression();

                    state._fsp--;


                    }
                    break;
                case 4 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:87:19: ^( WHILE loopCondition statement )
                    {
                    match(input,WHILE,FOLLOW_WHILE_in_statement358); 

                    match(input, Token.DOWN, null); 
                    pushFollow(FOLLOW_loopCondition_in_statement360);
                    loopCondition();

                    state._fsp--;

                    pushFollow(FOLLOW_statement_in_statement362);
                    statement();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;
                case 5 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:88:19: ^( UNTIL loopCondition statement )
                    {
                    match(input,UNTIL,FOLLOW_UNTIL_in_statement384); 

                    match(input, Token.DOWN, null); 
                    pushFollow(FOLLOW_loopCondition_in_statement386);
                    loopCondition();

                    state._fsp--;

                    pushFollow(FOLLOW_statement_in_statement388);
                    statement();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;
                case 6 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:89:19: foreachLoop
                    {
                    pushFollow(FOLLOW_foreachLoop_in_statement409);
                    foreachLoop();

                    state._fsp--;


                    }
                    break;
                case 7 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:90:19: ^( BREAKIF expression )
                    {
                    match(input,BREAKIF,FOLLOW_BREAKIF_in_statement430); 

                    match(input, Token.DOWN, null); 
                    pushFollow(FOLLOW_expression_in_statement432);
                    expression();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;
                case 8 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:91:19: BREAK
                    {
                    match(input,BREAK,FOLLOW_BREAK_in_statement453); 

                    }
                    break;
                case 9 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:92:19: expression
                    {
                    pushFollow(FOLLOW_expression_in_statement473);
                    expression();

                    state._fsp--;


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "statement"


    // $ANTLR start "ifCall"
    // org/jaitools/jiffle/parser/CheckAssignments.g:96:1: ifCall : ^( IF expression statement ( statement )? ) ;
    public final void ifCall() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:96:17: ( ^( IF expression statement ( statement )? ) )
            // org/jaitools/jiffle/parser/CheckAssignments.g:96:19: ^( IF expression statement ( statement )? )
            {
            match(input,IF,FOLLOW_IF_in_ifCall509); 

            match(input, Token.DOWN, null); 
            pushFollow(FOLLOW_expression_in_ifCall511);
            expression();

            state._fsp--;

            pushFollow(FOLLOW_statement_in_ifCall513);
            statement();

            state._fsp--;

            // org/jaitools/jiffle/parser/CheckAssignments.g:96:45: ( statement )?
            int alt8=2;
            switch ( input.LA(1) ) {
                case BLOCK:
                case CON_CALL:
                case DECLARED_LIST:
                case FUNC_CALL:
                case IMAGE_POS:
                case PAR:
                case POSTFIX:
                case PREFIX:
                case VAR_DEST:
                case VAR_IMAGE_SCOPE:
                case VAR_SOURCE:
                case CONSTANT:
                case IMAGE_WRITE:
                case VAR_PIXEL_SCOPE:
                case VAR_LOOP:
                case VAR_LIST:
                case EQ:
                case WHILE:
                case UNTIL:
                case FOREACH:
                case IF:
                case BREAKIF:
                case BREAK:
                case APPEND:
                case TIMESEQ:
                case DIVEQ:
                case MODEQ:
                case PLUSEQ:
                case MINUSEQ:
                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 POW:
                case INT_LITERAL:
                case FLOAT_LITERAL:
                case TRUE:
                case FALSE:
                case NULL:
                    {
                    alt8=1;
                    }
                    break;
            }

            switch (alt8) {
                case 1 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:96:45: statement
                    {
                    pushFollow(FOLLOW_statement_in_ifCall515);
                    statement();

                    state._fsp--;


                    }
                    break;

            }


            match(input, Token.UP, null); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "ifCall"


    // $ANTLR start "foreachLoop"
    // org/jaitools/jiffle/parser/CheckAssignments.g:100:1: foreachLoop : ^( FOREACH ID loopSet statement ) ;
    public final void foreachLoop() throws RecognitionException {
        CommonTree ID2=null;


            varScope.addLevel("foreach");

        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:107:17: ( ^( FOREACH ID loopSet statement ) )
            // org/jaitools/jiffle/parser/CheckAssignments.g:107:19: ^( FOREACH ID loopSet statement )
            {
            match(input,FOREACH,FOLLOW_FOREACH_in_foreachLoop570); 

            match(input, Token.DOWN, null); 
            ID2=(CommonTree)match(input,ID,FOLLOW_ID_in_foreachLoop572); 
            varScope.addSymbol((ID2!=null?ID2.getText():null), SymbolType.LOOP_VAR, ScopeType.PIXEL);
            pushFollow(FOLLOW_loopSet_in_foreachLoop576);
            loopSet();

            state._fsp--;

            pushFollow(FOLLOW_statement_in_foreachLoop578);
            statement();

            state._fsp--;


            match(input, Token.UP, null); 

            }


                varScope.dropLevel();

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "foreachLoop"


    // $ANTLR start "loopCondition"
    // org/jaitools/jiffle/parser/CheckAssignments.g:111:1: loopCondition : expression ;
    public final void loopCondition() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:111:17: ( expression )
            // org/jaitools/jiffle/parser/CheckAssignments.g:111:19: expression
            {
            pushFollow(FOLLOW_expression_in_loopCondition607);
            expression();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "loopCondition"


    // $ANTLR start "loopSet"
    // org/jaitools/jiffle/parser/CheckAssignments.g:115:1: loopSet : ( ^( SEQUENCE expression expression ) | listLiteral | VAR_LIST );
    public final void loopSet() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:115:17: ( ^( SEQUENCE expression expression ) | listLiteral | VAR_LIST )
            int alt9=3;
            switch ( input.LA(1) ) {
            case SEQUENCE:
                {
                alt9=1;
                }
                break;
            case DECLARED_LIST:
                {
                alt9=2;
                }
                break;
            case VAR_LIST:
                {
                alt9=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 9, 0, input);

                throw nvae;
            }

            switch (alt9) {
                case 1 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:115:19: ^( SEQUENCE expression expression )
                    {
                    match(input,SEQUENCE,FOLLOW_SEQUENCE_in_loopSet642); 

                    match(input, Token.DOWN, null); 
                    pushFollow(FOLLOW_expression_in_loopSet644);
                    expression();

                    state._fsp--;

                    pushFollow(FOLLOW_expression_in_loopSet646);
                    expression();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;
                case 2 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:116:19: listLiteral
                    {
                    pushFollow(FOLLOW_listLiteral_in_loopSet667);
                    listLiteral();

                    state._fsp--;


                    }
                    break;
                case 3 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:117:19: VAR_LIST
                    {
                    match(input,VAR_LIST,FOLLOW_VAR_LIST_in_loopSet687); 

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "loopSet"


    // $ANTLR start "expressionList"
    // org/jaitools/jiffle/parser/CheckAssignments.g:121:1: expressionList : ^( EXPR_LIST ( expression )* ) ;
    public final void expressionList() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:121:17: ( ^( EXPR_LIST ( expression )* ) )
            // org/jaitools/jiffle/parser/CheckAssignments.g:121:19: ^( EXPR_LIST ( expression )* )
            {
            match(input,EXPR_LIST,FOLLOW_EXPR_LIST_in_expressionList715); 

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); 
                // org/jaitools/jiffle/parser/CheckAssignments.g:121:31: ( expression )*
                loop10:
                do {
                    int alt10=2;
                    switch ( input.LA(1) ) {
                    case CON_CALL:
                    case DECLARED_LIST:
                    case FUNC_CALL:
                    case IMAGE_POS:
                    case PAR:
                    case POSTFIX:
                    case PREFIX:
                    case VAR_DEST:
                    case VAR_IMAGE_SCOPE:
                    case VAR_SOURCE:
                    case CONSTANT:
                    case IMAGE_WRITE:
                    case VAR_PIXEL_SCOPE:
                    case VAR_LOOP:
                    case VAR_LIST:
                    case APPEND:
                    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 POW:
                    case INT_LITERAL:
                    case FLOAT_LITERAL:
                    case TRUE:
                    case FALSE:
                    case NULL:
                        {
                        alt10=1;
                        }
                        break;

                    }

                    switch (alt10) {
                	case 1 :
                	    // org/jaitools/jiffle/parser/CheckAssignments.g:121:31: expression
                	    {
                	    pushFollow(FOLLOW_expression_in_expressionList717);
                	    expression();

                	    state._fsp--;


                	    }
                	    break;

                	default :
                	    break loop10;
                    }
                } while (true);


                match(input, Token.UP, null); 
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "expressionList"


    // $ANTLR start "assignmentExpression"
    // org/jaitools/jiffle/parser/CheckAssignments.g:125:1: assignmentExpression : ^( assignmentOp identifier expression ) ;
    public final void assignmentExpression() throws RecognitionException {
        CheckAssignments.identifier_return identifier3 = null;

        CheckAssignments.assignmentOp_return assignmentOp4 = null;


        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:126:17: ( ^( assignmentOp identifier expression ) )
            // org/jaitools/jiffle/parser/CheckAssignments.g:126:19: ^( assignmentOp identifier expression )
            {
            pushFollow(FOLLOW_assignmentOp_in_assignmentExpression762);
            assignmentOp4=assignmentOp();

            state._fsp--;


            match(input, Token.DOWN, null); 
            pushFollow(FOLLOW_identifier_in_assignmentExpression764);
            identifier3=identifier();

            state._fsp--;

            pushFollow(FOLLOW_expression_in_assignmentExpression766);
            expression();

            state._fsp--;


            match(input, Token.UP, null); 
             
                                String varName = (identifier3!=null?((CommonTree)identifier3.start):null).getText();
                                int idtype = (identifier3!=null?((CommonTree)identifier3.start):null).getType();
                                switch (idtype) {
                                    case CONSTANT:
                                        msgTable.add(varName, Message.CONSTANT_LHS);
                                        break;

                                    case VAR_SOURCE:
                                        msgTable.add(varName, Message.ASSIGNMENT_TO_SRC_IMAGE); 
                                        break;

                                    default:
                                        if ((assignmentOp4!=null?((CommonTree)assignmentOp4.start):null).getType() == EQ) {
                                            if (!varScope.isDefined(varName)) {
                                                varScope.addSymbol(varName, SymbolType.SCALAR, ScopeType.PIXEL);
                                            }

                                        } else {
                                            switch (idtype) {
                                                case VAR_DEST:
                                                    msgTable.add(varName, Message.INVALID_ASSIGNMENT_OP_WITH_DEST_IMAGE);
                                                    break;

                                                default:
                                                    if (!varScope.isDefined(varName)) {
                                                        msgTable.add(varName, Message.UNINIT_VAR);
                                                    }
                                            }
                                        }
                                }
                            

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "assignmentExpression"

    public static class assignmentOp_return extends TreeRuleReturnScope {
    };

    // $ANTLR start "assignmentOp"
    // org/jaitools/jiffle/parser/CheckAssignments.g:162:1: assignmentOp : ( EQ | TIMESEQ | DIVEQ | MODEQ | PLUSEQ | MINUSEQ );
    public final CheckAssignments.assignmentOp_return assignmentOp() throws RecognitionException {
        CheckAssignments.assignmentOp_return retval = new CheckAssignments.assignmentOp_return();
        retval.start = input.LT(1);

        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:162:17: ( EQ | TIMESEQ | DIVEQ | MODEQ | PLUSEQ | MINUSEQ )
            // org/jaitools/jiffle/parser/CheckAssignments.g:
            {
            if ( input.LA(1)==EQ||(input.LA(1)>=TIMESEQ && input.LA(1)<=MINUSEQ) ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "assignmentOp"

    public static class identifier_return extends TreeRuleReturnScope {
    };

    // $ANTLR start "identifier"
    // org/jaitools/jiffle/parser/CheckAssignments.g:171:1: identifier : ( imageVar | userVar | CONSTANT );
    public final CheckAssignments.identifier_return identifier() throws RecognitionException {
        CheckAssignments.identifier_return retval = new CheckAssignments.identifier_return();
        retval.start = input.LT(1);

        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:171:17: ( imageVar | userVar | CONSTANT )
            int alt11=3;
            switch ( input.LA(1) ) {
            case VAR_DEST:
            case VAR_SOURCE:
                {
                alt11=1;
                }
                break;
            case VAR_IMAGE_SCOPE:
            case VAR_PIXEL_SCOPE:
            case VAR_LOOP:
            case VAR_LIST:
                {
                alt11=2;
                }
                break;
            case CONSTANT:
                {
                alt11=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;
            }

            switch (alt11) {
                case 1 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:171:19: imageVar
                    {
                    pushFollow(FOLLOW_imageVar_in_identifier945);
                    imageVar();

                    state._fsp--;


                    }
                    break;
                case 2 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:172:19: userVar
                    {
                    pushFollow(FOLLOW_userVar_in_identifier965);
                    userVar();

                    state._fsp--;


                    }
                    break;
                case 3 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:173:19: CONSTANT
                    {
                    match(input,CONSTANT,FOLLOW_CONSTANT_in_identifier985); 

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "identifier"


    // $ANTLR start "imageVar"
    // org/jaitools/jiffle/parser/CheckAssignments.g:177:1: imageVar : ( VAR_SOURCE | VAR_DEST );
    public final void imageVar() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:177:17: ( VAR_SOURCE | VAR_DEST )
            // org/jaitools/jiffle/parser/CheckAssignments.g:
            {
            if ( input.LA(1)==VAR_DEST||input.LA(1)==VAR_SOURCE ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "imageVar"

    public static class userVar_return extends TreeRuleReturnScope {
    };

    // $ANTLR start "userVar"
    // org/jaitools/jiffle/parser/CheckAssignments.g:181:1: userVar : ( VAR_IMAGE_SCOPE | VAR_PIXEL_SCOPE | VAR_LOOP | VAR_LIST );
    public final CheckAssignments.userVar_return userVar() throws RecognitionException {
        CheckAssignments.userVar_return retval = new CheckAssignments.userVar_return();
        retval.start = input.LT(1);

        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:181:17: ( VAR_IMAGE_SCOPE | VAR_PIXEL_SCOPE | VAR_LOOP | VAR_LIST )
            // org/jaitools/jiffle/parser/CheckAssignments.g:
            {
            if ( input.LA(1)==VAR_IMAGE_SCOPE||input.LA(1)==VAR_PIXEL_SCOPE||(input.LA(1)>=VAR_LOOP && input.LA(1)<=VAR_LIST) ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return retval;
    }
    // $ANTLR end "userVar"


    // $ANTLR start "expression"
    // org/jaitools/jiffle/parser/CheckAssignments.g:188:1: expression : ( ^( FUNC_CALL ID expressionList ) | ^( CON_CALL expressionList ) | ^( QUESTION expression expression expression ) | ^( IMAGE_WRITE . expression ) | ^( IMAGE_POS . ( bandSpecifier )? ( pixelSpecifier )? ) | ^( logicalOp expression expression ) | ^( arithmeticOp expression expression ) | ^( POW expression expression ) | ^( PREFIX prefixOp expression ) | ^( POSTFIX incdecOp expression ) | ^( PAR expression ) | listOperation | listLiteral | literal | imageVar | CONSTANT | userVar );
    public final void expression() throws RecognitionException {
        CheckAssignments.userVar_return userVar5 = null;


        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:188:17: ( ^( FUNC_CALL ID expressionList ) | ^( CON_CALL expressionList ) | ^( QUESTION expression expression expression ) | ^( IMAGE_WRITE . expression ) | ^( IMAGE_POS . ( bandSpecifier )? ( pixelSpecifier )? ) | ^( logicalOp expression expression ) | ^( arithmeticOp expression expression ) | ^( POW expression expression ) | ^( PREFIX prefixOp expression ) | ^( POSTFIX incdecOp expression ) | ^( PAR expression ) | listOperation | listLiteral | literal | imageVar | CONSTANT | userVar )
            int alt14=17;
            switch ( input.LA(1) ) {
            case FUNC_CALL:
                {
                alt14=1;
                }
                break;
            case CON_CALL:
                {
                alt14=2;
                }
                break;
            case QUESTION:
                {
                alt14=3;
                }
                break;
            case IMAGE_WRITE:
                {
                alt14=4;
                }
                break;
            case IMAGE_POS:
                {
                alt14=5;
                }
                break;
            case OR:
            case XOR:
            case AND:
            case LOGICALEQ:
            case NE:
            case GT:
            case GE:
            case LE:
            case LT:
                {
                alt14=6;
                }
                break;
            case PLUS:
            case MINUS:
            case TIMES:
            case DIV:
            case MOD:
                {
                alt14=7;
                }
                break;
            case POW:
                {
                alt14=8;
                }
                break;
            case PREFIX:
                {
                alt14=9;
                }
                break;
            case POSTFIX:
                {
                alt14=10;
                }
                break;
            case PAR:
                {
                alt14=11;
                }
                break;
            case APPEND:
                {
                alt14=12;
                }
                break;
            case DECLARED_LIST:
                {
                alt14=13;
                }
                break;
            case INT_LITERAL:
            case FLOAT_LITERAL:
            case TRUE:
            case FALSE:
            case NULL:
                {
                alt14=14;
                }
                break;
            case VAR_DEST:
            case VAR_SOURCE:
                {
                alt14=15;
                }
                break;
            case CONSTANT:
                {
                alt14=16;
                }
                break;
            case VAR_IMAGE_SCOPE:
            case VAR_PIXEL_SCOPE:
            case VAR_LOOP:
            case VAR_LIST:
                {
                alt14=17;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 14, 0, input);

                throw nvae;
            }

            switch (alt14) {
                case 1 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:188:19: ^( FUNC_CALL ID expressionList )
                    {
                    match(input,FUNC_CALL,FOLLOW_FUNC_CALL_in_expression1163); 

                    match(input, Token.DOWN, null); 
                    match(input,ID,FOLLOW_ID_in_expression1165); 
                    pushFollow(FOLLOW_expressionList_in_expression1167);
                    expressionList();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;
                case 2 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:189:19: ^( CON_CALL expressionList )
                    {
                    match(input,CON_CALL,FOLLOW_CON_CALL_in_expression1189); 

                    match(input, Token.DOWN, null); 
                    pushFollow(FOLLOW_expressionList_in_expression1191);
                    expressionList();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;
                case 3 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:190:19: ^( QUESTION expression expression expression )
                    {
                    match(input,QUESTION,FOLLOW_QUESTION_in_expression1213); 

                    match(input, Token.DOWN, null); 
                    pushFollow(FOLLOW_expression_in_expression1215);
                    expression();

                    state._fsp--;

                    pushFollow(FOLLOW_expression_in_expression1217);
                    expression();

                    state._fsp--;

                    pushFollow(FOLLOW_expression_in_expression1219);
                    expression();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;
                case 4 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:191:19: ^( IMAGE_WRITE . expression )
                    {
                    match(input,IMAGE_WRITE,FOLLOW_IMAGE_WRITE_in_expression1241); 

                    match(input, Token.DOWN, null); 
                    matchAny(input); 
                    pushFollow(FOLLOW_expression_in_expression1245);
                    expression();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;
                case 5 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:192:19: ^( IMAGE_POS . ( bandSpecifier )? ( pixelSpecifier )? )
                    {
                    match(input,IMAGE_POS,FOLLOW_IMAGE_POS_in_expression1267); 

                    match(input, Token.DOWN, null); 
                    matchAny(input); 
                    // org/jaitools/jiffle/parser/CheckAssignments.g:192:33: ( bandSpecifier )?
                    int alt12=2;
                    switch ( input.LA(1) ) {
                        case BAND_REF:
                            {
                            alt12=1;
                            }
                            break;
                    }

                    switch (alt12) {
                        case 1 :
                            // org/jaitools/jiffle/parser/CheckAssignments.g:192:33: bandSpecifier
                            {
                            pushFollow(FOLLOW_bandSpecifier_in_expression1271);
                            bandSpecifier();

                            state._fsp--;


                            }
                            break;

                    }

                    // org/jaitools/jiffle/parser/CheckAssignments.g:192:48: ( pixelSpecifier )?
                    int alt13=2;
                    switch ( input.LA(1) ) {
                        case PIXEL_REF:
                            {
                            alt13=1;
                            }
                            break;
                    }

                    switch (alt13) {
                        case 1 :
                            // org/jaitools/jiffle/parser/CheckAssignments.g:192:48: pixelSpecifier
                            {
                            pushFollow(FOLLOW_pixelSpecifier_in_expression1274);
                            pixelSpecifier();

                            state._fsp--;


                            }
                            break;

                    }


                    match(input, Token.UP, null); 

                    }
                    break;
                case 6 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:193:19: ^( logicalOp expression expression )
                    {
                    pushFollow(FOLLOW_logicalOp_in_expression1297);
                    logicalOp();

                    state._fsp--;


                    match(input, Token.DOWN, null); 
                    pushFollow(FOLLOW_expression_in_expression1299);
                    expression();

                    state._fsp--;

                    pushFollow(FOLLOW_expression_in_expression1301);
                    expression();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;
                case 7 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:194:19: ^( arithmeticOp expression expression )
                    {
                    pushFollow(FOLLOW_arithmeticOp_in_expression1323);
                    arithmeticOp();

                    state._fsp--;


                    match(input, Token.DOWN, null); 
                    pushFollow(FOLLOW_expression_in_expression1325);
                    expression();

                    state._fsp--;

                    pushFollow(FOLLOW_expression_in_expression1327);
                    expression();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;
                case 8 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:195:19: ^( POW expression expression )
                    {
                    match(input,POW,FOLLOW_POW_in_expression1349); 

                    match(input, Token.DOWN, null); 
                    pushFollow(FOLLOW_expression_in_expression1351);
                    expression();

                    state._fsp--;

                    pushFollow(FOLLOW_expression_in_expression1353);
                    expression();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;
                case 9 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:196:19: ^( PREFIX prefixOp expression )
                    {
                    match(input,PREFIX,FOLLOW_PREFIX_in_expression1375); 

                    match(input, Token.DOWN, null); 
                    pushFollow(FOLLOW_prefixOp_in_expression1377);
                    prefixOp();

                    state._fsp--;

                    pushFollow(FOLLOW_expression_in_expression1379);
                    expression();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;
                case 10 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:197:19: ^( POSTFIX incdecOp expression )
                    {
                    match(input,POSTFIX,FOLLOW_POSTFIX_in_expression1401); 

                    match(input, Token.DOWN, null); 
                    pushFollow(FOLLOW_incdecOp_in_expression1403);
                    incdecOp();

                    state._fsp--;

                    pushFollow(FOLLOW_expression_in_expression1405);
                    expression();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;
                case 11 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:198:19: ^( PAR expression )
                    {
                    match(input,PAR,FOLLOW_PAR_in_expression1427); 

                    match(input, Token.DOWN, null); 
                    pushFollow(FOLLOW_expression_in_expression1429);
                    expression();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;
                case 12 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:199:19: listOperation
                    {
                    pushFollow(FOLLOW_listOperation_in_expression1450);
                    listOperation();

                    state._fsp--;


                    }
                    break;
                case 13 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:200:19: listLiteral
                    {
                    pushFollow(FOLLOW_listLiteral_in_expression1470);
                    listLiteral();

                    state._fsp--;


                    }
                    break;
                case 14 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:201:19: literal
                    {
                    pushFollow(FOLLOW_literal_in_expression1490);
                    literal();

                    state._fsp--;


                    }
                    break;
                case 15 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:202:19: imageVar
                    {
                    pushFollow(FOLLOW_imageVar_in_expression1510);
                    imageVar();

                    state._fsp--;


                    }
                    break;
                case 16 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:203:19: CONSTANT
                    {
                    match(input,CONSTANT,FOLLOW_CONSTANT_in_expression1530); 

                    }
                    break;
                case 17 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:205:19: userVar
                    {
                    pushFollow(FOLLOW_userVar_in_expression1551);
                    userVar5=userVar();

                    state._fsp--;


                                        String varName = (userVar5!=null?((CommonTree)userVar5.start):null).getText();
                                        int varType = (userVar5!=null?((CommonTree)userVar5.start):null).getType();
                                        if (!varScope.isDefined(varName)) {
                                            msgTable.add(varName, Message.UNINIT_VAR);
                                        }
                                    

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "expression"


    // $ANTLR start "listOperation"
    // org/jaitools/jiffle/parser/CheckAssignments.g:216:1: listOperation : ^( APPEND VAR_LIST expression ) ;
    public final void listOperation() throws RecognitionException {
        CommonTree VAR_LIST6=null;

        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:216:17: ( ^( APPEND VAR_LIST expression ) )
            // org/jaitools/jiffle/parser/CheckAssignments.g:216:19: ^( APPEND VAR_LIST expression )
            {
            match(input,APPEND,FOLLOW_APPEND_in_listOperation1598); 

            match(input, Token.DOWN, null); 
            VAR_LIST6=(CommonTree)match(input,VAR_LIST,FOLLOW_VAR_LIST_in_listOperation1600); 
            pushFollow(FOLLOW_expression_in_listOperation1602);
            expression();

            state._fsp--;


            match(input, Token.UP, null); 

                                if (!varScope.isDefined((VAR_LIST6!=null?VAR_LIST6.getText():null))) {
                                    msgTable.add((VAR_LIST6!=null?VAR_LIST6.getText():null), Message.UNDECLARED_LIST_VAR);
                                }
                            

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "listOperation"


    // $ANTLR start "listLiteral"
    // org/jaitools/jiffle/parser/CheckAssignments.g:225:1: listLiteral : ^( DECLARED_LIST expressionList ) ;
    public final void listLiteral() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:225:17: ( ^( DECLARED_LIST expressionList ) )
            // org/jaitools/jiffle/parser/CheckAssignments.g:225:19: ^( DECLARED_LIST expressionList )
            {
            match(input,DECLARED_LIST,FOLLOW_DECLARED_LIST_in_listLiteral1652); 

            match(input, Token.DOWN, null); 
            pushFollow(FOLLOW_expressionList_in_listLiteral1654);
            expressionList();

            state._fsp--;


            match(input, Token.UP, null); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "listLiteral"


    // $ANTLR start "logicalOp"
    // org/jaitools/jiffle/parser/CheckAssignments.g:229:1: logicalOp : ( OR | XOR | AND | LOGICALEQ | NE | GT | GE | LT | LE );
    public final void logicalOp() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:229:17: ( OR | XOR | AND | LOGICALEQ | NE | GT | GE | LT | LE )
            // org/jaitools/jiffle/parser/CheckAssignments.g:
            {
            if ( (input.LA(1)>=OR && input.LA(1)<=LT) ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "logicalOp"


    // $ANTLR start "arithmeticOp"
    // org/jaitools/jiffle/parser/CheckAssignments.g:241:1: arithmeticOp : ( PLUS | MINUS | TIMES | DIV | MOD );
    public final void arithmeticOp() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:241:17: ( PLUS | MINUS | TIMES | DIV | MOD )
            // org/jaitools/jiffle/parser/CheckAssignments.g:
            {
            if ( (input.LA(1)>=PLUS && input.LA(1)<=MOD) ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "arithmeticOp"


    // $ANTLR start "prefixOp"
    // org/jaitools/jiffle/parser/CheckAssignments.g:249:1: prefixOp : ( PLUS | MINUS | NOT | incdecOp );
    public final void prefixOp() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:249:17: ( PLUS | MINUS | NOT | incdecOp )
            int alt15=4;
            switch ( input.LA(1) ) {
            case PLUS:
                {
                alt15=1;
                }
                break;
            case MINUS:
                {
                alt15=2;
                }
                break;
            case NOT:
                {
                alt15=3;
                }
                break;
            case INCR:
            case DECR:
                {
                alt15=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 15, 0, input);

                throw nvae;
            }

            switch (alt15) {
                case 1 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:249:19: PLUS
                    {
                    match(input,PLUS,FOLLOW_PLUS_in_prefixOp1989); 

                    }
                    break;
                case 2 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:250:19: MINUS
                    {
                    match(input,MINUS,FOLLOW_MINUS_in_prefixOp2009); 

                    }
                    break;
                case 3 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:251:19: NOT
                    {
                    match(input,NOT,FOLLOW_NOT_in_prefixOp2029); 

                    }
                    break;
                case 4 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:252:19: incdecOp
                    {
                    pushFollow(FOLLOW_incdecOp_in_prefixOp2049);
                    incdecOp();

                    state._fsp--;


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "prefixOp"


    // $ANTLR start "incdecOp"
    // org/jaitools/jiffle/parser/CheckAssignments.g:256:1: incdecOp : ( INCR | DECR );
    public final void incdecOp() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:256:17: ( INCR | DECR )
            // org/jaitools/jiffle/parser/CheckAssignments.g:
            {
            if ( (input.LA(1)>=INCR && input.LA(1)<=DECR) ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "incdecOp"


    // $ANTLR start "pixelSpecifier"
    // org/jaitools/jiffle/parser/CheckAssignments.g:261:1: pixelSpecifier : ^( PIXEL_REF pixelPos pixelPos ) ;
    public final void pixelSpecifier() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:261:17: ( ^( PIXEL_REF pixelPos pixelPos ) )
            // org/jaitools/jiffle/parser/CheckAssignments.g:261:19: ^( PIXEL_REF pixelPos pixelPos )
            {
            match(input,PIXEL_REF,FOLLOW_PIXEL_REF_in_pixelSpecifier2130); 

            match(input, Token.DOWN, null); 
            pushFollow(FOLLOW_pixelPos_in_pixelSpecifier2132);
            pixelPos();

            state._fsp--;

            pushFollow(FOLLOW_pixelPos_in_pixelSpecifier2134);
            pixelPos();

            state._fsp--;


            match(input, Token.UP, null); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "pixelSpecifier"


    // $ANTLR start "bandSpecifier"
    // org/jaitools/jiffle/parser/CheckAssignments.g:265:1: bandSpecifier : ^( BAND_REF expression ) ;
    public final void bandSpecifier() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:265:17: ( ^( BAND_REF expression ) )
            // org/jaitools/jiffle/parser/CheckAssignments.g:265:19: ^( BAND_REF expression )
            {
            match(input,BAND_REF,FOLLOW_BAND_REF_in_bandSpecifier2164); 

            match(input, Token.DOWN, null); 
            pushFollow(FOLLOW_expression_in_bandSpecifier2166);
            expression();

            state._fsp--;


            match(input, Token.UP, null); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "bandSpecifier"


    // $ANTLR start "pixelPos"
    // org/jaitools/jiffle/parser/CheckAssignments.g:269:1: pixelPos : ( ^( ABS_POS expression ) | ^( REL_POS expression ) );
    public final void pixelPos() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:269:17: ( ^( ABS_POS expression ) | ^( REL_POS expression ) )
            int alt16=2;
            switch ( input.LA(1) ) {
            case ABS_POS:
                {
                alt16=1;
                }
                break;
            case REL_POS:
                {
                alt16=2;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 16, 0, input);

                throw nvae;
            }

            switch (alt16) {
                case 1 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:269:19: ^( ABS_POS expression )
                    {
                    match(input,ABS_POS,FOLLOW_ABS_POS_in_pixelPos2201); 

                    match(input, Token.DOWN, null); 
                    pushFollow(FOLLOW_expression_in_pixelPos2203);
                    expression();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;
                case 2 :
                    // org/jaitools/jiffle/parser/CheckAssignments.g:270:19: ^( REL_POS expression )
                    {
                    match(input,REL_POS,FOLLOW_REL_POS_in_pixelPos2225); 

                    match(input, Token.DOWN, null); 
                    pushFollow(FOLLOW_expression_in_pixelPos2227);
                    expression();

                    state._fsp--;


                    match(input, Token.UP, null); 

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "pixelPos"


    // $ANTLR start "literal"
    // org/jaitools/jiffle/parser/CheckAssignments.g:274:1: literal : ( INT_LITERAL | FLOAT_LITERAL | TRUE | FALSE | NULL );
    public final void literal() throws RecognitionException {
        try {
            // org/jaitools/jiffle/parser/CheckAssignments.g:274:17: ( INT_LITERAL | FLOAT_LITERAL | TRUE | FALSE | NULL )
            // org/jaitools/jiffle/parser/CheckAssignments.g:
            {
            if ( (input.LA(1)>=INT_LITERAL && input.LA(1)<=NULL) ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "literal"

    // Delegated rules


 

    public static final BitSet FOLLOW_jiffleOption_in_start77 = new BitSet(new long[]{0xFFC6B20869F37BC0L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_varDeclaration_in_start80 = new BitSet(new long[]{0xFFC6B20869F35BC0L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_statement_in_start83 = new BitSet(new long[]{0xFFC6B20869F35BC2L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_JIFFLE_OPTION_in_jiffleOption114 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_ID_in_jiffleOption116 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x000000FFFFFFFFFFL});
    public static final BitSet FOLLOW_DECL_in_varDeclaration147 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_VAR_DEST_in_varDeclaration149 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_ID_in_varDeclaration151 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_DECL_in_varDeclaration173 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_VAR_SOURCE_in_varDeclaration175 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_ID_in_varDeclaration177 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_DECL_in_varDeclaration200 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_VAR_IMAGE_SCOPE_in_varDeclaration202 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF8L,0x000000FFFFFFFFFFL});
    public static final BitSet FOLLOW_BLOCK_in_block261 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_statement_in_block263 = new BitSet(new long[]{0xFFC6B20869F35BC8L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_block_in_statement297 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ifCall_in_statement317 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_assignmentExpression_in_statement337 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_WHILE_in_statement358 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_loopCondition_in_statement360 = new BitSet(new long[]{0xFFC6B20869F35BC0L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_statement_in_statement362 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_UNTIL_in_statement384 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_loopCondition_in_statement386 = new BitSet(new long[]{0xFFC6B20869F35BC0L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_statement_in_statement388 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_foreachLoop_in_statement409 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_BREAKIF_in_statement430 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_statement432 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_BREAK_in_statement453 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expression_in_statement473 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IF_in_ifCall509 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_ifCall511 = new BitSet(new long[]{0xFFC6B20869F35BC0L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_statement_in_ifCall513 = new BitSet(new long[]{0xFFC6B20869F35BC8L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_statement_in_ifCall515 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_FOREACH_in_foreachLoop570 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_ID_in_foreachLoop572 = new BitSet(new long[]{0x0000000040080200L});
    public static final BitSet FOLLOW_loopSet_in_foreachLoop576 = new BitSet(new long[]{0xFFC6B20869F35BC0L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_statement_in_foreachLoop578 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_expression_in_loopCondition607 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEQUENCE_in_loopSet642 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_loopSet644 = new BitSet(new long[]{0xFFC6B20869F35BC0L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_expression_in_loopSet646 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_listLiteral_in_loopSet667 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_VAR_LIST_in_loopSet687 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_EXPR_LIST_in_expressionList715 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_expressionList717 = new BitSet(new long[]{0xFFC6B20869F35BC8L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_assignmentOp_in_assignmentExpression762 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_identifier_in_assignmentExpression764 = new BitSet(new long[]{0xFFC6B20869F35BC0L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_expression_in_assignmentExpression766 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_set_in_assignmentOp0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_imageVar_in_identifier945 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_userVar_in_identifier965 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CONSTANT_in_identifier985 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_imageVar0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_userVar0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_FUNC_CALL_in_expression1163 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_ID_in_expression1165 = new BitSet(new long[]{0x0000000000000400L});
    public static final BitSet FOLLOW_expressionList_in_expression1167 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CON_CALL_in_expression1189 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expressionList_in_expression1191 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_QUESTION_in_expression1213 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_expression1215 = new BitSet(new long[]{0xFFC6B20869F35BC0L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_expression_in_expression1217 = new BitSet(new long[]{0xFFC6B20869F35BC0L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_expression_in_expression1219 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_IMAGE_WRITE_in_expression1241 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_expression1245 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_IMAGE_POS_in_expression1267 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_bandSpecifier_in_expression1271 = new BitSet(new long[]{0x0000000000008008L});
    public static final BitSet FOLLOW_pixelSpecifier_in_expression1274 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_logicalOp_in_expression1297 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_expression1299 = new BitSet(new long[]{0xFFC6B20869F35BC0L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_expression_in_expression1301 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_arithmeticOp_in_expression1323 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_expression1325 = new BitSet(new long[]{0xFFC6B20869F35BC0L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_expression_in_expression1327 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_POW_in_expression1349 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_expression1351 = new BitSet(new long[]{0xFFC6B20869F35BC0L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_expression_in_expression1353 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PREFIX_in_expression1375 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_prefixOp_in_expression1377 = new BitSet(new long[]{0xFFC6B20869F35BC0L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_expression_in_expression1379 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_POSTFIX_in_expression1401 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_incdecOp_in_expression1403 = new BitSet(new long[]{0xFFC6B20869F35BC0L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_expression_in_expression1405 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PAR_in_expression1427 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_expression1429 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_listOperation_in_expression1450 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_listLiteral_in_expression1470 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_literal_in_expression1490 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_imageVar_in_expression1510 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CONSTANT_in_expression1530 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_userVar_in_expression1551 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_APPEND_in_listOperation1598 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_VAR_LIST_in_listOperation1600 = new BitSet(new long[]{0xFFC6B20869F35BC0L,0x00000000007C47FFL});
    public static final BitSet FOLLOW_expression_in_listOperation1602 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_DECLARED_LIST_in_listLiteral1652 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expressionList_in_listLiteral1654 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_set_in_logicalOp0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_arithmeticOp0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PLUS_in_prefixOp1989 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_MINUS_in_prefixOp2009 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NOT_in_prefixOp2029 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_incdecOp_in_prefixOp2049 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_set_in_incdecOp0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PIXEL_REF_in_pixelSpecifier2130 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_pixelPos_in_pixelSpecifier2132 = new BitSet(new long[]{0x0000000000040010L});
    public static final BitSet FOLLOW_pixelPos_in_pixelSpecifier2134 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_BAND_REF_in_bandSpecifier2164 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_bandSpecifier2166 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ABS_POS_in_pixelPos2201 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_pixelPos2203 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_REL_POS_in_pixelPos2225 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_pixelPos2227 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_set_in_literal0 = new BitSet(new long[]{0x0000000000000002L});

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy