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

com.feilong.lib.ognl.OgnlParser Maven / Gradle / Ivy

Go to download

feilong is a suite of core and expanded libraries that include utility classes, http, excel,cvs, io classes, and much much more.

There is a newer version: 4.0.8
Show newest version
/* Generated By:JJTree&JavaCC: Do not edit this line. OgnlParser.java */
package com.feilong.lib.ognl;

/**
 * OgnlParser is a JavaCC parser class; it translates OGNL expressions into abstract
 * syntax trees (ASTs) that can then be interpreted by the getValue and setValue methods.
 */
public class OgnlParser/* @bgen(jjtree) */ implements OgnlParserTreeConstants,OgnlParserConstants{/* @bgen(jjtree) */

    protected JJTOgnlParserState jjtree = new JJTOgnlParserState();

    /**
     * This is the top-level construct of OGNL.
     * 
     * @return the Node representing the top-level expression.
     * @throws ParseException
     *             if the expression parsing fails.
     */
    final public Node topLevelExpression() throws ParseException{
        expression();
        jj_consume_token(0);
        {
            if (true){
                return jjtree.rootNode();
            }
        }
        throw new Error("Missing return statement in function");
    }

    // sequence (level 14)
    final public void expression() throws ParseException{
        assignmentExpression();
        label_1: while (true){
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 1:
                    ;
                    break;
                default:
                    jj_la1[0] = jj_gen;
                    break label_1;
            }
            jj_consume_token(1);
            ASTSequence jjtn001 = new ASTSequence(JJTSEQUENCE);
            boolean jjtc001 = true;
            jjtree.openNodeScope(jjtn001);
            try{
                assignmentExpression();
            }catch (Throwable jjte001){
                if (jjtc001){
                    jjtree.clearNodeScope(jjtn001);
                    jjtc001 = false;
                }else{
                    jjtree.popNode();
                }
                if (jjte001 instanceof RuntimeException){
                    {
                        if (true){
                            throw (RuntimeException) jjte001;
                        }
                    }
                }
                if (jjte001 instanceof ParseException){
                    {
                        if (true){
                            throw (ParseException) jjte001;
                        }
                    }
                }
                {
                    if (true){
                        throw (Error) jjte001;
                    }
                }
            }finally{
                if (jjtc001){
                    jjtree.closeNodeScope(jjtn001, 2);
                }
            }
        }
    }

    // assignment expression (level 13)
    final public void assignmentExpression() throws ParseException{
        conditionalTestExpression();
        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
            case 2:
                jj_consume_token(2);
                ASTAssign jjtn001 = new ASTAssign(JJTASSIGN);
                boolean jjtc001 = true;
                jjtree.openNodeScope(jjtn001);
                try{
                    assignmentExpression();
                }catch (Throwable jjte001){
                    if (jjtc001){
                        jjtree.clearNodeScope(jjtn001);
                        jjtc001 = false;
                    }else{
                        jjtree.popNode();
                    }
                    if (jjte001 instanceof RuntimeException){
                        {
                            if (true){
                                throw (RuntimeException) jjte001;
                            }
                        }
                    }
                    if (jjte001 instanceof ParseException){
                        {
                            if (true){
                                throw (ParseException) jjte001;
                            }
                        }
                    }
                    {
                        if (true){
                            throw (Error) jjte001;
                        }
                    }
                }finally{
                    if (jjtc001){
                        jjtree.closeNodeScope(jjtn001, 2);
                    }
                }
                break;
            default:
                jj_la1[1] = jj_gen;
                ;
        }
    }

    // conditional test (level 12)
    final public void conditionalTestExpression() throws ParseException{
        logicalOrExpression();
        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
            case 3:
                jj_consume_token(3);
                conditionalTestExpression();
                jj_consume_token(4);
                ASTTest jjtn001 = new ASTTest(JJTTEST);
                boolean jjtc001 = true;
                jjtree.openNodeScope(jjtn001);
                try{
                    conditionalTestExpression();
                }catch (Throwable jjte001){
                    if (jjtc001){
                        jjtree.clearNodeScope(jjtn001);
                        jjtc001 = false;
                    }else{
                        jjtree.popNode();
                    }
                    if (jjte001 instanceof RuntimeException){
                        {
                            if (true){
                                throw (RuntimeException) jjte001;
                            }
                        }
                    }
                    if (jjte001 instanceof ParseException){
                        {
                            if (true){
                                throw (ParseException) jjte001;
                            }
                        }
                    }
                    {
                        if (true){
                            throw (Error) jjte001;
                        }
                    }
                }finally{
                    if (jjtc001){
                        jjtree.closeNodeScope(jjtn001, 3);
                    }
                }
                break;
            default:
                jj_la1[2] = jj_gen;
                ;
        }
    }

    // logical or (||)  (level 11)
    final public void logicalOrExpression() throws ParseException{
        logicalAndExpression();
        label_2: while (true){
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 5:
                case 6:
                    ;
                    break;
                default:
                    jj_la1[3] = jj_gen;
                    break label_2;
            }
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 5:
                    jj_consume_token(5);
                    break;
                case 6:
                    jj_consume_token(6);
                    break;
                default:
                    jj_la1[4] = jj_gen;
                    jj_consume_token(-1);
                    throw new ParseException();
            }
            ASTOr jjtn001 = new ASTOr(JJTOR);
            boolean jjtc001 = true;
            jjtree.openNodeScope(jjtn001);
            try{
                logicalAndExpression();
            }catch (Throwable jjte001){
                if (jjtc001){
                    jjtree.clearNodeScope(jjtn001);
                    jjtc001 = false;
                }else{
                    jjtree.popNode();
                }
                if (jjte001 instanceof RuntimeException){
                    {
                        if (true){
                            throw (RuntimeException) jjte001;
                        }
                    }
                }
                if (jjte001 instanceof ParseException){
                    {
                        if (true){
                            throw (ParseException) jjte001;
                        }
                    }
                }
                {
                    if (true){
                        throw (Error) jjte001;
                    }
                }
            }finally{
                if (jjtc001){
                    jjtree.closeNodeScope(jjtn001, 2);
                }
            }
        }
    }

    // logical and (&&)  (level 10)
    final public void logicalAndExpression() throws ParseException{
        inclusiveOrExpression();
        label_3: while (true){
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 7:
                case 8:
                    ;
                    break;
                default:
                    jj_la1[5] = jj_gen;
                    break label_3;
            }
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 7:
                    jj_consume_token(7);
                    break;
                case 8:
                    jj_consume_token(8);
                    break;
                default:
                    jj_la1[6] = jj_gen;
                    jj_consume_token(-1);
                    throw new ParseException();
            }
            ASTAnd jjtn001 = new ASTAnd(JJTAND);
            boolean jjtc001 = true;
            jjtree.openNodeScope(jjtn001);
            try{
                inclusiveOrExpression();
            }catch (Throwable jjte001){
                if (jjtc001){
                    jjtree.clearNodeScope(jjtn001);
                    jjtc001 = false;
                }else{
                    jjtree.popNode();
                }
                if (jjte001 instanceof RuntimeException){
                    {
                        if (true){
                            throw (RuntimeException) jjte001;
                        }
                    }
                }
                if (jjte001 instanceof ParseException){
                    {
                        if (true){
                            throw (ParseException) jjte001;
                        }
                    }
                }
                {
                    if (true){
                        throw (Error) jjte001;
                    }
                }
            }finally{
                if (jjtc001){
                    jjtree.closeNodeScope(jjtn001, 2);
                }
            }
        }
    }

    // bitwise or non-short-circuiting or (|)  (level 9)
    final public void inclusiveOrExpression() throws ParseException{
        exclusiveOrExpression();
        label_4: while (true){
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 9:
                case 10:
                    ;
                    break;
                default:
                    jj_la1[7] = jj_gen;
                    break label_4;
            }
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 9:
                    jj_consume_token(9);
                    break;
                case 10:
                    jj_consume_token(10);
                    break;
                default:
                    jj_la1[8] = jj_gen;
                    jj_consume_token(-1);
                    throw new ParseException();
            }
            ASTBitOr jjtn001 = new ASTBitOr(JJTBITOR);
            boolean jjtc001 = true;
            jjtree.openNodeScope(jjtn001);
            try{
                exclusiveOrExpression();
            }catch (Throwable jjte001){
                if (jjtc001){
                    jjtree.clearNodeScope(jjtn001);
                    jjtc001 = false;
                }else{
                    jjtree.popNode();
                }
                if (jjte001 instanceof RuntimeException){
                    {
                        if (true){
                            throw (RuntimeException) jjte001;
                        }
                    }
                }
                if (jjte001 instanceof ParseException){
                    {
                        if (true){
                            throw (ParseException) jjte001;
                        }
                    }
                }
                {
                    if (true){
                        throw (Error) jjte001;
                    }
                }
            }finally{
                if (jjtc001){
                    jjtree.closeNodeScope(jjtn001, 2);
                }
            }
        }
    }

    // exclusive or (^)  (level 8)
    final public void exclusiveOrExpression() throws ParseException{
        andExpression();
        label_5: while (true){
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 11:
                case 12:
                    ;
                    break;
                default:
                    jj_la1[9] = jj_gen;
                    break label_5;
            }
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 11:
                    jj_consume_token(11);
                    break;
                case 12:
                    jj_consume_token(12);
                    break;
                default:
                    jj_la1[10] = jj_gen;
                    jj_consume_token(-1);
                    throw new ParseException();
            }
            ASTXor jjtn001 = new ASTXor(JJTXOR);
            boolean jjtc001 = true;
            jjtree.openNodeScope(jjtn001);
            try{
                andExpression();
            }catch (Throwable jjte001){
                if (jjtc001){
                    jjtree.clearNodeScope(jjtn001);
                    jjtc001 = false;
                }else{
                    jjtree.popNode();
                }
                if (jjte001 instanceof RuntimeException){
                    {
                        if (true){
                            throw (RuntimeException) jjte001;
                        }
                    }
                }
                if (jjte001 instanceof ParseException){
                    {
                        if (true){
                            throw (ParseException) jjte001;
                        }
                    }
                }
                {
                    if (true){
                        throw (Error) jjte001;
                    }
                }
            }finally{
                if (jjtc001){
                    jjtree.closeNodeScope(jjtn001, 2);
                }
            }
        }
    }

    // bitwise or non-short-circuiting and (&)  (level 7)
    final public void andExpression() throws ParseException{
        equalityExpression();
        label_6: while (true){
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 13:
                case 14:
                    ;
                    break;
                default:
                    jj_la1[11] = jj_gen;
                    break label_6;
            }
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 13:
                    jj_consume_token(13);
                    break;
                case 14:
                    jj_consume_token(14);
                    break;
                default:
                    jj_la1[12] = jj_gen;
                    jj_consume_token(-1);
                    throw new ParseException();
            }
            ASTBitAnd jjtn001 = new ASTBitAnd(JJTBITAND);
            boolean jjtc001 = true;
            jjtree.openNodeScope(jjtn001);
            try{
                equalityExpression();
            }catch (Throwable jjte001){
                if (jjtc001){
                    jjtree.clearNodeScope(jjtn001);
                    jjtc001 = false;
                }else{
                    jjtree.popNode();
                }
                if (jjte001 instanceof RuntimeException){
                    {
                        if (true){
                            throw (RuntimeException) jjte001;
                        }
                    }
                }
                if (jjte001 instanceof ParseException){
                    {
                        if (true){
                            throw (ParseException) jjte001;
                        }
                    }
                }
                {
                    if (true){
                        throw (Error) jjte001;
                    }
                }
            }finally{
                if (jjtc001){
                    jjtree.closeNodeScope(jjtn001, 2);
                }
            }
        }
    }

    // equality/inequality (==/!=) (level 6)
    final public void equalityExpression() throws ParseException{
        relationalExpression();
        label_7: while (true){
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 15:
                case 16:
                case 17:
                case 18:
                    ;
                    break;
                default:
                    jj_la1[13] = jj_gen;
                    break label_7;
            }
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 15:
                case 16:
                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                        case 15:
                            jj_consume_token(15);
                            break;
                        case 16:
                            jj_consume_token(16);
                            break;
                        default:
                            jj_la1[14] = jj_gen;
                            jj_consume_token(-1);
                            throw new ParseException();
                    }
                    ASTEq jjtn001 = new ASTEq(JJTEQ);
                    boolean jjtc001 = true;
                    jjtree.openNodeScope(jjtn001);
                    try{
                        relationalExpression();
                    }catch (Throwable jjte001){
                        if (jjtc001){
                            jjtree.clearNodeScope(jjtn001);
                            jjtc001 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte001 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte001;
                                }
                            }
                        }
                        if (jjte001 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte001;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte001;
                            }
                        }
                    }finally{
                        if (jjtc001){
                            jjtree.closeNodeScope(jjtn001, 2);
                        }
                    }
                    break;
                case 17:
                case 18:
                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                        case 17:
                            jj_consume_token(17);
                            break;
                        case 18:
                            jj_consume_token(18);
                            break;
                        default:
                            jj_la1[15] = jj_gen;
                            jj_consume_token(-1);
                            throw new ParseException();
                    }
                    ASTNotEq jjtn002 = new ASTNotEq(JJTNOTEQ);
                    boolean jjtc002 = true;
                    jjtree.openNodeScope(jjtn002);
                    try{
                        relationalExpression();
                    }catch (Throwable jjte002){
                        if (jjtc002){
                            jjtree.clearNodeScope(jjtn002);
                            jjtc002 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte002 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte002;
                                }
                            }
                        }
                        if (jjte002 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte002;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte002;
                            }
                        }
                    }finally{
                        if (jjtc002){
                            jjtree.closeNodeScope(jjtn002, 2);
                        }
                    }
                    break;
                default:
                    jj_la1[16] = jj_gen;
                    jj_consume_token(-1);
                    throw new ParseException();
            }
        }
    }

    // boolean relational expressions (level 5)
    final public void relationalExpression() throws ParseException{
        shiftExpression();
        label_8: while (true){
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 19:
                case 20:
                case 21:
                case 22:
                case 23:
                case 24:
                case 25:
                case 26:
                case 27:
                case 28:
                    ;
                    break;
                default:
                    jj_la1[17] = jj_gen;
                    break label_8;
            }
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 19:
                case 20:
                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                        case 19:
                            jj_consume_token(19);
                            break;
                        case 20:
                            jj_consume_token(20);
                            break;
                        default:
                            jj_la1[18] = jj_gen;
                            jj_consume_token(-1);
                            throw new ParseException();
                    }
                    ASTLess jjtn001 = new ASTLess(JJTLESS);
                    boolean jjtc001 = true;
                    jjtree.openNodeScope(jjtn001);
                    try{
                        shiftExpression();
                    }catch (Throwable jjte001){
                        if (jjtc001){
                            jjtree.clearNodeScope(jjtn001);
                            jjtc001 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte001 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte001;
                                }
                            }
                        }
                        if (jjte001 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte001;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte001;
                            }
                        }
                    }finally{
                        if (jjtc001){
                            jjtree.closeNodeScope(jjtn001, 2);
                        }
                    }
                    break;
                case 21:
                case 22:
                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                        case 21:
                            jj_consume_token(21);
                            break;
                        case 22:
                            jj_consume_token(22);
                            break;
                        default:
                            jj_la1[19] = jj_gen;
                            jj_consume_token(-1);
                            throw new ParseException();
                    }
                    ASTGreater jjtn002 = new ASTGreater(JJTGREATER);
                    boolean jjtc002 = true;
                    jjtree.openNodeScope(jjtn002);
                    try{
                        shiftExpression();
                    }catch (Throwable jjte002){
                        if (jjtc002){
                            jjtree.clearNodeScope(jjtn002);
                            jjtc002 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte002 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte002;
                                }
                            }
                        }
                        if (jjte002 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte002;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte002;
                            }
                        }
                    }finally{
                        if (jjtc002){
                            jjtree.closeNodeScope(jjtn002, 2);
                        }
                    }
                    break;
                case 23:
                case 24:
                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                        case 23:
                            jj_consume_token(23);
                            break;
                        case 24:
                            jj_consume_token(24);
                            break;
                        default:
                            jj_la1[20] = jj_gen;
                            jj_consume_token(-1);
                            throw new ParseException();
                    }
                    ASTLessEq jjtn003 = new ASTLessEq(JJTLESSEQ);
                    boolean jjtc003 = true;
                    jjtree.openNodeScope(jjtn003);
                    try{
                        shiftExpression();
                    }catch (Throwable jjte003){
                        if (jjtc003){
                            jjtree.clearNodeScope(jjtn003);
                            jjtc003 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte003 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte003;
                                }
                            }
                        }
                        if (jjte003 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte003;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte003;
                            }
                        }
                    }finally{
                        if (jjtc003){
                            jjtree.closeNodeScope(jjtn003, 2);
                        }
                    }
                    break;
                case 25:
                case 26:
                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                        case 25:
                            jj_consume_token(25);
                            break;
                        case 26:
                            jj_consume_token(26);
                            break;
                        default:
                            jj_la1[21] = jj_gen;
                            jj_consume_token(-1);
                            throw new ParseException();
                    }
                    ASTGreaterEq jjtn004 = new ASTGreaterEq(JJTGREATEREQ);
                    boolean jjtc004 = true;
                    jjtree.openNodeScope(jjtn004);
                    try{
                        shiftExpression();
                    }catch (Throwable jjte004){
                        if (jjtc004){
                            jjtree.clearNodeScope(jjtn004);
                            jjtc004 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte004 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte004;
                                }
                            }
                        }
                        if (jjte004 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte004;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte004;
                            }
                        }
                    }finally{
                        if (jjtc004){
                            jjtree.closeNodeScope(jjtn004, 2);
                        }
                    }
                    break;
                case 27:
                    jj_consume_token(27);
                    ASTIn jjtn005 = new ASTIn(JJTIN);
                    boolean jjtc005 = true;
                    jjtree.openNodeScope(jjtn005);
                    try{
                        shiftExpression();
                    }catch (Throwable jjte005){
                        if (jjtc005){
                            jjtree.clearNodeScope(jjtn005);
                            jjtc005 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte005 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte005;
                                }
                            }
                        }
                        if (jjte005 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte005;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte005;
                            }
                        }
                    }finally{
                        if (jjtc005){
                            jjtree.closeNodeScope(jjtn005, 2);
                        }
                    }
                    break;
                case 28:
                    jj_consume_token(28);
                    jj_consume_token(27);
                    ASTNotIn jjtn006 = new ASTNotIn(JJTNOTIN);
                    boolean jjtc006 = true;
                    jjtree.openNodeScope(jjtn006);
                    try{
                        shiftExpression();
                    }catch (Throwable jjte006){
                        if (jjtc006){
                            jjtree.clearNodeScope(jjtn006);
                            jjtc006 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte006 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte006;
                                }
                            }
                        }
                        if (jjte006 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte006;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte006;
                            }
                        }
                    }finally{
                        if (jjtc006){
                            jjtree.closeNodeScope(jjtn006, 2);
                        }
                    }
                    break;
                default:
                    jj_la1[22] = jj_gen;
                    jj_consume_token(-1);
                    throw new ParseException();
            }
        }
    }

    // bit shift expressions (level 4)
    final public void shiftExpression() throws ParseException{
        additiveExpression();
        label_9: while (true){
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 29:
                case 30:
                case 31:
                case 32:
                case 33:
                case 34:
                    ;
                    break;
                default:
                    jj_la1[23] = jj_gen;
                    break label_9;
            }
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 29:
                case 30:
                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                        case 29:
                            jj_consume_token(29);
                            break;
                        case 30:
                            jj_consume_token(30);
                            break;
                        default:
                            jj_la1[24] = jj_gen;
                            jj_consume_token(-1);
                            throw new ParseException();
                    }
                    ASTShiftLeft jjtn001 = new ASTShiftLeft(JJTSHIFTLEFT);
                    boolean jjtc001 = true;
                    jjtree.openNodeScope(jjtn001);
                    try{
                        additiveExpression();
                    }catch (Throwable jjte001){
                        if (jjtc001){
                            jjtree.clearNodeScope(jjtn001);
                            jjtc001 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte001 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte001;
                                }
                            }
                        }
                        if (jjte001 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte001;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte001;
                            }
                        }
                    }finally{
                        if (jjtc001){
                            jjtree.closeNodeScope(jjtn001, 2);
                        }
                    }
                    break;
                case 31:
                case 32:
                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                        case 31:
                            jj_consume_token(31);
                            break;
                        case 32:
                            jj_consume_token(32);
                            break;
                        default:
                            jj_la1[25] = jj_gen;
                            jj_consume_token(-1);
                            throw new ParseException();
                    }
                    ASTShiftRight jjtn002 = new ASTShiftRight(JJTSHIFTRIGHT);
                    boolean jjtc002 = true;
                    jjtree.openNodeScope(jjtn002);
                    try{
                        additiveExpression();
                    }catch (Throwable jjte002){
                        if (jjtc002){
                            jjtree.clearNodeScope(jjtn002);
                            jjtc002 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte002 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte002;
                                }
                            }
                        }
                        if (jjte002 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte002;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte002;
                            }
                        }
                    }finally{
                        if (jjtc002){
                            jjtree.closeNodeScope(jjtn002, 2);
                        }
                    }
                    break;
                case 33:
                case 34:
                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                        case 33:
                            jj_consume_token(33);
                            break;
                        case 34:
                            jj_consume_token(34);
                            break;
                        default:
                            jj_la1[26] = jj_gen;
                            jj_consume_token(-1);
                            throw new ParseException();
                    }
                    ASTUnsignedShiftRight jjtn003 = new ASTUnsignedShiftRight(JJTUNSIGNEDSHIFTRIGHT);
                    boolean jjtc003 = true;
                    jjtree.openNodeScope(jjtn003);
                    try{
                        additiveExpression();
                    }catch (Throwable jjte003){
                        if (jjtc003){
                            jjtree.clearNodeScope(jjtn003);
                            jjtc003 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte003 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte003;
                                }
                            }
                        }
                        if (jjte003 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte003;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte003;
                            }
                        }
                    }finally{
                        if (jjtc003){
                            jjtree.closeNodeScope(jjtn003, 2);
                        }
                    }
                    break;
                default:
                    jj_la1[27] = jj_gen;
                    jj_consume_token(-1);
                    throw new ParseException();
            }
        }
    }

    // binary addition/subtraction (level 3)
    final public void additiveExpression() throws ParseException{
        multiplicativeExpression();
        label_10: while (true){
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 35:
                case 36:
                    ;
                    break;
                default:
                    jj_la1[28] = jj_gen;
                    break label_10;
            }
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 35:
                    jj_consume_token(35);
                    ASTAdd jjtn001 = new ASTAdd(JJTADD);
                    boolean jjtc001 = true;
                    jjtree.openNodeScope(jjtn001);
                    try{
                        multiplicativeExpression();
                    }catch (Throwable jjte001){
                        if (jjtc001){
                            jjtree.clearNodeScope(jjtn001);
                            jjtc001 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte001 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte001;
                                }
                            }
                        }
                        if (jjte001 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte001;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte001;
                            }
                        }
                    }finally{
                        if (jjtc001){
                            jjtree.closeNodeScope(jjtn001, 2);
                        }
                    }
                    break;
                case 36:
                    jj_consume_token(36);
                    ASTSubtract jjtn002 = new ASTSubtract(JJTSUBTRACT);
                    boolean jjtc002 = true;
                    jjtree.openNodeScope(jjtn002);
                    try{
                        multiplicativeExpression();
                    }catch (Throwable jjte002){
                        if (jjtc002){
                            jjtree.clearNodeScope(jjtn002);
                            jjtc002 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte002 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte002;
                                }
                            }
                        }
                        if (jjte002 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte002;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte002;
                            }
                        }
                    }finally{
                        if (jjtc002){
                            jjtree.closeNodeScope(jjtn002, 2);
                        }
                    }
                    break;
                default:
                    jj_la1[29] = jj_gen;
                    jj_consume_token(-1);
                    throw new ParseException();
            }
        }
    }

    // multiplication/division/remainder (level 2)
    final public void multiplicativeExpression() throws ParseException{
        unaryExpression();
        label_11: while (true){
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 37:
                case 38:
                case 39:
                    ;
                    break;
                default:
                    jj_la1[30] = jj_gen;
                    break label_11;
            }
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 37:
                    jj_consume_token(37);
                    ASTMultiply jjtn001 = new ASTMultiply(JJTMULTIPLY);
                    boolean jjtc001 = true;
                    jjtree.openNodeScope(jjtn001);
                    try{
                        unaryExpression();
                    }catch (Throwable jjte001){
                        if (jjtc001){
                            jjtree.clearNodeScope(jjtn001);
                            jjtc001 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte001 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte001;
                                }
                            }
                        }
                        if (jjte001 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte001;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte001;
                            }
                        }
                    }finally{
                        if (jjtc001){
                            jjtree.closeNodeScope(jjtn001, 2);
                        }
                    }
                    break;
                case 38:
                    jj_consume_token(38);
                    ASTDivide jjtn002 = new ASTDivide(JJTDIVIDE);
                    boolean jjtc002 = true;
                    jjtree.openNodeScope(jjtn002);
                    try{
                        unaryExpression();
                    }catch (Throwable jjte002){
                        if (jjtc002){
                            jjtree.clearNodeScope(jjtn002);
                            jjtc002 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte002 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte002;
                                }
                            }
                        }
                        if (jjte002 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte002;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte002;
                            }
                        }
                    }finally{
                        if (jjtc002){
                            jjtree.closeNodeScope(jjtn002, 2);
                        }
                    }
                    break;
                case 39:
                    jj_consume_token(39);
                    ASTRemainder jjtn003 = new ASTRemainder(JJTREMAINDER);
                    boolean jjtc003 = true;
                    jjtree.openNodeScope(jjtn003);
                    try{
                        unaryExpression();
                    }catch (Throwable jjte003){
                        if (jjtc003){
                            jjtree.clearNodeScope(jjtn003);
                            jjtc003 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte003 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte003;
                                }
                            }
                        }
                        if (jjte003 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte003;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte003;
                            }
                        }
                    }finally{
                        if (jjtc003){
                            jjtree.closeNodeScope(jjtn003, 2);
                        }
                    }
                    break;
                default:
                    jj_la1[31] = jj_gen;
                    jj_consume_token(-1);
                    throw new ParseException();
            }
        }
    }

    // unary (level 1)
    final public void unaryExpression() throws ParseException{
        StringBuffer sb;
        Token t;
        ASTInstanceof ionode;
        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
            case 36:
                jj_consume_token(36);
                ASTNegate jjtn001 = new ASTNegate(JJTNEGATE);
                boolean jjtc001 = true;
                jjtree.openNodeScope(jjtn001);
                try{
                    unaryExpression();
                }catch (Throwable jjte001){
                    if (jjtc001){
                        jjtree.clearNodeScope(jjtn001);
                        jjtc001 = false;
                    }else{
                        jjtree.popNode();
                    }
                    if (jjte001 instanceof RuntimeException){
                        {
                            if (true){
                                throw (RuntimeException) jjte001;
                            }
                        }
                    }
                    if (jjte001 instanceof ParseException){
                        {
                            if (true){
                                throw (ParseException) jjte001;
                            }
                        }
                    }
                    {
                        if (true){
                            throw (Error) jjte001;
                        }
                    }
                }finally{
                    if (jjtc001){
                        jjtree.closeNodeScope(jjtn001, 1);
                    }
                }
                break;
            case 35:
                jj_consume_token(35);
                unaryExpression();
                break;
            case 40:
                jj_consume_token(40);
                ASTBitNegate jjtn002 = new ASTBitNegate(JJTBITNEGATE);
                boolean jjtc002 = true;
                jjtree.openNodeScope(jjtn002);
                try{
                    unaryExpression();
                }catch (Throwable jjte002){
                    if (jjtc002){
                        jjtree.clearNodeScope(jjtn002);
                        jjtc002 = false;
                    }else{
                        jjtree.popNode();
                    }
                    if (jjte002 instanceof RuntimeException){
                        {
                            if (true){
                                throw (RuntimeException) jjte002;
                            }
                        }
                    }
                    if (jjte002 instanceof ParseException){
                        {
                            if (true){
                                throw (ParseException) jjte002;
                            }
                        }
                    }
                    {
                        if (true){
                            throw (Error) jjte002;
                        }
                    }
                }finally{
                    if (jjtc002){
                        jjtree.closeNodeScope(jjtn002, 1);
                    }
                }
                break;
            case 28:
            case 41:
                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                    case 41:
                        jj_consume_token(41);
                        break;
                    case 28:
                        jj_consume_token(28);
                        break;
                    default:
                        jj_la1[32] = jj_gen;
                        jj_consume_token(-1);
                        throw new ParseException();
                }
                ASTNot jjtn003 = new ASTNot(JJTNOT);
                boolean jjtc003 = true;
                jjtree.openNodeScope(jjtn003);
                try{
                    unaryExpression();
                }catch (Throwable jjte003){
                    if (jjtc003){
                        jjtree.clearNodeScope(jjtn003);
                        jjtc003 = false;
                    }else{
                        jjtree.popNode();
                    }
                    if (jjte003 instanceof RuntimeException){
                        {
                            if (true){
                                throw (RuntimeException) jjte003;
                            }
                        }
                    }
                    if (jjte003 instanceof ParseException){
                        {
                            if (true){
                                throw (ParseException) jjte003;
                            }
                        }
                    }
                    {
                        if (true){
                            throw (Error) jjte003;
                        }
                    }
                }finally{
                    if (jjtc003){
                        jjtree.closeNodeScope(jjtn003, 1);
                    }
                }
                break;
            case 4:
            case 44:
            case 46:
            case 47:
            case 48:
            case 49:
            case 50:
            case 51:
            case 52:
            case 54:
            case 56:
            case 57:
            case IDENT:
            case DYNAMIC_SUBSCRIPT:
            case CHAR_LITERAL:
            case BACK_CHAR_LITERAL:
            case STRING_LITERAL:
            case INT_LITERAL:
            case FLT_LITERAL:
                navigationChain();
                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                    case 42:
                        jj_consume_token(42);
                        t = jj_consume_token(IDENT);
                        ASTInstanceof jjtn004 = new ASTInstanceof(JJTINSTANCEOF);
                        boolean jjtc004 = true;
                        jjtree.openNodeScope(jjtn004);
                        try{
                            jjtree.closeNodeScope(jjtn004, 1);
                            jjtc004 = false;
                            sb = new StringBuffer(t.image);
                            ionode = jjtn004;
                        }finally{
                            if (jjtc004){
                                jjtree.closeNodeScope(jjtn004, 1);
                            }
                        }
                        label_12: while (true){
                            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                                case 43:
                                    ;
                                    break;
                                default:
                                    jj_la1[33] = jj_gen;
                                    break label_12;
                            }
                            jj_consume_token(43);
                            t = jj_consume_token(IDENT);
                            sb.append('.').append(t.image);
                        }
                        ionode.setTargetType(new String(sb));
                        break;
                    default:
                        jj_la1[34] = jj_gen;
                        ;
                }
                break;
            default:
                jj_la1[35] = jj_gen;
                jj_consume_token(-1);
                throw new ParseException();
        }
    }

    // navigation chain: property references, method calls, projections, selections, etc.
    final public void navigationChain() throws ParseException{
        primaryExpression();
        label_13: while (true){
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 43:
                case 44:
                case 52:
                case DYNAMIC_SUBSCRIPT:
                    ;
                    break;
                default:
                    jj_la1[36] = jj_gen;
                    break label_13;
            }
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 43:
                    jj_consume_token(43);
                    ASTChain jjtn001 = new ASTChain(JJTCHAIN);
                    boolean jjtc001 = true;
                    jjtree.openNodeScope(jjtn001);
                    try{
                        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                            case IDENT:
                                if (jj_2_1(2)){
                                    methodCall();
                                }else{
                                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                                        case IDENT:
                                            propertyName();
                                            break;
                                        default:
                                            jj_la1[37] = jj_gen;
                                            jj_consume_token(-1);
                                            throw new ParseException();
                                    }
                                }
                                break;
                            case 54:
                                if (jj_2_2(2)){
                                    projection();
                                }else{
                                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                                        case 54:
                                            selection();
                                            break;
                                        default:
                                            jj_la1[38] = jj_gen;
                                            jj_consume_token(-1);
                                            throw new ParseException();
                                    }
                                }
                                break;
                            case 44:
                                jj_consume_token(44);
                                expression();
                                jj_consume_token(45);
                                break;
                            default:
                                jj_la1[39] = jj_gen;
                                jj_consume_token(-1);
                                throw new ParseException();
                        }
                    }catch (Throwable jjte001){
                        if (jjtc001){
                            jjtree.clearNodeScope(jjtn001);
                            jjtc001 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte001 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte001;
                                }
                            }
                        }
                        if (jjte001 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte001;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte001;
                            }
                        }
                    }finally{
                        if (jjtc001){
                            jjtree.closeNodeScope(jjtn001, 2);
                        }
                    }
                    break;
                case 52:
                case DYNAMIC_SUBSCRIPT:
                    ASTChain jjtn002 = new ASTChain(JJTCHAIN);
                    boolean jjtc002 = true;
                    jjtree.openNodeScope(jjtn002);
                    try{
                        index();
                    }catch (Throwable jjte002){
                        if (jjtc002){
                            jjtree.clearNodeScope(jjtn002);
                            jjtc002 = false;
                        }else{
                            jjtree.popNode();
                        }
                        if (jjte002 instanceof RuntimeException){
                            {
                                if (true){
                                    throw (RuntimeException) jjte002;
                                }
                            }
                        }
                        if (jjte002 instanceof ParseException){
                            {
                                if (true){
                                    throw (ParseException) jjte002;
                                }
                            }
                        }
                        {
                            if (true){
                                throw (Error) jjte002;
                            }
                        }
                    }finally{
                        if (jjtc002){
                            jjtree.closeNodeScope(jjtn002, 2);
                        }
                    }
                    break;
                case 44:
                    jj_consume_token(44);
                    expression();
                    ASTEval jjtn003 = new ASTEval(JJTEVAL);
                    boolean jjtc003 = true;
                    jjtree.openNodeScope(jjtn003);
                    try{
                        jj_consume_token(45);
                    }finally{
                        if (jjtc003){
                            jjtree.closeNodeScope(jjtn003, 2);
                        }
                    }
                    break;
                default:
                    jj_la1[40] = jj_gen;
                    jj_consume_token(-1);
                    throw new ParseException();
            }
        }
    }

    final public void primaryExpression() throws ParseException{
        Token t;
        String className = null;
        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
            case CHAR_LITERAL:
            case BACK_CHAR_LITERAL:
            case STRING_LITERAL:
            case INT_LITERAL:
            case FLT_LITERAL:
                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                    case CHAR_LITERAL:
                        jj_consume_token(CHAR_LITERAL);
                        break;
                    case BACK_CHAR_LITERAL:
                        jj_consume_token(BACK_CHAR_LITERAL);
                        break;
                    case STRING_LITERAL:
                        jj_consume_token(STRING_LITERAL);
                        break;
                    case INT_LITERAL:
                        jj_consume_token(INT_LITERAL);
                        break;
                    case FLT_LITERAL:
                        jj_consume_token(FLT_LITERAL);
                        break;
                    default:
                        jj_la1[41] = jj_gen;
                        jj_consume_token(-1);
                        throw new ParseException();
                }
                ASTConst jjtn001 = new ASTConst(JJTCONST);
                boolean jjtc001 = true;
                jjtree.openNodeScope(jjtn001);
                try{
                    jjtree.closeNodeScope(jjtn001, 0);
                    jjtc001 = false;
                    jjtn001.setValue(token_source.literalValue);
                }finally{
                    if (jjtc001){
                        jjtree.closeNodeScope(jjtn001, 0);
                    }
                }
                break;
            case 46:
                jj_consume_token(46);
                ASTConst jjtn002 = new ASTConst(JJTCONST);
                boolean jjtc002 = true;
                jjtree.openNodeScope(jjtn002);
                try{
                    jjtree.closeNodeScope(jjtn002, 0);
                    jjtc002 = false;
                    jjtn002.setValue(Boolean.TRUE);
                }finally{
                    if (jjtc002){
                        jjtree.closeNodeScope(jjtn002, 0);
                    }
                }
                break;
            case 47:
                jj_consume_token(47);
                ASTConst jjtn003 = new ASTConst(JJTCONST);
                boolean jjtc003 = true;
                jjtree.openNodeScope(jjtn003);
                try{
                    jjtree.closeNodeScope(jjtn003, 0);
                    jjtc003 = false;
                    jjtn003.setValue(Boolean.FALSE);
                }finally{
                    if (jjtc003){
                        jjtree.closeNodeScope(jjtn003, 0);
                    }
                }
                break;
            case 48:
                ASTConst jjtn004 = new ASTConst(JJTCONST);
                boolean jjtc004 = true;
                jjtree.openNodeScope(jjtn004);
                try{
                    jj_consume_token(48);
                }finally{
                    if (jjtc004){
                        jjtree.closeNodeScope(jjtn004, 0);
                    }
                }
                break;
            default:
                jj_la1[48] = jj_gen;
                if (jj_2_4(2)){
                    jj_consume_token(49);
                    ASTThisVarRef jjtn005 = new ASTThisVarRef(JJTTHISVARREF);
                    boolean jjtc005 = true;
                    jjtree.openNodeScope(jjtn005);
                    try{
                        jjtree.closeNodeScope(jjtn005, 0);
                        jjtc005 = false;
                        jjtn005.setName("this");
                    }finally{
                        if (jjtc005){
                            jjtree.closeNodeScope(jjtn005, 0);
                        }
                    }
                }else if (jj_2_5(2)){
                    jj_consume_token(50);
                    ASTRootVarRef jjtn006 = new ASTRootVarRef(JJTROOTVARREF);
                    boolean jjtc006 = true;
                    jjtree.openNodeScope(jjtn006);
                    try{
                        jjtree.closeNodeScope(jjtn006, 0);
                        jjtc006 = false;
                        jjtn006.setName("root");
                    }finally{
                        if (jjtc006){
                            jjtree.closeNodeScope(jjtn006, 0);
                        }
                    }
                }else if (jj_2_6(2)){
                    jj_consume_token(51);
                    t = jj_consume_token(IDENT);
                    ASTVarRef jjtn007 = new ASTVarRef(JJTVARREF);
                    boolean jjtc007 = true;
                    jjtree.openNodeScope(jjtn007);
                    try{
                        jjtree.closeNodeScope(jjtn007, 0);
                        jjtc007 = false;
                        jjtn007.setName(t.image);
                    }finally{
                        if (jjtc007){
                            jjtree.closeNodeScope(jjtn007, 0);
                        }
                    }
                }else if (jj_2_7(2)){
                    jj_consume_token(4);
                    jj_consume_token(52);
                    expression();
                    jj_consume_token(53);
                    ASTConst jjtn008 = new ASTConst(JJTCONST);
                    boolean jjtc008 = true;
                    jjtree.openNodeScope(jjtn008);
                    try{
                        jjtree.closeNodeScope(jjtn008, 1);
                        jjtc008 = false;
                        jjtn008.setValue(jjtn008.jjtGetChild(0));
                    }finally{
                        if (jjtc008){
                            jjtree.closeNodeScope(jjtn008, 1);
                        }
                    }
                }else{
                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                        case 56:
                            staticReference();
                            break;
                        default:
                            jj_la1[49] = jj_gen;
                            if (jj_2_8(2)){
                                constructorCall();
                            }else{
                                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                                    case IDENT:
                                        if (jj_2_3(2)){
                                            methodCall();
                                        }else{
                                            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                                                case IDENT:
                                                    propertyName();
                                                    break;
                                                default:
                                                    jj_la1[42] = jj_gen;
                                                    jj_consume_token(-1);
                                                    throw new ParseException();
                                            }
                                        }
                                        break;
                                    case 52:
                                    case DYNAMIC_SUBSCRIPT:
                                        index();
                                        break;
                                    case 44:
                                        jj_consume_token(44);
                                        expression();
                                        jj_consume_token(45);
                                        break;
                                    case 54:
                                        jj_consume_token(54);
                                        ASTList jjtn009 = new ASTList(JJTLIST);
                                        boolean jjtc009 = true;
                                        jjtree.openNodeScope(jjtn009);
                                        try{
                                            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                                                case 4:
                                                case 28:
                                                case 35:
                                                case 36:
                                                case 40:
                                                case 41:
                                                case 44:
                                                case 46:
                                                case 47:
                                                case 48:
                                                case 49:
                                                case 50:
                                                case 51:
                                                case 52:
                                                case 54:
                                                case 56:
                                                case 57:
                                                case IDENT:
                                                case DYNAMIC_SUBSCRIPT:
                                                case CHAR_LITERAL:
                                                case BACK_CHAR_LITERAL:
                                                case STRING_LITERAL:
                                                case INT_LITERAL:
                                                case FLT_LITERAL:
                                                    assignmentExpression();
                                                    label_14: while (true){
                                                        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                                                            case 1:
                                                                ;
                                                                break;
                                                            default:
                                                                jj_la1[43] = jj_gen;
                                                                break label_14;
                                                        }
                                                        jj_consume_token(1);
                                                        assignmentExpression();
                                                    }
                                                    break;
                                                default:
                                                    jj_la1[44] = jj_gen;
                                                    ;
                                            }
                                        }catch (Throwable jjte009){
                                            if (jjtc009){
                                                jjtree.clearNodeScope(jjtn009);
                                                jjtc009 = false;
                                            }else{
                                                jjtree.popNode();
                                            }
                                            if (jjte009 instanceof RuntimeException){
                                                {
                                                    if (true){
                                                        throw (RuntimeException) jjte009;
                                                    }
                                                }
                                            }
                                            if (jjte009 instanceof ParseException){
                                                {
                                                    if (true){
                                                        throw (ParseException) jjte009;
                                                    }
                                                }
                                            }
                                            {
                                                if (true){
                                                    throw (Error) jjte009;
                                                }
                                            }
                                        }finally{
                                            if (jjtc009){
                                                jjtree.closeNodeScope(jjtn009, true);
                                            }
                                        }
                                        jj_consume_token(55);
                                        break;
                                    default:
                                        jj_la1[50] = jj_gen;
                                        if (jj_2_9(2)){
                                            ASTMap jjtn010 = new ASTMap(JJTMAP);
                                            boolean jjtc010 = true;
                                            jjtree.openNodeScope(jjtn010);
                                            try{
                                                jj_consume_token(51);
                                                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                                                    case 56:
                                                        className = classReference();
                                                        break;
                                                    default:
                                                        jj_la1[45] = jj_gen;
                                                        ;
                                                }
                                                jj_consume_token(54);
                                                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                                                    case 4:
                                                    case 28:
                                                    case 35:
                                                    case 36:
                                                    case 40:
                                                    case 41:
                                                    case 44:
                                                    case 46:
                                                    case 47:
                                                    case 48:
                                                    case 49:
                                                    case 50:
                                                    case 51:
                                                    case 52:
                                                    case 54:
                                                    case 56:
                                                    case 57:
                                                    case IDENT:
                                                    case DYNAMIC_SUBSCRIPT:
                                                    case CHAR_LITERAL:
                                                    case BACK_CHAR_LITERAL:
                                                    case STRING_LITERAL:
                                                    case INT_LITERAL:
                                                    case FLT_LITERAL:
                                                        keyValueExpression();
                                                        label_15: while (true){
                                                            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                                                                case 1:
                                                                    ;
                                                                    break;
                                                                default:
                                                                    jj_la1[46] = jj_gen;
                                                                    break label_15;
                                                            }
                                                            jj_consume_token(1);
                                                            keyValueExpression();
                                                        }
                                                        break;
                                                    default:
                                                        jj_la1[47] = jj_gen;
                                                        ;
                                                }
                                                jjtn010.setClassName(className);
                                                jj_consume_token(55);
                                            }catch (Throwable jjte010){
                                                if (jjtc010){
                                                    jjtree.clearNodeScope(jjtn010);
                                                    jjtc010 = false;
                                                }else{
                                                    jjtree.popNode();
                                                }
                                                if (jjte010 instanceof RuntimeException){
                                                    {
                                                        if (true){
                                                            throw (RuntimeException) jjte010;
                                                        }
                                                    }
                                                }
                                                if (jjte010 instanceof ParseException){
                                                    {
                                                        if (true){
                                                            throw (ParseException) jjte010;
                                                        }
                                                    }
                                                }
                                                {
                                                    if (true){
                                                        throw (Error) jjte010;
                                                    }
                                                }
                                            }finally{
                                                if (jjtc010){
                                                    jjtree.closeNodeScope(jjtn010, true);
                                                }
                                            }
                                        }else{
                                            jj_consume_token(-1);
                                            throw new ParseException();
                                        }
                                }
                            }
                    }
                }
        }
    }

    final public void keyValueExpression() throws ParseException{
        ASTKeyValue jjtn001 = new ASTKeyValue(JJTKEYVALUE);
        boolean jjtc001 = true;
        jjtree.openNodeScope(jjtn001);
        try{
            assignmentExpression();
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 4:
                    jj_consume_token(4);
                    assignmentExpression();
                    break;
                default:
                    jj_la1[51] = jj_gen;
                    ;
            }
        }catch (Throwable jjte001){
            if (jjtc001){
                jjtree.clearNodeScope(jjtn001);
                jjtc001 = false;
            }else{
                jjtree.popNode();
            }
            if (jjte001 instanceof RuntimeException){
                {
                    if (true){
                        throw (RuntimeException) jjte001;
                    }
                }
            }
            if (jjte001 instanceof ParseException){
                {
                    if (true){
                        throw (ParseException) jjte001;
                    }
                }
            }
            {
                if (true){
                    throw (Error) jjte001;
                }
            }
        }finally{
            if (jjtc001){
                jjtree.closeNodeScope(jjtn001, true);
            }
        }
    }

    final public void staticReference() throws ParseException{
        String className = "java.lang.Math";
        Token t;
        className = classReference();
        if (jj_2_10(2)){
            staticMethodCall(className);
        }else{
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case IDENT:
                    t = jj_consume_token(IDENT);
                    ASTStaticField jjtn001 = new ASTStaticField(JJTSTATICFIELD);
                    boolean jjtc001 = true;
                    jjtree.openNodeScope(jjtn001);
                    try{
                        jjtree.closeNodeScope(jjtn001, 0);
                        jjtc001 = false;
                        jjtn001.init(className, t.image);
                    }finally{
                        if (jjtc001){
                            jjtree.closeNodeScope(jjtn001, 0);
                        }
                    }
                    break;
                default:
                    jj_la1[52] = jj_gen;
                    jj_consume_token(-1);
                    throw new ParseException();
            }
        }
    }

    final public String classReference() throws ParseException{
        String result = "java.lang.Math";
        jj_consume_token(56);
        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
            case IDENT:
                result = className();
                break;
            default:
                jj_la1[53] = jj_gen;
                ;
        }
        jj_consume_token(56);
        {
            if (true){
                return result;
            }
        }
        throw new Error("Missing return statement in function");
    }

    final public String className() throws ParseException{
        Token t;
        StringBuffer result;
        t = jj_consume_token(IDENT);
        result = new StringBuffer(t.image);
        label_16: while (true){
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 43:
                    ;
                    break;
                default:
                    jj_la1[54] = jj_gen;
                    break label_16;
            }
            jj_consume_token(43);
            t = jj_consume_token(IDENT);
            result.append('.').append(t.image);
        }
        {
            if (true){
                return new String(result);
            }
        }
        throw new Error("Missing return statement in function");
    }

    final public void constructorCall() throws ParseException{
        /* @bgen(jjtree) Ctor */
        ASTCtor jjtn000 = new ASTCtor(JJTCTOR);
        boolean jjtc000 = true;
        jjtree.openNodeScope(jjtn000);
        String className;
        Token t;
        StringBuffer sb;
        try{
            jj_consume_token(57);
            className = className();
            if (jj_2_11(2)){
                jj_consume_token(44);
                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                    case 4:
                    case 28:
                    case 35:
                    case 36:
                    case 40:
                    case 41:
                    case 44:
                    case 46:
                    case 47:
                    case 48:
                    case 49:
                    case 50:
                    case 51:
                    case 52:
                    case 54:
                    case 56:
                    case 57:
                    case IDENT:
                    case DYNAMIC_SUBSCRIPT:
                    case CHAR_LITERAL:
                    case BACK_CHAR_LITERAL:
                    case STRING_LITERAL:
                    case INT_LITERAL:
                    case FLT_LITERAL:
                        assignmentExpression();
                        label_17: while (true){
                            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                                case 1:
                                    ;
                                    break;
                                default:
                                    jj_la1[55] = jj_gen;
                                    break label_17;
                            }
                            jj_consume_token(1);
                            assignmentExpression();
                        }
                        break;
                    default:
                        jj_la1[56] = jj_gen;
                        ;
                }
                jj_consume_token(45);
                jjtree.closeNodeScope(jjtn000, true);
                jjtc000 = false;
                jjtn000.setClassName(className);
            }else if (jj_2_12(2)){
                jj_consume_token(52);
                jj_consume_token(53);
                jj_consume_token(54);
                ASTList jjtn001 = new ASTList(JJTLIST);
                boolean jjtc001 = true;
                jjtree.openNodeScope(jjtn001);
                try{
                    switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                        case 4:
                        case 28:
                        case 35:
                        case 36:
                        case 40:
                        case 41:
                        case 44:
                        case 46:
                        case 47:
                        case 48:
                        case 49:
                        case 50:
                        case 51:
                        case 52:
                        case 54:
                        case 56:
                        case 57:
                        case IDENT:
                        case DYNAMIC_SUBSCRIPT:
                        case CHAR_LITERAL:
                        case BACK_CHAR_LITERAL:
                        case STRING_LITERAL:
                        case INT_LITERAL:
                        case FLT_LITERAL:
                            assignmentExpression();
                            label_18: while (true){
                                switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                                    case 1:
                                        ;
                                        break;
                                    default:
                                        jj_la1[57] = jj_gen;
                                        break label_18;
                                }
                                jj_consume_token(1);
                                assignmentExpression();
                            }
                            break;
                        default:
                            jj_la1[58] = jj_gen;
                            ;
                    }
                }catch (Throwable jjte001){
                    if (jjtc001){
                        jjtree.clearNodeScope(jjtn001);
                        jjtc001 = false;
                    }else{
                        jjtree.popNode();
                    }
                    if (jjte001 instanceof RuntimeException){
                        {
                            if (true){
                                throw (RuntimeException) jjte001;
                            }
                        }
                    }
                    if (jjte001 instanceof ParseException){
                        {
                            if (true){
                                throw (ParseException) jjte001;
                            }
                        }
                    }
                    {
                        if (true){
                            throw (Error) jjte001;
                        }
                    }
                }finally{
                    if (jjtc001){
                        jjtree.closeNodeScope(jjtn001, true);
                    }
                }
                jj_consume_token(55);
                jjtree.closeNodeScope(jjtn000, true);
                jjtc000 = false;
                jjtn000.setClassName(className);
                jjtn000.setArray(true);
            }else if (jj_2_13(2)){
                jj_consume_token(52);
                assignmentExpression();
                jj_consume_token(53);
                jjtree.closeNodeScope(jjtn000, true);
                jjtc000 = false;
                jjtn000.setClassName(className);
                jjtn000.setArray(true);
            }else{
                jj_consume_token(-1);
                throw new ParseException();
            }
        }catch (Throwable jjte000){
            if (jjtc000){
                jjtree.clearNodeScope(jjtn000);
                jjtc000 = false;
            }else{
                jjtree.popNode();
            }
            if (jjte000 instanceof RuntimeException){
                {
                    if (true){
                        throw (RuntimeException) jjte000;
                    }
                }
            }
            if (jjte000 instanceof ParseException){
                {
                    if (true){
                        throw (ParseException) jjte000;
                    }
                }
            }
            {
                if (true){
                    throw (Error) jjte000;
                }
            }
        }finally{
            if (jjtc000){
                jjtree.closeNodeScope(jjtn000, true);
            }
        }
    }

    final public void propertyName() throws ParseException{
        /* @bgen(jjtree) Property */
        ASTProperty jjtn000 = new ASTProperty(JJTPROPERTY);
        boolean jjtc000 = true;
        jjtree.openNodeScope(jjtn000);
        Token t;
        try{
            t = jj_consume_token(IDENT);
            ASTConst jjtn001 = new ASTConst(JJTCONST);
            boolean jjtc001 = true;
            jjtree.openNodeScope(jjtn001);
            try{
                jjtree.closeNodeScope(jjtn001, true);
                jjtc001 = false;
                jjtn001.setValue(t.image);
            }finally{
                if (jjtc001){
                    jjtree.closeNodeScope(jjtn001, true);
                }
            }
        }finally{
            if (jjtc000){
                jjtree.closeNodeScope(jjtn000, true);
            }
        }
    }

    final public void staticMethodCall(String className) throws ParseException{
        /* @bgen(jjtree) StaticMethod */
        ASTStaticMethod jjtn000 = new ASTStaticMethod(JJTSTATICMETHOD);
        boolean jjtc000 = true;
        jjtree.openNodeScope(jjtn000);
        Token t;
        try{
            t = jj_consume_token(IDENT);
            jj_consume_token(44);
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 4:
                case 28:
                case 35:
                case 36:
                case 40:
                case 41:
                case 44:
                case 46:
                case 47:
                case 48:
                case 49:
                case 50:
                case 51:
                case 52:
                case 54:
                case 56:
                case 57:
                case IDENT:
                case DYNAMIC_SUBSCRIPT:
                case CHAR_LITERAL:
                case BACK_CHAR_LITERAL:
                case STRING_LITERAL:
                case INT_LITERAL:
                case FLT_LITERAL:
                    assignmentExpression();
                    label_19: while (true){
                        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                            case 1:
                                ;
                                break;
                            default:
                                jj_la1[59] = jj_gen;
                                break label_19;
                        }
                        jj_consume_token(1);
                        assignmentExpression();
                    }
                    break;
                default:
                    jj_la1[60] = jj_gen;
                    ;
            }
            jj_consume_token(45);
            jjtree.closeNodeScope(jjtn000, true);
            jjtc000 = false;
            jjtn000.init(className, t.image);
        }catch (Throwable jjte000){
            if (jjtc000){
                jjtree.clearNodeScope(jjtn000);
                jjtc000 = false;
            }else{
                jjtree.popNode();
            }
            if (jjte000 instanceof RuntimeException){
                {
                    if (true){
                        throw (RuntimeException) jjte000;
                    }
                }
            }
            if (jjte000 instanceof ParseException){
                {
                    if (true){
                        throw (ParseException) jjte000;
                    }
                }
            }
            {
                if (true){
                    throw (Error) jjte000;
                }
            }
        }finally{
            if (jjtc000){
                jjtree.closeNodeScope(jjtn000, true);
            }
        }
    }

    final public void methodCall() throws ParseException{
        /* @bgen(jjtree) Method */
        ASTMethod jjtn000 = new ASTMethod(JJTMETHOD);
        boolean jjtc000 = true;
        jjtree.openNodeScope(jjtn000);
        Token t;
        try{
            t = jj_consume_token(IDENT);
            jj_consume_token(44);
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 4:
                case 28:
                case 35:
                case 36:
                case 40:
                case 41:
                case 44:
                case 46:
                case 47:
                case 48:
                case 49:
                case 50:
                case 51:
                case 52:
                case 54:
                case 56:
                case 57:
                case IDENT:
                case DYNAMIC_SUBSCRIPT:
                case CHAR_LITERAL:
                case BACK_CHAR_LITERAL:
                case STRING_LITERAL:
                case INT_LITERAL:
                case FLT_LITERAL:
                    assignmentExpression();
                    label_20: while (true){
                        switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                            case 1:
                                ;
                                break;
                            default:
                                jj_la1[61] = jj_gen;
                                break label_20;
                        }
                        jj_consume_token(1);
                        assignmentExpression();
                    }
                    break;
                default:
                    jj_la1[62] = jj_gen;
                    ;
            }
            jj_consume_token(45);
            jjtree.closeNodeScope(jjtn000, true);
            jjtc000 = false;
            jjtn000.setMethodName(t.image);
        }catch (Throwable jjte000){
            if (jjtc000){
                jjtree.clearNodeScope(jjtn000);
                jjtc000 = false;
            }else{
                jjtree.popNode();
            }
            if (jjte000 instanceof RuntimeException){
                {
                    if (true){
                        throw (RuntimeException) jjte000;
                    }
                }
            }
            if (jjte000 instanceof ParseException){
                {
                    if (true){
                        throw (ParseException) jjte000;
                    }
                }
            }
            {
                if (true){
                    throw (Error) jjte000;
                }
            }
        }finally{
            if (jjtc000){
                jjtree.closeNodeScope(jjtn000, true);
            }
        }
    }

    /**
     * Apply an expression to all elements of a collection, creating a new collection
     * as the result.
     * 
     * @throws ParseException
     *             if the application of the projection expression fails.
     */
    final public void projection() throws ParseException{
        /* @bgen(jjtree) Project */
        ASTProject jjtn000 = new ASTProject(JJTPROJECT);
        boolean jjtc000 = true;
        jjtree.openNodeScope(jjtn000);
        try{
            jj_consume_token(54);
            expression();
            jj_consume_token(55);
        }catch (Throwable jjte000){
            if (jjtc000){
                jjtree.clearNodeScope(jjtn000);
                jjtc000 = false;
            }else{
                jjtree.popNode();
            }
            if (jjte000 instanceof RuntimeException){
                {
                    if (true){
                        throw (RuntimeException) jjte000;
                    }
                }
            }
            if (jjte000 instanceof ParseException){
                {
                    if (true){
                        throw (ParseException) jjte000;
                    }
                }
            }
            {
                if (true){
                    throw (Error) jjte000;
                }
            }
        }finally{
            if (jjtc000){
                jjtree.closeNodeScope(jjtn000, true);
            }
        }
    }

    final public void selection() throws ParseException{
        if (jj_2_14(2)){
            selectAll();
        }else if (jj_2_15(2)){
            selectFirst();
        }else if (jj_2_16(2)){
            selectLast();
        }else{
            jj_consume_token(-1);
            throw new ParseException();
        }
    }

    /**
     * Apply a boolean expression to all elements of a collection, creating a new collection
     * containing those elements for which the expression returned true.
     * 
     * @throws ParseException
     *             if the application of the select all expression fails.
     */
    final public void selectAll() throws ParseException{
        /* @bgen(jjtree) Select */
        ASTSelect jjtn000 = new ASTSelect(JJTSELECT);
        boolean jjtc000 = true;
        jjtree.openNodeScope(jjtn000);
        try{
            jj_consume_token(54);
            jj_consume_token(3);
            expression();
            jj_consume_token(55);
        }catch (Throwable jjte000){
            if (jjtc000){
                jjtree.clearNodeScope(jjtn000);
                jjtc000 = false;
            }else{
                jjtree.popNode();
            }
            if (jjte000 instanceof RuntimeException){
                {
                    if (true){
                        throw (RuntimeException) jjte000;
                    }
                }
            }
            if (jjte000 instanceof ParseException){
                {
                    if (true){
                        throw (ParseException) jjte000;
                    }
                }
            }
            {
                if (true){
                    throw (Error) jjte000;
                }
            }
        }finally{
            if (jjtc000){
                jjtree.closeNodeScope(jjtn000, true);
            }
        }
    }

    /**
     * Apply a boolean expression to all elements of a collection, creating a new collection
     * containing those elements for the first element for which the expression returned true.
     * 
     * @throws ParseException
     *             if the application of the select first expression fails.
     */
    final public void selectFirst() throws ParseException{
        /* @bgen(jjtree) SelectFirst */
        ASTSelectFirst jjtn000 = new ASTSelectFirst(JJTSELECTFIRST);
        boolean jjtc000 = true;
        jjtree.openNodeScope(jjtn000);
        try{
            jj_consume_token(54);
            jj_consume_token(11);
            expression();
            jj_consume_token(55);
        }catch (Throwable jjte000){
            if (jjtc000){
                jjtree.clearNodeScope(jjtn000);
                jjtc000 = false;
            }else{
                jjtree.popNode();
            }
            if (jjte000 instanceof RuntimeException){
                {
                    if (true){
                        throw (RuntimeException) jjte000;
                    }
                }
            }
            if (jjte000 instanceof ParseException){
                {
                    if (true){
                        throw (ParseException) jjte000;
                    }
                }
            }
            {
                if (true){
                    throw (Error) jjte000;
                }
            }
        }finally{
            if (jjtc000){
                jjtree.closeNodeScope(jjtn000, true);
            }
        }
    }

    /**
     * Apply a boolean expression to all elements of a collection, creating a new collection
     * containing those elements for the last element for which the expression returned true.
     * 
     * @throws ParseException
     *             if the application of the select last expression fails.
     */
    final public void selectLast() throws ParseException{
        /* @bgen(jjtree) SelectLast */
        ASTSelectLast jjtn000 = new ASTSelectLast(JJTSELECTLAST);
        boolean jjtc000 = true;
        jjtree.openNodeScope(jjtn000);
        try{
            jj_consume_token(54);
            jj_consume_token(58);
            expression();
            jj_consume_token(55);
        }catch (Throwable jjte000){
            if (jjtc000){
                jjtree.clearNodeScope(jjtn000);
                jjtc000 = false;
            }else{
                jjtree.popNode();
            }
            if (jjte000 instanceof RuntimeException){
                {
                    if (true){
                        throw (RuntimeException) jjte000;
                    }
                }
            }
            if (jjte000 instanceof ParseException){
                {
                    if (true){
                        throw (ParseException) jjte000;
                    }
                }
            }
            {
                if (true){
                    throw (Error) jjte000;
                }
            }
        }finally{
            if (jjtc000){
                jjtree.closeNodeScope(jjtn000, true);
            }
        }
    }

    final public void index() throws ParseException{
        /* @bgen(jjtree) Property */
        ASTProperty jjtn000 = new ASTProperty(JJTPROPERTY);
        boolean jjtc000 = true;
        jjtree.openNodeScope(jjtn000);
        try{
            switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
                case 52:
                    jj_consume_token(52);
                    expression();
                    jj_consume_token(53);
                    jjtree.closeNodeScope(jjtn000, true);
                    jjtc000 = false;
                    jjtn000.setIndexedAccess(true);
                    break;
                case DYNAMIC_SUBSCRIPT:
                    jj_consume_token(DYNAMIC_SUBSCRIPT);
                    ASTConst jjtn001 = new ASTConst(JJTCONST);
                    boolean jjtc001 = true;
                    jjtree.openNodeScope(jjtn001);
                    try{
                        jjtree.closeNodeScope(jjtn001, true);
                        jjtc001 = false;
                        jjtn001.setValue(token_source.literalValue);
                    }finally{
                        if (jjtc001){
                            jjtree.closeNodeScope(jjtn001, true);
                        }
                    }
                    jjtree.closeNodeScope(jjtn000, true);
                    jjtc000 = false;
                    jjtn000.setIndexedAccess(true);
                    break;
                default:
                    jj_la1[63] = jj_gen;
                    jj_consume_token(-1);
                    throw new ParseException();
            }
        }catch (Throwable jjte000){
            if (jjtc000){
                jjtree.clearNodeScope(jjtn000);
                jjtc000 = false;
            }else{
                jjtree.popNode();
            }
            if (jjte000 instanceof RuntimeException){
                {
                    if (true){
                        throw (RuntimeException) jjte000;
                    }
                }
            }
            if (jjte000 instanceof ParseException){
                {
                    if (true){
                        throw (ParseException) jjte000;
                    }
                }
            }
            {
                if (true){
                    throw (Error) jjte000;
                }
            }
        }finally{
            if (jjtc000){
                jjtree.closeNodeScope(jjtn000, true);
            }
        }
    }

    private boolean jj_2_1(int xla){
        jj_la = xla;
        jj_lastpos = jj_scanpos = token;
        try{
            return !jj_3_1();
        }catch (LookaheadSuccess ls){
            return true;
        }finally{
            jj_save(0, xla);
        }
    }

    private boolean jj_2_2(int xla){
        jj_la = xla;
        jj_lastpos = jj_scanpos = token;
        try{
            return !jj_3_2();
        }catch (LookaheadSuccess ls){
            return true;
        }finally{
            jj_save(1, xla);
        }
    }

    private boolean jj_2_3(int xla){
        jj_la = xla;
        jj_lastpos = jj_scanpos = token;
        try{
            return !jj_3_3();
        }catch (LookaheadSuccess ls){
            return true;
        }finally{
            jj_save(2, xla);
        }
    }

    private boolean jj_2_4(int xla){
        jj_la = xla;
        jj_lastpos = jj_scanpos = token;
        try{
            return !jj_3_4();
        }catch (LookaheadSuccess ls){
            return true;
        }finally{
            jj_save(3, xla);
        }
    }

    private boolean jj_2_5(int xla){
        jj_la = xla;
        jj_lastpos = jj_scanpos = token;
        try{
            return !jj_3_5();
        }catch (LookaheadSuccess ls){
            return true;
        }finally{
            jj_save(4, xla);
        }
    }

    private boolean jj_2_6(int xla){
        jj_la = xla;
        jj_lastpos = jj_scanpos = token;
        try{
            return !jj_3_6();
        }catch (LookaheadSuccess ls){
            return true;
        }finally{
            jj_save(5, xla);
        }
    }

    private boolean jj_2_7(int xla){
        jj_la = xla;
        jj_lastpos = jj_scanpos = token;
        try{
            return !jj_3_7();
        }catch (LookaheadSuccess ls){
            return true;
        }finally{
            jj_save(6, xla);
        }
    }

    private boolean jj_2_8(int xla){
        jj_la = xla;
        jj_lastpos = jj_scanpos = token;
        try{
            return !jj_3_8();
        }catch (LookaheadSuccess ls){
            return true;
        }finally{
            jj_save(7, xla);
        }
    }

    private boolean jj_2_9(int xla){
        jj_la = xla;
        jj_lastpos = jj_scanpos = token;
        try{
            return !jj_3_9();
        }catch (LookaheadSuccess ls){
            return true;
        }finally{
            jj_save(8, xla);
        }
    }

    private boolean jj_2_10(int xla){
        jj_la = xla;
        jj_lastpos = jj_scanpos = token;
        try{
            return !jj_3_10();
        }catch (LookaheadSuccess ls){
            return true;
        }finally{
            jj_save(9, xla);
        }
    }

    private boolean jj_2_11(int xla){
        jj_la = xla;
        jj_lastpos = jj_scanpos = token;
        try{
            return !jj_3_11();
        }catch (LookaheadSuccess ls){
            return true;
        }finally{
            jj_save(10, xla);
        }
    }

    private boolean jj_2_12(int xla){
        jj_la = xla;
        jj_lastpos = jj_scanpos = token;
        try{
            return !jj_3_12();
        }catch (LookaheadSuccess ls){
            return true;
        }finally{
            jj_save(11, xla);
        }
    }

    private boolean jj_2_13(int xla){
        jj_la = xla;
        jj_lastpos = jj_scanpos = token;
        try{
            return !jj_3_13();
        }catch (LookaheadSuccess ls){
            return true;
        }finally{
            jj_save(12, xla);
        }
    }

    private boolean jj_2_14(int xla){
        jj_la = xla;
        jj_lastpos = jj_scanpos = token;
        try{
            return !jj_3_14();
        }catch (LookaheadSuccess ls){
            return true;
        }finally{
            jj_save(13, xla);
        }
    }

    private boolean jj_2_15(int xla){
        jj_la = xla;
        jj_lastpos = jj_scanpos = token;
        try{
            return !jj_3_15();
        }catch (LookaheadSuccess ls){
            return true;
        }finally{
            jj_save(14, xla);
        }
    }

    private boolean jj_2_16(int xla){
        jj_la = xla;
        jj_lastpos = jj_scanpos = token;
        try{
            return !jj_3_16();
        }catch (LookaheadSuccess ls){
            return true;
        }finally{
            jj_save(15, xla);
        }
    }

    private boolean jj_3R_56(){
        if (jj_scan_token(48)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_55(){
        if (jj_scan_token(47)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_54(){
        if (jj_scan_token(46)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_31(){
        if (jj_3R_27()){
            return true;
        }
        return false;
    }

    private boolean jj_3_13(){
        if (jj_scan_token(52)){
            return true;
        }
        if (jj_3R_27()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_53(){
        Token xsp;
        xsp = jj_scanpos;
        if (jj_scan_token(73)){
            jj_scanpos = xsp;
            if (jj_scan_token(76)){
                jj_scanpos = xsp;
                if (jj_scan_token(79)){
                    jj_scanpos = xsp;
                    if (jj_scan_token(80)){
                        jj_scanpos = xsp;
                        if (jj_scan_token(81)){
                            return true;
                        }
                    }
                }
            }
        }
        return false;
    }

    private boolean jj_3R_26(){
        if (jj_3R_27()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_52(){
        Token xsp;
        xsp = jj_scanpos;
        if (jj_3R_53()){
            jj_scanpos = xsp;
            if (jj_3R_54()){
                jj_scanpos = xsp;
                if (jj_3R_55()){
                    jj_scanpos = xsp;
                    if (jj_3R_56()){
                        jj_scanpos = xsp;
                        if (jj_3_4()){
                            jj_scanpos = xsp;
                            if (jj_3_5()){
                                jj_scanpos = xsp;
                                if (jj_3_6()){
                                    jj_scanpos = xsp;
                                    if (jj_3_7()){
                                        jj_scanpos = xsp;
                                        if (jj_3R_57()){
                                            jj_scanpos = xsp;
                                            if (jj_3_8()){
                                                jj_scanpos = xsp;
                                                if (jj_3R_58()){
                                                    jj_scanpos = xsp;
                                                    if (jj_3R_59()){
                                                        jj_scanpos = xsp;
                                                        if (jj_3R_60()){
                                                            jj_scanpos = xsp;
                                                            if (jj_3R_61()){
                                                                jj_scanpos = xsp;
                                                                if (jj_3_9()){
                                                                    return true;
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        return false;
    }

    private boolean jj_3R_42(){
        if (jj_3R_43()){
            return true;
        }
        return false;
    }

    private boolean jj_3_12(){
        if (jj_scan_token(52)){
            return true;
        }
        if (jj_scan_token(53)){
            return true;
        }
        return false;
    }

    private boolean jj_3_11(){
        if (jj_scan_token(44)){
            return true;
        }
        Token xsp;
        xsp = jj_scanpos;
        if (jj_3R_26()){
            jj_scanpos = xsp;
        }
        if (jj_scan_token(45)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_67(){
        if (jj_scan_token(DYNAMIC_SUBSCRIPT)){
            return true;
        }
        return false;
    }

    private boolean jj_3_2(){
        if (jj_3R_22()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_66(){
        if (jj_scan_token(52)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_64(){
        Token xsp;
        xsp = jj_scanpos;
        if (jj_3R_66()){
            jj_scanpos = xsp;
            if (jj_3R_67()){
                return true;
            }
        }
        return false;
    }

    private boolean jj_3_1(){
        if (jj_3R_21()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_23(){
        if (jj_scan_token(57)){
            return true;
        }
        if (jj_3R_32()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_41(){
        if (jj_3R_42()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_30(){
        if (jj_scan_token(54)){
            return true;
        }
        if (jj_scan_token(58)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_32(){
        if (jj_scan_token(IDENT)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_51(){
        if (jj_3R_52()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_29(){
        if (jj_scan_token(54)){
            return true;
        }
        if (jj_scan_token(11)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_40(){
        if (jj_3R_41()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_33(){
        if (jj_scan_token(56)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_63(){
        if (jj_3R_65()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_28(){
        if (jj_scan_token(54)){
            return true;
        }
        if (jj_scan_token(3)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_50(){
        if (jj_3R_51()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_39(){
        if (jj_3R_40()){
            return true;
        }
        return false;
    }

    private boolean jj_3_10(){
        if (jj_3R_25()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_24(){
        if (jj_3R_33()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_49(){
        Token xsp;
        xsp = jj_scanpos;
        if (jj_scan_token(41)){
            jj_scanpos = xsp;
            if (jj_scan_token(28)){
                return true;
            }
        }
        return false;
    }

    private boolean jj_3R_48(){
        if (jj_scan_token(40)){
            return true;
        }
        return false;
    }

    private boolean jj_3_16(){
        if (jj_3R_30()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_47(){
        if (jj_scan_token(35)){
            return true;
        }
        return false;
    }

    private boolean jj_3_15(){
        if (jj_3R_29()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_38(){
        if (jj_3R_39()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_46(){
        if (jj_scan_token(36)){
            return true;
        }
        return false;
    }

    private boolean jj_3_14(){
        if (jj_3R_28()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_62(){
        if (jj_3R_33()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_45(){
        Token xsp;
        xsp = jj_scanpos;
        if (jj_3R_46()){
            jj_scanpos = xsp;
            if (jj_3R_47()){
                jj_scanpos = xsp;
                if (jj_3R_48()){
                    jj_scanpos = xsp;
                    if (jj_3R_49()){
                        jj_scanpos = xsp;
                        if (jj_3R_50()){
                            return true;
                        }
                    }
                }
            }
        }
        return false;
    }

    private boolean jj_3R_37(){
        if (jj_3R_38()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_22(){
        if (jj_scan_token(54)){
            return true;
        }
        if (jj_3R_31()){
            return true;
        }
        return false;
    }

    private boolean jj_3_9(){
        if (jj_scan_token(51)){
            return true;
        }
        Token xsp;
        xsp = jj_scanpos;
        if (jj_3R_24()){
            jj_scanpos = xsp;
        }
        if (jj_scan_token(54)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_36(){
        if (jj_3R_37()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_61(){
        if (jj_scan_token(54)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_60(){
        if (jj_scan_token(44)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_59(){
        if (jj_3R_64()){
            return true;
        }
        return false;
    }

    private boolean jj_3_3(){
        if (jj_3R_21()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_21(){
        if (jj_scan_token(IDENT)){
            return true;
        }
        if (jj_scan_token(44)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_58(){
        Token xsp;
        xsp = jj_scanpos;
        if (jj_3_3()){
            jj_scanpos = xsp;
            if (jj_3R_63()){
                return true;
            }
        }
        return false;
    }

    private boolean jj_3R_35(){
        if (jj_3R_36()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_44(){
        if (jj_3R_45()){
            return true;
        }
        return false;
    }

    private boolean jj_3_8(){
        if (jj_3R_23()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_57(){
        if (jj_3R_62()){
            return true;
        }
        return false;
    }

    private boolean jj_3R_34(){
        if (jj_3R_35()){
            return true;
        }
        return false;
    }

    private boolean jj_3_7(){
        if (jj_scan_token(4)){
            return true;
        }
        if (jj_scan_token(52)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_25(){
        if (jj_scan_token(IDENT)){
            return true;
        }
        if (jj_scan_token(44)){
            return true;
        }
        return false;
    }

    private boolean jj_3_6(){
        if (jj_scan_token(51)){
            return true;
        }
        if (jj_scan_token(IDENT)){
            return true;
        }
        return false;
    }

    private boolean jj_3_5(){
        if (jj_scan_token(50)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_27(){
        if (jj_3R_34()){
            return true;
        }
        return false;
    }

    private boolean jj_3_4(){
        if (jj_scan_token(49)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_65(){
        if (jj_scan_token(IDENT)){
            return true;
        }
        return false;
    }

    private boolean jj_3R_43(){
        if (jj_3R_44()){
            return true;
        }
        return false;
    }

    /** Generated Token Manager. */
    public OgnlParserTokenManager token_source;

    JavaCharStream                jj_input_stream;

    /** Current token. */
    public Token                  token;

    /** Next token. */
    public Token                  jj_nt;

    private int                   jj_ntk;

    private Token                 jj_scanpos, jj_lastpos;

    private int                   jj_la;

    /** Whether we are looking ahead. */
    private final boolean         jj_lookingAhead = false;

    private boolean               jj_semLA;

    private int                   jj_gen;

    final private int[]           jj_la1          = new int[64];

    static private int[]          jj_la1_0;

    static private int[]          jj_la1_1;

    static private int[]          jj_la1_2;
    static{
        jj_la1_init_0();
        jj_la1_init_1();
        jj_la1_init_2();
    }

    private static void jj_la1_init_0(){
        jj_la1_0 = new int[] {
                               0x2,
                               0x4,
                               0x8,
                               0x60,
                               0x60,
                               0x180,
                               0x180,
                               0x600,
                               0x600,
                               0x1800,
                               0x1800,
                               0x6000,
                               0x6000,
                               0x78000,
                               0x18000,
                               0x60000,
                               0x78000,
                               0x1ff80000,
                               0x180000,
                               0x600000,
                               0x1800000,
                               0x6000000,
                               0x1ff80000,
                               0xe0000000,
                               0x60000000,
                               0x80000000,
                               0x0,
                               0xe0000000,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x10000000,
                               0x0,
                               0x0,
                               0x10000010,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x2,
                               0x10000010,
                               0x0,
                               0x2,
                               0x10000010,
                               0x0,
                               0x0,
                               0x0,
                               0x10,
                               0x0,
                               0x0,
                               0x0,
                               0x2,
                               0x10000010,
                               0x2,
                               0x10000010,
                               0x2,
                               0x10000010,
                               0x2,
                               0x10000010,
                               0x0, };
    }

    private static void jj_la1_init_1(){
        jj_la1_1 = new int[] {
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x7,
                               0x0,
                               0x1,
                               0x6,
                               0x7,
                               0x18,
                               0x18,
                               0xe0,
                               0xe0,
                               0x200,
                               0x800,
                               0x400,
                               0x35fd318,
                               0x101800,
                               0x0,
                               0x400000,
                               0x401000,
                               0x101800,
                               0x0,
                               0x0,
                               0x0,
                               0x35fd318,
                               0x1000000,
                               0x0,
                               0x35fd318,
                               0x1c000,
                               0x1000000,
                               0x501000,
                               0x0,
                               0x0,
                               0x0,
                               0x800,
                               0x0,
                               0x35fd318,
                               0x0,
                               0x35fd318,
                               0x0,
                               0x35fd318,
                               0x0,
                               0x35fd318,
                               0x100000, };
    }

    private static void jj_la1_init_2(){
        jj_la1_2 = new int[] {
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x0,
                               0x39209,
                               0x8,
                               0x1,
                               0x0,
                               0x1,
                               0x8,
                               0x39200,
                               0x1,
                               0x0,
                               0x39209,
                               0x0,
                               0x0,
                               0x39209,
                               0x39200,
                               0x0,
                               0x9,
                               0x0,
                               0x1,
                               0x1,
                               0x0,
                               0x0,
                               0x39209,
                               0x0,
                               0x39209,
                               0x0,
                               0x39209,
                               0x0,
                               0x39209,
                               0x8, };
    }

    final private JJCalls[] jj_2_rtns = new JJCalls[16];

    private boolean         jj_rescan = false;

    private int             jj_gc     = 0;

    /**
     * Constructor with InputStream.
     * 
     * @param stream
     *            the InputStream to parse.
     */
    public OgnlParser(java.io.InputStream stream){
        this(stream, null);
    }

    /**
     * Constructor with InputStream and supplied encoding
     * 
     * @param stream
     *            the InputStream to parse.
     * @param encoding
     *            the encoding to use for the stream.
     */
    public OgnlParser(java.io.InputStream stream, String encoding){
        try{
            jj_input_stream = new JavaCharStream(stream, encoding, 1, 1);
        }catch (java.io.UnsupportedEncodingException e){
            throw new RuntimeException(e);
        }
        token_source = new OgnlParserTokenManager(jj_input_stream);
        token = new Token();
        jj_ntk = -1;
        jj_gen = 0;
        for (int i = 0; i < 64; i++){
            jj_la1[i] = -1;
        }
        for (int i = 0; i < jj_2_rtns.length; i++){
            jj_2_rtns[i] = new JJCalls();
        }
    }

    /**
     * Reinitialise.
     * 
     * @param stream
     *            the InputStream to parse.
     */
    public void ReInit(java.io.InputStream stream){
        ReInit(stream, null);
    }

    /**
     * Reinitialise.
     * 
     * @param stream
     *            the InputStream to parse.
     * @param encoding
     *            the encoding to use for the stream.
     */
    public void ReInit(java.io.InputStream stream,String encoding){
        try{
            jj_input_stream.ReInit(stream, encoding, 1, 1);
        }catch (java.io.UnsupportedEncodingException e){
            throw new RuntimeException(e);
        }
        token_source.ReInit(jj_input_stream);
        token = new Token();
        jj_ntk = -1;
        jjtree.reset();
        jj_gen = 0;
        for (int i = 0; i < 64; i++){
            jj_la1[i] = -1;
        }
        for (int i = 0; i < jj_2_rtns.length; i++){
            jj_2_rtns[i] = new JJCalls();
        }
    }

    /**
     * Constructor.
     * 
     * @param stream
     *            the Reader to parse.
     */
    public OgnlParser(java.io.Reader stream){
        jj_input_stream = new JavaCharStream(stream, 1, 1);
        token_source = new OgnlParserTokenManager(jj_input_stream);
        token = new Token();
        jj_ntk = -1;
        jj_gen = 0;
        for (int i = 0; i < 64; i++){
            jj_la1[i] = -1;
        }
        for (int i = 0; i < jj_2_rtns.length; i++){
            jj_2_rtns[i] = new JJCalls();
        }
    }

    /**
     * Reinitialise.
     * 
     * @param stream
     *            the Reader to parse.
     */
    public void ReInit(java.io.Reader stream){
        jj_input_stream.ReInit(stream, 1, 1);
        token_source.ReInit(jj_input_stream);
        token = new Token();
        jj_ntk = -1;
        jjtree.reset();
        jj_gen = 0;
        for (int i = 0; i < 64; i++){
            jj_la1[i] = -1;
        }
        for (int i = 0; i < jj_2_rtns.length; i++){
            jj_2_rtns[i] = new JJCalls();
        }
    }

    /**
     * Constructor with generated Token Manager.
     * 
     * @param tm
     *            the OgnParserTokenManager to use during parsing.
     */
    public OgnlParser(OgnlParserTokenManager tm){
        token_source = tm;
        token = new Token();
        jj_ntk = -1;
        jj_gen = 0;
        for (int i = 0; i < 64; i++){
            jj_la1[i] = -1;
        }
        for (int i = 0; i < jj_2_rtns.length; i++){
            jj_2_rtns[i] = new JJCalls();
        }
    }

    /**
     * Reinitialise.
     * 
     * @param tm
     *            the OgnParserTokenManager to use during parsing.
     */
    public void ReInit(OgnlParserTokenManager tm){
        token_source = tm;
        token = new Token();
        jj_ntk = -1;
        jjtree.reset();
        jj_gen = 0;
        for (int i = 0; i < 64; i++){
            jj_la1[i] = -1;
        }
        for (int i = 0; i < jj_2_rtns.length; i++){
            jj_2_rtns[i] = new JJCalls();
        }
    }

    private Token jj_consume_token(int kind) throws ParseException{
        Token oldToken;
        if ((oldToken = token).next != null){
            token = token.next;
        }else{
            token = token.next = token_source.getNextToken();
        }
        jj_ntk = -1;
        if (token.kind == kind){
            jj_gen++;
            if (++jj_gc > 100){
                jj_gc = 0;
                for (JJCalls jj_2_rtn : jj_2_rtns){
                    JJCalls c = jj_2_rtn;
                    while (c != null){
                        if (c.gen < jj_gen){
                            c.first = null;
                        }
                        c = c.next;
                    }
                }
            }
            return token;
        }
        token = oldToken;
        jj_kind = kind;
        throw generateParseException();
    }

    static private final class LookaheadSuccess extends java.lang.Error{

        /**
         * 
         */
        private static final long serialVersionUID = -4469828879648624304L;
    }

    final private LookaheadSuccess jj_ls = new LookaheadSuccess();

    private boolean jj_scan_token(int kind){
        if (jj_scanpos == jj_lastpos){
            jj_la--;
            if (jj_scanpos.next == null){
                jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
            }else{
                jj_lastpos = jj_scanpos = jj_scanpos.next;
            }
        }else{
            jj_scanpos = jj_scanpos.next;
        }
        if (jj_rescan){
            int i = 0;
            Token tok = token;
            while (tok != null && tok != jj_scanpos){
                i++;
                tok = tok.next;
            }
            if (tok != null){
                jj_add_error_token(kind, i);
            }
        }
        if (jj_scanpos.kind != kind){
            return true;
        }
        if (jj_la == 0 && jj_scanpos == jj_lastpos){
            throw jj_ls;
        }
        return false;
    }

    /**
     * Get the next Token.
     * 
     * @return the next Token result from parsing.
     */
    final public Token getNextToken(){
        if (token.next != null){
            token = token.next;
        }else{
            token = token.next = token_source.getNextToken();
        }
        jj_ntk = -1;
        jj_gen++;
        return token;
    }

    /**
     * Get the specific Token.
     * 
     * @param index
     *            specifies how far to scan ahead for the Token.
     * @return the Token at the given index.
     */
    final public Token getToken(int index){
        Token t = jj_lookingAhead ? jj_scanpos : token;
        for (int i = 0; i < index; i++){
            if (t.next != null){
                t = t.next;
            }else{
                t = t.next = token_source.getNextToken();
            }
        }
        return t;
    }

    private int jj_ntk(){
        if ((jj_nt = token.next) == null){
            return (jj_ntk = (token.next = token_source.getNextToken()).kind);
        }else{
            return (jj_ntk = jj_nt.kind);
        }
    }

    private final java.util.List jj_expentries = new java.util.ArrayList();

    private int[]                jj_expentry;

    private int                  jj_kind       = -1;

    private final int[]          jj_lasttokens = new int[100];

    private int                  jj_endpos;

    private void jj_add_error_token(int kind,int pos){
        if (pos >= 100){
            return;
        }
        if (pos == jj_endpos + 1){
            jj_lasttokens[jj_endpos++] = kind;
        }else if (jj_endpos != 0){
            jj_expentry = new int[jj_endpos];
            for (int i = 0; i < jj_endpos; i++){
                jj_expentry[i] = jj_lasttokens[i];
            }
            jj_entries_loop: for (java.util.Iterator it = jj_expentries.iterator(); it.hasNext();){
                int[] oldentry = (int[]) (it.next());
                if (oldentry.length == jj_expentry.length){
                    for (int i = 0; i < jj_expentry.length; i++){
                        if (oldentry[i] != jj_expentry[i]){
                            continue jj_entries_loop;
                        }
                    }
                    jj_expentries.add(jj_expentry);
                    break jj_entries_loop;
                }
            }
            if (pos != 0){
                jj_lasttokens[(jj_endpos = pos) - 1] = kind;
            }
        }
    }

    /**
     * Generate ParseException.
     * 
     * @return a ParseException with information about current token parsing state.
     */
    public ParseException generateParseException(){
        jj_expentries.clear();
        boolean[] la1tokens = new boolean[86];
        if (jj_kind >= 0){
            la1tokens[jj_kind] = true;
            jj_kind = -1;
        }
        for (int i = 0; i < 64; i++){
            if (jj_la1[i] == jj_gen){
                for (int j = 0; j < 32; j++){
                    if ((jj_la1_0[i] & (1 << j)) != 0){
                        la1tokens[j] = true;
                    }
                    if ((jj_la1_1[i] & (1 << j)) != 0){
                        la1tokens[32 + j] = true;
                    }
                    if ((jj_la1_2[i] & (1 << j)) != 0){
                        la1tokens[64 + j] = true;
                    }
                }
            }
        }
        for (int i = 0; i < 86; i++){
            if (la1tokens[i]){
                jj_expentry = new int[1];
                jj_expentry[0] = i;
                jj_expentries.add(jj_expentry);
            }
        }
        jj_endpos = 0;
        jj_rescan_token();
        jj_add_error_token(0, 0);
        int[][] exptokseq = new int[jj_expentries.size()][];
        for (int i = 0; i < jj_expentries.size(); i++){
            exptokseq[i] = (int[]) jj_expentries.get(i);
        }
        return new ParseException(token, exptokseq, tokenImage);
    }

    /** Enable tracing. */
    final public void enable_tracing(){
    }

    /** Disable tracing. */
    final public void disable_tracing(){
    }

    private void jj_rescan_token(){
        jj_rescan = true;
        for (int i = 0; i < 16; i++){
            try{
                JJCalls p = jj_2_rtns[i];
                do{
                    if (p.gen > jj_gen){
                        jj_la = p.arg;
                        jj_lastpos = jj_scanpos = p.first;
                        switch (i) {
                            case 0:
                                jj_3_1();
                                break;
                            case 1:
                                jj_3_2();
                                break;
                            case 2:
                                jj_3_3();
                                break;
                            case 3:
                                jj_3_4();
                                break;
                            case 4:
                                jj_3_5();
                                break;
                            case 5:
                                jj_3_6();
                                break;
                            case 6:
                                jj_3_7();
                                break;
                            case 7:
                                jj_3_8();
                                break;
                            case 8:
                                jj_3_9();
                                break;
                            case 9:
                                jj_3_10();
                                break;
                            case 10:
                                jj_3_11();
                                break;
                            case 11:
                                jj_3_12();
                                break;
                            case 12:
                                jj_3_13();
                                break;
                            case 13:
                                jj_3_14();
                                break;
                            case 14:
                                jj_3_15();
                                break;
                            case 15:
                                jj_3_16();
                                break;
                        }
                    }
                    p = p.next;
                }while (p != null);
            }catch (LookaheadSuccess ls){}
        }
        jj_rescan = false;
    }

    private void jj_save(int index,int xla){
        JJCalls p = jj_2_rtns[index];
        while (p.gen > jj_gen){
            if (p.next == null){
                p = p.next = new JJCalls();
                break;
            }
            p = p.next;
        }
        p.gen = jj_gen + xla - jj_la;
        p.first = token;
        p.arg = xla;
    }

    static final class JJCalls{

        int     gen;

        Token   first;

        int     arg;

        JJCalls next;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy