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

javacc-7.0.1.examples.JavaGrammars.cpp.gen.JavaParser.cc Maven / Gradle / Ivy

There is a newer version: 7.0.13
Show newest version
/* JavaParser.cc */
#include "JavaParser.h"
#include "TokenMgrError.h"
#include "SimpleNode.h"
namespace java {
namespace parser {
  unsigned int jj_la1_0[] = {
0x0,0x0,0x20102000,0x0,0x2000,0x20002000,0x20002000,0x8000000,0x0,0xa2196000,0x20002000,0x20002000,0xa2094000,0x20002000,0x20002000,0x2000,0x2000,0x20002000,0x20002000,0x8000000,0xa2196000,0xa2094000,0x20000000,0x20000000,0x0,0x0,0x0,0x92094000,0x92094000,0x0,0x20002000,0x20002000,0x0,0x0,0x0,0x0,0xa2094000,0x20000000,0x0,0x0,0x0,0xb359c000,0x92094000,0x0,0x82094000,0x0,0x82094000,0x82094000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x92094000,0x0,0x0,0x92094000,0x10000000,0x0,0x0,0x0,0x0,0x10000000,0x0,0x0,0x10000000,0x10000000,0x92094000,0x0,0x0,0x0,0x0,0x0,0x0,0x9349c000,0xb359c000,0x9359c000,0x20000000,0x0,0x0,0x0,0x92094000,0x820000,0xb359c000,0x820000,0x4000000,0xb2094000,0x92094000,0x92094000,0x92094000,0x0,0x0,0x0,0x92094000,0x40000,0x40000000,};
  unsigned int jj_la1_1[] = {
0x1000,0x10,0x8080,0x0,0x8080,0x8000,0x8000,0x0,0x8,0x3226e3c0,0x4e000,0x4e000,0x2206e140,0x24e200,0x24e200,0x8000,0x8000,0x4e000,0x4e000,0x0,0x3226e3c0,0x2206e140,0x2204e000,0x2204e000,0x0,0x0,0x0,0x944a0d40,0x944a0d40,0x0,0x24e200,0x24e200,0x1000000,0x0,0x0,0x0,0x20140,0x0,0xe000,0xe000,0x1000000,0xdcfb0dc5,0x944a0d40,0x40000,0x20140,0x0,0x20140,0x10020140,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x944a0d40,0x0,0x0,0x944a0d40,0x84480c00,0x0,0x0,0x0,0x0,0x84480c00,0x0,0x0,0x84000800,0x4000000,0x944a0d40,0x0,0x0,0x0,0x400,0x0,0x0,0xdcfb0d45,0xdcfb0dc5,0xdcfb0dc5,0x0,0x0,0x0,0x0,0x944a0d40,0x0,0xdcfb0dc5,0x0,0x0,0x944a0d40,0x944a0d40,0x944a0d40,0x944a0d40,0x0,0x0,0x0,0x944a0d40,0x0,0x0,};
  unsigned int jj_la1_2[] = {
0x0,0x0,0x10000,0x40000,0x10000,0x0,0x0,0x0,0x0,0x1080,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x20000,0x80000,0x4000,0xc014e8,0xc014e8,0x20000,0x0,0x0,0x0,0x11000,0x4000,0x20000,0x80,0x0,0x0,0x0,0x0,0x114e8,0x4e8,0x0,0x80,0x4000,0x0,0x80,0x20000,0x80000,0x80000,0x1000000,0x40000000,0x80000000,0x0,0x0,0x0,0x24000000,0x24000000,0x0,0x18300000,0x18300000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc004e8,0xc00000,0xc00000,0x4e8,0xc004e8,0x400,0x0,0x0,0x400,0x468,0x80,0x44400,0x68,0x0,0xc004e8,0x20000,0x1000,0x4400,0x0,0x4000,0x4000,0x114e8,0x114e8,0x114e8,0x0,0x20000,0x80000,0x80000,0x4e8,0x0,0x114e8,0x0,0x0,0x4e8,0xc004e8,0x4e8,0x4e8,0x20000,0x80,0x80,0xc004e8,0x0,0x0,};
  unsigned int jj_la1_3[] = {
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffe000,0xffe000,0x0,0x0,0x0,0x80,0x100,0x40,0x0,0x0,0x0,0x0,0x0,0x1c00,0x1c00,0xc,0xc,0x230,0x230,0xc,0xf,0x0,0x0,0x0,0x0,0x0,0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x3,0x3,0x0,0x0,0xffe003,0xffe003,0x3,0x0,0x3,0x0,0x0,0x3,0xf,0x3,0x3,0x0,0x0,0x0,0xf,0x0,0x0,};

  /** Constructor with user supplied TokenManager. */




void JavaParser::CompilationUnit() {/*@bgen(jjtree) CompilationUnit */
  SimpleNode *jjtn000 = new SimpleNode(JJTCOMPILATIONUNIT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case PACKAGE:{
        PackageDeclaration();
        break;
        }
      default:
        jj_la1[0] = jj_gen;
        ;
      }
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case IMPORT:{
          ;
          break;
          }
        default:
          jj_la1[1] = jj_gen;
          goto end_label_1;
        }
        ImportDeclaration();
      }
      end_label_1: ;
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case ABSTRACT:
        case CLASS:
        case FINAL:
        case INTERFACE:
        case PUBLIC:
        case SEMICOLON:{
          ;
          break;
          }
        default:
          jj_la1[2] = jj_gen;
          goto end_label_2;
        }
        TypeDeclaration();
      }
      end_label_2: ;
      jj_consume_token(0);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::PackageDeclaration() {/*@bgen(jjtree) PackageDeclaration */
  SimpleNode *jjtn000 = new SimpleNode(JJTPACKAGEDECLARATION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(PACKAGE);
      Name();
      jj_consume_token(SEMICOLON);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ImportDeclaration() {/*@bgen(jjtree) ImportDeclaration */
  SimpleNode *jjtn000 = new SimpleNode(JJTIMPORTDECLARATION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(IMPORT);
      Name();
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case DOT:{
        jj_consume_token(DOT);
        jj_consume_token(STAR);
        break;
        }
      default:
        jj_la1[3] = jj_gen;
        ;
      }
      jj_consume_token(SEMICOLON);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::TypeDeclaration() {/*@bgen(jjtree) TypeDeclaration */
  SimpleNode *jjtn000 = new SimpleNode(JJTTYPEDECLARATION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      if (jj_2_1(2147483647)) {
        ClassDeclaration();
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case ABSTRACT:
        case INTERFACE:
        case PUBLIC:{
          InterfaceDeclaration();
          break;
          }
        case SEMICOLON:{
          jj_consume_token(SEMICOLON);
          break;
          }
        default:
          jj_la1[4] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ClassDeclaration() {/*@bgen(jjtree) ClassDeclaration */
  SimpleNode *jjtn000 = new SimpleNode(JJTCLASSDECLARATION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case ABSTRACT:
        case FINAL:
        case PUBLIC:{
          ;
          break;
          }
        default:
          jj_la1[5] = jj_gen;
          goto end_label_3;
        }
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case ABSTRACT:{
          jj_consume_token(ABSTRACT);
          break;
          }
        case FINAL:{
          jj_consume_token(FINAL);
          break;
          }
        case PUBLIC:{
          jj_consume_token(PUBLIC);
          break;
          }
        default:
          jj_la1[6] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
      end_label_3: ;
      UnmodifiedClassDeclaration();
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::UnmodifiedClassDeclaration() {/*@bgen(jjtree) UnmodifiedClassDeclaration */
  SimpleNode *jjtn000 = new SimpleNode(JJTUNMODIFIEDCLASSDECLARATION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(CLASS);
      jj_consume_token(IDENTIFIER);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case EXTENDS:{
        jj_consume_token(EXTENDS);
        Name();
        break;
        }
      default:
        jj_la1[7] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case IMPLEMENTS:{
        jj_consume_token(IMPLEMENTS);
        NameList();
        break;
        }
      default:
        jj_la1[8] = jj_gen;
        ;
      }
      ClassBody();
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ClassBody() {/*@bgen(jjtree) ClassBody */
  SimpleNode *jjtn000 = new SimpleNode(JJTCLASSBODY);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(LBRACE);
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case ABSTRACT:
        case BOOLEAN:
        case BYTE:
        case CHAR:
        case CLASS:
        case DOUBLE:
        case FINAL:
        case FLOAT:
        case INT:
        case INTERFACE:
        case LONG:
        case NATIVE:
        case PRIVATE:
        case PROTECTED:
        case PUBLIC:
        case SHORT:
        case STATIC:
        case SYNCHRONIZED:
        case TRANSIENT:
        case VOID:
        case VOLATILE:
        case IDENTIFIER:
        case LBRACE:{
          ;
          break;
          }
        default:
          jj_la1[9] = jj_gen;
          goto end_label_4;
        }
        ClassBodyDeclaration();
      }
      end_label_4: ;
      jj_consume_token(RBRACE);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::NestedClassDeclaration() {/*@bgen(jjtree) NestedClassDeclaration */
  SimpleNode *jjtn000 = new SimpleNode(JJTNESTEDCLASSDECLARATION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case ABSTRACT:
        case FINAL:
        case PRIVATE:
        case PROTECTED:
        case PUBLIC:
        case STATIC:{
          ;
          break;
          }
        default:
          jj_la1[10] = jj_gen;
          goto end_label_5;
        }
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case STATIC:{
          jj_consume_token(STATIC);
          break;
          }
        case ABSTRACT:{
          jj_consume_token(ABSTRACT);
          break;
          }
        case FINAL:{
          jj_consume_token(FINAL);
          break;
          }
        case PUBLIC:{
          jj_consume_token(PUBLIC);
          break;
          }
        case PROTECTED:{
          jj_consume_token(PROTECTED);
          break;
          }
        case PRIVATE:{
          jj_consume_token(PRIVATE);
          break;
          }
        default:
          jj_la1[11] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
      end_label_5: ;
      UnmodifiedClassDeclaration();
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ClassBodyDeclaration() {/*@bgen(jjtree) ClassBodyDeclaration */
  SimpleNode *jjtn000 = new SimpleNode(JJTCLASSBODYDECLARATION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      if (jj_2_2(2)) {
        Initializer();
      } else if (jj_2_3(2147483647)) {
        NestedClassDeclaration();
      } else if (jj_2_4(2147483647)) {
        NestedInterfaceDeclaration();
      } else if (jj_2_5(2147483647)) {
        ConstructorDeclaration();
      } else if (jj_2_6(2147483647)) {
        MethodDeclaration();
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case BOOLEAN:
        case BYTE:
        case CHAR:
        case DOUBLE:
        case FINAL:
        case FLOAT:
        case INT:
        case LONG:
        case PRIVATE:
        case PROTECTED:
        case PUBLIC:
        case SHORT:
        case STATIC:
        case TRANSIENT:
        case VOLATILE:
        case IDENTIFIER:{
          FieldDeclaration();
          break;
          }
        default:
          jj_la1[12] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::MethodDeclarationLookahead() {/*@bgen(jjtree) MethodDeclarationLookahead */
  SimpleNode *jjtn000 = new SimpleNode(JJTMETHODDECLARATIONLOOKAHEAD);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case ABSTRACT:
        case FINAL:
        case NATIVE:
        case PRIVATE:
        case PROTECTED:
        case PUBLIC:
        case STATIC:
        case SYNCHRONIZED:{
          ;
          break;
          }
        default:
          jj_la1[13] = jj_gen;
          goto end_label_6;
        }
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case PUBLIC:{
          jj_consume_token(PUBLIC);
          break;
          }
        case PROTECTED:{
          jj_consume_token(PROTECTED);
          break;
          }
        case PRIVATE:{
          jj_consume_token(PRIVATE);
          break;
          }
        case STATIC:{
          jj_consume_token(STATIC);
          break;
          }
        case ABSTRACT:{
          jj_consume_token(ABSTRACT);
          break;
          }
        case FINAL:{
          jj_consume_token(FINAL);
          break;
          }
        case NATIVE:{
          jj_consume_token(NATIVE);
          break;
          }
        case SYNCHRONIZED:{
          jj_consume_token(SYNCHRONIZED);
          break;
          }
        default:
          jj_la1[14] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
      end_label_6: ;
      ResultType();
      jj_consume_token(IDENTIFIER);
      jj_consume_token(LPAREN);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::InterfaceDeclaration() {/*@bgen(jjtree) InterfaceDeclaration */
  SimpleNode *jjtn000 = new SimpleNode(JJTINTERFACEDECLARATION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case ABSTRACT:
        case PUBLIC:{
          ;
          break;
          }
        default:
          jj_la1[15] = jj_gen;
          goto end_label_7;
        }
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case ABSTRACT:{
          jj_consume_token(ABSTRACT);
          break;
          }
        case PUBLIC:{
          jj_consume_token(PUBLIC);
          break;
          }
        default:
          jj_la1[16] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
      end_label_7: ;
      UnmodifiedInterfaceDeclaration();
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::NestedInterfaceDeclaration() {/*@bgen(jjtree) NestedInterfaceDeclaration */
  SimpleNode *jjtn000 = new SimpleNode(JJTNESTEDINTERFACEDECLARATION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case ABSTRACT:
        case FINAL:
        case PRIVATE:
        case PROTECTED:
        case PUBLIC:
        case STATIC:{
          ;
          break;
          }
        default:
          jj_la1[17] = jj_gen;
          goto end_label_8;
        }
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case STATIC:{
          jj_consume_token(STATIC);
          break;
          }
        case ABSTRACT:{
          jj_consume_token(ABSTRACT);
          break;
          }
        case FINAL:{
          jj_consume_token(FINAL);
          break;
          }
        case PUBLIC:{
          jj_consume_token(PUBLIC);
          break;
          }
        case PROTECTED:{
          jj_consume_token(PROTECTED);
          break;
          }
        case PRIVATE:{
          jj_consume_token(PRIVATE);
          break;
          }
        default:
          jj_la1[18] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
      end_label_8: ;
      UnmodifiedInterfaceDeclaration();
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::UnmodifiedInterfaceDeclaration() {/*@bgen(jjtree) UnmodifiedInterfaceDeclaration */
  SimpleNode *jjtn000 = new SimpleNode(JJTUNMODIFIEDINTERFACEDECLARATION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(INTERFACE);
      jj_consume_token(IDENTIFIER);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case EXTENDS:{
        jj_consume_token(EXTENDS);
        NameList();
        break;
        }
      default:
        jj_la1[19] = jj_gen;
        ;
      }
      jj_consume_token(LBRACE);
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case ABSTRACT:
        case BOOLEAN:
        case BYTE:
        case CHAR:
        case CLASS:
        case DOUBLE:
        case FINAL:
        case FLOAT:
        case INT:
        case INTERFACE:
        case LONG:
        case NATIVE:
        case PRIVATE:
        case PROTECTED:
        case PUBLIC:
        case SHORT:
        case STATIC:
        case SYNCHRONIZED:
        case TRANSIENT:
        case VOID:
        case VOLATILE:
        case IDENTIFIER:{
          ;
          break;
          }
        default:
          jj_la1[20] = jj_gen;
          goto end_label_9;
        }
        InterfaceMemberDeclaration();
      }
      end_label_9: ;
      jj_consume_token(RBRACE);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::InterfaceMemberDeclaration() {/*@bgen(jjtree) InterfaceMemberDeclaration */
  SimpleNode *jjtn000 = new SimpleNode(JJTINTERFACEMEMBERDECLARATION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      if (jj_2_7(2147483647)) {
        NestedClassDeclaration();
      } else if (jj_2_8(2147483647)) {
        NestedInterfaceDeclaration();
      } else if (jj_2_9(2147483647)) {
        MethodDeclaration();
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case BOOLEAN:
        case BYTE:
        case CHAR:
        case DOUBLE:
        case FINAL:
        case FLOAT:
        case INT:
        case LONG:
        case PRIVATE:
        case PROTECTED:
        case PUBLIC:
        case SHORT:
        case STATIC:
        case TRANSIENT:
        case VOLATILE:
        case IDENTIFIER:{
          FieldDeclaration();
          break;
          }
        default:
          jj_la1[21] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::FieldDeclaration() {/*@bgen(jjtree) FieldDeclaration */
  SimpleNode *jjtn000 = new SimpleNode(JJTFIELDDECLARATION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case FINAL:
        case PRIVATE:
        case PROTECTED:
        case PUBLIC:
        case STATIC:
        case TRANSIENT:
        case VOLATILE:{
          ;
          break;
          }
        default:
          jj_la1[22] = jj_gen;
          goto end_label_10;
        }
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case PUBLIC:{
          jj_consume_token(PUBLIC);
          break;
          }
        case PROTECTED:{
          jj_consume_token(PROTECTED);
          break;
          }
        case PRIVATE:{
          jj_consume_token(PRIVATE);
          break;
          }
        case STATIC:{
          jj_consume_token(STATIC);
          break;
          }
        case FINAL:{
          jj_consume_token(FINAL);
          break;
          }
        case TRANSIENT:{
          jj_consume_token(TRANSIENT);
          break;
          }
        case VOLATILE:{
          jj_consume_token(VOLATILE);
          break;
          }
        default:
          jj_la1[23] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
      end_label_10: ;
      Type();
      VariableDeclarator();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case COMMA:{
          ;
          break;
          }
        default:
          jj_la1[24] = jj_gen;
          goto end_label_11;
        }
        jj_consume_token(COMMA);
        VariableDeclarator();
      }
      end_label_11: ;
      jj_consume_token(SEMICOLON);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::VariableDeclarator() {/*@bgen(jjtree) VariableDeclarator */
  SimpleNode *jjtn000 = new SimpleNode(JJTVARIABLEDECLARATOR);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      VariableDeclaratorId();
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case ASSIGN:{
        jj_consume_token(ASSIGN);
        VariableInitializer();
        break;
        }
      default:
        jj_la1[25] = jj_gen;
        ;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::VariableDeclaratorId() {/*@bgen(jjtree) VariableDeclaratorId */
  SimpleNode *jjtn000 = new SimpleNode(JJTVARIABLEDECLARATORID);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(IDENTIFIER);
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case LBRACKET:{
          ;
          break;
          }
        default:
          jj_la1[26] = jj_gen;
          goto end_label_12;
        }
        jj_consume_token(LBRACKET);
        jj_consume_token(RBRACKET);
      }
      end_label_12: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::VariableInitializer() {/*@bgen(jjtree) VariableInitializer */
  SimpleNode *jjtn000 = new SimpleNode(JJTVARIABLEINITIALIZER);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case LBRACE:{
        ArrayInitializer();
        break;
        }
      case BOOLEAN:
      case BYTE:
      case CHAR:
      case DOUBLE:
      case FALSE:
      case FLOAT:
      case INT:
      case LONG:
      case NEW:
      case NULLL:
      case SHORT:
      case SUPER:
      case THIS:
      case TRUE:
      case VOID:
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
      case IDENTIFIER:
      case LPAREN:
      case BANG:
      case TILDE:
      case INCR:
      case DECR:
      case PLUS:
      case MINUS:{
        Expression();
        break;
        }
      default:
        jj_la1[27] = jj_gen;
        jj_consume_token(-1);
        errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ArrayInitializer() {/*@bgen(jjtree) ArrayInitializer */
  SimpleNode *jjtn000 = new SimpleNode(JJTARRAYINITIALIZER);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(LBRACE);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case BOOLEAN:
      case BYTE:
      case CHAR:
      case DOUBLE:
      case FALSE:
      case FLOAT:
      case INT:
      case LONG:
      case NEW:
      case NULLL:
      case SHORT:
      case SUPER:
      case THIS:
      case TRUE:
      case VOID:
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
      case IDENTIFIER:
      case LPAREN:
      case LBRACE:
      case BANG:
      case TILDE:
      case INCR:
      case DECR:
      case PLUS:
      case MINUS:{
        VariableInitializer();
        while (!hasError) {
          if (jj_2_10(2)) {
            ;
          } else {
            goto end_label_13;
          }
          jj_consume_token(COMMA);
          VariableInitializer();
        }
        end_label_13: ;
        break;
        }
      default:
        jj_la1[28] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case COMMA:{
        jj_consume_token(COMMA);
        break;
        }
      default:
        jj_la1[29] = jj_gen;
        ;
      }
      jj_consume_token(RBRACE);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::MethodDeclaration() {/*@bgen(jjtree) MethodDeclaration */
  SimpleNode *jjtn000 = new SimpleNode(JJTMETHODDECLARATION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case ABSTRACT:
        case FINAL:
        case NATIVE:
        case PRIVATE:
        case PROTECTED:
        case PUBLIC:
        case STATIC:
        case SYNCHRONIZED:{
          ;
          break;
          }
        default:
          jj_la1[30] = jj_gen;
          goto end_label_14;
        }
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case PUBLIC:{
          jj_consume_token(PUBLIC);
          break;
          }
        case PROTECTED:{
          jj_consume_token(PROTECTED);
          break;
          }
        case PRIVATE:{
          jj_consume_token(PRIVATE);
          break;
          }
        case STATIC:{
          jj_consume_token(STATIC);
          break;
          }
        case ABSTRACT:{
          jj_consume_token(ABSTRACT);
          break;
          }
        case FINAL:{
          jj_consume_token(FINAL);
          break;
          }
        case NATIVE:{
          jj_consume_token(NATIVE);
          break;
          }
        case SYNCHRONIZED:{
          jj_consume_token(SYNCHRONIZED);
          break;
          }
        default:
          jj_la1[31] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
      end_label_14: ;
      ResultType();
      MethodDeclarator();
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case THROWS:{
        jj_consume_token(THROWS);
        NameList();
        break;
        }
      default:
        jj_la1[32] = jj_gen;
        ;
      }
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case LBRACE:{
        Block();
        break;
        }
      case SEMICOLON:{
        jj_consume_token(SEMICOLON);
        break;
        }
      default:
        jj_la1[33] = jj_gen;
        jj_consume_token(-1);
        errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::MethodDeclarator() {/*@bgen(jjtree) MethodDeclarator */
  SimpleNode *jjtn000 = new SimpleNode(JJTMETHODDECLARATOR);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(IDENTIFIER);
      FormalParameters();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case LBRACKET:{
          ;
          break;
          }
        default:
          jj_la1[34] = jj_gen;
          goto end_label_15;
        }
        jj_consume_token(LBRACKET);
        jj_consume_token(RBRACKET);
      }
      end_label_15: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::FormalParameters() {/*@bgen(jjtree) FormalParameters */
  SimpleNode *jjtn000 = new SimpleNode(JJTFORMALPARAMETERS);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(LPAREN);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case BOOLEAN:
      case BYTE:
      case CHAR:
      case DOUBLE:
      case FINAL:
      case FLOAT:
      case INT:
      case LONG:
      case SHORT:
      case IDENTIFIER:{
        FormalParameter();
        while (!hasError) {
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case COMMA:{
            ;
            break;
            }
          default:
            jj_la1[35] = jj_gen;
            goto end_label_16;
          }
          jj_consume_token(COMMA);
          FormalParameter();
        }
        end_label_16: ;
        break;
        }
      default:
        jj_la1[36] = jj_gen;
        ;
      }
      jj_consume_token(RPAREN);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::FormalParameter() {/*@bgen(jjtree) FormalParameter */
  SimpleNode *jjtn000 = new SimpleNode(JJTFORMALPARAMETER);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case FINAL:{
        jj_consume_token(FINAL);
        break;
        }
      default:
        jj_la1[37] = jj_gen;
        ;
      }
      Type();
      VariableDeclaratorId();
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ConstructorDeclaration() {/*@bgen(jjtree) ConstructorDeclaration */
  SimpleNode *jjtn000 = new SimpleNode(JJTCONSTRUCTORDECLARATION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case PRIVATE:
      case PROTECTED:
      case PUBLIC:{
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case PUBLIC:{
          jj_consume_token(PUBLIC);
          break;
          }
        case PROTECTED:{
          jj_consume_token(PROTECTED);
          break;
          }
        case PRIVATE:{
          jj_consume_token(PRIVATE);
          break;
          }
        default:
          jj_la1[38] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
        break;
        }
      default:
        jj_la1[39] = jj_gen;
        ;
      }
      jj_consume_token(IDENTIFIER);
      FormalParameters();
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case THROWS:{
        jj_consume_token(THROWS);
        NameList();
        break;
        }
      default:
        jj_la1[40] = jj_gen;
        ;
      }
      jj_consume_token(LBRACE);
      if (jj_2_11(2147483647)) {
        ExplicitConstructorInvocation();
      } else {
        ;
      }
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case BOOLEAN:
        case BREAK:
        case BYTE:
        case CHAR:
        case CLASS:
        case CONTINUE:
        case DO:
        case DOUBLE:
        case FALSE:
        case FINAL:
        case FLOAT:
        case FOR:
        case IF:
        case INT:
        case INTERFACE:
        case LONG:
        case NEW:
        case NULLL:
        case RETURN:
        case SHORT:
        case SUPER:
        case SWITCH:
        case SYNCHRONIZED:
        case THIS:
        case THROW:
        case TRUE:
        case TRY:
        case VOID:
        case WHILE:
        case INTEGER_LITERAL:
        case FLOATING_POINT_LITERAL:
        case CHARACTER_LITERAL:
        case STRING_LITERAL:
        case IDENTIFIER:
        case LPAREN:
        case LBRACE:
        case SEMICOLON:
        case INCR:
        case DECR:{
          ;
          break;
          }
        default:
          jj_la1[41] = jj_gen;
          goto end_label_17;
        }
        BlockStatement();
      }
      end_label_17: ;
      jj_consume_token(RBRACE);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ExplicitConstructorInvocation() {/*@bgen(jjtree) ExplicitConstructorInvocation */
  SimpleNode *jjtn000 = new SimpleNode(JJTEXPLICITCONSTRUCTORINVOCATION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      if (jj_2_13(2147483647)) {
        jj_consume_token(THIS);
        Arguments();
        jj_consume_token(SEMICOLON);
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case BOOLEAN:
        case BYTE:
        case CHAR:
        case DOUBLE:
        case FALSE:
        case FLOAT:
        case INT:
        case LONG:
        case NEW:
        case NULLL:
        case SHORT:
        case SUPER:
        case THIS:
        case TRUE:
        case VOID:
        case INTEGER_LITERAL:
        case FLOATING_POINT_LITERAL:
        case CHARACTER_LITERAL:
        case STRING_LITERAL:
        case IDENTIFIER:
        case LPAREN:{
          if (jj_2_12(2)) {
            PrimaryExpression();
            jj_consume_token(DOT);
          } else {
            ;
          }
          jj_consume_token(SUPER);
          Arguments();
          jj_consume_token(SEMICOLON);
          break;
          }
        default:
          jj_la1[42] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::Initializer() {/*@bgen(jjtree) Initializer */
  SimpleNode *jjtn000 = new SimpleNode(JJTINITIALIZER);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case STATIC:{
        jj_consume_token(STATIC);
        break;
        }
      default:
        jj_la1[43] = jj_gen;
        ;
      }
      Block();
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::Type() {/*@bgen(jjtree) Type */
  SimpleNode *jjtn000 = new SimpleNode(JJTTYPE);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case BOOLEAN:
      case BYTE:
      case CHAR:
      case DOUBLE:
      case FLOAT:
      case INT:
      case LONG:
      case SHORT:{
        PrimitiveType();
        break;
        }
      case IDENTIFIER:{
        Name();
        break;
        }
      default:
        jj_la1[44] = jj_gen;
        jj_consume_token(-1);
        errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
      }
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case LBRACKET:{
          ;
          break;
          }
        default:
          jj_la1[45] = jj_gen;
          goto end_label_18;
        }
        jj_consume_token(LBRACKET);
        jj_consume_token(RBRACKET);
      }
      end_label_18: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::PrimitiveType() {/*@bgen(jjtree) PrimitiveType */
  SimpleNode *jjtn000 = new SimpleNode(JJTPRIMITIVETYPE);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case BOOLEAN:{
        jj_consume_token(BOOLEAN);
        break;
        }
      case CHAR:{
        jj_consume_token(CHAR);
        break;
        }
      case BYTE:{
        jj_consume_token(BYTE);
        break;
        }
      case SHORT:{
        jj_consume_token(SHORT);
        break;
        }
      case INT:{
        jj_consume_token(INT);
        break;
        }
      case LONG:{
        jj_consume_token(LONG);
        break;
        }
      case FLOAT:{
        jj_consume_token(FLOAT);
        break;
        }
      case DOUBLE:{
        jj_consume_token(DOUBLE);
        break;
        }
      default:
        jj_la1[46] = jj_gen;
        jj_consume_token(-1);
        errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ResultType() {/*@bgen(jjtree) ResultType */
  SimpleNode *jjtn000 = new SimpleNode(JJTRESULTTYPE);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case VOID:{
        jj_consume_token(VOID);
        break;
        }
      case BOOLEAN:
      case BYTE:
      case CHAR:
      case DOUBLE:
      case FLOAT:
      case INT:
      case LONG:
      case SHORT:
      case IDENTIFIER:{
        Type();
        break;
        }
      default:
        jj_la1[47] = jj_gen;
        jj_consume_token(-1);
        errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::Name() {/*@bgen(jjtree) Name */
  SimpleNode *jjtn000 = new SimpleNode(JJTNAME);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(IDENTIFIER);
      while (!hasError) {
        if (jj_2_14(2)) {
          ;
        } else {
          goto end_label_19;
        }
        jj_consume_token(DOT);
        jj_consume_token(IDENTIFIER);
      }
      end_label_19: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::NameList() {/*@bgen(jjtree) NameList */
  SimpleNode *jjtn000 = new SimpleNode(JJTNAMELIST);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      Name();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case COMMA:{
          ;
          break;
          }
        default:
          jj_la1[48] = jj_gen;
          goto end_label_20;
        }
        jj_consume_token(COMMA);
        Name();
      }
      end_label_20: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::Expression() {/*@bgen(jjtree) Expression */
  SimpleNode *jjtn000 = new SimpleNode(JJTEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      ConditionalExpression();
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case ASSIGN:
      case PLUSASSIGN:
      case MINUSASSIGN:
      case STARASSIGN:
      case SLASHASSIGN:
      case ANDASSIGN:
      case ORASSIGN:
      case XORASSIGN:
      case REMASSIGN:
      case LSHIFTASSIGN:
      case RSIGNEDSHIFTASSIGN:
      case RUNSIGNEDSHIFTASSIGN:{
        AssignmentOperator();
        Expression();
        break;
        }
      default:
        jj_la1[49] = jj_gen;
        ;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::AssignmentOperator() {/*@bgen(jjtree) AssignmentOperator */
  SimpleNode *jjtn000 = new SimpleNode(JJTASSIGNMENTOPERATOR);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case ASSIGN:{
        jj_consume_token(ASSIGN);
        break;
        }
      case STARASSIGN:{
        jj_consume_token(STARASSIGN);
        break;
        }
      case SLASHASSIGN:{
        jj_consume_token(SLASHASSIGN);
        break;
        }
      case REMASSIGN:{
        jj_consume_token(REMASSIGN);
        break;
        }
      case PLUSASSIGN:{
        jj_consume_token(PLUSASSIGN);
        break;
        }
      case MINUSASSIGN:{
        jj_consume_token(MINUSASSIGN);
        break;
        }
      case LSHIFTASSIGN:{
        jj_consume_token(LSHIFTASSIGN);
        break;
        }
      case RSIGNEDSHIFTASSIGN:{
        jj_consume_token(RSIGNEDSHIFTASSIGN);
        break;
        }
      case RUNSIGNEDSHIFTASSIGN:{
        jj_consume_token(RUNSIGNEDSHIFTASSIGN);
        break;
        }
      case ANDASSIGN:{
        jj_consume_token(ANDASSIGN);
        break;
        }
      case XORASSIGN:{
        jj_consume_token(XORASSIGN);
        break;
        }
      case ORASSIGN:{
        jj_consume_token(ORASSIGN);
        break;
        }
      default:
        jj_la1[50] = jj_gen;
        jj_consume_token(-1);
        errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ConditionalExpression() {/*@bgen(jjtree) ConditionalExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTCONDITIONALEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      ConditionalOrExpression();
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case HOOK:{
        jj_consume_token(HOOK);
        Expression();
        jj_consume_token(COLON);
        ConditionalExpression();
        break;
        }
      default:
        jj_la1[51] = jj_gen;
        ;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ConditionalOrExpression() {/*@bgen(jjtree) ConditionalOrExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTCONDITIONALOREXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      ConditionalAndExpression();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case SC_OR:{
          ;
          break;
          }
        default:
          jj_la1[52] = jj_gen;
          goto end_label_21;
        }
        jj_consume_token(SC_OR);
        ConditionalAndExpression();
      }
      end_label_21: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ConditionalAndExpression() {/*@bgen(jjtree) ConditionalAndExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTCONDITIONALANDEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      InclusiveOrExpression();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case SC_AND:{
          ;
          break;
          }
        default:
          jj_la1[53] = jj_gen;
          goto end_label_22;
        }
        jj_consume_token(SC_AND);
        InclusiveOrExpression();
      }
      end_label_22: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::InclusiveOrExpression() {/*@bgen(jjtree) InclusiveOrExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTINCLUSIVEOREXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      ExclusiveOrExpression();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case BIT_OR:{
          ;
          break;
          }
        default:
          jj_la1[54] = jj_gen;
          goto end_label_23;
        }
        jj_consume_token(BIT_OR);
        ExclusiveOrExpression();
      }
      end_label_23: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ExclusiveOrExpression() {/*@bgen(jjtree) ExclusiveOrExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTEXCLUSIVEOREXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      AndExpression();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case XOR:{
          ;
          break;
          }
        default:
          jj_la1[55] = jj_gen;
          goto end_label_24;
        }
        jj_consume_token(XOR);
        AndExpression();
      }
      end_label_24: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::AndExpression() {/*@bgen(jjtree) AndExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTANDEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      EqualityExpression();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case BIT_AND:{
          ;
          break;
          }
        default:
          jj_la1[56] = jj_gen;
          goto end_label_25;
        }
        jj_consume_token(BIT_AND);
        EqualityExpression();
      }
      end_label_25: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::EqualityExpression() {/*@bgen(jjtree) EqualityExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTEQUALITYEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      InstanceOfExpression();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case EQ:
        case NE:{
          ;
          break;
          }
        default:
          jj_la1[57] = jj_gen;
          goto end_label_26;
        }
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case EQ:{
          jj_consume_token(EQ);
          break;
          }
        case NE:{
          jj_consume_token(NE);
          break;
          }
        default:
          jj_la1[58] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
        InstanceOfExpression();
      }
      end_label_26: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::InstanceOfExpression() {/*@bgen(jjtree) InstanceOfExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTINSTANCEOFEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      RelationalExpression();
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case INSTANCEOF:{
        jj_consume_token(INSTANCEOF);
        Type();
        break;
        }
      default:
        jj_la1[59] = jj_gen;
        ;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::RelationalExpression() {/*@bgen(jjtree) RelationalExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTRELATIONALEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      ShiftExpression();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case GT:
        case LT:
        case LE:
        case GE:{
          ;
          break;
          }
        default:
          jj_la1[60] = jj_gen;
          goto end_label_27;
        }
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case LT:{
          jj_consume_token(LT);
          break;
          }
        case GT:{
          jj_consume_token(GT);
          break;
          }
        case LE:{
          jj_consume_token(LE);
          break;
          }
        case GE:{
          jj_consume_token(GE);
          break;
          }
        default:
          jj_la1[61] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
        ShiftExpression();
      }
      end_label_27: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ShiftExpression() {/*@bgen(jjtree) ShiftExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTSHIFTEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      AdditiveExpression();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case LSHIFT:
        case RSIGNEDSHIFT:
        case RUNSIGNEDSHIFT:{
          ;
          break;
          }
        default:
          jj_la1[62] = jj_gen;
          goto end_label_28;
        }
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case LSHIFT:{
          jj_consume_token(LSHIFT);
          break;
          }
        case RSIGNEDSHIFT:{
          jj_consume_token(RSIGNEDSHIFT);
          break;
          }
        case RUNSIGNEDSHIFT:{
          jj_consume_token(RUNSIGNEDSHIFT);
          break;
          }
        default:
          jj_la1[63] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
        AdditiveExpression();
      }
      end_label_28: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::AdditiveExpression() {/*@bgen(jjtree) AdditiveExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTADDITIVEEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      MultiplicativeExpression();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case PLUS:
        case MINUS:{
          ;
          break;
          }
        default:
          jj_la1[64] = jj_gen;
          goto end_label_29;
        }
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case PLUS:{
          jj_consume_token(PLUS);
          break;
          }
        case MINUS:{
          jj_consume_token(MINUS);
          break;
          }
        default:
          jj_la1[65] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
        MultiplicativeExpression();
      }
      end_label_29: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::MultiplicativeExpression() {/*@bgen(jjtree) MultiplicativeExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTMULTIPLICATIVEEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      UnaryExpression();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case STAR:
        case SLASH:
        case REM:{
          ;
          break;
          }
        default:
          jj_la1[66] = jj_gen;
          goto end_label_30;
        }
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case STAR:{
          jj_consume_token(STAR);
          break;
          }
        case SLASH:{
          jj_consume_token(SLASH);
          break;
          }
        case REM:{
          jj_consume_token(REM);
          break;
          }
        default:
          jj_la1[67] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
        UnaryExpression();
      }
      end_label_30: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::UnaryExpression() {/*@bgen(jjtree) UnaryExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTUNARYEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case PLUS:
      case MINUS:{
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case PLUS:{
          jj_consume_token(PLUS);
          break;
          }
        case MINUS:{
          jj_consume_token(MINUS);
          break;
          }
        default:
          jj_la1[68] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
        UnaryExpression();
        break;
        }
      case INCR:{
        PreIncrementExpression();
        break;
        }
      case DECR:{
        PreDecrementExpression();
        break;
        }
      case BOOLEAN:
      case BYTE:
      case CHAR:
      case DOUBLE:
      case FALSE:
      case FLOAT:
      case INT:
      case LONG:
      case NEW:
      case NULLL:
      case SHORT:
      case SUPER:
      case THIS:
      case TRUE:
      case VOID:
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
      case IDENTIFIER:
      case LPAREN:
      case BANG:
      case TILDE:{
        UnaryExpressionNotPlusMinus();
        break;
        }
      default:
        jj_la1[69] = jj_gen;
        jj_consume_token(-1);
        errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::PreIncrementExpression() {/*@bgen(jjtree) PreIncrementExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTPREINCREMENTEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(INCR);
      PrimaryExpression();
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::PreDecrementExpression() {/*@bgen(jjtree) PreDecrementExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTPREDECREMENTEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(DECR);
      PrimaryExpression();
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::UnaryExpressionNotPlusMinus() {/*@bgen(jjtree) UnaryExpressionNotPlusMinus */
  SimpleNode *jjtn000 = new SimpleNode(JJTUNARYEXPRESSIONNOTPLUSMINUS);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case BANG:
      case TILDE:{
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case TILDE:{
          jj_consume_token(TILDE);
          break;
          }
        case BANG:{
          jj_consume_token(BANG);
          break;
          }
        default:
          jj_la1[70] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
        UnaryExpression();
        break;
        }
      default:
        jj_la1[71] = jj_gen;
        if (jj_2_15(2147483647)) {
          CastExpression();
        } else {
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case BOOLEAN:
          case BYTE:
          case CHAR:
          case DOUBLE:
          case FALSE:
          case FLOAT:
          case INT:
          case LONG:
          case NEW:
          case NULLL:
          case SHORT:
          case SUPER:
          case THIS:
          case TRUE:
          case VOID:
          case INTEGER_LITERAL:
          case FLOATING_POINT_LITERAL:
          case CHARACTER_LITERAL:
          case STRING_LITERAL:
          case IDENTIFIER:
          case LPAREN:{
            PostfixExpression();
            break;
            }
          default:
            jj_la1[72] = jj_gen;
            jj_consume_token(-1);
            errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
          }
        }
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::CastLookahead() {/*@bgen(jjtree) CastLookahead */
  SimpleNode *jjtn000 = new SimpleNode(JJTCASTLOOKAHEAD);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      if (jj_2_16(2)) {
        jj_consume_token(LPAREN);
        PrimitiveType();
      } else if (jj_2_17(2147483647)) {
        jj_consume_token(LPAREN);
        Name();
        jj_consume_token(LBRACKET);
        jj_consume_token(RBRACKET);
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case LPAREN:{
          jj_consume_token(LPAREN);
          Name();
          jj_consume_token(RPAREN);
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case TILDE:{
            jj_consume_token(TILDE);
            break;
            }
          case BANG:{
            jj_consume_token(BANG);
            break;
            }
          case LPAREN:{
            jj_consume_token(LPAREN);
            break;
            }
          case IDENTIFIER:{
            jj_consume_token(IDENTIFIER);
            break;
            }
          case THIS:{
            jj_consume_token(THIS);
            break;
            }
          case SUPER:{
            jj_consume_token(SUPER);
            break;
            }
          case NEW:{
            jj_consume_token(NEW);
            break;
            }
          case FALSE:
          case NULLL:
          case TRUE:
          case INTEGER_LITERAL:
          case FLOATING_POINT_LITERAL:
          case CHARACTER_LITERAL:
          case STRING_LITERAL:{
            Literal();
            break;
            }
          default:
            jj_la1[73] = jj_gen;
            jj_consume_token(-1);
            errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
          }
          break;
          }
        default:
          jj_la1[74] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::PostfixExpression() {/*@bgen(jjtree) PostfixExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTPOSTFIXEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      PrimaryExpression();
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case INCR:
      case DECR:{
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case INCR:{
          jj_consume_token(INCR);
          break;
          }
        case DECR:{
          jj_consume_token(DECR);
          break;
          }
        default:
          jj_la1[75] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
        break;
        }
      default:
        jj_la1[76] = jj_gen;
        ;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::CastExpression() {/*@bgen(jjtree) CastExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTCASTEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      if (jj_2_18(2147483647)) {
        jj_consume_token(LPAREN);
        Type();
        jj_consume_token(RPAREN);
        UnaryExpression();
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case LPAREN:{
          jj_consume_token(LPAREN);
          Type();
          jj_consume_token(RPAREN);
          UnaryExpressionNotPlusMinus();
          break;
          }
        default:
          jj_la1[77] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::PrimaryExpression() {/*@bgen(jjtree) PrimaryExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTPRIMARYEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      PrimaryPrefix();
      while (!hasError) {
        if (jj_2_19(2)) {
          ;
        } else {
          goto end_label_31;
        }
        PrimarySuffix();
      }
      end_label_31: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::PrimaryPrefix() {/*@bgen(jjtree) PrimaryPrefix */
  SimpleNode *jjtn000 = new SimpleNode(JJTPRIMARYPREFIX);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case FALSE:
      case NULLL:
      case TRUE:
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:{
        Literal();
        break;
        }
      case THIS:{
        jj_consume_token(THIS);
        break;
        }
      case SUPER:{
        jj_consume_token(SUPER);
        jj_consume_token(DOT);
        jj_consume_token(IDENTIFIER);
        break;
        }
      case LPAREN:{
        jj_consume_token(LPAREN);
        Expression();
        jj_consume_token(RPAREN);
        break;
        }
      case NEW:{
        AllocationExpression();
        break;
        }
      default:
        jj_la1[78] = jj_gen;
        if (jj_2_20(2147483647)) {
          ResultType();
          jj_consume_token(DOT);
          jj_consume_token(CLASS);
        } else {
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case IDENTIFIER:{
            Name();
            break;
            }
          default:
            jj_la1[79] = jj_gen;
            jj_consume_token(-1);
            errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
          }
        }
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::PrimarySuffix() {/*@bgen(jjtree) PrimarySuffix */
  SimpleNode *jjtn000 = new SimpleNode(JJTPRIMARYSUFFIX);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      if (jj_2_21(2)) {
        jj_consume_token(DOT);
        jj_consume_token(THIS);
      } else if (jj_2_22(2)) {
        jj_consume_token(DOT);
        AllocationExpression();
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case LBRACKET:{
          jj_consume_token(LBRACKET);
          Expression();
          jj_consume_token(RBRACKET);
          break;
          }
        case DOT:{
          jj_consume_token(DOT);
          jj_consume_token(IDENTIFIER);
          break;
          }
        case LPAREN:{
          Arguments();
          break;
          }
        default:
          jj_la1[80] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::Literal() {/*@bgen(jjtree) Literal */
  SimpleNode *jjtn000 = new SimpleNode(JJTLITERAL);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case INTEGER_LITERAL:{
        jj_consume_token(INTEGER_LITERAL);
        break;
        }
      case FLOATING_POINT_LITERAL:{
        jj_consume_token(FLOATING_POINT_LITERAL);
        break;
        }
      case CHARACTER_LITERAL:{
        jj_consume_token(CHARACTER_LITERAL);
        break;
        }
      case STRING_LITERAL:{
        jj_consume_token(STRING_LITERAL);
        break;
        }
      case FALSE:
      case TRUE:{
        BooleanLiteral();
        break;
        }
      case NULLL:{
        NullLiteral();
        break;
        }
      default:
        jj_la1[81] = jj_gen;
        jj_consume_token(-1);
        errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::BooleanLiteral() {/*@bgen(jjtree) BooleanLiteral */
  SimpleNode *jjtn000 = new SimpleNode(JJTBOOLEANLITERAL);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case TRUE:{
        jj_consume_token(TRUE);
        break;
        }
      case FALSE:{
        jj_consume_token(FALSE);
        break;
        }
      default:
        jj_la1[82] = jj_gen;
        jj_consume_token(-1);
        errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::NullLiteral() {/*@bgen(jjtree) NullLiteral */
  SimpleNode *jjtn000 = new SimpleNode(JJTNULLLITERAL);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(NULLL);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::Arguments() {/*@bgen(jjtree) Arguments */
  SimpleNode *jjtn000 = new SimpleNode(JJTARGUMENTS);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(LPAREN);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case BOOLEAN:
      case BYTE:
      case CHAR:
      case DOUBLE:
      case FALSE:
      case FLOAT:
      case INT:
      case LONG:
      case NEW:
      case NULLL:
      case SHORT:
      case SUPER:
      case THIS:
      case TRUE:
      case VOID:
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
      case IDENTIFIER:
      case LPAREN:
      case BANG:
      case TILDE:
      case INCR:
      case DECR:
      case PLUS:
      case MINUS:{
        ArgumentList();
        break;
        }
      default:
        jj_la1[83] = jj_gen;
        ;
      }
      jj_consume_token(RPAREN);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ArgumentList() {/*@bgen(jjtree) ArgumentList */
  SimpleNode *jjtn000 = new SimpleNode(JJTARGUMENTLIST);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      Expression();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case COMMA:{
          ;
          break;
          }
        default:
          jj_la1[84] = jj_gen;
          goto end_label_32;
        }
        jj_consume_token(COMMA);
        Expression();
      }
      end_label_32: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::AllocationExpression() {/*@bgen(jjtree) AllocationExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTALLOCATIONEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      if (jj_2_23(2)) {
        jj_consume_token(NEW);
        PrimitiveType();
        ArrayDimsAndInits();
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case NEW:{
          jj_consume_token(NEW);
          Name();
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case LBRACKET:{
            ArrayDimsAndInits();
            break;
            }
          case LPAREN:{
            Arguments();
            switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
            case LBRACE:{
              ClassBody();
              break;
              }
            default:
              jj_la1[85] = jj_gen;
              ;
            }
            break;
            }
          default:
            jj_la1[86] = jj_gen;
            jj_consume_token(-1);
            errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
          }
          break;
          }
        default:
          jj_la1[87] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ArrayDimsAndInits() {/*@bgen(jjtree) ArrayDimsAndInits */
  SimpleNode *jjtn000 = new SimpleNode(JJTARRAYDIMSANDINITS);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      if (jj_2_26(2)) {
        while (!hasError) {
          jj_consume_token(LBRACKET);
          Expression();
          jj_consume_token(RBRACKET);
          if (jj_2_24(2)) {
            ;
          } else {
            goto end_label_33;
          }
        }
        end_label_33: ;
        while (!hasError) {
          if (jj_2_25(2)) {
            ;
          } else {
            goto end_label_34;
          }
          jj_consume_token(LBRACKET);
          jj_consume_token(RBRACKET);
        }
        end_label_34: ;
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case LBRACKET:{
          while (!hasError) {
            jj_consume_token(LBRACKET);
            jj_consume_token(RBRACKET);
            switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
            case LBRACKET:{
              ;
              break;
              }
            default:
              jj_la1[88] = jj_gen;
              goto end_label_35;
            }
          }
          end_label_35: ;
          ArrayInitializer();
          break;
          }
        default:
          jj_la1[89] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::Statement() {/*@bgen(jjtree) Statement */
  SimpleNode *jjtn000 = new SimpleNode(JJTSTATEMENT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      if (jj_2_27(2)) {
        LabeledStatement();
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case LBRACE:{
          Block();
          break;
          }
        case SEMICOLON:{
          EmptyStatement();
          break;
          }
        case BOOLEAN:
        case BYTE:
        case CHAR:
        case DOUBLE:
        case FALSE:
        case FLOAT:
        case INT:
        case LONG:
        case NEW:
        case NULLL:
        case SHORT:
        case SUPER:
        case THIS:
        case TRUE:
        case VOID:
        case INTEGER_LITERAL:
        case FLOATING_POINT_LITERAL:
        case CHARACTER_LITERAL:
        case STRING_LITERAL:
        case IDENTIFIER:
        case LPAREN:
        case INCR:
        case DECR:{
          StatementExpression();
          jj_consume_token(SEMICOLON);
          break;
          }
        case SWITCH:{
          SwitchStatement();
          break;
          }
        case IF:{
          IfStatement();
          break;
          }
        case WHILE:{
          WhileStatement();
          break;
          }
        case DO:{
          DoStatement();
          break;
          }
        case FOR:{
          ForStatement();
          break;
          }
        case BREAK:{
          BreakStatement();
          break;
          }
        case CONTINUE:{
          ContinueStatement();
          break;
          }
        case RETURN:{
          ReturnStatement();
          break;
          }
        case THROW:{
          ThrowStatement();
          break;
          }
        case SYNCHRONIZED:{
          SynchronizedStatement();
          break;
          }
        case TRY:{
          TryStatement();
          break;
          }
        default:
          jj_la1[90] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::LabeledStatement() {/*@bgen(jjtree) LabeledStatement */
  SimpleNode *jjtn000 = new SimpleNode(JJTLABELEDSTATEMENT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(IDENTIFIER);
      jj_consume_token(COLON);
      Statement();
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::Block() {/*@bgen(jjtree) Block */
  SimpleNode *jjtn000 = new SimpleNode(JJTBLOCK);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(LBRACE);
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case BOOLEAN:
        case BREAK:
        case BYTE:
        case CHAR:
        case CLASS:
        case CONTINUE:
        case DO:
        case DOUBLE:
        case FALSE:
        case FINAL:
        case FLOAT:
        case FOR:
        case IF:
        case INT:
        case INTERFACE:
        case LONG:
        case NEW:
        case NULLL:
        case RETURN:
        case SHORT:
        case SUPER:
        case SWITCH:
        case SYNCHRONIZED:
        case THIS:
        case THROW:
        case TRUE:
        case TRY:
        case VOID:
        case WHILE:
        case INTEGER_LITERAL:
        case FLOATING_POINT_LITERAL:
        case CHARACTER_LITERAL:
        case STRING_LITERAL:
        case IDENTIFIER:
        case LPAREN:
        case LBRACE:
        case SEMICOLON:
        case INCR:
        case DECR:{
          ;
          break;
          }
        default:
          jj_la1[91] = jj_gen;
          goto end_label_36;
        }
        BlockStatement();
      }
      end_label_36: ;
      jj_consume_token(RBRACE);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::BlockStatement() {/*@bgen(jjtree) BlockStatement */
  SimpleNode *jjtn000 = new SimpleNode(JJTBLOCKSTATEMENT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      if (jj_2_28(2147483647)) {
        LocalVariableDeclaration();
        jj_consume_token(SEMICOLON);
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case BOOLEAN:
        case BREAK:
        case BYTE:
        case CHAR:
        case CONTINUE:
        case DO:
        case DOUBLE:
        case FALSE:
        case FLOAT:
        case FOR:
        case IF:
        case INT:
        case LONG:
        case NEW:
        case NULLL:
        case RETURN:
        case SHORT:
        case SUPER:
        case SWITCH:
        case SYNCHRONIZED:
        case THIS:
        case THROW:
        case TRUE:
        case TRY:
        case VOID:
        case WHILE:
        case INTEGER_LITERAL:
        case FLOATING_POINT_LITERAL:
        case CHARACTER_LITERAL:
        case STRING_LITERAL:
        case IDENTIFIER:
        case LPAREN:
        case LBRACE:
        case SEMICOLON:
        case INCR:
        case DECR:{
          Statement();
          break;
          }
        case CLASS:{
          UnmodifiedClassDeclaration();
          break;
          }
        case INTERFACE:{
          UnmodifiedInterfaceDeclaration();
          break;
          }
        default:
          jj_la1[92] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::LocalVariableDeclaration() {/*@bgen(jjtree) LocalVariableDeclaration */
  SimpleNode *jjtn000 = new SimpleNode(JJTLOCALVARIABLEDECLARATION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case FINAL:{
        jj_consume_token(FINAL);
        break;
        }
      default:
        jj_la1[93] = jj_gen;
        ;
      }
      Type();
      VariableDeclarator();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case COMMA:{
          ;
          break;
          }
        default:
          jj_la1[94] = jj_gen;
          goto end_label_37;
        }
        jj_consume_token(COMMA);
        VariableDeclarator();
      }
      end_label_37: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::EmptyStatement() {/*@bgen(jjtree) EmptyStatement */
  SimpleNode *jjtn000 = new SimpleNode(JJTEMPTYSTATEMENT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(SEMICOLON);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::StatementExpression() {/*@bgen(jjtree) StatementExpression */
  SimpleNode *jjtn000 = new SimpleNode(JJTSTATEMENTEXPRESSION);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case INCR:{
        PreIncrementExpression();
        break;
        }
      case DECR:{
        PreDecrementExpression();
        break;
        }
      case BOOLEAN:
      case BYTE:
      case CHAR:
      case DOUBLE:
      case FALSE:
      case FLOAT:
      case INT:
      case LONG:
      case NEW:
      case NULLL:
      case SHORT:
      case SUPER:
      case THIS:
      case TRUE:
      case VOID:
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
      case IDENTIFIER:
      case LPAREN:{
        PrimaryExpression();
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case ASSIGN:
        case INCR:
        case DECR:
        case PLUSASSIGN:
        case MINUSASSIGN:
        case STARASSIGN:
        case SLASHASSIGN:
        case ANDASSIGN:
        case ORASSIGN:
        case XORASSIGN:
        case REMASSIGN:
        case LSHIFTASSIGN:
        case RSIGNEDSHIFTASSIGN:
        case RUNSIGNEDSHIFTASSIGN:{
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case INCR:{
            jj_consume_token(INCR);
            break;
            }
          case DECR:{
            jj_consume_token(DECR);
            break;
            }
          case ASSIGN:
          case PLUSASSIGN:
          case MINUSASSIGN:
          case STARASSIGN:
          case SLASHASSIGN:
          case ANDASSIGN:
          case ORASSIGN:
          case XORASSIGN:
          case REMASSIGN:
          case LSHIFTASSIGN:
          case RSIGNEDSHIFTASSIGN:
          case RUNSIGNEDSHIFTASSIGN:{
            AssignmentOperator();
            Expression();
            break;
            }
          default:
            jj_la1[95] = jj_gen;
            jj_consume_token(-1);
            errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
          }
          break;
          }
        default:
          jj_la1[96] = jj_gen;
          ;
        }
        break;
        }
      default:
        jj_la1[97] = jj_gen;
        jj_consume_token(-1);
        errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::SwitchStatement() {/*@bgen(jjtree) SwitchStatement */
  SimpleNode *jjtn000 = new SimpleNode(JJTSWITCHSTATEMENT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(SWITCH);
      jj_consume_token(LPAREN);
      Expression();
      jj_consume_token(RPAREN);
      jj_consume_token(LBRACE);
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case CASE:
        case _DEFAULT:{
          ;
          break;
          }
        default:
          jj_la1[98] = jj_gen;
          goto end_label_38;
        }
        SwitchLabel();
        while (!hasError) {
          switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
          case BOOLEAN:
          case BREAK:
          case BYTE:
          case CHAR:
          case CLASS:
          case CONTINUE:
          case DO:
          case DOUBLE:
          case FALSE:
          case FINAL:
          case FLOAT:
          case FOR:
          case IF:
          case INT:
          case INTERFACE:
          case LONG:
          case NEW:
          case NULLL:
          case RETURN:
          case SHORT:
          case SUPER:
          case SWITCH:
          case SYNCHRONIZED:
          case THIS:
          case THROW:
          case TRUE:
          case TRY:
          case VOID:
          case WHILE:
          case INTEGER_LITERAL:
          case FLOATING_POINT_LITERAL:
          case CHARACTER_LITERAL:
          case STRING_LITERAL:
          case IDENTIFIER:
          case LPAREN:
          case LBRACE:
          case SEMICOLON:
          case INCR:
          case DECR:{
            ;
            break;
            }
          default:
            jj_la1[99] = jj_gen;
            goto end_label_39;
          }
          BlockStatement();
        }
        end_label_39: ;
      }
      end_label_38: ;
      jj_consume_token(RBRACE);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::SwitchLabel() {/*@bgen(jjtree) SwitchLabel */
  SimpleNode *jjtn000 = new SimpleNode(JJTSWITCHLABEL);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case CASE:{
        jj_consume_token(CASE);
        Expression();
        jj_consume_token(COLON);
        break;
        }
      case _DEFAULT:{
        jj_consume_token(_DEFAULT);
        jj_consume_token(COLON);
        break;
        }
      default:
        jj_la1[100] = jj_gen;
        jj_consume_token(-1);
        errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::IfStatement() {/*@bgen(jjtree) IfStatement */
  SimpleNode *jjtn000 = new SimpleNode(JJTIFSTATEMENT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(IF);
      jj_consume_token(LPAREN);
      Expression();
      jj_consume_token(RPAREN);
      Statement();
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case ELSE:{
        jj_consume_token(ELSE);
        Statement();
        break;
        }
      default:
        jj_la1[101] = jj_gen;
        ;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::WhileStatement() {/*@bgen(jjtree) WhileStatement */
  SimpleNode *jjtn000 = new SimpleNode(JJTWHILESTATEMENT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(WHILE);
      jj_consume_token(LPAREN);
      Expression();
      jj_consume_token(RPAREN);
      Statement();
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::DoStatement() {/*@bgen(jjtree) DoStatement */
  SimpleNode *jjtn000 = new SimpleNode(JJTDOSTATEMENT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(DO);
      Statement();
      jj_consume_token(WHILE);
      jj_consume_token(LPAREN);
      Expression();
      jj_consume_token(RPAREN);
      jj_consume_token(SEMICOLON);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ForStatement() {/*@bgen(jjtree) ForStatement */
  SimpleNode *jjtn000 = new SimpleNode(JJTFORSTATEMENT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(FOR);
      jj_consume_token(LPAREN);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case BOOLEAN:
      case BYTE:
      case CHAR:
      case DOUBLE:
      case FALSE:
      case FINAL:
      case FLOAT:
      case INT:
      case LONG:
      case NEW:
      case NULLL:
      case SHORT:
      case SUPER:
      case THIS:
      case TRUE:
      case VOID:
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
      case IDENTIFIER:
      case LPAREN:
      case INCR:
      case DECR:{
        ForInit();
        break;
        }
      default:
        jj_la1[102] = jj_gen;
        ;
      }
      jj_consume_token(SEMICOLON);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case BOOLEAN:
      case BYTE:
      case CHAR:
      case DOUBLE:
      case FALSE:
      case FLOAT:
      case INT:
      case LONG:
      case NEW:
      case NULLL:
      case SHORT:
      case SUPER:
      case THIS:
      case TRUE:
      case VOID:
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
      case IDENTIFIER:
      case LPAREN:
      case BANG:
      case TILDE:
      case INCR:
      case DECR:
      case PLUS:
      case MINUS:{
        Expression();
        break;
        }
      default:
        jj_la1[103] = jj_gen;
        ;
      }
      jj_consume_token(SEMICOLON);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case BOOLEAN:
      case BYTE:
      case CHAR:
      case DOUBLE:
      case FALSE:
      case FLOAT:
      case INT:
      case LONG:
      case NEW:
      case NULLL:
      case SHORT:
      case SUPER:
      case THIS:
      case TRUE:
      case VOID:
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
      case IDENTIFIER:
      case LPAREN:
      case INCR:
      case DECR:{
        ForUpdate();
        break;
        }
      default:
        jj_la1[104] = jj_gen;
        ;
      }
      jj_consume_token(RPAREN);
      Statement();
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ForInit() {/*@bgen(jjtree) ForInit */
  SimpleNode *jjtn000 = new SimpleNode(JJTFORINIT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      if (jj_2_29(2147483647)) {
        LocalVariableDeclaration();
      } else {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case BOOLEAN:
        case BYTE:
        case CHAR:
        case DOUBLE:
        case FALSE:
        case FLOAT:
        case INT:
        case LONG:
        case NEW:
        case NULLL:
        case SHORT:
        case SUPER:
        case THIS:
        case TRUE:
        case VOID:
        case INTEGER_LITERAL:
        case FLOATING_POINT_LITERAL:
        case CHARACTER_LITERAL:
        case STRING_LITERAL:
        case IDENTIFIER:
        case LPAREN:
        case INCR:
        case DECR:{
          StatementExpressionList();
          break;
          }
        default:
          jj_la1[105] = jj_gen;
          jj_consume_token(-1);
          errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
        }
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::StatementExpressionList() {/*@bgen(jjtree) StatementExpressionList */
  SimpleNode *jjtn000 = new SimpleNode(JJTSTATEMENTEXPRESSIONLIST);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      StatementExpression();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case COMMA:{
          ;
          break;
          }
        default:
          jj_la1[106] = jj_gen;
          goto end_label_40;
        }
        jj_consume_token(COMMA);
        StatementExpression();
      }
      end_label_40: ;
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ForUpdate() {/*@bgen(jjtree) ForUpdate */
  SimpleNode *jjtn000 = new SimpleNode(JJTFORUPDATE);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      StatementExpressionList();
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::BreakStatement() {/*@bgen(jjtree) BreakStatement */
  SimpleNode *jjtn000 = new SimpleNode(JJTBREAKSTATEMENT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(BREAK);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case IDENTIFIER:{
        jj_consume_token(IDENTIFIER);
        break;
        }
      default:
        jj_la1[107] = jj_gen;
        ;
      }
      jj_consume_token(SEMICOLON);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ContinueStatement() {/*@bgen(jjtree) ContinueStatement */
  SimpleNode *jjtn000 = new SimpleNode(JJTCONTINUESTATEMENT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(CONTINUE);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case IDENTIFIER:{
        jj_consume_token(IDENTIFIER);
        break;
        }
      default:
        jj_la1[108] = jj_gen;
        ;
      }
      jj_consume_token(SEMICOLON);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ReturnStatement() {/*@bgen(jjtree) ReturnStatement */
  SimpleNode *jjtn000 = new SimpleNode(JJTRETURNSTATEMENT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(RETURN);
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case BOOLEAN:
      case BYTE:
      case CHAR:
      case DOUBLE:
      case FALSE:
      case FLOAT:
      case INT:
      case LONG:
      case NEW:
      case NULLL:
      case SHORT:
      case SUPER:
      case THIS:
      case TRUE:
      case VOID:
      case INTEGER_LITERAL:
      case FLOATING_POINT_LITERAL:
      case CHARACTER_LITERAL:
      case STRING_LITERAL:
      case IDENTIFIER:
      case LPAREN:
      case BANG:
      case TILDE:
      case INCR:
      case DECR:
      case PLUS:
      case MINUS:{
        Expression();
        break;
        }
      default:
        jj_la1[109] = jj_gen;
        ;
      }
      jj_consume_token(SEMICOLON);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::ThrowStatement() {/*@bgen(jjtree) ThrowStatement */
  SimpleNode *jjtn000 = new SimpleNode(JJTTHROWSTATEMENT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(THROW);
      Expression();
      jj_consume_token(SEMICOLON);
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::SynchronizedStatement() {/*@bgen(jjtree) SynchronizedStatement */
  SimpleNode *jjtn000 = new SimpleNode(JJTSYNCHRONIZEDSTATEMENT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(SYNCHRONIZED);
      jj_consume_token(LPAREN);
      Expression();
      jj_consume_token(RPAREN);
      Block();
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


void JavaParser::TryStatement() {/*@bgen(jjtree) TryStatement */
  SimpleNode *jjtn000 = new SimpleNode(JJTTRYSTATEMENT);
  bool jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      jj_consume_token(TRY);
      Block();
      while (!hasError) {
        switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
        case CATCH:{
          ;
          break;
          }
        default:
          jj_la1[110] = jj_gen;
          goto end_label_41;
        }
        jj_consume_token(CATCH);
        jj_consume_token(LPAREN);
        FormalParameter();
        jj_consume_token(RPAREN);
        Block();
      }
      end_label_41: ;
      switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
      case FINALLY:{
        jj_consume_token(FINALLY);
        Block();
        break;
        }
      default:
        jj_la1[111] = jj_gen;
        ;
      }
    } catch ( ...) {
if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    }
if (jjtc000) {
      jjtree.closeNodeScope(jjtn000, true);
    }
}


  JavaParser::JavaParser(TokenManager *tokenManager) : MyParser()
{
    head = nullptr;
    ReInit(tokenManager);
}
JavaParser::~JavaParser()
{
  clear();
}

void JavaParser::ReInit(TokenManager* tokenManager){
    clear();
    errorHandler = new ErrorHandler();
    hasError = false;
    token_source = tokenManager;
    head = token = new Token();
    token->kind = 0;
    token->next = nullptr;
    jj_lookingAhead = false;
    jj_rescan = false;
    jj_done = false;
    jj_scanpos = jj_lastpos = nullptr;
    jj_gc = 0;
    jj_kind = -1;
    indent = 0;
    trace = false;
    jj_ntk = -1;
    jjtree.reset();
    jj_gen = 0;
    for (int i = 0; i < 112; i++) jj_la1[i] = -1;
  }


void JavaParser::clear(){
  //Since token manager was generate from outside,
  //parser should not take care of deleting
  //if (token_source) delete token_source;
  if (head) {
    Token *next, *t = head;
    while (t) {
      next = t->next;
      delete t;
      t = next;
    }
  }
  if (errorHandler) {
    delete errorHandler, errorHandler = nullptr;
  }
}


Token * JavaParser::jj_consume_token(int kind)  {
    Token *oldToken;
    if ((oldToken = token)->next != nullptr) 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 < 29; i++) {
          JJCalls *c = &jj_2_rtns[i];
          while (c != nullptr) {
            if (c->gen < jj_gen) c->first = nullptr;
            c = c->next;
          }
        }
      }
      return token;
    }
    token = oldToken;
    jj_kind = kind;
    JJString image = kind >= 0 ? tokenImage[kind] : tokenImage[0];
    errorHandler->handleUnexpectedToken(kind, image.substr(1, image.size() - 2), getToken(1), this);
    hasError = true;
    return token;
  }


bool  JavaParser::jj_scan_token(int kind){
    if (jj_scanpos == jj_lastpos) {
      jj_la--;
      if (jj_scanpos->next == nullptr) {
        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 != nullptr && tok != jj_scanpos) { i++; tok = tok->next; }
      if (tok != nullptr) jj_add_error_token(kind, i);
    }
    if (jj_scanpos->kind != kind) return true;
    if (jj_la == 0 && jj_scanpos == jj_lastpos) { return jj_done = true; }
    return false;
  }


/** Get the next Token. */

Token * JavaParser::getNextToken(){
    if (token->next != nullptr) token = token->next;
    else token = token->next = token_source->getNextToken();
    jj_ntk = -1;
    jj_gen++;
    return token;
  }

/** Get the specific Token. */

Token * JavaParser::getToken(int index){
    Token *t = token;
    for (int i = 0; i < index; i++) {
      if (t->next != nullptr) t = t->next;
      else t = t->next = token_source->getNextToken();
    }
    return t;
  }


int JavaParser::jj_ntk_f(){
    if ((jj_nt=token->next) == nullptr)
      return (jj_ntk = (token->next=token_source->getNextToken())->kind);
    else
      return (jj_ntk = jj_nt->kind);
  }


  void JavaParser::jj_add_error_token(int kind, int pos)  {
  }


 void  JavaParser::parseError()   {
      fprintf(stderr, "Parse error at: %d:%d, after token: %s encountered: %s\n", token->beginLine, token->beginColumn, addUnicodeEscapes(token->image).c_str(), addUnicodeEscapes(getToken(1)->image).c_str());
   }


  bool JavaParser::trace_enabled()  {
    return trace;
  }


  void JavaParser::enable_tracing()  {
  }

  void JavaParser::disable_tracing()  {
  }


  void JavaParser::jj_rescan_token(){
    jj_rescan = true;
    for (int i = 0; i < 29; i++) {
      JJCalls *p = &jj_2_rtns[i];
      do {
        if (p->gen > jj_gen) {
          jj_la = p->arg; jj_lastpos = jj_scanpos = p->first;
          switch (i) {
            case 0: jj_3_1(); break;
            case 1: jj_3_2(); break;
            case 2: jj_3_3(); break;
            case 3: jj_3_4(); break;
            case 4: jj_3_5(); break;
            case 5: jj_3_6(); break;
            case 6: jj_3_7(); break;
            case 7: jj_3_8(); break;
            case 8: jj_3_9(); break;
            case 9: jj_3_10(); break;
            case 10: jj_3_11(); break;
            case 11: jj_3_12(); break;
            case 12: jj_3_13(); break;
            case 13: jj_3_14(); break;
            case 14: jj_3_15(); break;
            case 15: jj_3_16(); break;
            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;
          }
        }
        p = p->next;
      } while (p != nullptr);
    }
    jj_rescan = false;
  }


  void JavaParser::jj_save(int index, int xla){
    JJCalls *p = &jj_2_rtns[index];
    while (p->gen > jj_gen) {
      if (p->next == nullptr) { p = p->next = new JJCalls(); break; }
      p = p->next;
    }
    p->gen = jj_gen + xla - jj_la; p->first = token; p->arg = xla;
  }


}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy