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

zoomba.lang.parser.Parser Maven / Gradle / Ivy

Go to download

ZoomBA is a multi paradigm Micro Language for JVM Scripting used for business development and software testing

The newest version!
/* Parser.java */
/* Generated By:JJTree&JavaCC: Do not edit this line. Parser.java */
package zoomba.lang.parser;

import java.io.Reader;

public class Parser extends ZoombaParser/*@bgen(jjtree)*/implements ParserTreeConstants, ParserConstants {/*@bgen(jjtree)*/
  protected JJTParserState jjtree = new JJTParserState();public boolean ALLOW_REGISTERS = false;

    public ASTZoombaScript parse(Reader reader)
        throws ParseException {
        ReInit(reader);
        ASTZoombaScript tree = ZoombaScript();
        return tree;
    }

/***************************************
 *      Statements
 ***************************************/
  final public 
ASTZoombaScript ZoombaScript() throws ParseException {/*@bgen(jjtree) ZoombaScript */
  ASTZoombaScript jjtn000 = new ASTZoombaScript(JJTZOOMBASCRIPT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      label_1:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case IF:
        case FOR:
        case WHILE:
        case SWITCH:
        case DEL:
        case NEW:
        case NULL:
        case TRUE:
        case FALSE:
        case BREAK:
        case CONTINUE:
        case RETURN:
        case DEF:
        case IMPORT:
        case ATOMIC:
        case CLOCK:
        case BREAL_POINT:
        case LPAREN:
        case LCURLY:
        case LBRACKET:
        case SEMICOL:
        case LINE:
        case LINE_COMMENT:
        case not:
        case plus:
        case minus:
        case tilda:
        case hash:
        case hash_card:
        case hash_lp:
        case reloc:
        case char_id:
        case hash_lt:
        case IDENTIFIER:
        case INTEGER_LITERAL:
        case FLOAT_LITERAL:
        case STRING_LITERAL:
        case PATTERN_LITERAL:{
          ;
          break;
          }
        default:
          jj_la1[0] = jj_gen;
          break label_1;
        }
        Statement();
      }
      jj_consume_token(0);
jjtree.closeNodeScope(jjtn000, true);
     jjtc000 = false;
     if (jjtree.nodeCreated()) {
      jjtreeCloseNodeScope(jjtn000);
     }
     jjtn000.jjtSetLastToken(getToken(0));
{if ("" != null) return jjtn000;}
    } 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);
       if (jjtree.nodeCreated()) {
        jjtreeCloseNodeScope(jjtn000);
       }
       jjtn000.jjtSetLastToken(getToken(0));
     }
    }
    throw new Error("Missing return statement in function");
}

  final public void Statement() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case SEMICOL:{
      jj_consume_token(SEMICOL);
      break;
      }
    case LINE:
    case LINE_COMMENT:{
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case LINE_COMMENT:{
        jj_consume_token(LINE_COMMENT);
        break;
        }
      default:
        jj_la1[1] = jj_gen;
        ;
      }
      jj_consume_token(LINE);
      break;
      }
    case SWITCH:{
      SwitchStatement();
      break;
      }
    case DEL:{
      DeleteStatement();
      break;
      }
    case hash_lp:{
      MultipleReturnStatement();
      break;
      }
    default:
      jj_la1[2] = jj_gen;
      if (jj_2_1(3)) {
        Block();
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case IF:{
          IfStatement();
          break;
          }
        case FOR:{
          ForeachStatement();
          break;
          }
        case WHILE:{
          WhileStatement();
          break;
          }
        default:
          jj_la1[3] = jj_gen;
          if (jj_2_2(2)) {
            ExpressionStatement();
          } else {
            switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
            case RETURN:{
              ReturnStatement();
              break;
              }
            case BREAK:{
              BreakStatement();
              break;
              }
            case CONTINUE:{
              ContinueStatement();
              break;
              }
            default:
              jj_la1[4] = jj_gen;
              if (jj_2_3(3)) {
                MethodDef();
              } else {
                switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
                case IMPORT:{
                  ImportStatement();
                  break;
                  }
                default:
                  jj_la1[5] = jj_gen;
                  if (jj_2_4(3)) {
                    ClassDef();
                  } else {
                    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
                    case ATOMIC:{
                      AtomicStatement();
                      break;
                      }
                    case CLOCK:{
                      ClockStatement();
                      break;
                      }
                    case hash_lt:{
                      FunctionComposition();
                      break;
                      }
                    case BREAL_POINT:{
                      DebugBreak();
                      break;
                      }
                    default:
                      jj_la1[6] = jj_gen;
                      jj_consume_token(-1);
                      throw new ParseException();
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
}

  final public void DebugBreak() throws ParseException {/*@bgen(jjtree) DebugBreak */
  ASTDebugBreak jjtn000 = new ASTDebugBreak(JJTDEBUGBREAK);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(BREAL_POINT);
      if (jj_2_5(2)) {
        Expression();
      } else {
        ;
      }
    } 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);
       if (jjtree.nodeCreated()) {
        jjtreeCloseNodeScope(jjtn000);
       }
       jjtn000.jjtSetLastToken(getToken(0));
     }
    }
}

  final public void DeleteStatement() throws ParseException {/*@bgen(jjtree) DeleteStatement */
  ASTDeleteStatement jjtn000 = new ASTDeleteStatement(JJTDELETESTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(DEL);
      Identifier();
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void CaseExpression() throws ParseException {/*@bgen(jjtree) #CaseExpression(true) */
  ASTCaseExpression jjtn000 = new ASTCaseExpression(JJTCASEEXPRESSION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(CASE);
      Expression();
      jj_consume_token(COLON);
      label_2:
      while (true) {
        Statement();
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case IF:
        case FOR:
        case WHILE:
        case SWITCH:
        case DEL:
        case NEW:
        case NULL:
        case TRUE:
        case FALSE:
        case BREAK:
        case CONTINUE:
        case RETURN:
        case DEF:
        case IMPORT:
        case ATOMIC:
        case CLOCK:
        case BREAL_POINT:
        case LPAREN:
        case LCURLY:
        case LBRACKET:
        case SEMICOL:
        case LINE:
        case LINE_COMMENT:
        case not:
        case plus:
        case minus:
        case tilda:
        case hash:
        case hash_card:
        case hash_lp:
        case reloc:
        case char_id:
        case hash_lt:
        case IDENTIFIER:
        case INTEGER_LITERAL:
        case FLOAT_LITERAL:
        case STRING_LITERAL:
        case PATTERN_LITERAL:{
          ;
          break;
          }
        default:
          jj_la1[7] = jj_gen;
          break label_2;
        }
      }
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void SwitchStatement() throws ParseException {/*@bgen(jjtree) #SwitchStatement(true) */
  ASTSwitchStatement jjtn000 = new ASTSwitchStatement(JJTSWITCHSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(SWITCH);
      jj_consume_token(LPAREN);
      Expression();
      jj_consume_token(RPAREN);
      jj_consume_token(LCURLY);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case LINE:{
        jj_consume_token(LINE);
        break;
        }
      default:
        jj_la1[8] = jj_gen;
        ;
      }
      label_3:
      while (true) {
        CaseExpression();
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case CASE:{
          ;
          break;
          }
        default:
          jj_la1[9] = jj_gen;
          break label_3;
        }
      }
      jj_consume_token(RCURLY);
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void ErrorCatch() throws ParseException {/*@bgen(jjtree) #ErrorCatch(true) */
  ASTErrorCatch jjtn000 = new ASTErrorCatch(JJTERRORCATCH);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      LValueVar();
      jj_consume_token(QMARK);
      LValueVar();
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void LeftCatch() throws ParseException {/*@bgen(jjtree) #LeftCatch(true) */
  ASTLeftCatch jjtn000 = new ASTLeftCatch(JJTLEFTCATCH);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      LValueVar();
      label_4:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case COMMA:{
          ;
          break;
          }
        default:
          jj_la1[10] = jj_gen;
          break label_4;
        }
        jj_consume_token(COMMA);
        LValueVar();
      }
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void RightCatch() throws ParseException {/*@bgen(jjtree) #RightCatch(true) */
  ASTRightCatch jjtn000 = new ASTRightCatch(JJTRIGHTCATCH);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(COMMA);
      LValueVar();
      label_5:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case COMMA:{
          ;
          break;
          }
        default:
          jj_la1[11] = jj_gen;
          break label_5;
        }
        jj_consume_token(COMMA);
        LValueVar();
      }
    } 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);
       if (jjtree.nodeCreated()) {
        jjtreeCloseNodeScope(jjtn000);
       }
       jjtn000.jjtSetLastToken(getToken(0));
     }
    }
}

  final public void MultipleReturnStatement() throws ParseException {/*@bgen(jjtree) MultipleReturnStatement */
  ASTMultipleReturnStatement jjtn000 = new ASTMultipleReturnStatement(JJTMULTIPLERETURNSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(hash_lp);
      if (jj_2_6(4)) {
        ErrorCatch();
      } else if (jj_2_7(2)) {
        LeftCatch();
      } else if (jj_2_8(2)) {
        RightCatch();
      } else {
        jj_consume_token(-1);
        throw new ParseException();
      }
      jj_consume_token(RPAREN);
      jj_consume_token(assign);
      Statement();
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void AtomicStatement() throws ParseException {/*@bgen(jjtree) AtomicStatement */
  ASTAtomicStatement jjtn000 = new ASTAtomicStatement(JJTATOMICSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(ATOMIC);
      Block();
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void ClockStatement() throws ParseException {/*@bgen(jjtree) ClockStatement */
  ASTClockStatement jjtn000 = new ASTClockStatement(JJTCLOCKSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(CLOCK);
      Block();
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void FunctionComposition() throws ParseException {/*@bgen(jjtree) FunctionComposition */
  ASTFunctionComposition jjtn000 = new ASTFunctionComposition(JJTFUNCTIONCOMPOSITION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(hash_lt);
      Identifier();
      label_6:
      while (true) {
        jj_consume_token(or);
        Identifier();
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case or:{
          ;
          break;
          }
        default:
          jj_la1[12] = jj_gen;
          break label_6;
        }
      }
      jj_consume_token(gt);
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void BreakStatement() throws ParseException {/*@bgen(jjtree) BreakStatement */
  ASTBreakStatement jjtn000 = new ASTBreakStatement(JJTBREAKSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      if (jj_2_10(2)) {
        jj_consume_token(BREAK);
        jj_consume_token(LPAREN);
        ExpressionStatement();
        jj_consume_token(RPAREN);
        if (jj_2_9(2)) {
          Statement();
        } else {
          ;
        }
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case BREAK:{
          jj_consume_token(BREAK);
          break;
          }
        default:
          jj_la1[13] = 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);
          if (jjtree.nodeCreated()) {
           jjtreeCloseNodeScope(jjtn000);
          }
          jjtn000.jjtSetLastToken(getToken(0));
        }
    }
}

  final public void ContinueStatement() throws ParseException {/*@bgen(jjtree) ContinueStatement */
  ASTContinueStatement jjtn000 = new ASTContinueStatement(JJTCONTINUESTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      if (jj_2_12(2)) {
        jj_consume_token(CONTINUE);
        jj_consume_token(LPAREN);
        ExpressionStatement();
        jj_consume_token(RPAREN);
        if (jj_2_11(2)) {
          Statement();
        } else {
          ;
        }
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case CONTINUE:{
          jj_consume_token(CONTINUE);
          break;
          }
        default:
          jj_la1[14] = 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void Block() throws ParseException {/*@bgen(jjtree) Block */
  ASTBlock jjtn000 = new ASTBlock(JJTBLOCK);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(LCURLY);
      label_7:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case IF:
        case FOR:
        case WHILE:
        case SWITCH:
        case DEL:
        case NEW:
        case NULL:
        case TRUE:
        case FALSE:
        case BREAK:
        case CONTINUE:
        case RETURN:
        case DEF:
        case IMPORT:
        case ATOMIC:
        case CLOCK:
        case BREAL_POINT:
        case LPAREN:
        case LCURLY:
        case LBRACKET:
        case SEMICOL:
        case LINE:
        case LINE_COMMENT:
        case not:
        case plus:
        case minus:
        case tilda:
        case hash:
        case hash_card:
        case hash_lp:
        case reloc:
        case char_id:
        case hash_lt:
        case IDENTIFIER:
        case INTEGER_LITERAL:
        case FLOAT_LITERAL:
        case STRING_LITERAL:
        case PATTERN_LITERAL:{
          ;
          break;
          }
        default:
          jj_la1[15] = jj_gen;
          break label_7;
        }
        Statement();
      }
      jj_consume_token(RCURLY);
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void CharacterString() throws ParseException {/*@bgen(jjtree) CharacterString */
  ASTCharacterString jjtn000 = new ASTCharacterString(JJTCHARACTERSTRING);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(char_id);
      StringLiteral();
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void RelocableString() throws ParseException {/*@bgen(jjtree) RelocableString */
  ASTRelocableString jjtn000 = new ASTRelocableString(JJTRELOCABLESTRING);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(reloc);
      StringLiteral();
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void ExecutableString() throws ParseException {/*@bgen(jjtree) ExecutableString */
  ASTExecutableString jjtn000 = new ASTExecutableString(JJTEXECUTABLESTRING);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(hash);
      StringLiteral();
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void ZStringLiteral() throws ParseException {/*@bgen(jjtree) #ZStringLiteral(true) */
  ASTZStringLiteral jjtn000 = new ASTZStringLiteral(JJTZSTRINGLITERAL);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case reloc:{
        RelocableString();
        break;
        }
      case hash:{
        ExecutableString();
        break;
        }
      case char_id:{
        CharacterString();
        break;
        }
      case STRING_LITERAL:{
        StringLiteral();
        break;
        }
      default:
        jj_la1[16] = 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);
         if (jjtree.nodeCreated()) {
          jjtreeCloseNodeScope(jjtn000);
         }
         jjtn000.jjtSetLastToken(getToken(0));
       }
    }
}

  final public void HardImport() throws ParseException {/*@bgen(jjtree) HardImport */
  ASTHardImport jjtn000 = new ASTHardImport(JJTHARDIMPORT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      Identifier();
      label_8:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case DOT:{
          ;
          break;
          }
        default:
          jj_la1[17] = jj_gen;
          break label_8;
        }
        jj_consume_token(DOT);
        Identifier();
      }
    } 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);
       if (jjtree.nodeCreated()) {
        jjtreeCloseNodeScope(jjtn000);
       }
       jjtn000.jjtSetLastToken(getToken(0));
     }
    }
}

  final public void ImportStatement() throws ParseException {/*@bgen(jjtree) ImportStatement */
  ASTImportStatement jjtn000 = new ASTImportStatement(JJTIMPORTSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(IMPORT);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case IDENTIFIER:{
        HardImport();
        break;
        }
      case hash:
      case reloc:
      case char_id:
      case STRING_LITERAL:{
        ZStringLiteral();
        break;
        }
      default:
        jj_la1[18] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jj_consume_token(AS);
      Identifier();
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void ExpressionStatement() throws ParseException {
    Expression();
    label_9:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case NEW:
      case NULL:
      case TRUE:
      case FALSE:
      case LPAREN:
      case LCURLY:
      case LBRACKET:
      case not:
      case plus:
      case minus:
      case tilda:
      case hash:
      case hash_card:
      case reloc:
      case char_id:
      case IDENTIFIER:
      case INTEGER_LITERAL:
      case FLOAT_LITERAL:
      case STRING_LITERAL:
      case PATTERN_LITERAL:{
        ;
        break;
        }
      default:
        jj_la1[19] = jj_gen;
        break label_9;
      }
ASTAmbiguous jjtn001 = new ASTAmbiguous(JJTAMBIGUOUS);
                                 boolean jjtc001 = true;
                                 jjtree.openNodeScope(jjtn001);
                                 jjtreeOpenNodeScope(jjtn001);
                                 jjtn001.jjtSetFirstToken(getToken(1));
      try {
        Expression();
      } 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);
                                   if (jjtree.nodeCreated()) {
                                    jjtreeCloseNodeScope(jjtn001);
                                   }
                                   jjtn001.jjtSetLastToken(getToken(0));
                                 }
      }
    }
    if (jj_2_13(2)) {
      jj_consume_token(SEMICOL);
    } else {
      ;
    }
}

  final public void IfStatement() throws ParseException {/*@bgen(jjtree) IfStatement */
  ASTIfStatement jjtn000 = new ASTIfStatement(JJTIFSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(IF);
      jj_consume_token(LPAREN);
      Expression();
      jj_consume_token(RPAREN);
      if (jj_2_14(2)) {
        jj_consume_token(LINE);
      } else {
        ;
      }
      Statement();
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case ELSE:{
        jj_consume_token(ELSE);
        Statement();
        break;
        }
      default:
        jj_la1[20] = jj_gen;
        ;
      }
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void WhileStatement() throws ParseException {/*@bgen(jjtree) WhileStatement */
  ASTWhileStatement jjtn000 = new ASTWhileStatement(JJTWHILESTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(WHILE);
      jj_consume_token(LPAREN);
      Expression();
      jj_consume_token(RPAREN);
      if (jj_2_15(2)) {
        jj_consume_token(LINE);
      } else {
        ;
      }
      Statement();
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void ForWithIterator() throws ParseException {/*@bgen(jjtree) ForWithIterator */
  ASTForWithIterator jjtn000 = new ASTForWithIterator(JJTFORWITHITERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      if (jj_2_16(4)) {
        Identifier(true);
        label_10:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case COMMA:{
            ;
            break;
            }
          default:
            jj_la1[21] = jj_gen;
            break label_10;
          }
          jj_consume_token(COMMA);
          Identifier(true);
        }
        jj_consume_token(COLON);
      } else {
        ;
      }
      Expression();
      jj_consume_token(RPAREN);
      if (jj_2_17(2)) {
        jj_consume_token(LINE);
      } else {
        ;
      }
      Statement();
    } 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);
         if (jjtree.nodeCreated()) {
          jjtreeCloseNodeScope(jjtn000);
         }
         jjtn000.jjtSetLastToken(getToken(0));
       }
    }
}

  final public void ExpressionFor() throws ParseException {/*@bgen(jjtree) ExpressionFor */
  ASTExpressionFor jjtn000 = new ASTExpressionFor(JJTEXPRESSIONFOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case NEW:
      case NULL:
      case TRUE:
      case FALSE:
      case LPAREN:
      case LCURLY:
      case LBRACKET:
      case not:
      case plus:
      case minus:
      case tilda:
      case hash:
      case hash_card:
      case reloc:
      case char_id:
      case IDENTIFIER:
      case INTEGER_LITERAL:
      case FLOAT_LITERAL:
      case STRING_LITERAL:
      case PATTERN_LITERAL:{
        Expression();
        label_11:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case COMMA:{
            ;
            break;
            }
          default:
            jj_la1[22] = jj_gen;
            break label_11;
          }
          jj_consume_token(COMMA);
          Expression();
        }
        break;
        }
      default:
        jj_la1[23] = jj_gen;
        ;
      }
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void ForWithCondition() throws ParseException {/*@bgen(jjtree) ForWithCondition */
  ASTForWithCondition jjtn000 = new ASTForWithCondition(JJTFORWITHCONDITION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      ExpressionFor();
      jj_consume_token(SEMICOL);
      ExpressionFor();
      jj_consume_token(SEMICOL);
      ExpressionFor();
      jj_consume_token(RPAREN);
      if (jj_2_18(2)) {
        jj_consume_token(LINE);
      } else {
        ;
      }
      Statement();
    } 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);
          if (jjtree.nodeCreated()) {
           jjtreeCloseNodeScope(jjtn000);
          }
          jjtn000.jjtSetLastToken(getToken(0));
        }
    }
}

  final public void ForeachStatement() throws ParseException {/*@bgen(jjtree) ForeachStatement */
  ASTForeachStatement jjtn000 = new ASTForeachStatement(JJTFOREACHSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(FOR);
      jj_consume_token(LPAREN);
      if (jj_2_19(2147483647)) {
        ForWithCondition();
      } else if (jj_2_20(2147483647)) {
        ForWithIterator();
      } 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);
       if (jjtree.nodeCreated()) {
        jjtreeCloseNodeScope(jjtn000);
       }
       jjtn000.jjtSetLastToken(getToken(0));
     }
    }
}

  final public void ReturnStatement() throws ParseException {/*@bgen(jjtree) ReturnStatement */
  ASTReturnStatement jjtn000 = new ASTReturnStatement(JJTRETURNSTATEMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(RETURN);
      if (jj_2_21(2)) {
        Statement();
      } else {
        ;
      }
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

/***************************************
 *      Expression syntax
 ***************************************/
  final public 
void AssignOperator() throws ParseException {/*@bgen(jjtree) AssignOperator */
  ASTAssignOperator jjtn000 = new ASTAssignOperator(JJTASSIGNOPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case assign:{
        jj_consume_token(assign);
jjtree.closeNodeScope(jjtn000, true);
                jjtc000 = false;
                if (jjtree.nodeCreated()) {
                 jjtreeCloseNodeScope(jjtn000);
                }
                jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = "=" ;
        break;
        }
      case plusa:{
        jj_consume_token(plusa);
jjtree.closeNodeScope(jjtn000, true);
              jjtc000 = false;
              if (jjtree.nodeCreated()) {
               jjtreeCloseNodeScope(jjtn000);
              }
              jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = "+=";
        break;
        }
      case minusa:{
        jj_consume_token(minusa);
jjtree.closeNodeScope(jjtn000, true);
               jjtc000 = false;
               if (jjtree.nodeCreated()) {
                jjtreeCloseNodeScope(jjtn000);
               }
               jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = "-=";
        break;
        }
      case diva:{
        jj_consume_token(diva);
jjtree.closeNodeScope(jjtn000, true);
              jjtc000 = false;
              if (jjtree.nodeCreated()) {
               jjtreeCloseNodeScope(jjtn000);
              }
              jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = "/=";
        break;
        }
      case multa:{
        jj_consume_token(multa);
jjtree.closeNodeScope(jjtn000, true);
              jjtc000 = false;
              if (jjtree.nodeCreated()) {
               jjtreeCloseNodeScope(jjtn000);
              }
              jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = "*=";
        break;
        }
      case anda:{
        jj_consume_token(anda);
jjtree.closeNodeScope(jjtn000, true);
             jjtc000 = false;
             if (jjtree.nodeCreated()) {
              jjtreeCloseNodeScope(jjtn000);
             }
             jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = "&=";
        break;
        }
      case ora:{
        jj_consume_token(ora);
jjtree.closeNodeScope(jjtn000, true);
            jjtc000 = false;
            if (jjtree.nodeCreated()) {
             jjtreeCloseNodeScope(jjtn000);
            }
            jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = "|=";
        break;
        }
      case xora:{
        jj_consume_token(xora);
jjtree.closeNodeScope(jjtn000, true);
             jjtc000 = false;
             if (jjtree.nodeCreated()) {
              jjtreeCloseNodeScope(jjtn000);
             }
             jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = "^=";
        break;
        }
      case moda:{
        jj_consume_token(moda);
jjtree.closeNodeScope(jjtn000, true);
             jjtc000 = false;
             if (jjtree.nodeCreated()) {
              jjtreeCloseNodeScope(jjtn000);
             }
             jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = "%=";
        break;
        }
      default:
        jj_la1[24] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    } finally {
if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void Expression() throws ParseException {
    ConditionalExpression();
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case assign:
    case diva:
    case plusa:
    case minusa:
    case multa:
    case anda:
    case ora:
    case xora:
    case moda:{
      AssignOperator();
ASTAssignment jjtn001 = new ASTAssignment(JJTASSIGNMENT);
                       boolean jjtc001 = true;
                       jjtree.openNodeScope(jjtn001);
                       jjtreeOpenNodeScope(jjtn001);
                       jjtn001.jjtSetFirstToken(getToken(1));
      try {
        if (jj_2_22(3)) {
          MethodDef();
        } else if (jj_2_23(3)) {
          Expression();
        } else {
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case IF:
          case FOR:
          case WHILE:
          case SWITCH:
          case DEL:
          case NEW:
          case NULL:
          case TRUE:
          case FALSE:
          case BREAK:
          case CONTINUE:
          case RETURN:
          case DEF:
          case IMPORT:
          case ATOMIC:
          case CLOCK:
          case BREAL_POINT:
          case LPAREN:
          case LCURLY:
          case LBRACKET:
          case SEMICOL:
          case LINE:
          case LINE_COMMENT:
          case not:
          case plus:
          case minus:
          case tilda:
          case hash:
          case hash_card:
          case hash_lp:
          case reloc:
          case char_id:
          case hash_lt:
          case IDENTIFIER:
          case INTEGER_LITERAL:
          case FLOAT_LITERAL:
          case STRING_LITERAL:
          case PATTERN_LITERAL:{
            Statement();
            break;
            }
          default:
            jj_la1[25] = 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,  3);
                         if (jjtree.nodeCreated()) {
                          jjtreeCloseNodeScope(jjtn001);
                         }
                         jjtn001.jjtSetLastToken(getToken(0));
                       }
      }
      break;
      }
    default:
      jj_la1[26] = jj_gen;
      ;
    }
}

  final public void Assignment() throws ParseException {/*@bgen(jjtree) #Assignment( 3) */
  ASTAssignment jjtn000 = new ASTAssignment(JJTASSIGNMENT);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      ConditionalExpression();
      AssignOperator();
      Expression();
    } 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,  3);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void LValueVar() throws ParseException {/*@bgen(jjtree) Reference */
  ASTReference jjtn000 = new ASTReference(JJTREFERENCE);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      if (jj_2_24(2)) {
        ArrayAccess();
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case IDENTIFIER:{
          Identifier(true);
          DotReference();
          break;
          }
        default:
          jj_la1[27] = 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);
       if (jjtree.nodeCreated()) {
        jjtreeCloseNodeScope(jjtn000);
       }
       jjtn000.jjtSetLastToken(getToken(0));
     }
    }
}

/***************************************
 *      Conditional & relational
 ***************************************/
  final public 
void ConditionalExpression() throws ParseException {
    ConditionalOrExpression();
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case QMARK:
    case NUCO:{
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case QMARK:{
        jj_consume_token(QMARK);
        Expression();
        jj_consume_token(COLON);
ASTTernaryNode jjtn001 = new ASTTernaryNode(JJTTERNARYNODE);
                                   boolean jjtc001 = true;
                                   jjtree.openNodeScope(jjtn001);
                                   jjtreeOpenNodeScope(jjtn001);
                                   jjtn001.jjtSetFirstToken(getToken(1));
        try {
          Expression();
        } 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);
                                     if (jjtree.nodeCreated()) {
                                      jjtreeCloseNodeScope(jjtn001);
                                     }
                                     jjtn001.jjtSetLastToken(getToken(0));
                                   }
        }
        break;
        }
      case NUCO:{
        jj_consume_token(NUCO);
ASTNullCoalesce jjtn002 = new ASTNullCoalesce(JJTNULLCOALESCE);
             boolean jjtc002 = true;
             jjtree.openNodeScope(jjtn002);
             jjtreeOpenNodeScope(jjtn002);
             jjtn002.jjtSetFirstToken(getToken(1));
        try {
          Expression();
        } 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);
               if (jjtree.nodeCreated()) {
                jjtreeCloseNodeScope(jjtn002);
               }
               jjtn002.jjtSetLastToken(getToken(0));
             }
        }
        break;
        }
      default:
        jj_la1[28] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
      }
    default:
      jj_la1[29] = jj_gen;
      ;
    }
}

  final public void ConditionalOrExpression() throws ParseException {
    ConditionalAndExpression();
    label_12:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case OR:{
        ;
        break;
        }
      default:
        jj_la1[30] = jj_gen;
        break label_12;
      }
      jj_consume_token(OR);
ASTOrNode jjtn001 = new ASTOrNode(JJTORNODE);
           boolean jjtc001 = true;
           jjtree.openNodeScope(jjtn001);
           jjtreeOpenNodeScope(jjtn001);
           jjtn001.jjtSetFirstToken(getToken(1));
      try {
        ConditionalAndExpression();
      } 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);
             if (jjtree.nodeCreated()) {
              jjtreeCloseNodeScope(jjtn001);
             }
             jjtn001.jjtSetLastToken(getToken(0));
           }
      }
    }
}

  final public void ConditionalAndExpression() throws ParseException {
    InclusiveOrExpression();
    label_13:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case AND:{
        ;
        break;
        }
      default:
        jj_la1[31] = jj_gen;
        break label_13;
      }
      jj_consume_token(AND);
ASTAndNode jjtn001 = new ASTAndNode(JJTANDNODE);
            boolean jjtc001 = true;
            jjtree.openNodeScope(jjtn001);
            jjtreeOpenNodeScope(jjtn001);
            jjtn001.jjtSetFirstToken(getToken(1));
      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);
              if (jjtree.nodeCreated()) {
               jjtreeCloseNodeScope(jjtn001);
              }
              jjtn001.jjtSetLastToken(getToken(0));
            }
      }
    }
}

  final public void InclusiveOrExpression() throws ParseException {
    ExclusiveOrExpression();
    label_14:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case or:{
        ;
        break;
        }
      default:
        jj_la1[32] = jj_gen;
        break label_14;
      }
      jj_consume_token(or);
ASTBitwiseOrNode jjtn001 = new ASTBitwiseOrNode(JJTBITWISEORNODE);
           boolean jjtc001 = true;
           jjtree.openNodeScope(jjtn001);
           jjtreeOpenNodeScope(jjtn001);
           jjtn001.jjtSetFirstToken(getToken(1));
      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);
             if (jjtree.nodeCreated()) {
              jjtreeCloseNodeScope(jjtn001);
             }
             jjtn001.jjtSetLastToken(getToken(0));
           }
      }
    }
}

  final public void ExclusiveOrExpression() throws ParseException {
    AndExpression();
    label_15:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case xor:{
        ;
        break;
        }
      default:
        jj_la1[33] = jj_gen;
        break label_15;
      }
      jj_consume_token(xor);
ASTBitwiseXorNode jjtn001 = new ASTBitwiseXorNode(JJTBITWISEXORNODE);
            boolean jjtc001 = true;
            jjtree.openNodeScope(jjtn001);
            jjtreeOpenNodeScope(jjtn001);
            jjtn001.jjtSetFirstToken(getToken(1));
      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);
              if (jjtree.nodeCreated()) {
               jjtreeCloseNodeScope(jjtn001);
              }
              jjtn001.jjtSetLastToken(getToken(0));
            }
      }
    }
}

  final public void AndExpression() throws ParseException {
    EqualityExpression();
    label_16:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case and:{
        ;
        break;
        }
      default:
        jj_la1[34] = jj_gen;
        break label_16;
      }
      jj_consume_token(and);
ASTBitwiseAndNode jjtn001 = new ASTBitwiseAndNode(JJTBITWISEANDNODE);
            boolean jjtc001 = true;
            jjtree.openNodeScope(jjtn001);
            jjtreeOpenNodeScope(jjtn001);
            jjtn001.jjtSetFirstToken(getToken(1));
      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);
              if (jjtree.nodeCreated()) {
               jjtreeCloseNodeScope(jjtn001);
              }
              jjtn001.jjtSetLastToken(getToken(0));
            }
      }
    }
}

  final public void EqualityExpression() throws ParseException {
    RelationalExpression();
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case eq:
    case aeq:
    case seq:
    case ne:
    case in:
    case nin:
    case divides:
    case isa:
    case start_with:
    case end_with:
    case in_order:{
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case isa:{
        jj_consume_token(isa);
ASTISANode jjtn001 = new ASTISANode(JJTISANODE);
           boolean jjtc001 = true;
           jjtree.openNodeScope(jjtn001);
           jjtreeOpenNodeScope(jjtn001);
           jjtn001.jjtSetFirstToken(getToken(1));
        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);
             if (jjtree.nodeCreated()) {
              jjtreeCloseNodeScope(jjtn001);
             }
             jjtn001.jjtSetLastToken(getToken(0));
           }
        }
        break;
        }
      case in:{
        jj_consume_token(in);
ASTINNode jjtn002 = new ASTINNode(JJTINNODE);
          boolean jjtc002 = true;
          jjtree.openNodeScope(jjtn002);
          jjtreeOpenNodeScope(jjtn002);
          jjtn002.jjtSetFirstToken(getToken(1));
        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);
            if (jjtree.nodeCreated()) {
             jjtreeCloseNodeScope(jjtn002);
            }
            jjtn002.jjtSetLastToken(getToken(0));
          }
        }
        break;
        }
      case nin:{
        jj_consume_token(nin);
ASTNINNode jjtn003 = new ASTNINNode(JJTNINNODE);
           boolean jjtc003 = true;
           jjtree.openNodeScope(jjtn003);
           jjtreeOpenNodeScope(jjtn003);
           jjtn003.jjtSetFirstToken(getToken(1));
        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);
             if (jjtree.nodeCreated()) {
              jjtreeCloseNodeScope(jjtn003);
             }
             jjtn003.jjtSetLastToken(getToken(0));
           }
        }
        break;
        }
      case divides:{
        jj_consume_token(divides);
ASTDividesNode jjtn004 = new ASTDividesNode(JJTDIVIDESNODE);
               boolean jjtc004 = true;
               jjtree.openNodeScope(jjtn004);
               jjtreeOpenNodeScope(jjtn004);
               jjtn004.jjtSetFirstToken(getToken(1));
        try {
          AdditiveExpression();
        } 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);
                 if (jjtree.nodeCreated()) {
                  jjtreeCloseNodeScope(jjtn004);
                 }
                 jjtn004.jjtSetLastToken(getToken(0));
               }
        }
        break;
        }
      default:
        jj_la1[35] = jj_gen;
        if (jj_2_25(2)) {
          jj_consume_token(seq);
ASTSEQNode jjtn005 = new ASTSEQNode(JJTSEQNODE);
                          boolean jjtc005 = true;
                          jjtree.openNodeScope(jjtn005);
                          jjtreeOpenNodeScope(jjtn005);
                          jjtn005.jjtSetFirstToken(getToken(1));
          try {
            RelationalExpression();
          } 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);
                            if (jjtree.nodeCreated()) {
                             jjtreeCloseNodeScope(jjtn005);
                            }
                            jjtn005.jjtSetLastToken(getToken(0));
                          }
          }
        } else if (jj_2_26(2)) {
          jj_consume_token(aeq);
ASTAEQNode jjtn006 = new ASTAEQNode(JJTAEQNODE);
                          boolean jjtc006 = true;
                          jjtree.openNodeScope(jjtn006);
                          jjtreeOpenNodeScope(jjtn006);
                          jjtn006.jjtSetFirstToken(getToken(1));
          try {
            RelationalExpression();
          } 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);
                            if (jjtree.nodeCreated()) {
                             jjtreeCloseNodeScope(jjtn006);
                            }
                            jjtn006.jjtSetLastToken(getToken(0));
                          }
          }
        } else if (jj_2_27(2)) {
          jj_consume_token(start_with);
ASTStartWithNode jjtn007 = new ASTStartWithNode(JJTSTARTWITHNODE);
                                 boolean jjtc007 = true;
                                 jjtree.openNodeScope(jjtn007);
                                 jjtreeOpenNodeScope(jjtn007);
                                 jjtn007.jjtSetFirstToken(getToken(1));
          try {
            RelationalExpression();
          } catch (Throwable jjte007) {
if (jjtc007) {
                                   jjtree.clearNodeScope(jjtn007);
                                   jjtc007 = false;
                                 } else {
                                   jjtree.popNode();
                                 }
                                 if (jjte007 instanceof RuntimeException) {
                                   {if (true) throw (RuntimeException)jjte007;}
                                 }
                                 if (jjte007 instanceof ParseException) {
                                   {if (true) throw (ParseException)jjte007;}
                                 }
                                 {if (true) throw (Error)jjte007;}
          } finally {
if (jjtc007) {
                                   jjtree.closeNodeScope(jjtn007,  2);
                                   if (jjtree.nodeCreated()) {
                                    jjtreeCloseNodeScope(jjtn007);
                                   }
                                   jjtn007.jjtSetLastToken(getToken(0));
                                 }
          }
        } else if (jj_2_28(2)) {
          jj_consume_token(end_with);
ASTEndWithNode jjtn008 = new ASTEndWithNode(JJTENDWITHNODE);
                               boolean jjtc008 = true;
                               jjtree.openNodeScope(jjtn008);
                               jjtreeOpenNodeScope(jjtn008);
                               jjtn008.jjtSetFirstToken(getToken(1));
          try {
            RelationalExpression();
          } catch (Throwable jjte008) {
if (jjtc008) {
                                 jjtree.clearNodeScope(jjtn008);
                                 jjtc008 = false;
                               } else {
                                 jjtree.popNode();
                               }
                               if (jjte008 instanceof RuntimeException) {
                                 {if (true) throw (RuntimeException)jjte008;}
                               }
                               if (jjte008 instanceof ParseException) {
                                 {if (true) throw (ParseException)jjte008;}
                               }
                               {if (true) throw (Error)jjte008;}
          } finally {
if (jjtc008) {
                                 jjtree.closeNodeScope(jjtn008,  2);
                                 if (jjtree.nodeCreated()) {
                                  jjtreeCloseNodeScope(jjtn008);
                                 }
                                 jjtn008.jjtSetLastToken(getToken(0));
                               }
          }
        } else if (jj_2_29(2)) {
          jj_consume_token(in_order);
ASTInOrderNode jjtn009 = new ASTInOrderNode(JJTINORDERNODE);
                               boolean jjtc009 = true;
                               jjtree.openNodeScope(jjtn009);
                               jjtreeOpenNodeScope(jjtn009);
                               jjtn009.jjtSetFirstToken(getToken(1));
          try {
            RelationalExpression();
          } 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,  2);
                                 if (jjtree.nodeCreated()) {
                                  jjtreeCloseNodeScope(jjtn009);
                                 }
                                 jjtn009.jjtSetLastToken(getToken(0));
                               }
          }
        } else {
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case eq:{
            jj_consume_token(eq);
ASTEQNode jjtn010 = new ASTEQNode(JJTEQNODE);
            boolean jjtc010 = true;
            jjtree.openNodeScope(jjtn010);
            jjtreeOpenNodeScope(jjtn010);
            jjtn010.jjtSetFirstToken(getToken(1));
            try {
              RelationalExpression();
            } 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,  2);
              if (jjtree.nodeCreated()) {
               jjtreeCloseNodeScope(jjtn010);
              }
              jjtn010.jjtSetLastToken(getToken(0));
            }
            }
            break;
            }
          case ne:{
            jj_consume_token(ne);
ASTNENode jjtn011 = new ASTNENode(JJTNENODE);
            boolean jjtc011 = true;
            jjtree.openNodeScope(jjtn011);
            jjtreeOpenNodeScope(jjtn011);
            jjtn011.jjtSetFirstToken(getToken(1));
            try {
              RelationalExpression();
            } catch (Throwable jjte011) {
if (jjtc011) {
              jjtree.clearNodeScope(jjtn011);
              jjtc011 = false;
            } else {
              jjtree.popNode();
            }
            if (jjte011 instanceof RuntimeException) {
              {if (true) throw (RuntimeException)jjte011;}
            }
            if (jjte011 instanceof ParseException) {
              {if (true) throw (ParseException)jjte011;}
            }
            {if (true) throw (Error)jjte011;}
            } finally {
if (jjtc011) {
              jjtree.closeNodeScope(jjtn011,  2);
              if (jjtree.nodeCreated()) {
               jjtreeCloseNodeScope(jjtn011);
              }
              jjtn011.jjtSetLastToken(getToken(0));
            }
            }
            break;
            }
          default:
            jj_la1[36] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
        }
      }
      break;
      }
    default:
      jj_la1[37] = jj_gen;
      ;
    }
}

  final public void RelationalExpression() throws ParseException {
    AdditiveExpression();
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case req:
    case rne:
    case gt:
    case ge:
    case lt:
    case le:{
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case lt:{
        jj_consume_token(lt);
ASTLTNode jjtn001 = new ASTLTNode(JJTLTNODE);
           boolean jjtc001 = true;
           jjtree.openNodeScope(jjtn001);
           jjtreeOpenNodeScope(jjtn001);
           jjtn001.jjtSetFirstToken(getToken(1));
        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);
             if (jjtree.nodeCreated()) {
              jjtreeCloseNodeScope(jjtn001);
             }
             jjtn001.jjtSetLastToken(getToken(0));
           }
        }
        break;
        }
      case gt:{
        jj_consume_token(gt);
ASTGTNode jjtn002 = new ASTGTNode(JJTGTNODE);
           boolean jjtc002 = true;
           jjtree.openNodeScope(jjtn002);
           jjtreeOpenNodeScope(jjtn002);
           jjtn002.jjtSetFirstToken(getToken(1));
        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);
             if (jjtree.nodeCreated()) {
              jjtreeCloseNodeScope(jjtn002);
             }
             jjtn002.jjtSetLastToken(getToken(0));
           }
        }
        break;
        }
      case le:{
        jj_consume_token(le);
ASTLENode jjtn003 = new ASTLENode(JJTLENODE);
           boolean jjtc003 = true;
           jjtree.openNodeScope(jjtn003);
           jjtreeOpenNodeScope(jjtn003);
           jjtn003.jjtSetFirstToken(getToken(1));
        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);
             if (jjtree.nodeCreated()) {
              jjtreeCloseNodeScope(jjtn003);
             }
             jjtn003.jjtSetLastToken(getToken(0));
           }
        }
        break;
        }
      case ge:{
        jj_consume_token(ge);
ASTGENode jjtn004 = new ASTGENode(JJTGENODE);
           boolean jjtc004 = true;
           jjtree.openNodeScope(jjtn004);
           jjtreeOpenNodeScope(jjtn004);
           jjtn004.jjtSetFirstToken(getToken(1));
        try {
          AdditiveExpression();
        } 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);
             if (jjtree.nodeCreated()) {
              jjtreeCloseNodeScope(jjtn004);
             }
             jjtn004.jjtSetLastToken(getToken(0));
           }
        }
        break;
        }
      case req:{
        jj_consume_token(req);
ASTERNode jjtn005 = new ASTERNode(JJTERNODE);
            boolean jjtc005 = true;
            jjtree.openNodeScope(jjtn005);
            jjtreeOpenNodeScope(jjtn005);
            jjtn005.jjtSetFirstToken(getToken(1));
        try {
          AdditiveExpression();
        } 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);
              if (jjtree.nodeCreated()) {
               jjtreeCloseNodeScope(jjtn005);
              }
              jjtn005.jjtSetLastToken(getToken(0));
            }
        }
        break;
        }
      case rne:{
        jj_consume_token(rne);
ASTNRNode jjtn006 = new ASTNRNode(JJTNRNODE);
            boolean jjtc006 = true;
            jjtree.openNodeScope(jjtn006);
            jjtreeOpenNodeScope(jjtn006);
            jjtn006.jjtSetFirstToken(getToken(1));
        try {
          AdditiveExpression();
        } 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);
              if (jjtree.nodeCreated()) {
               jjtreeCloseNodeScope(jjtn006);
              }
              jjtn006.jjtSetLastToken(getToken(0));
            }
        }
        break;
        }
      default:
        jj_la1[38] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      break;
      }
    default:
      jj_la1[39] = jj_gen;
      ;
    }
}

/***************************************
 *      Arithmetic
 ***************************************/
  final public 
void AdditiveExpression() throws ParseException {/*@bgen(jjtree) #AdditiveNode(> 1) */
  ASTAdditiveNode jjtn000 = new ASTAdditiveNode(JJTADDITIVENODE);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      MultiplicativeExpression();
      label_17:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case plus:
        case minus:{
          ;
          break;
          }
        default:
          jj_la1[40] = jj_gen;
          break label_17;
        }
        AdditiveOperator();
        MultiplicativeExpression();
      }
    } 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, jjtree.nodeArity() > 1);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void AdditiveOperator() throws ParseException {/*@bgen(jjtree) AdditiveOperator */
  ASTAdditiveOperator jjtn000 = new ASTAdditiveOperator(JJTADDITIVEOPERATOR);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case plus:{
        jj_consume_token(plus);
jjtree.closeNodeScope(jjtn000, true);
             jjtc000 = false;
             if (jjtree.nodeCreated()) {
              jjtreeCloseNodeScope(jjtn000);
             }
             jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = "+";
        break;
        }
      case minus:{
        jj_consume_token(minus);
jjtree.closeNodeScope(jjtn000, true);
              jjtc000 = false;
              if (jjtree.nodeCreated()) {
               jjtreeCloseNodeScope(jjtn000);
              }
              jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = "-";
        break;
        }
      default:
        jj_la1[41] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    } finally {
if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void MultiplicativeExpression() throws ParseException {
    UnaryExpression();
    label_18:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case mod:
      case div:
      case mult:{
        ;
        break;
        }
      default:
        jj_la1[42] = jj_gen;
        break label_18;
      }
      if (jj_2_30(2)) {
        jj_consume_token(mult);
        jj_consume_token(mult);
ASTPowNode jjtn001 = new ASTPowNode(JJTPOWNODE);
                                 boolean jjtc001 = true;
                                 jjtree.openNodeScope(jjtn001);
                                 jjtreeOpenNodeScope(jjtn001);
                                 jjtn001.jjtSetFirstToken(getToken(1));
        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);
                                   if (jjtree.nodeCreated()) {
                                    jjtreeCloseNodeScope(jjtn001);
                                   }
                                   jjtn001.jjtSetLastToken(getToken(0));
                                 }
        }
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case mult:{
          jj_consume_token(mult);
ASTMulNode jjtn002 = new ASTMulNode(JJTMULNODE);
            boolean jjtc002 = true;
            jjtree.openNodeScope(jjtn002);
            jjtreeOpenNodeScope(jjtn002);
            jjtn002.jjtSetFirstToken(getToken(1));
          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);
              if (jjtree.nodeCreated()) {
               jjtreeCloseNodeScope(jjtn002);
              }
              jjtn002.jjtSetLastToken(getToken(0));
            }
          }
          break;
          }
        case div:{
          jj_consume_token(div);
ASTDivNode jjtn003 = new ASTDivNode(JJTDIVNODE);
            boolean jjtc003 = true;
            jjtree.openNodeScope(jjtn003);
            jjtreeOpenNodeScope(jjtn003);
            jjtn003.jjtSetFirstToken(getToken(1));
          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);
              if (jjtree.nodeCreated()) {
               jjtreeCloseNodeScope(jjtn003);
              }
              jjtn003.jjtSetLastToken(getToken(0));
            }
          }
          break;
          }
        case mod:{
          jj_consume_token(mod);
ASTModNode jjtn004 = new ASTModNode(JJTMODNODE);
            boolean jjtc004 = true;
            jjtree.openNodeScope(jjtn004);
            jjtreeOpenNodeScope(jjtn004);
            jjtn004.jjtSetFirstToken(getToken(1));
          try {
            UnaryExpression();
          } 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);
              if (jjtree.nodeCreated()) {
               jjtreeCloseNodeScope(jjtn004);
              }
              jjtn004.jjtSetLastToken(getToken(0));
            }
          }
          break;
          }
        default:
          jj_la1[43] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
    }
}

  final public void UnaryExpression() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case hash_card:{
      jj_consume_token(hash_card);
      AdditiveExpression();
ASTUnarySizeNode jjtn001 = new ASTUnarySizeNode(JJTUNARYSIZENODE);
                                     boolean jjtc001 = true;
                                     jjtree.openNodeScope(jjtn001);
                                     jjtreeOpenNodeScope(jjtn001);
                                     jjtn001.jjtSetFirstToken(getToken(1));
      try {
        jj_consume_token(or);
      } finally {
if (jjtc001) {
                                       jjtree.closeNodeScope(jjtn001,  1);
                                       if (jjtree.nodeCreated()) {
                                        jjtreeCloseNodeScope(jjtn001);
                                       }
                                       jjtn001.jjtSetLastToken(getToken(0));
                                     }
      }
      break;
      }
    case minus:{
      jj_consume_token(minus);
ASTUnaryMinusNode jjtn002 = new ASTUnaryMinusNode(JJTUNARYMINUSNODE);
            boolean jjtc002 = true;
            jjtree.openNodeScope(jjtn002);
            jjtreeOpenNodeScope(jjtn002);
            jjtn002.jjtSetFirstToken(getToken(1));
      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);
              if (jjtree.nodeCreated()) {
               jjtreeCloseNodeScope(jjtn002);
              }
              jjtn002.jjtSetLastToken(getToken(0));
            }
      }
      break;
      }
    case plus:{
      jj_consume_token(plus);
ASTUnaryPlusNode jjtn003 = new ASTUnaryPlusNode(JJTUNARYPLUSNODE);
           boolean jjtc003 = true;
           jjtree.openNodeScope(jjtn003);
           jjtreeOpenNodeScope(jjtn003);
           jjtn003.jjtSetFirstToken(getToken(1));
      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);
             if (jjtree.nodeCreated()) {
              jjtreeCloseNodeScope(jjtn003);
             }
             jjtn003.jjtSetLastToken(getToken(0));
           }
      }
      break;
      }
    case tilda:{
      jj_consume_token(tilda);
ASTBitwiseComplNode jjtn004 = new ASTBitwiseComplNode(JJTBITWISECOMPLNODE);
            boolean jjtc004 = true;
            jjtree.openNodeScope(jjtn004);
            jjtreeOpenNodeScope(jjtn004);
            jjtn004.jjtSetFirstToken(getToken(1));
      try {
        UnaryExpression();
      } 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,  1);
              if (jjtree.nodeCreated()) {
               jjtreeCloseNodeScope(jjtn004);
              }
              jjtn004.jjtSetLastToken(getToken(0));
            }
      }
      break;
      }
    case not:{
      jj_consume_token(not);
ASTNotNode jjtn005 = new ASTNotNode(JJTNOTNODE);
          boolean jjtc005 = true;
          jjtree.openNodeScope(jjtn005);
          jjtreeOpenNodeScope(jjtn005);
          jjtn005.jjtSetFirstToken(getToken(1));
      try {
        UnaryExpression();
      } 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,  1);
            if (jjtree.nodeCreated()) {
             jjtreeCloseNodeScope(jjtn005);
            }
            jjtn005.jjtSetLastToken(getToken(0));
          }
      }
      break;
      }
    case NEW:
    case NULL:
    case TRUE:
    case FALSE:
    case LPAREN:
    case LCURLY:
    case LBRACKET:
    case hash:
    case reloc:
    case char_id:
    case IDENTIFIER:
    case INTEGER_LITERAL:
    case FLOAT_LITERAL:
    case STRING_LITERAL:
    case PATTERN_LITERAL:{
      PrimaryExpression();
      break;
      }
    default:
      jj_la1[44] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
}

/***************************************
 *      Identifier & Literals
 ***************************************/
  final public 
void Identifier(boolean top) throws ParseException {/*@bgen(jjtree) Identifier */
    ASTIdentifier jjtn000 = new ASTIdentifier(JJTIDENTIFIER);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtreeOpenNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));Token t;
    try {
      t = jj_consume_token(IDENTIFIER);
jjtree.closeNodeScope(jjtn000, true);
                     jjtc000 = false;
                     if (jjtree.nodeCreated()) {
                      jjtreeCloseNodeScope(jjtn000);
                     }
                     jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = t.image;
    } finally {
if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void StringIdentifier() throws ParseException {/*@bgen(jjtree) Identifier */
    ASTIdentifier jjtn000 = new ASTIdentifier(JJTIDENTIFIER);
    boolean jjtc000 = true;
    jjtree.openNodeScope(jjtn000);
    jjtreeOpenNodeScope(jjtn000);
    jjtn000.jjtSetFirstToken(getToken(1));Token t;
    try {
      t = jj_consume_token(STRING_LITERAL);
jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    if (jjtree.nodeCreated()) {
     jjtreeCloseNodeScope(jjtn000);
    }
    jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = Parser.buildString(t.image, true);
    } finally {
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
      if (jjtree.nodeCreated()) {
       jjtreeCloseNodeScope(jjtn000);
      }
      jjtn000.jjtSetLastToken(getToken(0));
    }
    }
}

  final public void Literal() throws ParseException {Token t;
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case INTEGER_LITERAL:{
      IntegerLiteral();
      break;
      }
    case FLOAT_LITERAL:{
      FloatLiteral();
      break;
      }
    case TRUE:
    case FALSE:{
      BooleanLiteral();
      break;
      }
    case hash:
    case reloc:
    case char_id:
    case STRING_LITERAL:{
      ZStringLiteral();
      break;
      }
    case NULL:{
      NullLiteral();
      break;
      }
    case PATTERN_LITERAL:{
      PatternLiteral();
      break;
      }
    default:
      jj_la1[45] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
}

  final public void NullLiteral() throws ParseException {/*@bgen(jjtree) NullLiteral */
  ASTNullLiteral jjtn000 = new ASTNullLiteral(JJTNULLLITERAL);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(NULL);
    } finally {
if (jjtc000) {
        jjtree.closeNodeScope(jjtn000, true);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void BooleanLiteral() throws ParseException {
    switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
    case TRUE:{
ASTTrueNode jjtn001 = new ASTTrueNode(JJTTRUENODE);
    boolean jjtc001 = true;
    jjtree.openNodeScope(jjtn001);
    jjtreeOpenNodeScope(jjtn001);
    jjtn001.jjtSetFirstToken(getToken(1));
      try {
        jj_consume_token(TRUE);
      } finally {
if (jjtc001) {
      jjtree.closeNodeScope(jjtn001, true);
      if (jjtree.nodeCreated()) {
       jjtreeCloseNodeScope(jjtn001);
      }
      jjtn001.jjtSetLastToken(getToken(0));
    }
      }
      break;
      }
    case FALSE:{
ASTFalseNode jjtn002 = new ASTFalseNode(JJTFALSENODE);
    boolean jjtc002 = true;
    jjtree.openNodeScope(jjtn002);
    jjtreeOpenNodeScope(jjtn002);
    jjtn002.jjtSetFirstToken(getToken(1));
      try {
        jj_consume_token(FALSE);
      } finally {
if (jjtc002) {
      jjtree.closeNodeScope(jjtn002, true);
      if (jjtree.nodeCreated()) {
       jjtreeCloseNodeScope(jjtn002);
      }
      jjtn002.jjtSetLastToken(getToken(0));
    }
      }
      break;
      }
    default:
      jj_la1[46] = jj_gen;
      jj_consume_token(-1);
      throw new ParseException();
    }
}

  final public void IntegerLiteral() throws ParseException {/*@bgen(jjtree) NumberLiteral */
  ASTNumberLiteral jjtn000 = new ASTNumberLiteral(JJTNUMBERLITERAL);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));Token t;
    try {
      t = jj_consume_token(INTEGER_LITERAL);
jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    if (jjtree.nodeCreated()) {
     jjtreeCloseNodeScope(jjtn000);
    }
    jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = t.image; jjtn000.setNatural(t.image);
    } finally {
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
      if (jjtree.nodeCreated()) {
       jjtreeCloseNodeScope(jjtn000);
      }
      jjtn000.jjtSetLastToken(getToken(0));
    }
    }
}

  final public void FloatLiteral() throws ParseException {/*@bgen(jjtree) NumberLiteral */
  ASTNumberLiteral jjtn000 = new ASTNumberLiteral(JJTNUMBERLITERAL);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));Token t;
    try {
      t = jj_consume_token(FLOAT_LITERAL);
jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    if (jjtree.nodeCreated()) {
     jjtreeCloseNodeScope(jjtn000);
    }
    jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = t.image; jjtn000.setReal(t.image);
    } finally {
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
      if (jjtree.nodeCreated()) {
       jjtreeCloseNodeScope(jjtn000);
      }
      jjtn000.jjtSetLastToken(getToken(0));
    }
    }
}

  final public void PatternLiteral() throws ParseException {/*@bgen(jjtree) PatternLiteral */
  ASTPatternLiteral jjtn000 = new ASTPatternLiteral(JJTPATTERNLITERAL);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));Token t;
    try {
      t = jj_consume_token(PATTERN_LITERAL);
jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    if (jjtree.nodeCreated()) {
     jjtreeCloseNodeScope(jjtn000);
    }
    jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = t.image; jjtn000.setPattern(t.image);
    } finally {
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
      if (jjtree.nodeCreated()) {
       jjtreeCloseNodeScope(jjtn000);
      }
      jjtn000.jjtSetLastToken(getToken(0));
    }
    }
}

  final public void StringLiteral() throws ParseException {/*@bgen(jjtree) StringLiteral */
   ASTStringLiteral jjtn000 = new ASTStringLiteral(JJTSTRINGLITERAL);
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
   jjtreeOpenNodeScope(jjtn000);
   jjtn000.jjtSetFirstToken(getToken(1));Token t;
    try {
      t = jj_consume_token(STRING_LITERAL);
jjtree.closeNodeScope(jjtn000, true);
    jjtc000 = false;
    if (jjtree.nodeCreated()) {
     jjtreeCloseNodeScope(jjtn000);
    }
    jjtn000.jjtSetLastToken(getToken(0));
jjtn000.image = Parser.buildString(t.image, true);
    } finally {
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
      if (jjtree.nodeCreated()) {
       jjtreeCloseNodeScope(jjtn000);
      }
      jjtn000.jjtSetLastToken(getToken(0));
    }
    }
}

  final public void ArrayRange() throws ParseException {/*@bgen(jjtree) ArrayRange */
  ASTArrayRange jjtn000 = new ASTArrayRange(JJTARRAYRANGE);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(LBRACKET);
      Expression();
      jj_consume_token(COLON);
      Expression();
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case COLON:{
        jj_consume_token(COLON);
        Expression();
        break;
        }
      default:
        jj_la1[47] = jj_gen;
        ;
      }
      jj_consume_token(RBRACKET);
    } 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);
       if (jjtree.nodeCreated()) {
        jjtreeCloseNodeScope(jjtn000);
       }
       jjtn000.jjtSetLastToken(getToken(0));
     }
    }
}

  final public void ArrayLiteral() throws ParseException {/*@bgen(jjtree) ArrayLiteral */
  ASTArrayLiteral jjtn000 = new ASTArrayLiteral(JJTARRAYLITERAL);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(LBRACKET);
      if (jj_2_31(2)) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case LINE:{
          jj_consume_token(LINE);
          break;
          }
        default:
          jj_la1[48] = jj_gen;
          ;
        }
        Expression();
        label_19:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case COMMA:{
            ;
            break;
            }
          default:
            jj_la1[49] = jj_gen;
            break label_19;
          }
          jj_consume_token(COMMA);
          Expression();
        }
      } else {
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case LINE:{
        jj_consume_token(LINE);
        break;
        }
      default:
        jj_la1[50] = jj_gen;
        ;
      }
      jj_consume_token(RBRACKET);
    } 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);
       if (jjtree.nodeCreated()) {
        jjtreeCloseNodeScope(jjtn000);
       }
       jjtn000.jjtSetLastToken(getToken(0));
     }
    }
}

  final public void MapLiteral() throws ParseException {/*@bgen(jjtree) MapLiteral */
  ASTMapLiteral jjtn000 = new ASTMapLiteral(JJTMAPLITERAL);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(LCURLY);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case LINE:{
        jj_consume_token(LINE);
        break;
        }
      default:
        jj_la1[51] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case NEW:
      case NULL:
      case TRUE:
      case FALSE:
      case LPAREN:
      case LCURLY:
      case LBRACKET:
      case not:
      case plus:
      case minus:
      case tilda:
      case hash:
      case hash_card:
      case reloc:
      case char_id:
      case IDENTIFIER:
      case INTEGER_LITERAL:
      case FLOAT_LITERAL:
      case STRING_LITERAL:
      case PATTERN_LITERAL:{
        MapEntry();
        label_20:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case COMMA:{
            ;
            break;
            }
          default:
            jj_la1[52] = jj_gen;
            break label_20;
          }
          jj_consume_token(COMMA);
          MapEntry();
        }
        break;
        }
      case COLON:{
        jj_consume_token(COLON);
        break;
        }
      default:
        jj_la1[53] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      jj_consume_token(RCURLY);
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void MapEntry() throws ParseException {/*@bgen(jjtree) MapEntry */
  ASTMapEntry jjtn000 = new ASTMapEntry(JJTMAPENTRY);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      if (jj_2_32(3)) {
        Expression();
        jj_consume_token(COLON);
        Expression();
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case LINE:{
          jj_consume_token(LINE);
          break;
          }
        default:
          jj_la1[54] = jj_gen;
          ;
        }
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case NEW:
        case NULL:
        case TRUE:
        case FALSE:
        case LPAREN:
        case LCURLY:
        case LBRACKET:
        case not:
        case plus:
        case minus:
        case tilda:
        case hash:
        case hash_card:
        case reloc:
        case char_id:
        case IDENTIFIER:
        case INTEGER_LITERAL:
        case FLOAT_LITERAL:
        case STRING_LITERAL:
        case PATTERN_LITERAL:{
          Expression();
          jj_consume_token(COLON);
          MethodDef();
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case LINE:{
            jj_consume_token(LINE);
            break;
            }
          default:
            jj_la1[55] = jj_gen;
            ;
          }
          break;
          }
        default:
          jj_la1[56] = 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

/***************************************
 *      Functions & Methods
 ***************************************/
  final public 
void MapperLambda() throws ParseException {/*@bgen(jjtree) MapperLambda */
  ASTMapperLambda jjtn000 = new ASTMapperLambda(JJTMAPPERLAMBDA);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case AS:{
        jj_consume_token(AS);
        break;
        }
      case mapper:{
        jj_consume_token(mapper);
        break;
        }
      default:
        jj_la1[57] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case DEF:{
        MethodDef();
        break;
        }
      case IDENTIFIER:{
        Identifier();
        break;
        }
      case LCURLY:{
        Block();
        break;
        }
      default:
        jj_la1[58] = 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void PredicateLambda() throws ParseException {/*@bgen(jjtree) PredicateLambda */
  ASTPredicateLambda jjtn000 = new ASTPredicateLambda(JJTPREDICATELAMBDA);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case WHERE:{
        jj_consume_token(WHERE);
        break;
        }
      case such_that:{
        jj_consume_token(such_that);
        break;
        }
      default:
        jj_la1[59] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case DEF:{
        MethodDef();
        break;
        }
      case IDENTIFIER:{
        Identifier();
        break;
        }
      case LCURLY:{
        Block();
        break;
        }
      default:
        jj_la1[60] = 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void ArgDef() throws ParseException {/*@bgen(jjtree) ArgDef */
  ASTArgDef jjtn000 = new ASTArgDef(JJTARGDEF);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      if (jj_2_33(3)) {
        Identifier();
        jj_consume_token(assign);
        MethodDef();
      } else if (jj_2_34(2)) {
        Identifier();
        jj_consume_token(assign);
        Expression();
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case DEF:{
          MethodDef();
          break;
          }
        case WHERE:
        case AS:
        case mapper:
        case such_that:{
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case AS:
          case mapper:{
            MapperLambda();
            break;
            }
          case WHERE:
          case such_that:{
            PredicateLambda();
            break;
            }
          default:
            jj_la1[61] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
          }
          break;
          }
        case NEW:
        case NULL:
        case TRUE:
        case FALSE:
        case LPAREN:
        case LCURLY:
        case LBRACKET:
        case not:
        case plus:
        case minus:
        case tilda:
        case hash:
        case hash_card:
        case reloc:
        case char_id:
        case IDENTIFIER:
        case INTEGER_LITERAL:
        case FLOAT_LITERAL:
        case STRING_LITERAL:
        case PATTERN_LITERAL:{
          Expression();
          break;
          }
        default:
          jj_la1[62] = 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);
           if (jjtree.nodeCreated()) {
            jjtreeCloseNodeScope(jjtn000);
           }
           jjtn000.jjtSetLastToken(getToken(0));
         }
    }
}

  final public void MethodArguments() throws ParseException {/*@bgen(jjtree) MethodArguments */
  ASTMethodArguments jjtn000 = new ASTMethodArguments(JJTMETHODARGUMENTS);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      ArgDef();
      label_21:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case COMMA:{
          ;
          break;
          }
        default:
          jj_la1[63] = jj_gen;
          break label_21;
        }
        jj_consume_token(COMMA);
        ArgDef();
      }
    } 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);
       if (jjtree.nodeCreated()) {
        jjtreeCloseNodeScope(jjtn000);
       }
       jjtn000.jjtSetLastToken(getToken(0));
     }
    }
}

  final public void Method() throws ParseException {/*@bgen(jjtree) MethodNode */
  ASTMethodNode jjtn000 = new ASTMethodNode(JJTMETHODNODE);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      Identifier(true);
      jj_consume_token(LPAREN);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case WHERE:
      case NEW:
      case NULL:
      case TRUE:
      case FALSE:
      case DEF:
      case AS:
      case LPAREN:
      case LCURLY:
      case LBRACKET:
      case not:
      case plus:
      case minus:
      case tilda:
      case hash:
      case hash_card:
      case reloc:
      case char_id:
      case mapper:
      case such_that:
      case IDENTIFIER:
      case INTEGER_LITERAL:
      case FLOAT_LITERAL:
      case STRING_LITERAL:
      case PATTERN_LITERAL:{
        MethodArguments();
        break;
        }
      default:
        jj_la1[64] = jj_gen;
        ;
      }
      jj_consume_token(RPAREN);
      label_22:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case WHERE:
        case AS:
        case mapper:
        case such_that:{
          ;
          break;
          }
        default:
          jj_la1[65] = jj_gen;
          break label_22;
        }
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case AS:
        case mapper:{
          MapperLambda();
          break;
          }
        case WHERE:
        case such_that:{
          PredicateLambda();
          break;
          }
        default:
          jj_la1[66] = 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);
       if (jjtree.nodeCreated()) {
        jjtreeCloseNodeScope(jjtn000);
       }
       jjtn000.jjtSetLastToken(getToken(0));
     }
    }
}

  final public void Constructor() throws ParseException {/*@bgen(jjtree) #ConstructorNode(true) */
  ASTConstructorNode jjtn000 = new ASTConstructorNode(JJTCONSTRUCTORNODE);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(NEW);
      jj_consume_token(LPAREN);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case WHERE:
      case NEW:
      case NULL:
      case TRUE:
      case FALSE:
      case DEF:
      case AS:
      case LPAREN:
      case LCURLY:
      case LBRACKET:
      case not:
      case plus:
      case minus:
      case tilda:
      case hash:
      case hash_card:
      case reloc:
      case char_id:
      case mapper:
      case such_that:
      case IDENTIFIER:
      case INTEGER_LITERAL:
      case FLOAT_LITERAL:
      case STRING_LITERAL:
      case PATTERN_LITERAL:{
        ArgDef();
        label_23:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case COMMA:{
            ;
            break;
            }
          default:
            jj_la1[67] = jj_gen;
            break label_23;
          }
          jj_consume_token(COMMA);
          ArgDef();
        }
        break;
        }
      default:
        jj_la1[68] = jj_gen;
        ;
      }
      jj_consume_token(RPAREN);
    } 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);
      if (jjtree.nodeCreated()) {
       jjtreeCloseNodeScope(jjtn000);
      }
      jjtn000.jjtSetLastToken(getToken(0));
    }
    }
}

/***************************************
 *     References
 ***************************************/
  final public 
void PrimaryExpression() throws ParseException {
    if (jj_2_35(2)) {
      Reference();
    } else if (jj_2_36(2147483647)) {
      Constructor();
    } else if (jj_2_37(2147483647)) {
      MapLiteral();
    } else if (jj_2_38(2147483647)) {
      ArrayLiteral();
    } else {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case NULL:
      case TRUE:
      case FALSE:
      case hash:
      case reloc:
      case char_id:
      case INTEGER_LITERAL:
      case FLOAT_LITERAL:
      case STRING_LITERAL:
      case PATTERN_LITERAL:{
        Literal();
        break;
        }
      default:
        jj_la1[69] = jj_gen;
        jj_consume_token(-1);
        throw new ParseException();
      }
    }
}

  final public void ArrayIndex() throws ParseException {/*@bgen(jjtree) ArrayIndex */
  ASTArrayIndex jjtn000 = new ASTArrayIndex(JJTARRAYINDEX);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      Expression();
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case COLON:{
        jj_consume_token(COLON);
        Expression();
        break;
        }
      default:
        jj_la1[70] = jj_gen;
        ;
      }
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void ArrayAccess() throws ParseException {/*@bgen(jjtree) ArrayAccess */
  ASTArrayAccess jjtn000 = new ASTArrayAccess(JJTARRAYACCESS);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      Identifier(true);
      label_24:
      while (true) {
        jj_consume_token(LBRACKET);
        ArrayIndex();
        jj_consume_token(RBRACKET);
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case LBRACKET:{
          ;
          break;
          }
        default:
          jj_la1[71] = jj_gen;
          break label_24;
        }
      }
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void DotReference() throws ParseException {
    label_25:
    while (true) {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case DOT:{
        ;
        break;
        }
      default:
        jj_la1[72] = jj_gen;
        break label_25;
      }
      jj_consume_token(DOT);
      if (jj_2_40(2147483647)) {
        ArrayAccess();
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case IDENTIFIER:
        case INTEGER_LITERAL:
        case STRING_LITERAL:{
          if (jj_2_39(2)) {
            Method();
          } else {
            switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
            case IDENTIFIER:{
              Identifier();
              break;
              }
            case INTEGER_LITERAL:{
              IntegerLiteral();
              break;
              }
            case STRING_LITERAL:{
              StringIdentifier();
              break;
              }
            default:
              jj_la1[73] = jj_gen;
              jj_consume_token(-1);
              throw new ParseException();
            }
          }
          break;
          }
        default:
          jj_la1[74] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
    }
}

  final public void Reference() throws ParseException {/*@bgen(jjtree) Reference */
  ASTReference jjtn000 = new ASTReference(JJTREFERENCE);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      if (jj_2_41(2147483647)) {
        Constructor();
      } else if (jj_2_42(2147483647)) {
        ArrayAccess();
      } else if (jj_2_43(2147483647)) {
        Method();
      } else if (jj_2_44(2147483647)) {
        MapLiteral();
      } else if (jj_2_45(2147483647)) {
        ArrayRange();
      } else if (jj_2_46(2147483647)) {
        ArrayLiteral();
      } else if (jj_2_47(2147483647)) {
        ReferenceExpression();
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case hash:
        case reloc:
        case char_id:
        case STRING_LITERAL:{
          ZStringLiteral();
          break;
          }
        case IDENTIFIER:{
          Identifier(true);
          break;
          }
        default:
          jj_la1[75] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
      }
      DotReference();
    } 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);
      if (jjtree.nodeCreated()) {
       jjtreeCloseNodeScope(jjtn000);
      }
      jjtn000.jjtSetLastToken(getToken(0));
    }
    }
}

/**
 * ReferenceExpression is a subclass of ArrayAccess
 */
  final public void ReferenceExpression() throws ParseException {/*@bgen(jjtree) ReferenceExpression */
  ASTReferenceExpression jjtn000 = new ASTReferenceExpression(JJTREFERENCEEXPRESSION);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(LPAREN);
      Expression();
      jj_consume_token(RPAREN);
      label_26:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case LBRACKET:{
          ;
          break;
          }
        default:
          jj_la1[76] = jj_gen;
          break label_26;
        }
        jj_consume_token(LBRACKET);
        Expression();
        jj_consume_token(RBRACKET);
      }
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void ClassDef() throws ParseException {/*@bgen(jjtree) ClassDef */
  ASTClassDef jjtn000 = new ASTClassDef(JJTCLASSDEF);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      if (jj_2_48(3)) {
        jj_consume_token(DEF);
        Identifier();
        jj_consume_token(COLON);
        MapLiteral();
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case DEF:{
          jj_consume_token(DEF);
          Identifier();
          jj_consume_token(LCURLY);
          label_27:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
            case LINE:{
              ;
              break;
              }
            default:
              jj_la1[77] = jj_gen;
              break label_27;
            }
            jj_consume_token(LINE);
          }
          label_28:
          while (true) {
            switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
            case DEF:{
              ;
              break;
              }
            default:
              jj_la1[78] = jj_gen;
              break label_28;
            }
            MethodDef();
            label_29:
            while (true) {
              switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
              case LINE:{
                ;
                break;
                }
              default:
                jj_la1[79] = jj_gen;
                break label_29;
              }
              jj_consume_token(LINE);
            }
          }
          jj_consume_token(RCURLY);
          break;
          }
        default:
          jj_la1[80] = 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  final public void ParamDef() throws ParseException {/*@bgen(jjtree) ParamDef */
  ASTParamDef jjtn000 = new ASTParamDef(JJTPARAMDEF);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      if (jj_2_49(3)) {
        Identifier();
        jj_consume_token(assign);
        MethodDef();
      } else if (jj_2_50(2)) {
        Identifier();
        jj_consume_token(assign);
        Expression();
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case IDENTIFIER:{
          Identifier();
          break;
          }
        default:
          jj_la1[81] = 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);
          if (jjtree.nodeCreated()) {
           jjtreeCloseNodeScope(jjtn000);
          }
          jjtn000.jjtSetLastToken(getToken(0));
        }
    }
}

  final public void MethodParams() throws ParseException {/*@bgen(jjtree) MethodParams */
  ASTMethodParams jjtn000 = new ASTMethodParams(JJTMETHODPARAMS);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case IDENTIFIER:{
        ParamDef();
        label_30:
        while (true) {
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case COMMA:{
            ;
            break;
            }
          default:
            jj_la1[82] = jj_gen;
            break label_30;
          }
          jj_consume_token(COMMA);
          ParamDef();
        }
        break;
        }
      default:
        jj_la1[83] = jj_gen;
        ;
      }
    } 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);
       if (jjtree.nodeCreated()) {
        jjtreeCloseNodeScope(jjtn000);
       }
       jjtn000.jjtSetLastToken(getToken(0));
     }
    }
}

  final public void MethodDef() throws ParseException {/*@bgen(jjtree) MethodDef */
  ASTMethodDef jjtn000 = new ASTMethodDef(JJTMETHODDEF);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
  jjtreeOpenNodeScope(jjtn000);
  jjtn000.jjtSetFirstToken(getToken(1));
    try {
      jj_consume_token(DEF);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case IDENTIFIER:{
        Identifier();
        break;
        }
      default:
        jj_la1[84] = jj_gen;
        ;
      }
      jj_consume_token(LPAREN);
      MethodParams();
      jj_consume_token(RPAREN);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case LINE:{
        jj_consume_token(LINE);
        break;
        }
      default:
        jj_la1[85] = jj_gen;
        ;
      }
      Block();
    } 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);
        if (jjtree.nodeCreated()) {
         jjtreeCloseNodeScope(jjtn000);
        }
        jjtn000.jjtSetLastToken(getToken(0));
      }
    }
}

  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_2_17(int xla)
 {
    jj_la = xla; jj_lastpos = jj_scanpos = token;
    try { return (!jj_3_17()); }
    catch(LookaheadSuccess ls) { return true; }
    finally { jj_save(16, xla); }
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  private boolean jj_3R_ArgDef_757_8_238()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_ArgDef_757_23_246()) {
    jj_scanpos = xsp;
    if (jj_3R_ArgDef_757_40_247()) return true;
    }
    return false;
  }

  private boolean jj_3R_ArgDef_755_8_237()
 {
    if (jj_3R_MethodDef_890_5_33()) return true;
    return false;
  }

  private boolean jj_3R_ExpressionStatement_361_19_52()
 {
    if (jj_3R_Expression_433_6_35()) return true;
    return false;
  }

  private boolean jj_3_34()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    if (jj_scan_token(assign)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    return false;
  }

  private boolean jj_3R_WhileStatement_372_5_98()
 {
    if (jj_scan_token(WHILE)) return true;
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    if (jj_scan_token(RPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_15()) jj_scanpos = xsp;
    if (jj_3R_Statement_216_5_39()) return true;
    return false;
  }

  private boolean jj_3R_ArgDef_751_8_230()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_33()) {
    jj_scanpos = xsp;
    if (jj_3_34()) {
    jj_scanpos = xsp;
    if (jj_3R_ArgDef_755_8_237()) {
    jj_scanpos = xsp;
    if (jj_3R_ArgDef_757_8_238()) {
    jj_scanpos = xsp;
    if (jj_3R_ArgDef_759_8_239()) return true;
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3_9()
 {
    if (jj_3R_Statement_216_5_39()) return true;
    return false;
  }

  private boolean jj_3_33()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    if (jj_scan_token(assign)) return true;
    if (jj_3R_MethodDef_890_5_33()) return true;
    return false;
  }

  private boolean jj_3R_ArrayLiteral_701_57_46()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    return false;
  }

  private boolean jj_3R_ImportStatement_356_17_131()
 {
    if (jj_3R_HardImport_351_4_142()) return true;
    return false;
  }

  private boolean jj_3R_IfStatement_366_5_96()
 {
    if (jj_scan_token(IF)) return true;
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    if (jj_scan_token(RPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_14()) jj_scanpos = xsp;
    if (jj_3R_Statement_216_5_39()) return true;
    xsp = jj_scanpos;
    if (jj_3R_IfStatement_366_78_169()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_HardImport_351_19_189()
 {
    if (jj_scan_token(DOT)) return true;
    if (jj_3R_Identifier_611_5_40()) return true;
    return false;
  }

  private boolean jj_3R_PredicateLambda_745_7_245()
 {
    if (jj_3R_Block_320_5_31()) return true;
    return false;
  }

  private boolean jj_3R_PredicateLambda_743_6_244()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    return false;
  }

  private boolean jj_3R_ExpressionStatement_361_5_32()
 {
    if (jj_3R_Expression_433_6_35()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_ExpressionStatement_361_19_52()) { jj_scanpos = xsp; break; }
    }
    xsp = jj_scanpos;
    if (jj_3_13()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_ArrayRange_696_52_235()
 {
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    return false;
  }

  private boolean jj_3R_PredicateLambda_741_6_243()
 {
    if (jj_3R_MethodDef_890_5_33()) return true;
    return false;
  }

  private boolean jj_3R_PredicateLambda_740_5_234()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(11)) {
    jj_scanpos = xsp;
    if (jj_scan_token(87)) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_PredicateLambda_741_6_243()) {
    jj_scanpos = xsp;
    if (jj_3R_PredicateLambda_743_6_244()) {
    jj_scanpos = xsp;
    if (jj_3R_PredicateLambda_745_7_245()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_ImportStatement_356_5_102()
 {
    if (jj_scan_token(IMPORT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_ImportStatement_356_17_131()) {
    jj_scanpos = xsp;
    if (jj_3R_ImportStatement_356_33_132()) return true;
    }
    if (jj_scan_token(AS)) return true;
    if (jj_3R_Identifier_611_5_40()) return true;
    return false;
  }

  private boolean jj_3R_MapperLambda_734_5_242()
 {
    if (jj_3R_Block_320_5_31()) return true;
    return false;
  }

  private boolean jj_3R_HardImport_351_4_142()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_HardImport_351_19_189()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_MapperLambda_732_5_241()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    return false;
  }

  private boolean jj_3R_MapperLambda_730_5_240()
 {
    if (jj_3R_MethodDef_890_5_33()) return true;
    return false;
  }

  private boolean jj_3R_ZStringLiteral_346_6_138()
 {
    if (jj_3R_StringLiteral_690_3_153()) return true;
    return false;
  }

  private boolean jj_3R_MapperLambda_729_5_233()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(24)) {
    jj_scanpos = xsp;
    if (jj_scan_token(86)) return true;
    }
    xsp = jj_scanpos;
    if (jj_3R_MapperLambda_730_5_240()) {
    jj_scanpos = xsp;
    if (jj_3R_MapperLambda_732_5_241()) {
    jj_scanpos = xsp;
    if (jj_3R_MapperLambda_734_5_242()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_ZStringLiteral_344_6_137()
 {
    if (jj_3R_CharacterString_325_5_152()) return true;
    return false;
  }

  private boolean jj_3R_ZStringLiteral_342_6_136()
 {
    if (jj_3R_ExecutableString_335_5_151()) return true;
    return false;
  }

  private boolean jj_3R_MapLiteral_708_22_203()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_MapEntry_716_5_149()) return true;
    return false;
  }

  private boolean jj_3R_ZStringLiteral_340_6_135()
 {
    if (jj_3R_RelocableString_330_5_150()) return true;
    return false;
  }

  private boolean jj_3R_ZStringLiteral_340_6_115()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_ZStringLiteral_340_6_135()) {
    jj_scanpos = xsp;
    if (jj_3R_ZStringLiteral_342_6_136()) {
    jj_scanpos = xsp;
    if (jj_3R_ZStringLiteral_344_6_137()) {
    jj_scanpos = xsp;
    if (jj_3R_ZStringLiteral_346_6_138()) return true;
    }
    }
    }
    return false;
  }

  private boolean jj_3R_MapEntry_718_5_160()
 {
    if (jj_3R_Expression_433_6_35()) return true;
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_MethodDef_890_5_33()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(38)) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_ExecutableString_335_5_151()
 {
    if (jj_scan_token(hash)) return true;
    if (jj_3R_StringLiteral_690_3_153()) return true;
    return false;
  }

  private boolean jj_3R_MapEntry_716_5_149()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_32()) {
    jj_scanpos = xsp;
    if (jj_3R_MapEntry_718_5_160()) return true;
    }
    return false;
  }

  private boolean jj_3_32()
 {
    if (jj_3R_Expression_433_6_35()) return true;
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(38)) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_Block_320_16_51()
 {
    if (jj_3R_Statement_216_5_39()) return true;
    return false;
  }

  private boolean jj_3_31()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(38)) jj_scanpos = xsp;
    if (jj_3R_Expression_433_6_35()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_ArrayLiteral_701_57_46()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_RelocableString_330_5_150()
 {
    if (jj_scan_token(reloc)) return true;
    if (jj_3R_StringLiteral_690_3_153()) return true;
    return false;
  }

  private boolean jj_3R_MapLiteral_708_9_134()
 {
    if (jj_3R_MapEntry_716_5_149()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_MapLiteral_708_22_203()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_FunctionComposition_301_30_172()
 {
    if (jj_scan_token(or)) return true;
    if (jj_3R_Identifier_611_5_40()) return true;
    return false;
  }

  private boolean jj_3R_CharacterString_325_5_152()
 {
    if (jj_scan_token(char_id)) return true;
    if (jj_3R_StringLiteral_690_3_153()) return true;
    return false;
  }

  private boolean jj_3R_MapLiteral_706_5_111()
 {
    if (jj_scan_token(LCURLY)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(38)) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_3R_MapLiteral_708_9_134()) {
    jj_scanpos = xsp;
    if (jj_scan_token(35)) return true;
    }
    if (jj_scan_token(RCURLY)) return true;
    return false;
  }

  private boolean jj_3R_Block_320_5_31()
 {
    if (jj_scan_token(LCURLY)) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_Block_320_16_51()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(RCURLY)) return true;
    return false;
  }

  private boolean jj_3R_SwitchStatement_256_66_168()
 {
    if (jj_3R_CaseExpression_251_5_181()) return true;
    return false;
  }

  private boolean jj_3R_ArrayLiteral_701_4_113()
 {
    if (jj_scan_token(LBRACKET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_31()) jj_scanpos = xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(38)) jj_scanpos = xsp;
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3_12()
 {
    if (jj_scan_token(CONTINUE)) return true;
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_ExpressionStatement_361_5_32()) return true;
    if (jj_scan_token(RPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_11()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_ContinueStatement_313_5_101()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_12()) {
    jj_scanpos = xsp;
    if (jj_scan_token(19)) return true;
    }
    return false;
  }

  private boolean jj_3R_ArrayRange_696_4_112()
 {
    if (jj_scan_token(LBRACKET)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_ArrayRange_696_52_235()) jj_scanpos = xsp;
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3_10()
 {
    if (jj_scan_token(BREAK)) return true;
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_ExpressionStatement_361_5_32()) return true;
    if (jj_scan_token(RPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_9()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_BreakStatement_306_7_100()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_10()) {
    jj_scanpos = xsp;
    if (jj_scan_token(18)) return true;
    }
    return false;
  }

  private boolean jj_3R_StringLiteral_690_3_153()
 {
    if (jj_scan_token(STRING_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_FunctionComposition_301_5_105()
 {
    if (jj_scan_token(hash_lt)) return true;
    if (jj_3R_Identifier_611_5_40()) return true;
    Token xsp;
    if (jj_3R_FunctionComposition_301_30_172()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_FunctionComposition_301_30_172()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(gt)) return true;
    return false;
  }

  private boolean jj_3R_ClockStatement_296_5_104()
 {
    if (jj_scan_token(CLOCK)) return true;
    if (jj_3R_Block_320_5_31()) return true;
    return false;
  }

  private boolean jj_3R_PatternLiteral_680_3_207()
 {
    if (jj_scan_token(PATTERN_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_RightCatch_271_26_188()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_LValueVar_451_4_58()) return true;
    return false;
  }

  private boolean jj_3R_AtomicStatement_291_5_103()
 {
    if (jj_scan_token(ATOMIC)) return true;
    if (jj_3R_Block_320_5_31()) return true;
    return false;
  }

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

  private boolean jj_3R_FloatLiteral_671_3_204()
 {
    if (jj_scan_token(FLOAT_LITERAL)) return true;
    return false;
  }

  private boolean jj_3_7()
 {
    if (jj_3R_LeftCatch_266_5_37()) return true;
    return false;
  }

  private boolean jj_3_6()
 {
    if (jj_3R_ErrorCatch_261_5_36()) return true;
    return false;
  }

  private boolean jj_3R_CaseExpression_251_35_187()
 {
    if (jj_3R_Statement_216_5_39()) return true;
    return false;
  }

  private boolean jj_3R_LeftCatch_266_19_59()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_LValueVar_451_4_58()) return true;
    return false;
  }

  private boolean jj_3R_MultipleReturnStatement_277_5_95()
 {
    if (jj_scan_token(hash_lp)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_6()) {
    jj_scanpos = xsp;
    if (jj_3_7()) {
    jj_scanpos = xsp;
    if (jj_3_8()) return true;
    }
    }
    if (jj_scan_token(RPAREN)) return true;
    if (jj_scan_token(assign)) return true;
    if (jj_3R_Statement_216_5_39()) return true;
    return false;
  }

  private boolean jj_3R_IntegerLiteral_661_3_179()
 {
    if (jj_scan_token(INTEGER_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_RightCatch_271_4_38()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_LValueVar_451_4_58()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_RightCatch_271_26_188()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_BooleanLiteral_653_3_216()
 {
    if (jj_scan_token(FALSE)) return true;
    return false;
  }

  private boolean jj_3R_BooleanLiteral_651_3_215()
 {
    if (jj_scan_token(TRUE)) return true;
    return false;
  }

  private boolean jj_3R_BooleanLiteral_651_3_205()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_BooleanLiteral_651_3_215()) {
    jj_scanpos = xsp;
    if (jj_3R_BooleanLiteral_653_3_216()) return true;
    }
    return false;
  }

  private boolean jj_3R_LeftCatch_266_5_37()
 {
    if (jj_3R_LValueVar_451_4_58()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_LeftCatch_266_19_59()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_NullLiteral_645_5_206()
 {
    if (jj_scan_token(NULL)) return true;
    return false;
  }

  private boolean jj_3R_ErrorCatch_261_5_36()
 {
    if (jj_3R_LValueVar_451_4_58()) return true;
    if (jj_scan_token(QMARK)) return true;
    if (jj_3R_LValueVar_451_4_58()) return true;
    return false;
  }

  private boolean jj_3R_SwitchStatement_256_5_93()
 {
    if (jj_scan_token(SWITCH)) return true;
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    if (jj_scan_token(RPAREN)) return true;
    if (jj_scan_token(LCURLY)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(38)) jj_scanpos = xsp;
    if (jj_3R_SwitchStatement_256_66_168()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_SwitchStatement_256_66_168()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(RCURLY)) return true;
    return false;
  }

  private boolean jj_3R_Literal_640_3_195()
 {
    if (jj_3R_PatternLiteral_680_3_207()) return true;
    return false;
  }

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

  private boolean jj_3R_Literal_638_3_194()
 {
    if (jj_3R_NullLiteral_645_5_206()) return true;
    return false;
  }

  private boolean jj_3R_Literal_636_3_193()
 {
    if (jj_3R_ZStringLiteral_340_6_115()) return true;
    return false;
  }

  private boolean jj_3R_CaseExpression_251_5_181()
 {
    if (jj_scan_token(CASE)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    if (jj_scan_token(COLON)) return true;
    Token xsp;
    if (jj_3R_CaseExpression_251_35_187()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_CaseExpression_251_35_187()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_Literal_634_3_192()
 {
    if (jj_3R_BooleanLiteral_651_3_205()) return true;
    return false;
  }

  private boolean jj_3R_Literal_632_3_191()
 {
    if (jj_3R_FloatLiteral_671_3_204()) return true;
    return false;
  }

  private boolean jj_3R_Literal_630_3_190()
 {
    if (jj_3R_IntegerLiteral_661_3_179()) return true;
    return false;
  }

  private boolean jj_3R_Literal_630_3_185()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_Literal_630_3_190()) {
    jj_scanpos = xsp;
    if (jj_3R_Literal_632_3_191()) {
    jj_scanpos = xsp;
    if (jj_3R_Literal_634_3_192()) {
    jj_scanpos = xsp;
    if (jj_3R_Literal_636_3_193()) {
    jj_scanpos = xsp;
    if (jj_3R_Literal_638_3_194()) {
    jj_scanpos = xsp;
    if (jj_3R_Literal_640_3_195()) return true;
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_DeleteStatement_245_5_94()
 {
    if (jj_scan_token(DEL)) return true;
    if (jj_3R_Identifier_611_5_40()) return true;
    return false;
  }

  private boolean jj_3R_DebugBreak_240_4_106()
 {
    if (jj_scan_token(BREAL_POINT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_5()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_Statement_235_7_74()
 {
    if (jj_3R_DebugBreak_240_4_106()) return true;
    return false;
  }

  private boolean jj_3R_Statement_234_7_73()
 {
    if (jj_3R_FunctionComposition_301_5_105()) return true;
    return false;
  }

  private boolean jj_3R_Statement_233_7_72()
 {
    if (jj_3R_ClockStatement_296_5_104()) return true;
    return false;
  }

  private boolean jj_3R_StringIdentifier_619_3_180()
 {
    if (jj_scan_token(STRING_LITERAL)) return true;
    return false;
  }

  private boolean jj_3R_Statement_232_7_71()
 {
    if (jj_3R_AtomicStatement_291_5_103()) return true;
    return false;
  }

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

  private boolean jj_3R_Statement_230_7_70()
 {
    if (jj_3R_ImportStatement_356_5_102()) return true;
    return false;
  }

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

  private boolean jj_3R_Statement_228_7_69()
 {
    if (jj_3R_ContinueStatement_313_5_101()) return true;
    return false;
  }

  private boolean jj_3R_Statement_227_7_68()
 {
    if (jj_3R_BreakStatement_306_7_100()) return true;
    return false;
  }

  private boolean jj_3R_Statement_226_7_67()
 {
    if (jj_3R_ReturnStatement_402_5_99()) return true;
    return false;
  }

  private boolean jj_3R_Identifier_611_5_40()
 {
    if (jj_scan_token(IDENTIFIER)) return true;
    return false;
  }

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

  private boolean jj_3R_Statement_224_7_66()
 {
    if (jj_3R_WhileStatement_372_5_98()) return true;
    return false;
  }

  private boolean jj_3R_Statement_223_7_65()
 {
    if (jj_3R_ForeachStatement_393_4_97()) return true;
    return false;
  }

  private boolean jj_3R_Statement_222_7_64()
 {
    if (jj_3R_IfStatement_366_5_96()) return true;
    return false;
  }

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

  private boolean jj_3R_Statement_220_7_63()
 {
    if (jj_3R_MultipleReturnStatement_277_5_95()) return true;
    return false;
  }

  private boolean jj_3R_Statement_219_7_62()
 {
    if (jj_3R_DeleteStatement_245_5_94()) return true;
    return false;
  }

  private boolean jj_3R_Statement_218_7_61()
 {
    if (jj_3R_SwitchStatement_256_5_93()) return true;
    return false;
  }

  private boolean jj_3R_Statement_217_6_60()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(39)) jj_scanpos = xsp;
    if (jj_scan_token(LINE)) return true;
    return false;
  }

  private boolean jj_3R_Statement_216_5_39()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_scan_token(34)) {
    jj_scanpos = xsp;
    if (jj_3R_Statement_217_6_60()) {
    jj_scanpos = xsp;
    if (jj_3R_Statement_218_7_61()) {
    jj_scanpos = xsp;
    if (jj_3R_Statement_219_7_62()) {
    jj_scanpos = xsp;
    if (jj_3R_Statement_220_7_63()) {
    jj_scanpos = xsp;
    if (jj_3_1()) {
    jj_scanpos = xsp;
    if (jj_3R_Statement_222_7_64()) {
    jj_scanpos = xsp;
    if (jj_3R_Statement_223_7_65()) {
    jj_scanpos = xsp;
    if (jj_3R_Statement_224_7_66()) {
    jj_scanpos = xsp;
    if (jj_3_2()) {
    jj_scanpos = xsp;
    if (jj_3R_Statement_226_7_67()) {
    jj_scanpos = xsp;
    if (jj_3R_Statement_227_7_68()) {
    jj_scanpos = xsp;
    if (jj_3R_Statement_228_7_69()) {
    jj_scanpos = xsp;
    if (jj_3_3()) {
    jj_scanpos = xsp;
    if (jj_3R_Statement_230_7_70()) {
    jj_scanpos = xsp;
    if (jj_3_4()) {
    jj_scanpos = xsp;
    if (jj_3R_Statement_232_7_71()) {
    jj_scanpos = xsp;
    if (jj_3R_Statement_233_7_72()) {
    jj_scanpos = xsp;
    if (jj_3R_Statement_234_7_73()) {
    jj_scanpos = xsp;
    if (jj_3R_Statement_235_7_74()) return true;
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_UnaryExpression_598_3_148()
 {
    if (jj_3R_PrimaryExpression_793_3_159()) return true;
    return false;
  }

  private boolean jj_3R_UnaryExpression_596_3_147()
 {
    if (jj_scan_token(not)) return true;
    if (jj_3R_UnaryExpression_588_3_133()) return true;
    return false;
  }

  private boolean jj_3R_UnaryExpression_594_3_146()
 {
    if (jj_scan_token(tilda)) return true;
    if (jj_3R_UnaryExpression_588_3_133()) return true;
    return false;
  }

  private boolean jj_3R_AdditiveExpression_562_34_208()
 {
    if (jj_3R_AdditiveOperator_567_5_218()) return true;
    if (jj_3R_MultiplicativeExpression_574_3_109()) return true;
    return false;
  }

  private boolean jj_3R_UnaryExpression_592_3_145()
 {
    if (jj_scan_token(plus)) return true;
    if (jj_3R_UnaryExpression_588_3_133()) return true;
    return false;
  }

  private boolean jj_3R_UnaryExpression_590_3_144()
 {
    if (jj_scan_token(minus)) return true;
    if (jj_3R_UnaryExpression_588_3_133()) return true;
    return false;
  }

  private boolean jj_3R_UnaryExpression_588_3_143()
 {
    if (jj_scan_token(hash_card)) return true;
    if (jj_3R_AdditiveExpression_562_5_77()) return true;
    if (jj_scan_token(or)) return true;
    return false;
  }

  private boolean jj_3R_UnaryExpression_588_3_133()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_UnaryExpression_588_3_143()) {
    jj_scanpos = xsp;
    if (jj_3R_UnaryExpression_590_3_144()) {
    jj_scanpos = xsp;
    if (jj_3R_UnaryExpression_592_3_145()) {
    jj_scanpos = xsp;
    if (jj_3R_UnaryExpression_594_3_146()) {
    jj_scanpos = xsp;
    if (jj_3R_UnaryExpression_596_3_147()) {
    jj_scanpos = xsp;
    if (jj_3R_UnaryExpression_598_3_148()) return true;
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_MultiplicativeExpression_582_5_221()
 {
    if (jj_scan_token(mod)) return true;
    if (jj_3R_UnaryExpression_588_3_133()) return true;
    return false;
  }

  private boolean jj_3R_MultiplicativeExpression_580_5_220()
 {
    if (jj_scan_token(div)) return true;
    if (jj_3R_UnaryExpression_588_3_133()) return true;
    return false;
  }

  private boolean jj_3R_MultiplicativeExpression_578_4_219()
 {
    if (jj_scan_token(mult)) return true;
    if (jj_3R_UnaryExpression_588_3_133()) return true;
    return false;
  }

  private boolean jj_3R_MultiplicativeExpression_576_5_217()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_30()) {
    jj_scanpos = xsp;
    if (jj_3R_MultiplicativeExpression_578_4_219()) {
    jj_scanpos = xsp;
    if (jj_3R_MultiplicativeExpression_580_5_220()) {
    jj_scanpos = xsp;
    if (jj_3R_MultiplicativeExpression_582_5_221()) return true;
    }
    }
    }
    return false;
  }

  private boolean jj_3_30()
 {
    if (jj_scan_token(mult)) return true;
    if (jj_scan_token(mult)) return true;
    if (jj_3R_UnaryExpression_588_3_133()) return true;
    return false;
  }

  private boolean jj_3R_MultiplicativeExpression_574_3_109()
 {
    if (jj_3R_UnaryExpression_588_3_133()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_MultiplicativeExpression_576_5_217()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_AdditiveOperator_569_5_223()
 {
    if (jj_scan_token(minus)) return true;
    return false;
  }

  private boolean jj_3R_AdditiveOperator_567_5_222()
 {
    if (jj_scan_token(plus)) return true;
    return false;
  }

  private boolean jj_3R_AdditiveOperator_567_5_218()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_AdditiveOperator_567_5_222()) {
    jj_scanpos = xsp;
    if (jj_3R_AdditiveOperator_569_5_223()) return true;
    }
    return false;
  }

  private boolean jj_3R_AdditiveExpression_562_5_77()
 {
    if (jj_3R_MultiplicativeExpression_574_3_109()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_AdditiveExpression_562_34_208()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_RelationalExpression_552_5_214()
 {
    if (jj_scan_token(rne)) return true;
    if (jj_3R_AdditiveExpression_562_5_77()) return true;
    return false;
  }

  private boolean jj_3R_RelationalExpression_550_5_213()
 {
    if (jj_scan_token(req)) return true;
    if (jj_3R_AdditiveExpression_562_5_77()) return true;
    return false;
  }

  private boolean jj_3R_RelationalExpression_548_5_212()
 {
    if (jj_scan_token(ge)) return true;
    if (jj_3R_AdditiveExpression_562_5_77()) return true;
    return false;
  }

  private boolean jj_3R_RelationalExpression_546_5_211()
 {
    if (jj_scan_token(le)) return true;
    if (jj_3R_AdditiveExpression_562_5_77()) return true;
    return false;
  }

  private boolean jj_3R_RelationalExpression_544_5_210()
 {
    if (jj_scan_token(gt)) return true;
    if (jj_3R_AdditiveExpression_562_5_77()) return true;
    return false;
  }

  private boolean jj_3R_RelationalExpression_542_5_209()
 {
    if (jj_scan_token(lt)) return true;
    if (jj_3R_AdditiveExpression_562_5_77()) return true;
    return false;
  }

  private boolean jj_3R_RelationalExpression_542_5_196()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_RelationalExpression_542_5_209()) {
    jj_scanpos = xsp;
    if (jj_3R_RelationalExpression_544_5_210()) {
    jj_scanpos = xsp;
    if (jj_3R_RelationalExpression_546_5_211()) {
    jj_scanpos = xsp;
    if (jj_3R_RelationalExpression_548_5_212()) {
    jj_scanpos = xsp;
    if (jj_3R_RelationalExpression_550_5_213()) {
    jj_scanpos = xsp;
    if (jj_3R_RelationalExpression_552_5_214()) return true;
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_RelationalExpression_540_3_45()
 {
    if (jj_3R_AdditiveExpression_562_5_77()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_RelationalExpression_542_5_196()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_EqualityExpression_533_6_202()
 {
    if (jj_scan_token(ne)) return true;
    if (jj_3R_RelationalExpression_540_3_45()) return true;
    return false;
  }

  private boolean jj_3R_EqualityExpression_531_6_201()
 {
    if (jj_scan_token(eq)) return true;
    if (jj_3R_RelationalExpression_540_3_45()) return true;
    return false;
  }

  private boolean jj_3_29()
 {
    if (jj_scan_token(in_order)) return true;
    if (jj_3R_RelationalExpression_540_3_45()) return true;
    return false;
  }

  private boolean jj_3R_ClassDef_870_47_184()
 {
    if (jj_3R_MethodDef_890_5_33()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_scan_token(38)) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_28()
 {
    if (jj_scan_token(end_with)) return true;
    if (jj_3R_RelationalExpression_540_3_45()) return true;
    return false;
  }

  private boolean jj_3_27()
 {
    if (jj_scan_token(start_with)) return true;
    if (jj_3R_RelationalExpression_540_3_45()) return true;
    return false;
  }

  private boolean jj_3_26()
 {
    if (jj_scan_token(aeq)) return true;
    if (jj_3R_RelationalExpression_540_3_45()) return true;
    return false;
  }

  private boolean jj_3_25()
 {
    if (jj_scan_token(seq)) return true;
    if (jj_3R_RelationalExpression_540_3_45()) return true;
    return false;
  }

  private boolean jj_3R_EqualityExpression_519_4_200()
 {
    if (jj_scan_token(divides)) return true;
    if (jj_3R_AdditiveExpression_562_5_77()) return true;
    return false;
  }

  private boolean jj_3R_EqualityExpression_517_4_199()
 {
    if (jj_scan_token(nin)) return true;
    if (jj_3R_AdditiveExpression_562_5_77()) return true;
    return false;
  }

  private boolean jj_3R_MethodParams_885_19_167()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_ParamDef_876_7_117()) return true;
    return false;
  }

  private boolean jj_3R_MethodDef_890_13_53()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    return false;
  }

  private boolean jj_3R_EqualityExpression_515_4_198()
 {
    if (jj_scan_token(in)) return true;
    if (jj_3R_AdditiveExpression_562_5_77()) return true;
    return false;
  }

  private boolean jj_3R_EqualityExpression_513_4_197()
 {
    if (jj_scan_token(isa)) return true;
    if (jj_3R_AdditiveExpression_562_5_77()) return true;
    return false;
  }

  private boolean jj_3R_EqualityExpression_513_4_186()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_EqualityExpression_513_4_197()) {
    jj_scanpos = xsp;
    if (jj_3R_EqualityExpression_515_4_198()) {
    jj_scanpos = xsp;
    if (jj_3R_EqualityExpression_517_4_199()) {
    jj_scanpos = xsp;
    if (jj_3R_EqualityExpression_519_4_200()) {
    jj_scanpos = xsp;
    if (jj_3_25()) {
    jj_scanpos = xsp;
    if (jj_3_26()) {
    jj_scanpos = xsp;
    if (jj_3_27()) {
    jj_scanpos = xsp;
    if (jj_3_28()) {
    jj_scanpos = xsp;
    if (jj_3_29()) {
    jj_scanpos = xsp;
    if (jj_3R_EqualityExpression_531_6_201()) {
    jj_scanpos = xsp;
    if (jj_3R_EqualityExpression_533_6_202()) return true;
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_ReferenceExpression_862_37_236()
 {
    if (jj_scan_token(LBRACKET)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3R_EqualityExpression_511_3_177()
 {
    if (jj_3R_RelationalExpression_540_3_45()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_EqualityExpression_513_4_186()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_MethodDef_890_5_33()
 {
    if (jj_scan_token(DEF)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_MethodDef_890_13_53()) jj_scanpos = xsp;
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_MethodParams_885_4_54()) return true;
    if (jj_scan_token(RPAREN)) return true;
    xsp = jj_scanpos;
    if (jj_scan_token(38)) jj_scanpos = xsp;
    if (jj_3R_Block_320_5_31()) return true;
    return false;
  }

  private boolean jj_3R_AndExpression_505_5_178()
 {
    if (jj_scan_token(and)) return true;
    if (jj_3R_EqualityExpression_511_3_177()) return true;
    return false;
  }

  private boolean jj_3R_MethodParams_885_6_88()
 {
    if (jj_3R_ParamDef_876_7_117()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_MethodParams_885_19_167()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_AndExpression_504_3_161()
 {
    if (jj_3R_EqualityExpression_511_3_177()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_AndExpression_505_5_178()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_MethodParams_885_4_54()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_MethodParams_885_6_88()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_ParamDef_880_7_139()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    return false;
  }

  private boolean jj_3R_ExclusiveOrExpression_498_5_162()
 {
    if (jj_scan_token(xor)) return true;
    if (jj_3R_AndExpression_504_3_161()) return true;
    return false;
  }

  private boolean jj_3_50()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    if (jj_scan_token(assign)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    return false;
  }

  private boolean jj_3R_ExclusiveOrExpression_497_3_154()
 {
    if (jj_3R_AndExpression_504_3_161()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_ExclusiveOrExpression_498_5_162()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_49()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    if (jj_scan_token(assign)) return true;
    if (jj_3R_MethodDef_890_5_33()) return true;
    return false;
  }

  private boolean jj_3R_ParamDef_876_7_117()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_49()) {
    jj_scanpos = xsp;
    if (jj_3_50()) {
    jj_scanpos = xsp;
    if (jj_3R_ParamDef_880_7_139()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_InclusiveOrExpression_491_5_155()
 {
    if (jj_scan_token(or)) return true;
    if (jj_3R_ExclusiveOrExpression_497_3_154()) return true;
    return false;
  }

  private boolean jj_3R_InclusiveOrExpression_490_3_140()
 {
    if (jj_3R_ExclusiveOrExpression_497_3_154()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_InclusiveOrExpression_491_5_155()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_ClassDef_870_5_55()
 {
    if (jj_scan_token(DEF)) return true;
    if (jj_3R_Identifier_611_5_40()) return true;
    if (jj_scan_token(LCURLY)) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_scan_token(38)) { jj_scanpos = xsp; break; }
    }
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_ClassDef_870_47_184()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(RCURLY)) return true;
    return false;
  }

  private boolean jj_3R_ClassDef_868_5_34()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_48()) {
    jj_scanpos = xsp;
    if (jj_3R_ClassDef_870_5_55()) return true;
    }
    return false;
  }

  private boolean jj_3_48()
 {
    if (jj_scan_token(DEF)) return true;
    if (jj_3R_Identifier_611_5_40()) return true;
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_MapLiteral_706_5_111()) return true;
    return false;
  }

  private boolean jj_3R_ConditionalAndExpression_483_5_141()
 {
    if (jj_scan_token(AND)) return true;
    if (jj_3R_InclusiveOrExpression_490_3_140()) return true;
    return false;
  }

  private boolean jj_3R_LValueVar_451_35_92()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    if (jj_3R_DotReference_817_3_87()) return true;
    return false;
  }

  private boolean jj_3R_ConditionalAndExpression_481_3_118()
 {
    if (jj_3R_InclusiveOrExpression_490_3_140()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_ConditionalAndExpression_483_5_141()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_ReferenceExpression_862_5_114()
 {
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    if (jj_scan_token(RPAREN)) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_ReferenceExpression_862_37_236()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_47()
 {
    if (jj_scan_token(LPAREN)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    return false;
  }

  private boolean jj_3R_ConditionalOrExpression_474_5_119()
 {
    if (jj_scan_token(OR)) return true;
    if (jj_3R_ConditionalAndExpression_481_3_118()) return true;
    return false;
  }

  private boolean jj_3R_Method_777_84_229()
 {
    if (jj_3R_PredicateLambda_740_5_234()) return true;
    return false;
  }

  private boolean jj_3_46()
 {
    if (jj_scan_token(LBRACKET)) return true;
    return false;
  }

  private boolean jj_3_17()
 {
    if (jj_scan_token(LINE)) return true;
    return false;
  }

  private boolean jj_3_45()
 {
    if (jj_scan_token(LBRACKET)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    if (jj_scan_token(COLON)) return true;
    return false;
  }

  private boolean jj_3R_ConditionalOrExpression_472_3_89()
 {
    if (jj_3R_ConditionalAndExpression_481_3_118()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_ConditionalOrExpression_474_5_119()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_44()
 {
    if (jj_scan_token(LCURLY)) return true;
    return false;
  }

  private boolean jj_3R_Reference_853_4_86()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    return false;
  }

  private boolean jj_3_43()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    if (jj_scan_token(LPAREN)) return true;
    return false;
  }

  private boolean jj_3R_Reference_851_4_85()
 {
    if (jj_3R_ZStringLiteral_340_6_115()) return true;
    return false;
  }

  private boolean jj_3R_ConditionalExpression_465_5_121()
 {
    if (jj_scan_token(NUCO)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    return false;
  }

  private boolean jj_3_42()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    if (jj_scan_token(LBRACKET)) return true;
    return false;
  }

  private boolean jj_3R_Reference_849_4_84()
 {
    if (jj_3R_ReferenceExpression_862_5_114()) return true;
    return false;
  }

  private boolean jj_3R_ConditionalExpression_463_5_90()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_ConditionalExpression_463_5_120()) {
    jj_scanpos = xsp;
    if (jj_3R_ConditionalExpression_465_5_121()) return true;
    }
    return false;
  }

  private boolean jj_3R_ConditionalExpression_463_5_120()
 {
    if (jj_scan_token(QMARK)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    return false;
  }

  private boolean jj_3_41()
 {
    if (jj_scan_token(NEW)) return true;
    return false;
  }

  private boolean jj_3R_Reference_847_4_83()
 {
    if (jj_3R_ArrayLiteral_701_4_113()) return true;
    return false;
  }

  private boolean jj_3R_Reference_845_4_82()
 {
    if (jj_3R_ArrayRange_696_4_112()) return true;
    return false;
  }

  private boolean jj_3R_ConditionalExpression_461_3_56()
 {
    if (jj_3R_ConditionalOrExpression_472_3_89()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_ConditionalExpression_463_5_90()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_Expression_433_31_57()
 {
    if (jj_3R_AssignOperator_412_5_91()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_22()) {
    jj_scanpos = xsp;
    if (jj_3_23()) {
    jj_scanpos = xsp;
    if (jj_3R_Expression_439_25_108()) return true;
    }
    }
    return false;
  }

  private boolean jj_3R_Expression_439_25_108()
 {
    if (jj_3R_Statement_216_5_39()) return true;
    return false;
  }

  private boolean jj_3R_Reference_843_4_81()
 {
    if (jj_3R_MapLiteral_706_5_111()) return true;
    return false;
  }

  private boolean jj_3_23()
 {
    if (jj_3R_Expression_433_6_35()) return true;
    return false;
  }

  private boolean jj_3R_Reference_841_4_80()
 {
    if (jj_3R_Method_769_4_50()) return true;
    return false;
  }

  private boolean jj_3R_Method_777_67_228()
 {
    if (jj_3R_MapperLambda_729_5_233()) return true;
    return false;
  }

  private boolean jj_3R_Method_777_67_225()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_Method_777_67_228()) {
    jj_scanpos = xsp;
    if (jj_3R_Method_777_84_229()) return true;
    }
    return false;
  }

  private boolean jj_3_22()
 {
    if (jj_3R_MethodDef_890_5_33()) return true;
    return false;
  }

  private boolean jj_3R_Reference_839_4_79()
 {
    if (jj_3R_ArrayAccess_812_5_44()) return true;
    return false;
  }

  private boolean jj_3R_DotReference_828_13_166()
 {
    if (jj_3R_StringIdentifier_619_3_180()) return true;
    return false;
  }

  private boolean jj_3R_Reference_837_4_78()
 {
    if (jj_3R_Constructor_783_3_110()) return true;
    return false;
  }

  private boolean jj_3_24()
 {
    if (jj_3R_ArrayAccess_812_5_44()) return true;
    return false;
  }

  private boolean jj_3R_DotReference_826_13_165()
 {
    if (jj_3R_IntegerLiteral_661_3_179()) return true;
    return false;
  }

  private boolean jj_3R_Reference_836_3_47()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_Reference_837_4_78()) {
    jj_scanpos = xsp;
    if (jj_3R_Reference_839_4_79()) {
    jj_scanpos = xsp;
    if (jj_3R_Reference_841_4_80()) {
    jj_scanpos = xsp;
    if (jj_3R_Reference_843_4_81()) {
    jj_scanpos = xsp;
    if (jj_3R_Reference_845_4_82()) {
    jj_scanpos = xsp;
    if (jj_3R_Reference_847_4_83()) {
    jj_scanpos = xsp;
    if (jj_3R_Reference_849_4_84()) {
    jj_scanpos = xsp;
    if (jj_3R_Reference_851_4_85()) {
    jj_scanpos = xsp;
    if (jj_3R_Reference_853_4_86()) return true;
    }
    }
    }
    }
    }
    }
    }
    }
    if (jj_3R_DotReference_817_3_87()) return true;
    return false;
  }

  private boolean jj_3R_LValueVar_451_4_58()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_24()) {
    jj_scanpos = xsp;
    if (jj_3R_LValueVar_451_35_92()) return true;
    }
    return false;
  }

  private boolean jj_3R_DotReference_824_13_164()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    return false;
  }

  private boolean jj_3_40()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    if (jj_scan_token(LBRACKET)) return true;
    return false;
  }

  private boolean jj_3R_ArrayAccess_812_23_76()
 {
    if (jj_scan_token(LBRACKET)) return true;
    if (jj_3R_ArrayIndex_807_5_156()) return true;
    if (jj_scan_token(RBRACKET)) return true;
    return false;
  }

  private boolean jj_3_39()
 {
    if (jj_3R_Method_769_4_50()) return true;
    return false;
  }

  private boolean jj_3R_DotReference_821_8_158()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_39()) {
    jj_scanpos = xsp;
    if (jj_3R_DotReference_824_13_164()) {
    jj_scanpos = xsp;
    if (jj_3R_DotReference_826_13_165()) {
    jj_scanpos = xsp;
    if (jj_3R_DotReference_828_13_166()) return true;
    }
    }
    }
    return false;
  }

  private boolean jj_3R_IfStatement_366_78_169()
 {
    if (jj_scan_token(ELSE)) return true;
    if (jj_3R_Statement_216_5_39()) return true;
    return false;
  }

  private boolean jj_3R_ArrayIndex_807_20_163()
 {
    if (jj_scan_token(COLON)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    return false;
  }

  private boolean jj_3R_DotReference_818_8_157()
 {
    if (jj_3R_ArrayAccess_812_5_44()) return true;
    return false;
  }

  private boolean jj_3R_null_799_26_49()
 {
    if (jj_3R_Expression_433_6_35()) return true;
    return false;
  }

  private boolean jj_3R_Expression_433_6_35()
 {
    if (jj_3R_ConditionalExpression_461_3_56()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_Expression_433_31_57()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_null_797_24_48()
 {
    if (jj_3R_Expression_433_6_35()) return true;
    return false;
  }

  private boolean jj_3R_DotReference_817_4_116()
 {
    if (jj_scan_token(DOT)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_DotReference_818_8_157()) {
    jj_scanpos = xsp;
    if (jj_3R_DotReference_821_8_158()) return true;
    }
    return false;
  }

  private boolean jj_3R_DotReference_817_3_87()
 {
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_DotReference_817_4_116()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_ArrayAccess_812_5_44()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    Token xsp;
    if (jj_3R_ArrayAccess_812_23_76()) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_ArrayAccess_812_23_76()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_AssignOperator_428_5_130()
 {
    if (jj_scan_token(moda)) return true;
    return false;
  }

  private boolean jj_3R_AssignOperator_426_5_129()
 {
    if (jj_scan_token(xora)) return true;
    return false;
  }

  private boolean jj_3R_Constructor_783_30_231()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_ArgDef_751_8_230()) return true;
    return false;
  }

  private boolean jj_3_38()
 {
    if (jj_scan_token(LBRACKET)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_null_799_26_49()) {
    jj_scanpos = xsp;
    if (jj_scan_token(33)) return true;
    }
    return false;
  }

  private boolean jj_3R_ArrayIndex_807_5_156()
 {
    if (jj_3R_Expression_433_6_35()) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_ArrayIndex_807_20_163()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_AssignOperator_424_5_128()
 {
    if (jj_scan_token(ora)) return true;
    return false;
  }

  private boolean jj_3_37()
 {
    if (jj_scan_token(LCURLY)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_null_797_24_48()) jj_scanpos = xsp;
    if (jj_scan_token(COLON)) return true;
    return false;
  }

  private boolean jj_3R_Method_777_33_224()
 {
    if (jj_3R_MethodArguments_764_4_227()) return true;
    return false;
  }

  private boolean jj_3R_AssignOperator_422_5_127()
 {
    if (jj_scan_token(anda)) return true;
    return false;
  }

  private boolean jj_3_36()
 {
    if (jj_scan_token(NEW)) return true;
    if (jj_scan_token(LPAREN)) return true;
    return false;
  }

  private boolean jj_3R_AssignOperator_420_5_126()
 {
    if (jj_scan_token(multa)) return true;
    return false;
  }

  private boolean jj_3R_AssignOperator_418_5_125()
 {
    if (jj_scan_token(diva)) return true;
    return false;
  }

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

  private boolean jj_3R_PrimaryExpression_801_3_176()
 {
    if (jj_3R_Literal_630_3_185()) return true;
    return false;
  }

  private boolean jj_3R_AssignOperator_416_5_124()
 {
    if (jj_scan_token(minusa)) return true;
    return false;
  }

  private boolean jj_3R_Constructor_783_19_226()
 {
    if (jj_3R_ArgDef_751_8_230()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_Constructor_783_30_231()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_PrimaryExpression_799_3_175()
 {
    if (jj_3R_ArrayLiteral_701_4_113()) return true;
    return false;
  }

  private boolean jj_3_21()
 {
    if (jj_3R_Statement_216_5_39()) return true;
    return false;
  }

  private boolean jj_3R_AssignOperator_414_4_123()
 {
    if (jj_scan_token(plusa)) return true;
    return false;
  }

  private boolean jj_3R_PrimaryExpression_797_3_174()
 {
    if (jj_3R_MapLiteral_706_5_111()) return true;
    return false;
  }

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

  private boolean jj_3R_AssignOperator_412_5_91()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_AssignOperator_412_5_122()) {
    jj_scanpos = xsp;
    if (jj_3R_AssignOperator_414_4_123()) {
    jj_scanpos = xsp;
    if (jj_3R_AssignOperator_416_5_124()) {
    jj_scanpos = xsp;
    if (jj_3R_AssignOperator_418_5_125()) {
    jj_scanpos = xsp;
    if (jj_3R_AssignOperator_420_5_126()) {
    jj_scanpos = xsp;
    if (jj_3R_AssignOperator_422_5_127()) {
    jj_scanpos = xsp;
    if (jj_3R_AssignOperator_424_5_128()) {
    jj_scanpos = xsp;
    if (jj_3R_AssignOperator_426_5_129()) {
    jj_scanpos = xsp;
    if (jj_3R_AssignOperator_428_5_130()) return true;
    }
    }
    }
    }
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3R_AssignOperator_412_5_122()
 {
    if (jj_scan_token(assign)) return true;
    return false;
  }

  private boolean jj_3R_null_396_20_43()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    if (jj_scan_token(COLON)) return true;
    return false;
  }

  private boolean jj_3R_ForWithIterator_377_39_41()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_Identifier_611_5_40()) return true;
    return false;
  }

  private boolean jj_3R_PrimaryExpression_795_3_173()
 {
    if (jj_3R_Constructor_783_3_110()) return true;
    return false;
  }

  private boolean jj_3_20()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_null_396_20_43()) jj_scanpos = xsp;
    if (jj_3R_Expression_433_6_35()) return true;
    return false;
  }

  private boolean jj_3R_ArgDef_757_40_247()
 {
    if (jj_3R_PredicateLambda_740_5_234()) return true;
    return false;
  }

  private boolean jj_3_19()
 {
    if (jj_3R_ExpressionFor_382_5_42()) return true;
    if (jj_scan_token(SEMICOL)) return true;
    return false;
  }

  private boolean jj_3R_PrimaryExpression_793_3_159()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_35()) {
    jj_scanpos = xsp;
    if (jj_3R_PrimaryExpression_795_3_173()) {
    jj_scanpos = xsp;
    if (jj_3R_PrimaryExpression_797_3_174()) {
    jj_scanpos = xsp;
    if (jj_3R_PrimaryExpression_799_3_175()) {
    jj_scanpos = xsp;
    if (jj_3R_PrimaryExpression_801_3_176()) return true;
    }
    }
    }
    }
    return false;
  }

  private boolean jj_3_35()
 {
    if (jj_3R_Reference_836_3_47()) return true;
    return false;
  }

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

  private boolean jj_3R_ReturnStatement_402_5_99()
 {
    if (jj_scan_token(RETURN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_21()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_ForeachStatement_396_8_171()
 {
    if (jj_3R_ForWithIterator_377_6_183()) return true;
    return false;
  }

  private boolean jj_3R_ExpressionFor_382_22_107()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_Expression_433_6_35()) return true;
    return false;
  }

  private boolean jj_3R_ForeachStatement_394_9_170()
 {
    if (jj_3R_ForWithCondition_387_7_182()) return true;
    return false;
  }

  private boolean jj_3R_Constructor_783_3_110()
 {
    if (jj_scan_token(NEW)) return true;
    if (jj_scan_token(LPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_Constructor_783_19_226()) jj_scanpos = xsp;
    if (jj_scan_token(RPAREN)) return true;
    return false;
  }

  private boolean jj_3_18()
 {
    if (jj_scan_token(LINE)) return true;
    return false;
  }

  private boolean jj_3R_ArgDef_757_23_246()
 {
    if (jj_3R_MapperLambda_729_5_233()) return true;
    return false;
  }

  private boolean jj_3R_ForeachStatement_393_4_97()
 {
    if (jj_scan_token(FOR)) return true;
    if (jj_scan_token(LPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_ForeachStatement_394_9_170()) {
    jj_scanpos = xsp;
    if (jj_3R_ForeachStatement_396_8_171()) return true;
    }
    return false;
  }

  private boolean jj_3R_MethodArguments_764_15_232()
 {
    if (jj_scan_token(COMMA)) return true;
    if (jj_3R_ArgDef_751_8_230()) return true;
    return false;
  }

  private boolean jj_3R_ForWithCondition_387_7_182()
 {
    if (jj_3R_ExpressionFor_382_5_42()) return true;
    if (jj_scan_token(SEMICOL)) return true;
    if (jj_3R_ExpressionFor_382_5_42()) return true;
    if (jj_scan_token(SEMICOL)) return true;
    if (jj_3R_ExpressionFor_382_5_42()) return true;
    if (jj_scan_token(RPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_18()) jj_scanpos = xsp;
    if (jj_3R_Statement_216_5_39()) return true;
    return false;
  }

  private boolean jj_3R_Method_769_4_50()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    if (jj_scan_token(LPAREN)) return true;
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_Method_777_33_224()) jj_scanpos = xsp;
    if (jj_scan_token(RPAREN)) return true;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_Method_777_67_225()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_ImportStatement_356_33_132()
 {
    if (jj_3R_ZStringLiteral_340_6_115()) return true;
    return false;
  }

  private boolean jj_3R_ExpressionFor_382_7_75()
 {
    if (jj_3R_Expression_433_6_35()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_ExpressionFor_382_22_107()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3R_ExpressionFor_382_5_42()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3R_ExpressionFor_382_7_75()) jj_scanpos = xsp;
    return false;
  }

  private boolean jj_3R_MethodArguments_764_4_227()
 {
    if (jj_3R_ArgDef_751_8_230()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_MethodArguments_764_15_232()) { jj_scanpos = xsp; break; }
    }
    return false;
  }

  private boolean jj_3_16()
 {
    if (jj_3R_Identifier_611_5_40()) return true;
    Token xsp;
    while (true) {
      xsp = jj_scanpos;
      if (jj_3R_ForWithIterator_377_39_41()) { jj_scanpos = xsp; break; }
    }
    if (jj_scan_token(COLON)) return true;
    return false;
  }

  private boolean jj_3R_ArgDef_759_8_239()
 {
    if (jj_3R_Expression_433_6_35()) return true;
    return false;
  }

  private boolean jj_3_11()
 {
    if (jj_3R_Statement_216_5_39()) return true;
    return false;
  }

  private boolean jj_3R_ForWithIterator_377_6_183()
 {
    Token xsp;
    xsp = jj_scanpos;
    if (jj_3_16()) jj_scanpos = xsp;
    if (jj_3R_Expression_433_6_35()) return true;
    if (jj_scan_token(RPAREN)) return true;
    xsp = jj_scanpos;
    if (jj_3_17()) jj_scanpos = xsp;
    if (jj_3R_Statement_216_5_39()) return true;
    return false;
  }

  /** Generated Token Manager. */
  public ParserTokenManager token_source;
  SimpleCharStream 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;
  private int jj_gen;
  final private int[] jj_la1 = new int[86];
  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[] {0x5eeff680,0x0,0x3000,0x680,0x2c0000,0x800000,0xe000000,0x5eeff680,0x0,0x100000,0x0,0x0,0x0,0x40000,0x80000,0x5eeff680,0x0,0x0,0x0,0x5003c000,0x100,0x0,0x0,0x5003c000,0x0,0x5eeff680,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5003c000,0x38000,0x30000,0x0,0x0,0x0,0x0,0x0,0x0,0x5003c000,0x0,0x0,0x5003c000,0x1000000,0x40400000,0x800,0x40400000,0x1000800,0x5143c800,0x0,0x5143c800,0x1000800,0x1000800,0x0,0x5143c800,0x38000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x0,0x400000,0x0,0x0,0x0,0x0,0x0,};
	}
	private static void jj_la1_init_1() {
	   jj_la1_1 = new int[] {0xc5,0x80,0xc4,0x0,0x0,0x0,0x0,0xc5,0x40,0x0,0x10,0x10,0x0,0x0,0x0,0xc5,0x0,0x20,0x0,0x1,0x0,0x10,0x10,0x1,0x40000000,0xc5,0x40000000,0x0,0x500,0x500,0x1000,0x800,0x0,0x0,0x0,0x7800000,0x12000,0x3f81e000,0x7e0000,0x7e0000,0x0,0x0,0x80000000,0x80000000,0x1,0x0,0x0,0x8,0x40,0x10,0x40,0x40,0x10,0x9,0x40,0x40,0x1,0x0,0x0,0x0,0x0,0x0,0x1,0x10,0x1,0x0,0x0,0x10,0x1,0x0,0x8,0x1,0x20,0x0,0x0,0x0,0x1,0x40,0x0,0x40,0x0,0x0,0x10,0x0,0x0,0x40,};
	}
	private static void jj_la1_init_2() {
	   jj_la1_2 = new int[] {0xf33e021c,0x0,0x80000,0x0,0x0,0x0,0x1000000,0xf33e021c,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0xf33e021c,0x40320000,0x0,0x42320000,0xf236021c,0x0,0x0,0x0,0xf236021c,0x1e162,0xf33e021c,0x1e162,0x2000000,0x0,0x0,0x0,0x0,0x800,0x1000,0x400,0x0,0x0,0x0,0x0,0x0,0x18,0x18,0x81,0x81,0xf236021c,0xf0320000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf236021c,0x0,0x0,0xf236021c,0x400000,0x2000000,0x800000,0x2000000,0xc00000,0xf2f6021c,0x0,0xf2f6021c,0xc00000,0xc00000,0x0,0xf2f6021c,0xf0320000,0x0,0x0,0x0,0x52000000,0x52000000,0x42320000,0x0,0x0,0x0,0x0,0x0,0x2000000,0x0,0x2000000,0x2000000,0x0,};
	}
  final private JJCalls[] jj_2_rtns = new JJCalls[50];
  private boolean jj_rescan = false;
  private int jj_gc = 0;

  /** Constructor with InputStream. */
  public Parser(java.io.InputStream stream) {
	  this(stream, null);
  }
  /** Constructor with InputStream and supplied encoding */
  public Parser(java.io.InputStream stream, String encoding) {
	 try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
	 token_source = new ParserTokenManager(jj_input_stream);
	 token = new Token();
	 jj_ntk = -1;
	 jj_gen = 0;
	 for (int i = 0; i < 86; i++) jj_la1[i] = -1;
	 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  public void ReInit(java.io.InputStream stream) {
	  ReInit(stream, null);
  }
  /** Reinitialise. */
  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 < 86; i++) jj_la1[i] = -1;
	 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Constructor. */
  public Parser(java.io.Reader stream) {
	 jj_input_stream = new SimpleCharStream(stream, 1, 1);
	 token_source = new ParserTokenManager(jj_input_stream);
	 token = new Token();
	 jj_ntk = -1;
	 jj_gen = 0;
	 for (int i = 0; i < 86; i++) jj_la1[i] = -1;
	 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  public void ReInit(java.io.Reader stream) {
	if (jj_input_stream == null) {
	   jj_input_stream = new SimpleCharStream(stream, 1, 1);
	} else {
	   jj_input_stream.ReInit(stream, 1, 1);
	}
	if (token_source == null) {
 token_source = new ParserTokenManager(jj_input_stream);
	}

	 token_source.ReInit(jj_input_stream);
	 token = new Token();
	 jj_ntk = -1;
	 jjtree.reset();
	 jj_gen = 0;
	 for (int i = 0; i < 86; 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. */
  public Parser(ParserTokenManager tm) {
	 token_source = tm;
	 token = new Token();
	 jj_ntk = -1;
	 jj_gen = 0;
	 for (int i = 0; i < 86; i++) jj_la1[i] = -1;
	 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
  }

  /** Reinitialise. */
  public void ReInit(ParserTokenManager tm) {
	 token_source = tm;
	 token = new Token();
	 jj_ntk = -1;
	 jjtree.reset();
	 jj_gen = 0;
	 for (int i = 0; i < 86; 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 (int i = 0; i < jj_2_rtns.length; i++) {
		   JJCalls c = jj_2_rtns[i];
		   while (c != null) {
			 if (c.gen < jj_gen) c.first = null;
			 c = c.next;
		   }
		 }
	   }
	   return token;
	 }
	 token = oldToken;
	 jj_kind = kind;
	 throw generateParseException();
  }

  @SuppressWarnings("serial")
  static private final class LookaheadSuccess extends java.lang.Error {
    @Override
    public Throwable fillInStackTrace() {
      return this;
    }
  }
  static private final 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. */
  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. */
  final public Token getToken(int index) {
	 Token t = 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_f() {
	 if ((jj_nt=token.next) == null)
	   return (jj_ntk = (token.next=token_source.getNextToken()).kind);
	 else
	   return (jj_ntk = jj_nt.kind);
  }

  private java.util.List jj_expentries = new java.util.ArrayList();
  private int[] jj_expentry;
  private int jj_kind = -1;
  private 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];
	   }

	   for (int[] oldentry : jj_expentries) {
		 if (oldentry.length == jj_expentry.length) {
		   boolean isMatched = true;

		   for (int i = 0; i < jj_expentry.length; i++) {
			 if (oldentry[i] != jj_expentry[i]) {
			   isMatched = false;
			   break;
			 }

		   }
		   if (isMatched) {
			 jj_expentries.add(jj_expentry);
			 break;
		   }
		 }
	   }

	   if (pos != 0) {
		 jj_lasttokens[(jj_endpos = pos) - 1] = kind;
	   }
	 }
  }

  /** Generate ParseException. */
  public ParseException generateParseException() {
	 jj_expentries.clear();
	 boolean[] la1tokens = new boolean[96];
	 if (jj_kind >= 0) {
	   la1tokens[jj_kind] = true;
	   jj_kind = -1;
	 }
	 for (int i = 0; i < 86; i++) {
	   if (jj_la1[i] == jj_gen) {
		 for (int j = 0; j < 32; j++) {
		   if ((jj_la1_0[i] & (1< 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;
			   case 16: jj_3_17(); break;
			   case 17: jj_3_18(); break;
			   case 18: jj_3_19(); break;
			   case 19: jj_3_20(); break;
			   case 20: jj_3_21(); break;
			   case 21: jj_3_22(); break;
			   case 22: jj_3_23(); break;
			   case 23: jj_3_24(); break;
			   case 24: jj_3_25(); break;
			   case 25: jj_3_26(); break;
			   case 26: jj_3_27(); break;
			   case 27: jj_3_28(); break;
			   case 28: jj_3_29(); break;
			   case 29: jj_3_30(); break;
			   case 30: jj_3_31(); break;
			   case 31: jj_3_32(); break;
			   case 32: jj_3_33(); break;
			   case 33: jj_3_34(); break;
			   case 34: jj_3_35(); break;
			   case 35: jj_3_36(); break;
			   case 36: jj_3_37(); break;
			   case 37: jj_3_38(); break;
			   case 38: jj_3_39(); break;
			   case 39: jj_3_40(); break;
			   case 40: jj_3_41(); break;
			   case 41: jj_3_42(); break;
			   case 42: jj_3_43(); break;
			   case 43: jj_3_44(); break;
			   case 44: jj_3_45(); break;
			   case 45: jj_3_46(); break;
			   case 46: jj_3_47(); break;
			   case 47: jj_3_48(); break;
			   case 48: jj_3_49(); break;
			   case 49: jj_3_50(); 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