JavaTreeRecognizer.java :  » Parser » Rats-Parser-Generators » xtc » lang » antlr » Java Open Source

Java Open Source » Parser » Rats Parser Generators 
Rats Parser Generators » xtc » lang » antlr » JavaTreeRecognizer.java
// $ANTLR 2.7.5 (20050128): "javatree.g" -> "JavaTreeRecognizer.java"$

package xtc.lang.antlr;

import antlr.TokenBuffer;
import antlr.TokenStreamException;
import antlr.TokenStreamIOException;
import antlr.ANTLRException;
import antlr.LLkParser;
import antlr.Token;
import antlr.TokenStream;
import antlr.RecognitionException;
import antlr.NoViableAltException;
import antlr.MismatchedTokenException;
import antlr.SemanticException;
import antlr.ParserSharedInputState;
import antlr.collections.impl.BitSet;
import antlr.collections.AST;
import java.util.Hashtable;
import antlr.ASTFactory;
import antlr.ASTPair;
import antlr.collections.impl.ASTArray;

@SuppressWarnings( { "unused", "cast" } )
public class JavaTreeRecognizer extends antlr.LLkParser       implements JavaTreeTokenTypes
 {

protected JavaTreeRecognizer(TokenBuffer tokenBuf, int k) {
  super(tokenBuf,k);
  tokenNames = _tokenNames;
  buildTokenTypeASTClassMap();
  astFactory = new ASTFactory(getTokenTypeToASTClassMap());
}

public JavaTreeRecognizer(TokenBuffer tokenBuf) {
  this(tokenBuf,2);
}

protected JavaTreeRecognizer(TokenStream lexer, int k) {
  super(lexer,k);
  tokenNames = _tokenNames;
  buildTokenTypeASTClassMap();
  astFactory = new ASTFactory(getTokenTypeToASTClassMap());
}

public JavaTreeRecognizer(TokenStream lexer) {
  this(lexer,2);
}

public JavaTreeRecognizer(ParserSharedInputState state) {
  super(state,2);
  tokenNames = _tokenNames;
  buildTokenTypeASTClassMap();
  astFactory = new ASTFactory(getTokenTypeToASTClassMap());
}

  public final void compilationUnit() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST compilationUnit_AST = null;
    
    {
    switch ( LA(1)) {
    case LITERAL_package:
    {
      packageDefinition();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case EOF:
    case FINAL:
    case ABSTRACT:
    case STRICTFP:
    case SEMI:
    case LITERAL_import:
    case LITERAL_private:
    case LITERAL_public:
    case LITERAL_protected:
    case LITERAL_static:
    case LITERAL_transient:
    case LITERAL_native:
    case LITERAL_threadsafe:
    case LITERAL_synchronized:
    case LITERAL_volatile:
    case LITERAL_class:
    case LITERAL_interface:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    {
    _loop4:
    do {
      if ((LA(1)==LITERAL_import)) {
        importDefinition();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop4;
      }
      
    } while (true);
    }
    {
    _loop6:
    do {
      if ((_tokenSet_0.member(LA(1)))) {
        typeDefinition();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop6;
      }
      
    } while (true);
    }
    match(Token.EOF_TYPE);
    compilationUnit_AST = (AST)currentAST.root;
    returnAST = compilationUnit_AST;
  }
  
  public final void packageDefinition() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST packageDefinition_AST = null;
    Token  p = null;
    AST p_AST = null;
    
    try {      // for error handling
      p = LT(1);
      p_AST = astFactory.create(p);
      astFactory.makeASTRoot(currentAST, p_AST);
      match(LITERAL_package);
      if ( inputState.guessing==0 ) {
        p_AST.setType(PACKAGE_DEF);
      }
      identifier();
      astFactory.addASTChild(currentAST, returnAST);
      match(SEMI);
      packageDefinition_AST = (AST)currentAST.root;
    }
    catch (RecognitionException ex) {
      if (inputState.guessing==0) {
        reportError(ex);
        recover(ex,_tokenSet_1);
      } else {
        throw ex;
      }
    }
    returnAST = packageDefinition_AST;
  }
  
  public final void importDefinition() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST importDefinition_AST = null;
    Token  i = null;
    AST i_AST = null;
    
    try {      // for error handling
      i = LT(1);
      i_AST = astFactory.create(i);
      astFactory.makeASTRoot(currentAST, i_AST);
      match(LITERAL_import);
      if ( inputState.guessing==0 ) {
        i_AST.setType(IMPORT);
      }
      identifierStar();
      astFactory.addASTChild(currentAST, returnAST);
      match(SEMI);
      importDefinition_AST = (AST)currentAST.root;
    }
    catch (RecognitionException ex) {
      if (inputState.guessing==0) {
        reportError(ex);
        recover(ex,_tokenSet_1);
      } else {
        throw ex;
      }
    }
    returnAST = importDefinition_AST;
  }
  
  public final void typeDefinition() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST typeDefinition_AST = null;
    AST m_AST = null;
    
    try {      // for error handling
      switch ( LA(1)) {
      case FINAL:
      case ABSTRACT:
      case STRICTFP:
      case LITERAL_private:
      case LITERAL_public:
      case LITERAL_protected:
      case LITERAL_static:
      case LITERAL_transient:
      case LITERAL_native:
      case LITERAL_threadsafe:
      case LITERAL_synchronized:
      case LITERAL_volatile:
      case LITERAL_class:
      case LITERAL_interface:
      {
        modifiers();
        m_AST = (AST)returnAST;
        {
        switch ( LA(1)) {
        case LITERAL_class:
        {
          classDefinition(m_AST);
          astFactory.addASTChild(currentAST, returnAST);
          break;
        }
        case LITERAL_interface:
        {
          interfaceDefinition(m_AST);
          astFactory.addASTChild(currentAST, returnAST);
          break;
        }
        default:
        {
          throw new NoViableAltException(LT(1), getFilename());
        }
        }
        }
        typeDefinition_AST = (AST)currentAST.root;
        break;
      }
      case SEMI:
      {
        match(SEMI);
        typeDefinition_AST = (AST)currentAST.root;
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
    }
    catch (RecognitionException ex) {
      if (inputState.guessing==0) {
        reportError(ex);
        recover(ex,_tokenSet_2);
      } else {
        throw ex;
      }
    }
    returnAST = typeDefinition_AST;
  }
  
  public final void identifier() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST identifier_AST = null;
    
    AST tmp5_AST = null;
    tmp5_AST = astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp5_AST);
    match(IDENT);
    {
    _loop23:
    do {
      if ((LA(1)==DOT)) {
        AST tmp6_AST = null;
        tmp6_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp6_AST);
        match(DOT);
        AST tmp7_AST = null;
        tmp7_AST = astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp7_AST);
        match(IDENT);
      }
      else {
        break _loop23;
      }
      
    } while (true);
    }
    identifier_AST = (AST)currentAST.root;
    returnAST = identifier_AST;
  }
  
  public final void identifierStar() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST identifierStar_AST = null;
    
    AST tmp8_AST = null;
    tmp8_AST = astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp8_AST);
    match(IDENT);
    {
    _loop26:
    do {
      if ((LA(1)==DOT) && (LA(2)==IDENT)) {
        AST tmp9_AST = null;
        tmp9_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp9_AST);
        match(DOT);
        AST tmp10_AST = null;
        tmp10_AST = astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp10_AST);
        match(IDENT);
      }
      else {
        break _loop26;
      }
      
    } while (true);
    }
    {
    switch ( LA(1)) {
    case DOT:
    {
      AST tmp11_AST = null;
      tmp11_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp11_AST);
      match(DOT);
      AST tmp12_AST = null;
      tmp12_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp12_AST);
      match(STAR);
      break;
    }
    case SEMI:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    identifierStar_AST = (AST)currentAST.root;
    returnAST = identifierStar_AST;
  }
  
  public final void modifiers() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST modifiers_AST = null;
    
    {
    _loop30:
    do {
      if ((_tokenSet_3.member(LA(1)))) {
        modifier();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop30;
      }
      
    } while (true);
    }
    if ( inputState.guessing==0 ) {
      modifiers_AST = (AST)currentAST.root;
      modifiers_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(MODIFIERS,"MODIFIERS")).add(modifiers_AST));
      currentAST.root = modifiers_AST;
      currentAST.child = modifiers_AST!=null &&modifiers_AST.getFirstChild()!=null ?
        modifiers_AST.getFirstChild() : modifiers_AST;
      currentAST.advanceChildToEnd();
    }
    modifiers_AST = (AST)currentAST.root;
    returnAST = modifiers_AST;
  }
  
  public final void classDefinition(
    AST modifiers
  ) throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST classDefinition_AST = null;
    AST sc_AST = null;
    AST ic_AST = null;
    AST cb_AST = null;
    
    match(LITERAL_class);
    AST tmp14_AST = null;
    tmp14_AST = astFactory.create(LT(1));
    match(IDENT);
    superClassClause();
    sc_AST = (AST)returnAST;
    implementsClause();
    ic_AST = (AST)returnAST;
    classBlock();
    cb_AST = (AST)returnAST;
    if ( inputState.guessing==0 ) {
      classDefinition_AST = (AST)currentAST.root;
      classDefinition_AST = (AST)astFactory.make( (new ASTArray(6)).add(astFactory.create(CLASS_DEF,"CLASS_DEF")).add(modifiers).add(tmp14_AST).add(sc_AST).add(ic_AST).add(cb_AST));
      currentAST.root = classDefinition_AST;
      currentAST.child = classDefinition_AST!=null &&classDefinition_AST.getFirstChild()!=null ?
        classDefinition_AST.getFirstChild() : classDefinition_AST;
      currentAST.advanceChildToEnd();
    }
    returnAST = classDefinition_AST;
  }
  
  public final void interfaceDefinition(
    AST modifiers
  ) throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST interfaceDefinition_AST = null;
    AST ie_AST = null;
    AST cb_AST = null;
    
    match(LITERAL_interface);
    AST tmp16_AST = null;
    tmp16_AST = astFactory.create(LT(1));
    match(IDENT);
    interfaceExtends();
    ie_AST = (AST)returnAST;
    classBlock();
    cb_AST = (AST)returnAST;
    if ( inputState.guessing==0 ) {
      interfaceDefinition_AST = (AST)currentAST.root;
      interfaceDefinition_AST = (AST)astFactory.make( (new ASTArray(5)).add(astFactory.create(INTERFACE_DEF,"INTERFACE_DEF")).add(modifiers).add(tmp16_AST).add(ie_AST).add(cb_AST));
      currentAST.root = interfaceDefinition_AST;
      currentAST.child = interfaceDefinition_AST!=null &&interfaceDefinition_AST.getFirstChild()!=null ?
        interfaceDefinition_AST.getFirstChild() : interfaceDefinition_AST;
      currentAST.advanceChildToEnd();
    }
    returnAST = interfaceDefinition_AST;
  }
  
/** A declaration is the creation of a reference or primitive-type variable
 *  Create a separate Type/Var tree for each var in the var list.
 */
  public final void declaration() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST declaration_AST = null;
    AST m_AST = null;
    AST t_AST = null;
    AST v_AST = null;
    
    modifiers();
    m_AST = (AST)returnAST;
    typeSpec(false);
    t_AST = (AST)returnAST;
    variableDefinitions(m_AST,t_AST);
    v_AST = (AST)returnAST;
    if ( inputState.guessing==0 ) {
      declaration_AST = (AST)currentAST.root;
      declaration_AST = v_AST;
      currentAST.root = declaration_AST;
      currentAST.child = declaration_AST!=null &&declaration_AST.getFirstChild()!=null ?
        declaration_AST.getFirstChild() : declaration_AST;
      currentAST.advanceChildToEnd();
    }
    returnAST = declaration_AST;
  }
  
  public final void typeSpec(
    boolean addImagNode
  ) throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST typeSpec_AST = null;
    
    switch ( LA(1)) {
    case IDENT:
    {
      classTypeSpec(addImagNode);
      astFactory.addASTChild(currentAST, returnAST);
      typeSpec_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_void:
    case LITERAL_boolean:
    case LITERAL_byte:
    case LITERAL_char:
    case LITERAL_short:
    case LITERAL_int:
    case LITERAL_float:
    case LITERAL_long:
    case LITERAL_double:
    {
      builtInTypeSpec(addImagNode);
      astFactory.addASTChild(currentAST, returnAST);
      typeSpec_AST = (AST)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = typeSpec_AST;
  }
  
  public final void variableDefinitions(
    AST mods, AST t
  ) throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST variableDefinitions_AST = null;
    
    variableDeclarator(getASTFactory().dupTree(mods),
               getASTFactory().dupTree(t));
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop59:
    do {
      if ((LA(1)==COMMA)) {
        match(COMMA);
        variableDeclarator(getASTFactory().dupTree(mods),
                 getASTFactory().dupTree(t));
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop59;
      }
      
    } while (true);
    }
    variableDefinitions_AST = (AST)currentAST.root;
    returnAST = variableDefinitions_AST;
  }
  
  public final void classTypeSpec(
    boolean addImagNode
  ) throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST classTypeSpec_AST = null;
    Token  lb = null;
    AST lb_AST = null;
    
    identifier();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop15:
    do {
      if ((LA(1)==LBRACK)) {
        lb = LT(1);
        lb_AST = astFactory.create(lb);
        astFactory.makeASTRoot(currentAST, lb_AST);
        match(LBRACK);
        if ( inputState.guessing==0 ) {
          lb_AST.setType(ARRAY_DECLARATOR);
        }
        match(RBRACK);
      }
      else {
        break _loop15;
      }
      
    } while (true);
    }
    if ( inputState.guessing==0 ) {
      classTypeSpec_AST = (AST)currentAST.root;
      
            if ( addImagNode ) {
              classTypeSpec_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE,"TYPE")).add(classTypeSpec_AST));
            }
          
      currentAST.root = classTypeSpec_AST;
      currentAST.child = classTypeSpec_AST!=null &&classTypeSpec_AST.getFirstChild()!=null ?
        classTypeSpec_AST.getFirstChild() : classTypeSpec_AST;
      currentAST.advanceChildToEnd();
    }
    classTypeSpec_AST = (AST)currentAST.root;
    returnAST = classTypeSpec_AST;
  }
  
  public final void builtInTypeSpec(
    boolean addImagNode
  ) throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST builtInTypeSpec_AST = null;
    Token  lb = null;
    AST lb_AST = null;
    
    builtInType();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop18:
    do {
      if ((LA(1)==LBRACK)) {
        lb = LT(1);
        lb_AST = astFactory.create(lb);
        astFactory.makeASTRoot(currentAST, lb_AST);
        match(LBRACK);
        if ( inputState.guessing==0 ) {
          lb_AST.setType(ARRAY_DECLARATOR);
        }
        match(RBRACK);
      }
      else {
        break _loop18;
      }
      
    } while (true);
    }
    if ( inputState.guessing==0 ) {
      builtInTypeSpec_AST = (AST)currentAST.root;
      
            if ( addImagNode ) {
              builtInTypeSpec_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE,"TYPE")).add(builtInTypeSpec_AST));
            }
          
      currentAST.root = builtInTypeSpec_AST;
      currentAST.child = builtInTypeSpec_AST!=null &&builtInTypeSpec_AST.getFirstChild()!=null ?
        builtInTypeSpec_AST.getFirstChild() : builtInTypeSpec_AST;
      currentAST.advanceChildToEnd();
    }
    builtInTypeSpec_AST = (AST)currentAST.root;
    returnAST = builtInTypeSpec_AST;
  }
  
  public final void builtInType() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST builtInType_AST = null;
    
    switch ( LA(1)) {
    case LITERAL_void:
    {
      AST tmp20_AST = null;
      tmp20_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp20_AST);
      match(LITERAL_void);
      builtInType_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_boolean:
    {
      AST tmp21_AST = null;
      tmp21_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp21_AST);
      match(LITERAL_boolean);
      builtInType_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_byte:
    {
      AST tmp22_AST = null;
      tmp22_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp22_AST);
      match(LITERAL_byte);
      builtInType_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_char:
    {
      AST tmp23_AST = null;
      tmp23_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp23_AST);
      match(LITERAL_char);
      builtInType_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_short:
    {
      AST tmp24_AST = null;
      tmp24_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp24_AST);
      match(LITERAL_short);
      builtInType_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_int:
    {
      AST tmp25_AST = null;
      tmp25_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp25_AST);
      match(LITERAL_int);
      builtInType_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_float:
    {
      AST tmp26_AST = null;
      tmp26_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp26_AST);
      match(LITERAL_float);
      builtInType_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_long:
    {
      AST tmp27_AST = null;
      tmp27_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp27_AST);
      match(LITERAL_long);
      builtInType_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_double:
    {
      AST tmp28_AST = null;
      tmp28_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp28_AST);
      match(LITERAL_double);
      builtInType_AST = (AST)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = builtInType_AST;
  }
  
  public final void type() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST type_AST = null;
    
    switch ( LA(1)) {
    case IDENT:
    {
      identifier();
      astFactory.addASTChild(currentAST, returnAST);
      type_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_void:
    case LITERAL_boolean:
    case LITERAL_byte:
    case LITERAL_char:
    case LITERAL_short:
    case LITERAL_int:
    case LITERAL_float:
    case LITERAL_long:
    case LITERAL_double:
    {
      builtInType();
      astFactory.addASTChild(currentAST, returnAST);
      type_AST = (AST)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = type_AST;
  }
  
  public final void modifier() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST modifier_AST = null;
    
    switch ( LA(1)) {
    case LITERAL_private:
    {
      AST tmp29_AST = null;
      tmp29_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp29_AST);
      match(LITERAL_private);
      modifier_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_public:
    {
      AST tmp30_AST = null;
      tmp30_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp30_AST);
      match(LITERAL_public);
      modifier_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_protected:
    {
      AST tmp31_AST = null;
      tmp31_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp31_AST);
      match(LITERAL_protected);
      modifier_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_static:
    {
      AST tmp32_AST = null;
      tmp32_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp32_AST);
      match(LITERAL_static);
      modifier_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_transient:
    {
      AST tmp33_AST = null;
      tmp33_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp33_AST);
      match(LITERAL_transient);
      modifier_AST = (AST)currentAST.root;
      break;
    }
    case FINAL:
    {
      AST tmp34_AST = null;
      tmp34_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp34_AST);
      match(FINAL);
      modifier_AST = (AST)currentAST.root;
      break;
    }
    case ABSTRACT:
    {
      AST tmp35_AST = null;
      tmp35_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp35_AST);
      match(ABSTRACT);
      modifier_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_native:
    {
      AST tmp36_AST = null;
      tmp36_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp36_AST);
      match(LITERAL_native);
      modifier_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_threadsafe:
    {
      AST tmp37_AST = null;
      tmp37_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp37_AST);
      match(LITERAL_threadsafe);
      modifier_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_synchronized:
    {
      AST tmp38_AST = null;
      tmp38_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp38_AST);
      match(LITERAL_synchronized);
      modifier_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_volatile:
    {
      AST tmp39_AST = null;
      tmp39_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp39_AST);
      match(LITERAL_volatile);
      modifier_AST = (AST)currentAST.root;
      break;
    }
    case STRICTFP:
    {
      AST tmp40_AST = null;
      tmp40_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp40_AST);
      match(STRICTFP);
      modifier_AST = (AST)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = modifier_AST;
  }
  
  public final void superClassClause() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST superClassClause_AST = null;
    AST id_AST = null;
    
    {
    switch ( LA(1)) {
    case LITERAL_extends:
    {
      match(LITERAL_extends);
      identifier();
      id_AST = (AST)returnAST;
      break;
    }
    case LCURLY:
    case LITERAL_implements:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    if ( inputState.guessing==0 ) {
      superClassClause_AST = (AST)currentAST.root;
      superClassClause_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(EXTENDS_CLAUSE,"EXTENDS_CLAUSE")).add(id_AST));
      currentAST.root = superClassClause_AST;
      currentAST.child = superClassClause_AST!=null &&superClassClause_AST.getFirstChild()!=null ?
        superClassClause_AST.getFirstChild() : superClassClause_AST;
      currentAST.advanceChildToEnd();
    }
    returnAST = superClassClause_AST;
  }
  
  public final void implementsClause() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST implementsClause_AST = null;
    Token  i = null;
    AST i_AST = null;
    
    {
    switch ( LA(1)) {
    case LITERAL_implements:
    {
      i = LT(1);
      i_AST = astFactory.create(i);
      match(LITERAL_implements);
      identifier();
      astFactory.addASTChild(currentAST, returnAST);
      {
      _loop46:
      do {
        if ((LA(1)==COMMA)) {
          match(COMMA);
          identifier();
          astFactory.addASTChild(currentAST, returnAST);
        }
        else {
          break _loop46;
        }
        
      } while (true);
      }
      break;
    }
    case LCURLY:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    if ( inputState.guessing==0 ) {
      implementsClause_AST = (AST)currentAST.root;
      implementsClause_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(IMPLEMENTS_CLAUSE,"IMPLEMENTS_CLAUSE")).add(implementsClause_AST));
      currentAST.root = implementsClause_AST;
      currentAST.child = implementsClause_AST!=null &&implementsClause_AST.getFirstChild()!=null ?
        implementsClause_AST.getFirstChild() : implementsClause_AST;
      currentAST.advanceChildToEnd();
    }
    implementsClause_AST = (AST)currentAST.root;
    returnAST = implementsClause_AST;
  }
  
  public final void classBlock() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST classBlock_AST = null;
    
    match(LCURLY);
    {
    _loop38:
    do {
      switch ( LA(1)) {
      case FINAL:
      case ABSTRACT:
      case STRICTFP:
      case LITERAL_void:
      case LITERAL_boolean:
      case LITERAL_byte:
      case LITERAL_char:
      case LITERAL_short:
      case LITERAL_int:
      case LITERAL_float:
      case LITERAL_long:
      case LITERAL_double:
      case IDENT:
      case LITERAL_private:
      case LITERAL_public:
      case LITERAL_protected:
      case LITERAL_static:
      case LITERAL_transient:
      case LITERAL_native:
      case LITERAL_threadsafe:
      case LITERAL_synchronized:
      case LITERAL_volatile:
      case LITERAL_class:
      case LITERAL_interface:
      case LCURLY:
      {
        field();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      case SEMI:
      {
        match(SEMI);
        break;
      }
      default:
      {
        break _loop38;
      }
      }
    } while (true);
    }
    match(RCURLY);
    if ( inputState.guessing==0 ) {
      classBlock_AST = (AST)currentAST.root;
      classBlock_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(OBJBLOCK,"OBJBLOCK")).add(classBlock_AST));
      currentAST.root = classBlock_AST;
      currentAST.child = classBlock_AST!=null &&classBlock_AST.getFirstChild()!=null ?
        classBlock_AST.getFirstChild() : classBlock_AST;
      currentAST.advanceChildToEnd();
    }
    classBlock_AST = (AST)currentAST.root;
    returnAST = classBlock_AST;
  }
  
  public final void interfaceExtends() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST interfaceExtends_AST = null;
    Token  e = null;
    AST e_AST = null;
    
    {
    switch ( LA(1)) {
    case LITERAL_extends:
    {
      e = LT(1);
      e_AST = astFactory.create(e);
      match(LITERAL_extends);
      identifier();
      astFactory.addASTChild(currentAST, returnAST);
      {
      _loop42:
      do {
        if ((LA(1)==COMMA)) {
          match(COMMA);
          identifier();
          astFactory.addASTChild(currentAST, returnAST);
        }
        else {
          break _loop42;
        }
        
      } while (true);
      }
      break;
    }
    case LCURLY:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    if ( inputState.guessing==0 ) {
      interfaceExtends_AST = (AST)currentAST.root;
      interfaceExtends_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(EXTENDS_CLAUSE,"EXTENDS_CLAUSE")).add(interfaceExtends_AST));
      currentAST.root = interfaceExtends_AST;
      currentAST.child = interfaceExtends_AST!=null &&interfaceExtends_AST.getFirstChild()!=null ?
        interfaceExtends_AST.getFirstChild() : interfaceExtends_AST;
      currentAST.advanceChildToEnd();
    }
    interfaceExtends_AST = (AST)currentAST.root;
    returnAST = interfaceExtends_AST;
  }
  
  public final void field() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST field_AST = null;
    AST mods_AST = null;
    AST h_AST = null;
    AST s_AST = null;
    AST cd_AST = null;
    AST id_AST = null;
    AST t_AST = null;
    AST param_AST = null;
    AST rt_AST = null;
    AST tc_AST = null;
    AST s2_AST = null;
    AST v_AST = null;
    AST s3_AST = null;
    AST s4_AST = null;
    
    if ((_tokenSet_4.member(LA(1))) && (_tokenSet_5.member(LA(2)))) {
      modifiers();
      mods_AST = (AST)returnAST;
      {
      switch ( LA(1)) {
      case LITERAL_class:
      {
        classDefinition(mods_AST);
        cd_AST = (AST)returnAST;
        if ( inputState.guessing==0 ) {
          field_AST = (AST)currentAST.root;
          field_AST = cd_AST;
          currentAST.root = field_AST;
          currentAST.child = field_AST!=null &&field_AST.getFirstChild()!=null ?
            field_AST.getFirstChild() : field_AST;
          currentAST.advanceChildToEnd();
        }
        break;
      }
      case LITERAL_interface:
      {
        interfaceDefinition(mods_AST);
        id_AST = (AST)returnAST;
        if ( inputState.guessing==0 ) {
          field_AST = (AST)currentAST.root;
          field_AST = id_AST;
          currentAST.root = field_AST;
          currentAST.child = field_AST!=null &&field_AST.getFirstChild()!=null ?
            field_AST.getFirstChild() : field_AST;
          currentAST.advanceChildToEnd();
        }
        break;
      }
      default:
        if ((LA(1)==IDENT) && (LA(2)==LPAREN)) {
          ctorHead();
          h_AST = (AST)returnAST;
          constructorBody();
          s_AST = (AST)returnAST;
          if ( inputState.guessing==0 ) {
            field_AST = (AST)currentAST.root;
            field_AST = (AST)astFactory.make( (new ASTArray(4)).add(astFactory.create(CTOR_DEF,"CTOR_DEF")).add(mods_AST).add(h_AST).add(s_AST));
            currentAST.root = field_AST;
            currentAST.child = field_AST!=null &&field_AST.getFirstChild()!=null ?
              field_AST.getFirstChild() : field_AST;
            currentAST.advanceChildToEnd();
          }
        }
        else if (((LA(1) >= LITERAL_void && LA(1) <= IDENT)) && (_tokenSet_6.member(LA(2)))) {
          typeSpec(false);
          t_AST = (AST)returnAST;
          {
          if ((LA(1)==IDENT) && (LA(2)==LPAREN)) {
            AST tmp47_AST = null;
            tmp47_AST = astFactory.create(LT(1));
            match(IDENT);
            match(LPAREN);
            parameterDeclarationList();
            param_AST = (AST)returnAST;
            match(RPAREN);
            declaratorBrackets(t_AST);
            rt_AST = (AST)returnAST;
            {
            switch ( LA(1)) {
            case LITERAL_throws:
            {
              throwsClause();
              tc_AST = (AST)returnAST;
              break;
            }
            case SEMI:
            case LCURLY:
            {
              break;
            }
            default:
            {
              throw new NoViableAltException(LT(1), getFilename());
            }
            }
            }
            {
            switch ( LA(1)) {
            case LCURLY:
            {
              compoundStatement();
              s2_AST = (AST)returnAST;
              break;
            }
            case SEMI:
            {
              AST tmp50_AST = null;
              tmp50_AST = astFactory.create(LT(1));
              match(SEMI);
              break;
            }
            default:
            {
              throw new NoViableAltException(LT(1), getFilename());
            }
            }
            }
            if ( inputState.guessing==0 ) {
              field_AST = (AST)currentAST.root;
              field_AST = (AST)astFactory.make( (new ASTArray(7)).add(astFactory.create(METHOD_DEF,"METHOD_DEF")).add(mods_AST).add((AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE,"TYPE")).add(rt_AST))).add(tmp47_AST).add(param_AST).add(tc_AST).add(s2_AST));
              currentAST.root = field_AST;
              currentAST.child = field_AST!=null &&field_AST.getFirstChild()!=null ?
                field_AST.getFirstChild() : field_AST;
              currentAST.advanceChildToEnd();
            }
          }
          else if ((LA(1)==IDENT) && (_tokenSet_7.member(LA(2)))) {
            variableDefinitions(mods_AST,t_AST);
            v_AST = (AST)returnAST;
            AST tmp51_AST = null;
            tmp51_AST = astFactory.create(LT(1));
            match(SEMI);
            if ( inputState.guessing==0 ) {
              field_AST = (AST)currentAST.root;
              field_AST = v_AST;
              currentAST.root = field_AST;
              currentAST.child = field_AST!=null &&field_AST.getFirstChild()!=null ?
                field_AST.getFirstChild() : field_AST;
              currentAST.advanceChildToEnd();
            }
          }
          else {
            throw new NoViableAltException(LT(1), getFilename());
          }
          
          }
        }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
    }
    else if ((LA(1)==LITERAL_static) && (LA(2)==LCURLY)) {
      match(LITERAL_static);
      compoundStatement();
      s3_AST = (AST)returnAST;
      if ( inputState.guessing==0 ) {
        field_AST = (AST)currentAST.root;
        field_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(STATIC_INIT,"STATIC_INIT")).add(s3_AST));
        currentAST.root = field_AST;
        currentAST.child = field_AST!=null &&field_AST.getFirstChild()!=null ?
          field_AST.getFirstChild() : field_AST;
        currentAST.advanceChildToEnd();
      }
    }
    else if ((LA(1)==LCURLY)) {
      compoundStatement();
      s4_AST = (AST)returnAST;
      if ( inputState.guessing==0 ) {
        field_AST = (AST)currentAST.root;
        field_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(INSTANCE_INIT,"INSTANCE_INIT")).add(s4_AST));
        currentAST.root = field_AST;
        currentAST.child = field_AST!=null &&field_AST.getFirstChild()!=null ?
          field_AST.getFirstChild() : field_AST;
        currentAST.advanceChildToEnd();
      }
    }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
    
    returnAST = field_AST;
  }
  
  public final void ctorHead() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST ctorHead_AST = null;
    
    AST tmp53_AST = null;
    tmp53_AST = astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp53_AST);
    match(IDENT);
    match(LPAREN);
    parameterDeclarationList();
    astFactory.addASTChild(currentAST, returnAST);
    match(RPAREN);
    {
    switch ( LA(1)) {
    case LITERAL_throws:
    {
      throwsClause();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case LCURLY:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    ctorHead_AST = (AST)currentAST.root;
    returnAST = ctorHead_AST;
  }
  
  public final void constructorBody() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST constructorBody_AST = null;
    Token  lc = null;
    AST lc_AST = null;
    
    lc = LT(1);
    lc_AST = astFactory.create(lc);
    astFactory.makeASTRoot(currentAST, lc_AST);
    match(LCURLY);
    if ( inputState.guessing==0 ) {
      lc_AST.setType(SLIST);
    }
    {
    if ((LA(1)==LITERAL_this||LA(1)==LITERAL_super) && (LA(2)==LPAREN)) {
      explicitConstructorInvocation();
      astFactory.addASTChild(currentAST, returnAST);
    }
    else if ((_tokenSet_8.member(LA(1))) && (_tokenSet_9.member(LA(2)))) {
    }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
    
    }
    {
    _loop55:
    do {
      if ((_tokenSet_10.member(LA(1)))) {
        statement();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop55;
      }
      
    } while (true);
    }
    match(RCURLY);
    constructorBody_AST = (AST)currentAST.root;
    returnAST = constructorBody_AST;
  }
  
  public final void parameterDeclarationList() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST parameterDeclarationList_AST = null;
    
    {
    switch ( LA(1)) {
    case FINAL:
    case LITERAL_void:
    case LITERAL_boolean:
    case LITERAL_byte:
    case LITERAL_char:
    case LITERAL_short:
    case LITERAL_int:
    case LITERAL_float:
    case LITERAL_long:
    case LITERAL_double:
    case IDENT:
    {
      parameterDeclaration();
      astFactory.addASTChild(currentAST, returnAST);
      {
      _loop80:
      do {
        if ((LA(1)==COMMA)) {
          match(COMMA);
          parameterDeclaration();
          astFactory.addASTChild(currentAST, returnAST);
        }
        else {
          break _loop80;
        }
        
      } while (true);
      }
      break;
    }
    case RPAREN:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    if ( inputState.guessing==0 ) {
      parameterDeclarationList_AST = (AST)currentAST.root;
      parameterDeclarationList_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(PARAMETERS,"PARAMETERS")).add(parameterDeclarationList_AST));
      currentAST.root = parameterDeclarationList_AST;
      currentAST.child = parameterDeclarationList_AST!=null &&parameterDeclarationList_AST.getFirstChild()!=null ?
        parameterDeclarationList_AST.getFirstChild() : parameterDeclarationList_AST;
      currentAST.advanceChildToEnd();
    }
    parameterDeclarationList_AST = (AST)currentAST.root;
    returnAST = parameterDeclarationList_AST;
  }
  
  public final void declaratorBrackets(
    AST typ
  ) throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST declaratorBrackets_AST = null;
    Token  lb = null;
    AST lb_AST = null;
    
    if ( inputState.guessing==0 ) {
      declaratorBrackets_AST = (AST)currentAST.root;
      declaratorBrackets_AST=typ;
      currentAST.root = declaratorBrackets_AST;
      currentAST.child = declaratorBrackets_AST!=null &&declaratorBrackets_AST.getFirstChild()!=null ?
        declaratorBrackets_AST.getFirstChild() : declaratorBrackets_AST;
      currentAST.advanceChildToEnd();
    }
    {
    _loop63:
    do {
      if ((LA(1)==LBRACK)) {
        lb = LT(1);
        lb_AST = astFactory.create(lb);
        astFactory.makeASTRoot(currentAST, lb_AST);
        match(LBRACK);
        if ( inputState.guessing==0 ) {
          lb_AST.setType(ARRAY_DECLARATOR);
        }
        match(RBRACK);
      }
      else {
        break _loop63;
      }
      
    } while (true);
    }
    declaratorBrackets_AST = (AST)currentAST.root;
    returnAST = declaratorBrackets_AST;
  }
  
  public final void throwsClause() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST throwsClause_AST = null;
    
    AST tmp59_AST = null;
    tmp59_AST = astFactory.create(LT(1));
    astFactory.makeASTRoot(currentAST, tmp59_AST);
    match(LITERAL_throws);
    identifier();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop76:
    do {
      if ((LA(1)==COMMA)) {
        match(COMMA);
        identifier();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop76;
      }
      
    } while (true);
    }
    throwsClause_AST = (AST)currentAST.root;
    returnAST = throwsClause_AST;
  }
  
  public final void compoundStatement() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST compoundStatement_AST = null;
    Token  lc = null;
    AST lc_AST = null;
    
    lc = LT(1);
    lc_AST = astFactory.create(lc);
    astFactory.makeASTRoot(currentAST, lc_AST);
    match(LCURLY);
    if ( inputState.guessing==0 ) {
      lc_AST.setType(SLIST);
    }
    {
    _loop86:
    do {
      if ((_tokenSet_10.member(LA(1)))) {
        statement();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop86;
      }
      
    } while (true);
    }
    match(RCURLY);
    compoundStatement_AST = (AST)currentAST.root;
    returnAST = compoundStatement_AST;
  }
  
/** Catch obvious constructor calls, but not the expr.super(...) calls */
  public final void explicitConstructorInvocation() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST explicitConstructorInvocation_AST = null;
    Token  lp1 = null;
    AST lp1_AST = null;
    Token  lp2 = null;
    AST lp2_AST = null;
    
    switch ( LA(1)) {
    case LITERAL_this:
    {
      match(LITERAL_this);
      lp1 = LT(1);
      lp1_AST = astFactory.create(lp1);
      astFactory.makeASTRoot(currentAST, lp1_AST);
      match(LPAREN);
      argList();
      astFactory.addASTChild(currentAST, returnAST);
      match(RPAREN);
      match(SEMI);
      if ( inputState.guessing==0 ) {
        lp1_AST.setType(CTOR_CALL);
      }
      explicitConstructorInvocation_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_super:
    {
      match(LITERAL_super);
      lp2 = LT(1);
      lp2_AST = astFactory.create(lp2);
      astFactory.makeASTRoot(currentAST, lp2_AST);
      match(LPAREN);
      argList();
      astFactory.addASTChild(currentAST, returnAST);
      match(RPAREN);
      match(SEMI);
      if ( inputState.guessing==0 ) {
        lp2_AST.setType(SUPER_CTOR_CALL);
      }
      explicitConstructorInvocation_AST = (AST)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = explicitConstructorInvocation_AST;
  }
  
  public final void statement() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST statement_AST = null;
    AST m_AST = null;
    Token  c = null;
    AST c_AST = null;
    Token  s = null;
    AST s_AST = null;
    
    switch ( LA(1)) {
    case LCURLY:
    {
      compoundStatement();
      astFactory.addASTChild(currentAST, returnAST);
      statement_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_if:
    {
      AST tmp68_AST = null;
      tmp68_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp68_AST);
      match(LITERAL_if);
      match(LPAREN);
      expression();
      astFactory.addASTChild(currentAST, returnAST);
      match(RPAREN);
      statement();
      astFactory.addASTChild(currentAST, returnAST);
      {
      if ((LA(1)==LITERAL_else) && (_tokenSet_10.member(LA(2)))) {
        match(LITERAL_else);
        statement();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else if ((_tokenSet_11.member(LA(1))) && (_tokenSet_12.member(LA(2)))) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      statement_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_for:
    {
      AST tmp72_AST = null;
      tmp72_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp72_AST);
      match(LITERAL_for);
      match(LPAREN);
      forInit();
      astFactory.addASTChild(currentAST, returnAST);
      match(SEMI);
      forCond();
      astFactory.addASTChild(currentAST, returnAST);
      match(SEMI);
      forIter();
      astFactory.addASTChild(currentAST, returnAST);
      match(RPAREN);
      statement();
      astFactory.addASTChild(currentAST, returnAST);
      statement_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_while:
    {
      AST tmp77_AST = null;
      tmp77_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp77_AST);
      match(LITERAL_while);
      match(LPAREN);
      expression();
      astFactory.addASTChild(currentAST, returnAST);
      match(RPAREN);
      statement();
      astFactory.addASTChild(currentAST, returnAST);
      statement_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_do:
    {
      AST tmp80_AST = null;
      tmp80_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp80_AST);
      match(LITERAL_do);
      statement();
      astFactory.addASTChild(currentAST, returnAST);
      match(LITERAL_while);
      match(LPAREN);
      expression();
      astFactory.addASTChild(currentAST, returnAST);
      match(RPAREN);
      match(SEMI);
      statement_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_break:
    {
      AST tmp85_AST = null;
      tmp85_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp85_AST);
      match(LITERAL_break);
      {
      switch ( LA(1)) {
      case IDENT:
      {
        AST tmp86_AST = null;
        tmp86_AST = astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp86_AST);
        match(IDENT);
        break;
      }
      case SEMI:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      match(SEMI);
      statement_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_continue:
    {
      AST tmp88_AST = null;
      tmp88_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp88_AST);
      match(LITERAL_continue);
      {
      switch ( LA(1)) {
      case IDENT:
      {
        AST tmp89_AST = null;
        tmp89_AST = astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp89_AST);
        match(IDENT);
        break;
      }
      case SEMI:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      match(SEMI);
      statement_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_return:
    {
      AST tmp91_AST = null;
      tmp91_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp91_AST);
      match(LITERAL_return);
      {
      switch ( LA(1)) {
      case LITERAL_void:
      case LITERAL_boolean:
      case LITERAL_byte:
      case LITERAL_char:
      case LITERAL_short:
      case LITERAL_int:
      case LITERAL_float:
      case LITERAL_long:
      case LITERAL_double:
      case IDENT:
      case LPAREN:
      case LITERAL_this:
      case LITERAL_super:
      case PLUS:
      case MINUS:
      case INC:
      case DEC:
      case BNOT:
      case LNOT:
      case LITERAL_true:
      case LITERAL_false:
      case LITERAL_null:
      case LITERAL_new:
      case NUM_INT:
      case CHAR_LITERAL:
      case STRING_LITERAL:
      case NUM_FLOAT:
      case NUM_LONG:
      case NUM_DOUBLE:
      {
        expression();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      case SEMI:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      match(SEMI);
      statement_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_switch:
    {
      AST tmp93_AST = null;
      tmp93_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp93_AST);
      match(LITERAL_switch);
      match(LPAREN);
      expression();
      astFactory.addASTChild(currentAST, returnAST);
      match(RPAREN);
      match(LCURLY);
      {
      _loop95:
      do {
        if ((LA(1)==LITERAL_case||LA(1)==LITERAL_default)) {
          casesGroup();
          astFactory.addASTChild(currentAST, returnAST);
        }
        else {
          break _loop95;
        }
        
      } while (true);
      }
      match(RCURLY);
      statement_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_try:
    {
      tryBlock();
      astFactory.addASTChild(currentAST, returnAST);
      statement_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_throw:
    {
      AST tmp98_AST = null;
      tmp98_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp98_AST);
      match(LITERAL_throw);
      expression();
      astFactory.addASTChild(currentAST, returnAST);
      match(SEMI);
      statement_AST = (AST)currentAST.root;
      break;
    }
    case SEMI:
    {
      s = LT(1);
      s_AST = astFactory.create(s);
      astFactory.addASTChild(currentAST, s_AST);
      match(SEMI);
      if ( inputState.guessing==0 ) {
        s_AST.setType(EMPTY_STAT);
      }
      statement_AST = (AST)currentAST.root;
      break;
    }
    default:
      boolean synPredMatched89 = false;
      if (((_tokenSet_13.member(LA(1))) && (_tokenSet_14.member(LA(2))))) {
        int _m89 = mark();
        synPredMatched89 = true;
        inputState.guessing++;
        try {
          {
          declaration();
          }
        }
        catch (RecognitionException pe) {
          synPredMatched89 = false;
        }
        rewind(_m89);
        inputState.guessing--;
      }
      if ( synPredMatched89 ) {
        declaration();
        astFactory.addASTChild(currentAST, returnAST);
        match(SEMI);
        statement_AST = (AST)currentAST.root;
      }
      else if ((_tokenSet_15.member(LA(1))) && (_tokenSet_16.member(LA(2)))) {
        expression();
        astFactory.addASTChild(currentAST, returnAST);
        match(SEMI);
        statement_AST = (AST)currentAST.root;
      }
      else if ((_tokenSet_17.member(LA(1))) && (_tokenSet_18.member(LA(2)))) {
        modifiers();
        m_AST = (AST)returnAST;
        classDefinition(m_AST);
        astFactory.addASTChild(currentAST, returnAST);
        statement_AST = (AST)currentAST.root;
      }
      else if ((LA(1)==IDENT) && (LA(2)==COLON)) {
        AST tmp102_AST = null;
        tmp102_AST = astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp102_AST);
        match(IDENT);
        c = LT(1);
        c_AST = astFactory.create(c);
        astFactory.makeASTRoot(currentAST, c_AST);
        match(COLON);
        if ( inputState.guessing==0 ) {
          c_AST.setType(LABELED_STAT);
        }
        statement();
        astFactory.addASTChild(currentAST, returnAST);
        statement_AST = (AST)currentAST.root;
      }
      else if ((LA(1)==LITERAL_synchronized) && (LA(2)==LPAREN)) {
        AST tmp103_AST = null;
        tmp103_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp103_AST);
        match(LITERAL_synchronized);
        match(LPAREN);
        expression();
        astFactory.addASTChild(currentAST, returnAST);
        match(RPAREN);
        compoundStatement();
        astFactory.addASTChild(currentAST, returnAST);
        statement_AST = (AST)currentAST.root;
      }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = statement_AST;
  }
  
  public final void argList() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST argList_AST = null;
    
    {
    switch ( LA(1)) {
    case LITERAL_void:
    case LITERAL_boolean:
    case LITERAL_byte:
    case LITERAL_char:
    case LITERAL_short:
    case LITERAL_int:
    case LITERAL_float:
    case LITERAL_long:
    case LITERAL_double:
    case IDENT:
    case LPAREN:
    case LITERAL_this:
    case LITERAL_super:
    case PLUS:
    case MINUS:
    case INC:
    case DEC:
    case BNOT:
    case LNOT:
    case LITERAL_true:
    case LITERAL_false:
    case LITERAL_null:
    case LITERAL_new:
    case NUM_INT:
    case CHAR_LITERAL:
    case STRING_LITERAL:
    case NUM_FLOAT:
    case NUM_LONG:
    case NUM_DOUBLE:
    {
      expressionList();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case RPAREN:
    {
      if ( inputState.guessing==0 ) {
        argList_AST = (AST)currentAST.root;
        argList_AST = astFactory.create(ELIST,"ELIST");
        currentAST.root = argList_AST;
        currentAST.child = argList_AST!=null &&argList_AST.getFirstChild()!=null ?
          argList_AST.getFirstChild() : argList_AST;
        currentAST.advanceChildToEnd();
      }
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    argList_AST = (AST)currentAST.root;
    returnAST = argList_AST;
  }
  
/** Declaration of a variable.  This can be a class/instance variable,
 *   or a local variable in a method
 * It can also include possible initialization.
 */
  public final void variableDeclarator(
    AST mods, AST t
  ) throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST variableDeclarator_AST = null;
    Token  id = null;
    AST id_AST = null;
    AST d_AST = null;
    AST v_AST = null;
    
    id = LT(1);
    id_AST = astFactory.create(id);
    match(IDENT);
    declaratorBrackets(t);
    d_AST = (AST)returnAST;
    varInitializer();
    v_AST = (AST)returnAST;
    if ( inputState.guessing==0 ) {
      variableDeclarator_AST = (AST)currentAST.root;
      variableDeclarator_AST = (AST)astFactory.make( (new ASTArray(5)).add(astFactory.create(VARIABLE_DEF,"VARIABLE_DEF")).add(mods).add((AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE,"TYPE")).add(d_AST))).add(id_AST).add(v_AST));
      currentAST.root = variableDeclarator_AST;
      currentAST.child = variableDeclarator_AST!=null &&variableDeclarator_AST.getFirstChild()!=null ?
        variableDeclarator_AST.getFirstChild() : variableDeclarator_AST;
      currentAST.advanceChildToEnd();
    }
    returnAST = variableDeclarator_AST;
  }
  
  public final void varInitializer() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST varInitializer_AST = null;
    
    {
    switch ( LA(1)) {
    case ASSIGN:
    {
      AST tmp106_AST = null;
      tmp106_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp106_AST);
      match(ASSIGN);
      initializer();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case SEMI:
    case COMMA:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    varInitializer_AST = (AST)currentAST.root;
    returnAST = varInitializer_AST;
  }
  
  public final void initializer() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST initializer_AST = null;
    
    switch ( LA(1)) {
    case LITERAL_void:
    case LITERAL_boolean:
    case LITERAL_byte:
    case LITERAL_char:
    case LITERAL_short:
    case LITERAL_int:
    case LITERAL_float:
    case LITERAL_long:
    case LITERAL_double:
    case IDENT:
    case LPAREN:
    case LITERAL_this:
    case LITERAL_super:
    case PLUS:
    case MINUS:
    case INC:
    case DEC:
    case BNOT:
    case LNOT:
    case LITERAL_true:
    case LITERAL_false:
    case LITERAL_null:
    case LITERAL_new:
    case NUM_INT:
    case CHAR_LITERAL:
    case STRING_LITERAL:
    case NUM_FLOAT:
    case NUM_LONG:
    case NUM_DOUBLE:
    {
      expression();
      astFactory.addASTChild(currentAST, returnAST);
      initializer_AST = (AST)currentAST.root;
      break;
    }
    case LCURLY:
    {
      arrayInitializer();
      astFactory.addASTChild(currentAST, returnAST);
      initializer_AST = (AST)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = initializer_AST;
  }
  
  public final void arrayInitializer() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST arrayInitializer_AST = null;
    Token  lc = null;
    AST lc_AST = null;
    
    lc = LT(1);
    lc_AST = astFactory.create(lc);
    astFactory.makeASTRoot(currentAST, lc_AST);
    match(LCURLY);
    if ( inputState.guessing==0 ) {
      lc_AST.setType(ARRAY_INIT);
    }
    {
    switch ( LA(1)) {
    case LITERAL_void:
    case LITERAL_boolean:
    case LITERAL_byte:
    case LITERAL_char:
    case LITERAL_short:
    case LITERAL_int:
    case LITERAL_float:
    case LITERAL_long:
    case LITERAL_double:
    case IDENT:
    case LCURLY:
    case LPAREN:
    case LITERAL_this:
    case LITERAL_super:
    case PLUS:
    case MINUS:
    case INC:
    case DEC:
    case BNOT:
    case LNOT:
    case LITERAL_true:
    case LITERAL_false:
    case LITERAL_null:
    case LITERAL_new:
    case NUM_INT:
    case CHAR_LITERAL:
    case STRING_LITERAL:
    case NUM_FLOAT:
    case NUM_LONG:
    case NUM_DOUBLE:
    {
      initializer();
      astFactory.addASTChild(currentAST, returnAST);
      {
      _loop69:
      do {
        if ((LA(1)==COMMA) && (_tokenSet_19.member(LA(2)))) {
          match(COMMA);
          initializer();
          astFactory.addASTChild(currentAST, returnAST);
        }
        else {
          break _loop69;
        }
        
      } while (true);
      }
      {
      switch ( LA(1)) {
      case COMMA:
      {
        match(COMMA);
        break;
      }
      case RCURLY:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      break;
    }
    case RCURLY:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    match(RCURLY);
    arrayInitializer_AST = (AST)currentAST.root;
    returnAST = arrayInitializer_AST;
  }
  
  public final void expression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST expression_AST = null;
    
    assignmentExpression();
    astFactory.addASTChild(currentAST, returnAST);
    if ( inputState.guessing==0 ) {
      expression_AST = (AST)currentAST.root;
      expression_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(EXPR,"EXPR")).add(expression_AST));
      currentAST.root = expression_AST;
      currentAST.child = expression_AST!=null &&expression_AST.getFirstChild()!=null ?
        expression_AST.getFirstChild() : expression_AST;
      currentAST.advanceChildToEnd();
    }
    expression_AST = (AST)currentAST.root;
    returnAST = expression_AST;
  }
  
  public final void parameterDeclaration() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST parameterDeclaration_AST = null;
    AST pm_AST = null;
    AST t_AST = null;
    Token  id = null;
    AST id_AST = null;
    AST pd_AST = null;
    
    parameterModifier();
    pm_AST = (AST)returnAST;
    typeSpec(false);
    t_AST = (AST)returnAST;
    id = LT(1);
    id_AST = astFactory.create(id);
    match(IDENT);
    declaratorBrackets(t_AST);
    pd_AST = (AST)returnAST;
    if ( inputState.guessing==0 ) {
      parameterDeclaration_AST = (AST)currentAST.root;
      parameterDeclaration_AST = (AST)astFactory.make( (new ASTArray(4)).add(astFactory.create(PARAMETER_DEF,"PARAMETER_DEF")).add(pm_AST).add((AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(TYPE,"TYPE")).add(pd_AST))).add(id_AST));
      currentAST.root = parameterDeclaration_AST;
      currentAST.child = parameterDeclaration_AST!=null &&parameterDeclaration_AST.getFirstChild()!=null ?
        parameterDeclaration_AST.getFirstChild() : parameterDeclaration_AST;
      currentAST.advanceChildToEnd();
    }
    returnAST = parameterDeclaration_AST;
  }
  
  public final void parameterModifier() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST parameterModifier_AST = null;
    Token  f = null;
    AST f_AST = null;
    
    {
    switch ( LA(1)) {
    case FINAL:
    {
      f = LT(1);
      f_AST = astFactory.create(f);
      astFactory.addASTChild(currentAST, f_AST);
      match(FINAL);
      break;
    }
    case LITERAL_void:
    case LITERAL_boolean:
    case LITERAL_byte:
    case LITERAL_char:
    case LITERAL_short:
    case LITERAL_int:
    case LITERAL_float:
    case LITERAL_long:
    case LITERAL_double:
    case IDENT:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    if ( inputState.guessing==0 ) {
      parameterModifier_AST = (AST)currentAST.root;
      parameterModifier_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(MODIFIERS,"MODIFIERS")).add(f_AST));
      currentAST.root = parameterModifier_AST;
      currentAST.child = parameterModifier_AST!=null &&parameterModifier_AST.getFirstChild()!=null ?
        parameterModifier_AST.getFirstChild() : parameterModifier_AST;
      currentAST.advanceChildToEnd();
    }
    parameterModifier_AST = (AST)currentAST.root;
    returnAST = parameterModifier_AST;
  }
  
  public final void forInit() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST forInit_AST = null;
    
    {
    boolean synPredMatched107 = false;
    if (((_tokenSet_13.member(LA(1))) && (_tokenSet_14.member(LA(2))))) {
      int _m107 = mark();
      synPredMatched107 = true;
      inputState.guessing++;
      try {
        {
        declaration();
        }
      }
      catch (RecognitionException pe) {
        synPredMatched107 = false;
      }
      rewind(_m107);
      inputState.guessing--;
    }
    if ( synPredMatched107 ) {
      declaration();
      astFactory.addASTChild(currentAST, returnAST);
    }
    else if ((_tokenSet_15.member(LA(1))) && (_tokenSet_20.member(LA(2)))) {
      expressionList();
      astFactory.addASTChild(currentAST, returnAST);
    }
    else if ((LA(1)==SEMI)) {
    }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
    
    }
    if ( inputState.guessing==0 ) {
      forInit_AST = (AST)currentAST.root;
      forInit_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(FOR_INIT,"FOR_INIT")).add(forInit_AST));
      currentAST.root = forInit_AST;
      currentAST.child = forInit_AST!=null &&forInit_AST.getFirstChild()!=null ?
        forInit_AST.getFirstChild() : forInit_AST;
      currentAST.advanceChildToEnd();
    }
    forInit_AST = (AST)currentAST.root;
    returnAST = forInit_AST;
  }
  
  public final void forCond() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST forCond_AST = null;
    
    {
    switch ( LA(1)) {
    case LITERAL_void:
    case LITERAL_boolean:
    case LITERAL_byte:
    case LITERAL_char:
    case LITERAL_short:
    case LITERAL_int:
    case LITERAL_float:
    case LITERAL_long:
    case LITERAL_double:
    case IDENT:
    case LPAREN:
    case LITERAL_this:
    case LITERAL_super:
    case PLUS:
    case MINUS:
    case INC:
    case DEC:
    case BNOT:
    case LNOT:
    case LITERAL_true:
    case LITERAL_false:
    case LITERAL_null:
    case LITERAL_new:
    case NUM_INT:
    case CHAR_LITERAL:
    case STRING_LITERAL:
    case NUM_FLOAT:
    case NUM_LONG:
    case NUM_DOUBLE:
    {
      expression();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case SEMI:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    if ( inputState.guessing==0 ) {
      forCond_AST = (AST)currentAST.root;
      forCond_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(FOR_CONDITION,"FOR_CONDITION")).add(forCond_AST));
      currentAST.root = forCond_AST;
      currentAST.child = forCond_AST!=null &&forCond_AST.getFirstChild()!=null ?
        forCond_AST.getFirstChild() : forCond_AST;
      currentAST.advanceChildToEnd();
    }
    forCond_AST = (AST)currentAST.root;
    returnAST = forCond_AST;
  }
  
  public final void forIter() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST forIter_AST = null;
    
    {
    switch ( LA(1)) {
    case LITERAL_void:
    case LITERAL_boolean:
    case LITERAL_byte:
    case LITERAL_char:
    case LITERAL_short:
    case LITERAL_int:
    case LITERAL_float:
    case LITERAL_long:
    case LITERAL_double:
    case IDENT:
    case LPAREN:
    case LITERAL_this:
    case LITERAL_super:
    case PLUS:
    case MINUS:
    case INC:
    case DEC:
    case BNOT:
    case LNOT:
    case LITERAL_true:
    case LITERAL_false:
    case LITERAL_null:
    case LITERAL_new:
    case NUM_INT:
    case CHAR_LITERAL:
    case STRING_LITERAL:
    case NUM_FLOAT:
    case NUM_LONG:
    case NUM_DOUBLE:
    {
      expressionList();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case RPAREN:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    if ( inputState.guessing==0 ) {
      forIter_AST = (AST)currentAST.root;
      forIter_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(FOR_ITERATOR,"FOR_ITERATOR")).add(forIter_AST));
      currentAST.root = forIter_AST;
      currentAST.child = forIter_AST!=null &&forIter_AST.getFirstChild()!=null ?
        forIter_AST.getFirstChild() : forIter_AST;
      currentAST.advanceChildToEnd();
    }
    forIter_AST = (AST)currentAST.root;
    returnAST = forIter_AST;
  }
  
  public final void casesGroup() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST casesGroup_AST = null;
    
    {
    int _cnt98=0;
    _loop98:
    do {
      if ((LA(1)==LITERAL_case||LA(1)==LITERAL_default) && (_tokenSet_21.member(LA(2)))) {
        aCase();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        if ( _cnt98>=1 ) { break _loop98; } else {throw new NoViableAltException(LT(1), getFilename());}
      }
      
      _cnt98++;
    } while (true);
    }
    caseSList();
    astFactory.addASTChild(currentAST, returnAST);
    if ( inputState.guessing==0 ) {
      casesGroup_AST = (AST)currentAST.root;
      casesGroup_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(CASE_GROUP,"CASE_GROUP")).add(casesGroup_AST));
      currentAST.root = casesGroup_AST;
      currentAST.child = casesGroup_AST!=null &&casesGroup_AST.getFirstChild()!=null ?
        casesGroup_AST.getFirstChild() : casesGroup_AST;
      currentAST.advanceChildToEnd();
    }
    casesGroup_AST = (AST)currentAST.root;
    returnAST = casesGroup_AST;
  }
  
  public final void tryBlock() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST tryBlock_AST = null;
    
    AST tmp110_AST = null;
    tmp110_AST = astFactory.create(LT(1));
    astFactory.makeASTRoot(currentAST, tmp110_AST);
    match(LITERAL_try);
    compoundStatement();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop114:
    do {
      if ((LA(1)==LITERAL_catch)) {
        handler();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop114;
      }
      
    } while (true);
    }
    {
    switch ( LA(1)) {
    case LITERAL_finally:
    {
      finallyClause();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case FINAL:
    case ABSTRACT:
    case STRICTFP:
    case SEMI:
    case LITERAL_void:
    case LITERAL_boolean:
    case LITERAL_byte:
    case LITERAL_char:
    case LITERAL_short:
    case LITERAL_int:
    case LITERAL_float:
    case LITERAL_long:
    case LITERAL_double:
    case IDENT:
    case LITERAL_private:
    case LITERAL_public:
    case LITERAL_protected:
    case LITERAL_static:
    case LITERAL_transient:
    case LITERAL_native:
    case LITERAL_threadsafe:
    case LITERAL_synchronized:
    case LITERAL_volatile:
    case LITERAL_class:
    case LCURLY:
    case RCURLY:
    case LPAREN:
    case LITERAL_this:
    case LITERAL_super:
    case LITERAL_if:
    case LITERAL_else:
    case LITERAL_for:
    case LITERAL_while:
    case LITERAL_do:
    case LITERAL_break:
    case LITERAL_continue:
    case LITERAL_return:
    case LITERAL_switch:
    case LITERAL_throw:
    case LITERAL_case:
    case LITERAL_default:
    case LITERAL_try:
    case PLUS:
    case MINUS:
    case INC:
    case DEC:
    case BNOT:
    case LNOT:
    case LITERAL_true:
    case LITERAL_false:
    case LITERAL_null:
    case LITERAL_new:
    case NUM_INT:
    case CHAR_LITERAL:
    case STRING_LITERAL:
    case NUM_FLOAT:
    case NUM_LONG:
    case NUM_DOUBLE:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    tryBlock_AST = (AST)currentAST.root;
    returnAST = tryBlock_AST;
  }
  
  public final void aCase() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST aCase_AST = null;
    
    {
    switch ( LA(1)) {
    case LITERAL_case:
    {
      AST tmp111_AST = null;
      tmp111_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp111_AST);
      match(LITERAL_case);
      expression();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case LITERAL_default:
    {
      AST tmp112_AST = null;
      tmp112_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp112_AST);
      match(LITERAL_default);
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    match(COLON);
    aCase_AST = (AST)currentAST.root;
    returnAST = aCase_AST;
  }
  
  public final void caseSList() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST caseSList_AST = null;
    
    {
    _loop103:
    do {
      if ((_tokenSet_10.member(LA(1)))) {
        statement();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop103;
      }
      
    } while (true);
    }
    if ( inputState.guessing==0 ) {
      caseSList_AST = (AST)currentAST.root;
      caseSList_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(SLIST,"SLIST")).add(caseSList_AST));
      currentAST.root = caseSList_AST;
      currentAST.child = caseSList_AST!=null &&caseSList_AST.getFirstChild()!=null ?
        caseSList_AST.getFirstChild() : caseSList_AST;
      currentAST.advanceChildToEnd();
    }
    caseSList_AST = (AST)currentAST.root;
    returnAST = caseSList_AST;
  }
  
  public final void expressionList() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST expressionList_AST = null;
    
    expression();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop121:
    do {
      if ((LA(1)==COMMA)) {
        match(COMMA);
        expression();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop121;
      }
      
    } while (true);
    }
    if ( inputState.guessing==0 ) {
      expressionList_AST = (AST)currentAST.root;
      expressionList_AST = (AST)astFactory.make( (new ASTArray(2)).add(astFactory.create(ELIST,"ELIST")).add(expressionList_AST));
      currentAST.root = expressionList_AST;
      currentAST.child = expressionList_AST!=null &&expressionList_AST.getFirstChild()!=null ?
        expressionList_AST.getFirstChild() : expressionList_AST;
      currentAST.advanceChildToEnd();
    }
    expressionList_AST = (AST)currentAST.root;
    returnAST = expressionList_AST;
  }
  
  public final void handler() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST handler_AST = null;
    
    AST tmp115_AST = null;
    tmp115_AST = astFactory.create(LT(1));
    astFactory.makeASTRoot(currentAST, tmp115_AST);
    match(LITERAL_catch);
    match(LPAREN);
    parameterDeclaration();
    astFactory.addASTChild(currentAST, returnAST);
    match(RPAREN);
    compoundStatement();
    astFactory.addASTChild(currentAST, returnAST);
    handler_AST = (AST)currentAST.root;
    returnAST = handler_AST;
  }
  
  public final void finallyClause() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST finallyClause_AST = null;
    
    AST tmp118_AST = null;
    tmp118_AST = astFactory.create(LT(1));
    astFactory.makeASTRoot(currentAST, tmp118_AST);
    match(LITERAL_finally);
    compoundStatement();
    astFactory.addASTChild(currentAST, returnAST);
    finallyClause_AST = (AST)currentAST.root;
    returnAST = finallyClause_AST;
  }
  
  public final void assignmentExpression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST assignmentExpression_AST = null;
    
    conditionalExpression();
    astFactory.addASTChild(currentAST, returnAST);
    {
    switch ( LA(1)) {
    case ASSIGN:
    case PLUS_ASSIGN:
    case MINUS_ASSIGN:
    case STAR_ASSIGN:
    case DIV_ASSIGN:
    case MOD_ASSIGN:
    case SR_ASSIGN:
    case BSR_ASSIGN:
    case SL_ASSIGN:
    case BAND_ASSIGN:
    case BXOR_ASSIGN:
    case BOR_ASSIGN:
    {
      {
      switch ( LA(1)) {
      case ASSIGN:
      {
        AST tmp119_AST = null;
        tmp119_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp119_AST);
        match(ASSIGN);
        break;
      }
      case PLUS_ASSIGN:
      {
        AST tmp120_AST = null;
        tmp120_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp120_AST);
        match(PLUS_ASSIGN);
        break;
      }
      case MINUS_ASSIGN:
      {
        AST tmp121_AST = null;
        tmp121_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp121_AST);
        match(MINUS_ASSIGN);
        break;
      }
      case STAR_ASSIGN:
      {
        AST tmp122_AST = null;
        tmp122_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp122_AST);
        match(STAR_ASSIGN);
        break;
      }
      case DIV_ASSIGN:
      {
        AST tmp123_AST = null;
        tmp123_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp123_AST);
        match(DIV_ASSIGN);
        break;
      }
      case MOD_ASSIGN:
      {
        AST tmp124_AST = null;
        tmp124_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp124_AST);
        match(MOD_ASSIGN);
        break;
      }
      case SR_ASSIGN:
      {
        AST tmp125_AST = null;
        tmp125_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp125_AST);
        match(SR_ASSIGN);
        break;
      }
      case BSR_ASSIGN:
      {
        AST tmp126_AST = null;
        tmp126_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp126_AST);
        match(BSR_ASSIGN);
        break;
      }
      case SL_ASSIGN:
      {
        AST tmp127_AST = null;
        tmp127_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp127_AST);
        match(SL_ASSIGN);
        break;
      }
      case BAND_ASSIGN:
      {
        AST tmp128_AST = null;
        tmp128_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp128_AST);
        match(BAND_ASSIGN);
        break;
      }
      case BXOR_ASSIGN:
      {
        AST tmp129_AST = null;
        tmp129_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp129_AST);
        match(BXOR_ASSIGN);
        break;
      }
      case BOR_ASSIGN:
      {
        AST tmp130_AST = null;
        tmp130_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp130_AST);
        match(BOR_ASSIGN);
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      assignmentExpression();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case SEMI:
    case RBRACK:
    case RCURLY:
    case COMMA:
    case RPAREN:
    case COLON:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    assignmentExpression_AST = (AST)currentAST.root;
    returnAST = assignmentExpression_AST;
  }
  
  public final void conditionalExpression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST conditionalExpression_AST = null;
    
    logicalOrExpression();
    astFactory.addASTChild(currentAST, returnAST);
    {
    switch ( LA(1)) {
    case QUESTION:
    {
      AST tmp131_AST = null;
      tmp131_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp131_AST);
      match(QUESTION);
      assignmentExpression();
      astFactory.addASTChild(currentAST, returnAST);
      match(COLON);
      conditionalExpression();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case SEMI:
    case RBRACK:
    case RCURLY:
    case COMMA:
    case RPAREN:
    case ASSIGN:
    case COLON:
    case PLUS_ASSIGN:
    case MINUS_ASSIGN:
    case STAR_ASSIGN:
    case DIV_ASSIGN:
    case MOD_ASSIGN:
    case SR_ASSIGN:
    case BSR_ASSIGN:
    case SL_ASSIGN:
    case BAND_ASSIGN:
    case BXOR_ASSIGN:
    case BOR_ASSIGN:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    conditionalExpression_AST = (AST)currentAST.root;
    returnAST = conditionalExpression_AST;
  }
  
  public final void logicalOrExpression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST logicalOrExpression_AST = null;
    
    logicalAndExpression();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop129:
    do {
      if ((LA(1)==LOR)) {
        AST tmp133_AST = null;
        tmp133_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp133_AST);
        match(LOR);
        logicalAndExpression();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop129;
      }
      
    } while (true);
    }
    logicalOrExpression_AST = (AST)currentAST.root;
    returnAST = logicalOrExpression_AST;
  }
  
  public final void logicalAndExpression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST logicalAndExpression_AST = null;
    
    inclusiveOrExpression();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop132:
    do {
      if ((LA(1)==LAND)) {
        AST tmp134_AST = null;
        tmp134_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp134_AST);
        match(LAND);
        inclusiveOrExpression();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop132;
      }
      
    } while (true);
    }
    logicalAndExpression_AST = (AST)currentAST.root;
    returnAST = logicalAndExpression_AST;
  }
  
  public final void inclusiveOrExpression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST inclusiveOrExpression_AST = null;
    
    exclusiveOrExpression();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop135:
    do {
      if ((LA(1)==BOR)) {
        AST tmp135_AST = null;
        tmp135_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp135_AST);
        match(BOR);
        exclusiveOrExpression();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop135;
      }
      
    } while (true);
    }
    inclusiveOrExpression_AST = (AST)currentAST.root;
    returnAST = inclusiveOrExpression_AST;
  }
  
  public final void exclusiveOrExpression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST exclusiveOrExpression_AST = null;
    
    andExpression();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop138:
    do {
      if ((LA(1)==BXOR)) {
        AST tmp136_AST = null;
        tmp136_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp136_AST);
        match(BXOR);
        andExpression();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop138;
      }
      
    } while (true);
    }
    exclusiveOrExpression_AST = (AST)currentAST.root;
    returnAST = exclusiveOrExpression_AST;
  }
  
  public final void andExpression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST andExpression_AST = null;
    
    equalityExpression();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop141:
    do {
      if ((LA(1)==BAND)) {
        AST tmp137_AST = null;
        tmp137_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp137_AST);
        match(BAND);
        equalityExpression();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop141;
      }
      
    } while (true);
    }
    andExpression_AST = (AST)currentAST.root;
    returnAST = andExpression_AST;
  }
  
  public final void equalityExpression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST equalityExpression_AST = null;
    
    relationalExpression();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop145:
    do {
      if ((LA(1)==NOT_EQUAL||LA(1)==EQUAL)) {
        {
        switch ( LA(1)) {
        case NOT_EQUAL:
        {
          AST tmp138_AST = null;
          tmp138_AST = astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp138_AST);
          match(NOT_EQUAL);
          break;
        }
        case EQUAL:
        {
          AST tmp139_AST = null;
          tmp139_AST = astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp139_AST);
          match(EQUAL);
          break;
        }
        default:
        {
          throw new NoViableAltException(LT(1), getFilename());
        }
        }
        }
        relationalExpression();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop145;
      }
      
    } while (true);
    }
    equalityExpression_AST = (AST)currentAST.root;
    returnAST = equalityExpression_AST;
  }
  
  public final void relationalExpression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST relationalExpression_AST = null;
    
    shiftExpression();
    astFactory.addASTChild(currentAST, returnAST);
    {
    switch ( LA(1)) {
    case SEMI:
    case RBRACK:
    case RCURLY:
    case COMMA:
    case RPAREN:
    case ASSIGN:
    case COLON:
    case PLUS_ASSIGN:
    case MINUS_ASSIGN:
    case STAR_ASSIGN:
    case DIV_ASSIGN:
    case MOD_ASSIGN:
    case SR_ASSIGN:
    case BSR_ASSIGN:
    case SL_ASSIGN:
    case BAND_ASSIGN:
    case BXOR_ASSIGN:
    case BOR_ASSIGN:
    case QUESTION:
    case LOR:
    case LAND:
    case BOR:
    case BXOR:
    case BAND:
    case NOT_EQUAL:
    case EQUAL:
    case LT:
    case GT:
    case LE:
    case GE:
    {
      {
      _loop150:
      do {
        if (((LA(1) >= LT && LA(1) <= GE))) {
          {
          switch ( LA(1)) {
          case LT:
          {
            AST tmp140_AST = null;
            tmp140_AST = astFactory.create(LT(1));
            astFactory.makeASTRoot(currentAST, tmp140_AST);
            match(LT);
            break;
          }
          case GT:
          {
            AST tmp141_AST = null;
            tmp141_AST = astFactory.create(LT(1));
            astFactory.makeASTRoot(currentAST, tmp141_AST);
            match(GT);
            break;
          }
          case LE:
          {
            AST tmp142_AST = null;
            tmp142_AST = astFactory.create(LT(1));
            astFactory.makeASTRoot(currentAST, tmp142_AST);
            match(LE);
            break;
          }
          case GE:
          {
            AST tmp143_AST = null;
            tmp143_AST = astFactory.create(LT(1));
            astFactory.makeASTRoot(currentAST, tmp143_AST);
            match(GE);
            break;
          }
          default:
          {
            throw new NoViableAltException(LT(1), getFilename());
          }
          }
          }
          shiftExpression();
          astFactory.addASTChild(currentAST, returnAST);
        }
        else {
          break _loop150;
        }
        
      } while (true);
      }
      break;
    }
    case LITERAL_instanceof:
    {
      AST tmp144_AST = null;
      tmp144_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp144_AST);
      match(LITERAL_instanceof);
      typeSpec(true);
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    relationalExpression_AST = (AST)currentAST.root;
    returnAST = relationalExpression_AST;
  }
  
  public final void shiftExpression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST shiftExpression_AST = null;
    
    additiveExpression();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop154:
    do {
      if (((LA(1) >= SL && LA(1) <= BSR))) {
        {
        switch ( LA(1)) {
        case SL:
        {
          AST tmp145_AST = null;
          tmp145_AST = astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp145_AST);
          match(SL);
          break;
        }
        case SR:
        {
          AST tmp146_AST = null;
          tmp146_AST = astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp146_AST);
          match(SR);
          break;
        }
        case BSR:
        {
          AST tmp147_AST = null;
          tmp147_AST = astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp147_AST);
          match(BSR);
          break;
        }
        default:
        {
          throw new NoViableAltException(LT(1), getFilename());
        }
        }
        }
        additiveExpression();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop154;
      }
      
    } while (true);
    }
    shiftExpression_AST = (AST)currentAST.root;
    returnAST = shiftExpression_AST;
  }
  
  public final void additiveExpression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST additiveExpression_AST = null;
    
    multiplicativeExpression();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop158:
    do {
      if ((LA(1)==PLUS||LA(1)==MINUS)) {
        {
        switch ( LA(1)) {
        case PLUS:
        {
          AST tmp148_AST = null;
          tmp148_AST = astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp148_AST);
          match(PLUS);
          break;
        }
        case MINUS:
        {
          AST tmp149_AST = null;
          tmp149_AST = astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp149_AST);
          match(MINUS);
          break;
        }
        default:
        {
          throw new NoViableAltException(LT(1), getFilename());
        }
        }
        }
        multiplicativeExpression();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop158;
      }
      
    } while (true);
    }
    additiveExpression_AST = (AST)currentAST.root;
    returnAST = additiveExpression_AST;
  }
  
  public final void multiplicativeExpression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST multiplicativeExpression_AST = null;
    
    unaryExpression();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop162:
    do {
      if ((_tokenSet_22.member(LA(1)))) {
        {
        switch ( LA(1)) {
        case STAR:
        {
          AST tmp150_AST = null;
          tmp150_AST = astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp150_AST);
          match(STAR);
          break;
        }
        case DIV:
        {
          AST tmp151_AST = null;
          tmp151_AST = astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp151_AST);
          match(DIV);
          break;
        }
        case MOD:
        {
          AST tmp152_AST = null;
          tmp152_AST = astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp152_AST);
          match(MOD);
          break;
        }
        default:
        {
          throw new NoViableAltException(LT(1), getFilename());
        }
        }
        }
        unaryExpression();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop162;
      }
      
    } while (true);
    }
    multiplicativeExpression_AST = (AST)currentAST.root;
    returnAST = multiplicativeExpression_AST;
  }
  
  public final void unaryExpression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST unaryExpression_AST = null;
    
    switch ( LA(1)) {
    case INC:
    {
      AST tmp153_AST = null;
      tmp153_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp153_AST);
      match(INC);
      unaryExpression();
      astFactory.addASTChild(currentAST, returnAST);
      unaryExpression_AST = (AST)currentAST.root;
      break;
    }
    case DEC:
    {
      AST tmp154_AST = null;
      tmp154_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp154_AST);
      match(DEC);
      unaryExpression();
      astFactory.addASTChild(currentAST, returnAST);
      unaryExpression_AST = (AST)currentAST.root;
      break;
    }
    case MINUS:
    {
      AST tmp155_AST = null;
      tmp155_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp155_AST);
      match(MINUS);
      if ( inputState.guessing==0 ) {
        tmp155_AST.setType(UNARY_MINUS);
      }
      unaryExpression();
      astFactory.addASTChild(currentAST, returnAST);
      unaryExpression_AST = (AST)currentAST.root;
      break;
    }
    case PLUS:
    {
      AST tmp156_AST = null;
      tmp156_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp156_AST);
      match(PLUS);
      if ( inputState.guessing==0 ) {
        tmp156_AST.setType(UNARY_PLUS);
      }
      unaryExpression();
      astFactory.addASTChild(currentAST, returnAST);
      unaryExpression_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_void:
    case LITERAL_boolean:
    case LITERAL_byte:
    case LITERAL_char:
    case LITERAL_short:
    case LITERAL_int:
    case LITERAL_float:
    case LITERAL_long:
    case LITERAL_double:
    case IDENT:
    case LPAREN:
    case LITERAL_this:
    case LITERAL_super:
    case BNOT:
    case LNOT:
    case LITERAL_true:
    case LITERAL_false:
    case LITERAL_null:
    case LITERAL_new:
    case NUM_INT:
    case CHAR_LITERAL:
    case STRING_LITERAL:
    case NUM_FLOAT:
    case NUM_LONG:
    case NUM_DOUBLE:
    {
      unaryExpressionNotPlusMinus();
      astFactory.addASTChild(currentAST, returnAST);
      unaryExpression_AST = (AST)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = unaryExpression_AST;
  }
  
  public final void unaryExpressionNotPlusMinus() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST unaryExpressionNotPlusMinus_AST = null;
    Token  lpb = null;
    AST lpb_AST = null;
    Token  lp = null;
    AST lp_AST = null;
    
    switch ( LA(1)) {
    case BNOT:
    {
      AST tmp157_AST = null;
      tmp157_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp157_AST);
      match(BNOT);
      unaryExpression();
      astFactory.addASTChild(currentAST, returnAST);
      unaryExpressionNotPlusMinus_AST = (AST)currentAST.root;
      break;
    }
    case LNOT:
    {
      AST tmp158_AST = null;
      tmp158_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp158_AST);
      match(LNOT);
      unaryExpression();
      astFactory.addASTChild(currentAST, returnAST);
      unaryExpressionNotPlusMinus_AST = (AST)currentAST.root;
      break;
    }
    default:
      boolean synPredMatched166 = false;
      if (((LA(1)==LPAREN) && ((LA(2) >= LITERAL_void && LA(2) <= LITERAL_double)))) {
        int _m166 = mark();
        synPredMatched166 = true;
        inputState.guessing++;
        try {
          {
          match(LPAREN);
          builtInTypeSpec(true);
          match(RPAREN);
          }
        }
        catch (RecognitionException pe) {
          synPredMatched166 = false;
        }
        rewind(_m166);
        inputState.guessing--;
      }
      if ( synPredMatched166 ) {
        lpb = LT(1);
        lpb_AST = astFactory.create(lpb);
        astFactory.makeASTRoot(currentAST, lpb_AST);
        match(LPAREN);
        if ( inputState.guessing==0 ) {
          lpb_AST.setType(TYPECAST);
        }
        builtInTypeSpec(true);
        astFactory.addASTChild(currentAST, returnAST);
        match(RPAREN);
        unaryExpression();
        astFactory.addASTChild(currentAST, returnAST);
        unaryExpressionNotPlusMinus_AST = (AST)currentAST.root;
      }
      else {
        boolean synPredMatched168 = false;
        if (((LA(1)==LPAREN) && (LA(2)==IDENT))) {
          int _m168 = mark();
          synPredMatched168 = true;
          inputState.guessing++;
          try {
            {
            match(LPAREN);
            classTypeSpec(true);
            match(RPAREN);
            unaryExpressionNotPlusMinus();
            }
          }
          catch (RecognitionException pe) {
            synPredMatched168 = false;
          }
          rewind(_m168);
          inputState.guessing--;
        }
        if ( synPredMatched168 ) {
          lp = LT(1);
          lp_AST = astFactory.create(lp);
          astFactory.makeASTRoot(currentAST, lp_AST);
          match(LPAREN);
          if ( inputState.guessing==0 ) {
            lp_AST.setType(TYPECAST);
          }
          classTypeSpec(true);
          astFactory.addASTChild(currentAST, returnAST);
          match(RPAREN);
          unaryExpressionNotPlusMinus();
          astFactory.addASTChild(currentAST, returnAST);
          unaryExpressionNotPlusMinus_AST = (AST)currentAST.root;
        }
        else if ((_tokenSet_23.member(LA(1))) && (_tokenSet_24.member(LA(2)))) {
          postfixExpression();
          astFactory.addASTChild(currentAST, returnAST);
          unaryExpressionNotPlusMinus_AST = (AST)currentAST.root;
        }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }}
      returnAST = unaryExpressionNotPlusMinus_AST;
    }
    
  public final void postfixExpression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST postfixExpression_AST = null;
    Token  lp = null;
    AST lp_AST = null;
    Token  lp3 = null;
    AST lp3_AST = null;
    Token  lps = null;
    AST lps_AST = null;
    Token  lb = null;
    AST lb_AST = null;
    Token  in = null;
    AST in_AST = null;
    Token  de = null;
    AST de_AST = null;
    
    primaryExpression();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop174:
    do {
      if ((LA(1)==DOT) && (LA(2)==IDENT)) {
        AST tmp161_AST = null;
        tmp161_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp161_AST);
        match(DOT);
        AST tmp162_AST = null;
        tmp162_AST = astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp162_AST);
        match(IDENT);
        {
        switch ( LA(1)) {
        case LPAREN:
        {
          lp = LT(1);
          lp_AST = astFactory.create(lp);
          astFactory.makeASTRoot(currentAST, lp_AST);
          match(LPAREN);
          if ( inputState.guessing==0 ) {
            lp_AST.setType(METHOD_CALL);
          }
          argList();
          astFactory.addASTChild(currentAST, returnAST);
          match(RPAREN);
          break;
        }
        case SEMI:
        case LBRACK:
        case RBRACK:
        case DOT:
        case STAR:
        case RCURLY:
        case COMMA:
        case RPAREN:
        case ASSIGN:
        case COLON:
        case PLUS_ASSIGN:
        case MINUS_ASSIGN:
        case STAR_ASSIGN:
        case DIV_ASSIGN:
        case MOD_ASSIGN:
        case SR_ASSIGN:
        case BSR_ASSIGN:
        case SL_ASSIGN:
        case BAND_ASSIGN:
        case BXOR_ASSIGN:
        case BOR_ASSIGN:
        case QUESTION:
        case LOR:
        case LAND:
        case BOR:
        case BXOR:
        case BAND:
        case NOT_EQUAL:
        case EQUAL:
        case LT:
        case GT:
        case LE:
        case GE:
        case LITERAL_instanceof:
        case SL:
        case SR:
        case BSR:
        case PLUS:
        case MINUS:
        case DIV:
        case MOD:
        case INC:
        case DEC:
        {
          break;
        }
        default:
        {
          throw new NoViableAltException(LT(1), getFilename());
        }
        }
        }
      }
      else if ((LA(1)==DOT) && (LA(2)==LITERAL_this)) {
        AST tmp164_AST = null;
        tmp164_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp164_AST);
        match(DOT);
        AST tmp165_AST = null;
        tmp165_AST = astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp165_AST);
        match(LITERAL_this);
      }
      else if ((LA(1)==DOT) && (LA(2)==LITERAL_super)) {
        AST tmp166_AST = null;
        tmp166_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp166_AST);
        match(DOT);
        AST tmp167_AST = null;
        tmp167_AST = astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp167_AST);
        match(LITERAL_super);
        {
        switch ( LA(1)) {
        case LPAREN:
        {
          lp3 = LT(1);
          lp3_AST = astFactory.create(lp3);
          astFactory.makeASTRoot(currentAST, lp3_AST);
          match(LPAREN);
          argList();
          astFactory.addASTChild(currentAST, returnAST);
          match(RPAREN);
          if ( inputState.guessing==0 ) {
            lp3_AST.setType(SUPER_CTOR_CALL);
          }
          break;
        }
        case DOT:
        {
          AST tmp169_AST = null;
          tmp169_AST = astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp169_AST);
          match(DOT);
          AST tmp170_AST = null;
          tmp170_AST = astFactory.create(LT(1));
          astFactory.addASTChild(currentAST, tmp170_AST);
          match(IDENT);
          {
          switch ( LA(1)) {
          case LPAREN:
          {
            lps = LT(1);
            lps_AST = astFactory.create(lps);
            astFactory.makeASTRoot(currentAST, lps_AST);
            match(LPAREN);
            if ( inputState.guessing==0 ) {
              lps_AST.setType(METHOD_CALL);
            }
            argList();
            astFactory.addASTChild(currentAST, returnAST);
            match(RPAREN);
            break;
          }
          case SEMI:
          case LBRACK:
          case RBRACK:
          case DOT:
          case STAR:
          case RCURLY:
          case COMMA:
          case RPAREN:
          case ASSIGN:
          case COLON:
          case PLUS_ASSIGN:
          case MINUS_ASSIGN:
          case STAR_ASSIGN:
          case DIV_ASSIGN:
          case MOD_ASSIGN:
          case SR_ASSIGN:
          case BSR_ASSIGN:
          case SL_ASSIGN:
          case BAND_ASSIGN:
          case BXOR_ASSIGN:
          case BOR_ASSIGN:
          case QUESTION:
          case LOR:
          case LAND:
          case BOR:
          case BXOR:
          case BAND:
          case NOT_EQUAL:
          case EQUAL:
          case LT:
          case GT:
          case LE:
          case GE:
          case LITERAL_instanceof:
          case SL:
          case SR:
          case BSR:
          case PLUS:
          case MINUS:
          case DIV:
          case MOD:
          case INC:
          case DEC:
          {
            break;
          }
          default:
          {
            throw new NoViableAltException(LT(1), getFilename());
          }
          }
          }
          break;
        }
        default:
        {
          throw new NoViableAltException(LT(1), getFilename());
        }
        }
        }
      }
      else if ((LA(1)==DOT) && (LA(2)==LITERAL_new)) {
        AST tmp172_AST = null;
        tmp172_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp172_AST);
        match(DOT);
        newExpression();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else if ((LA(1)==LBRACK)) {
        lb = LT(1);
        lb_AST = astFactory.create(lb);
        astFactory.makeASTRoot(currentAST, lb_AST);
        match(LBRACK);
        if ( inputState.guessing==0 ) {
          lb_AST.setType(INDEX_OP);
        }
        expression();
        astFactory.addASTChild(currentAST, returnAST);
        match(RBRACK);
      }
      else {
        break _loop174;
      }
      
    } while (true);
    }
    {
    switch ( LA(1)) {
    case INC:
    {
      in = LT(1);
      in_AST = astFactory.create(in);
      astFactory.makeASTRoot(currentAST, in_AST);
      match(INC);
      if ( inputState.guessing==0 ) {
        in_AST.setType(POST_INC);
      }
      break;
    }
    case DEC:
    {
      de = LT(1);
      de_AST = astFactory.create(de);
      astFactory.makeASTRoot(currentAST, de_AST);
      match(DEC);
      if ( inputState.guessing==0 ) {
        de_AST.setType(POST_DEC);
      }
      break;
    }
    case SEMI:
    case RBRACK:
    case STAR:
    case RCURLY:
    case COMMA:
    case RPAREN:
    case ASSIGN:
    case COLON:
    case PLUS_ASSIGN:
    case MINUS_ASSIGN:
    case STAR_ASSIGN:
    case DIV_ASSIGN:
    case MOD_ASSIGN:
    case SR_ASSIGN:
    case BSR_ASSIGN:
    case SL_ASSIGN:
    case BAND_ASSIGN:
    case BXOR_ASSIGN:
    case BOR_ASSIGN:
    case QUESTION:
    case LOR:
    case LAND:
    case BOR:
    case BXOR:
    case BAND:
    case NOT_EQUAL:
    case EQUAL:
    case LT:
    case GT:
    case LE:
    case GE:
    case LITERAL_instanceof:
    case SL:
    case SR:
    case BSR:
    case PLUS:
    case MINUS:
    case DIV:
    case MOD:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    postfixExpression_AST = (AST)currentAST.root;
    returnAST = postfixExpression_AST;
  }
  
  public final void primaryExpression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST primaryExpression_AST = null;
    Token  lbt = null;
    AST lbt_AST = null;
    
    switch ( LA(1)) {
    case IDENT:
    {
      identPrimary();
      astFactory.addASTChild(currentAST, returnAST);
      {
      if ((LA(1)==DOT) && (LA(2)==LITERAL_class)) {
        AST tmp174_AST = null;
        tmp174_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp174_AST);
        match(DOT);
        AST tmp175_AST = null;
        tmp175_AST = astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp175_AST);
        match(LITERAL_class);
      }
      else if ((_tokenSet_25.member(LA(1))) && (_tokenSet_26.member(LA(2)))) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      
      }
      primaryExpression_AST = (AST)currentAST.root;
      break;
    }
    case NUM_INT:
    case CHAR_LITERAL:
    case STRING_LITERAL:
    case NUM_FLOAT:
    case NUM_LONG:
    case NUM_DOUBLE:
    {
      constant();
      astFactory.addASTChild(currentAST, returnAST);
      primaryExpression_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_true:
    {
      AST tmp176_AST = null;
      tmp176_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp176_AST);
      match(LITERAL_true);
      primaryExpression_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_false:
    {
      AST tmp177_AST = null;
      tmp177_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp177_AST);
      match(LITERAL_false);
      primaryExpression_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_null:
    {
      AST tmp178_AST = null;
      tmp178_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp178_AST);
      match(LITERAL_null);
      primaryExpression_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_new:
    {
      newExpression();
      astFactory.addASTChild(currentAST, returnAST);
      primaryExpression_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_this:
    {
      AST tmp179_AST = null;
      tmp179_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp179_AST);
      match(LITERAL_this);
      primaryExpression_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_super:
    {
      AST tmp180_AST = null;
      tmp180_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp180_AST);
      match(LITERAL_super);
      primaryExpression_AST = (AST)currentAST.root;
      break;
    }
    case LPAREN:
    {
      match(LPAREN);
      assignmentExpression();
      astFactory.addASTChild(currentAST, returnAST);
      match(RPAREN);
      primaryExpression_AST = (AST)currentAST.root;
      break;
    }
    case LITERAL_void:
    case LITERAL_boolean:
    case LITERAL_byte:
    case LITERAL_char:
    case LITERAL_short:
    case LITERAL_int:
    case LITERAL_float:
    case LITERAL_long:
    case LITERAL_double:
    {
      builtInType();
      astFactory.addASTChild(currentAST, returnAST);
      {
      _loop179:
      do {
        if ((LA(1)==LBRACK)) {
          lbt = LT(1);
          lbt_AST = astFactory.create(lbt);
          astFactory.makeASTRoot(currentAST, lbt_AST);
          match(LBRACK);
          if ( inputState.guessing==0 ) {
            lbt_AST.setType(ARRAY_DECLARATOR);
          }
          match(RBRACK);
        }
        else {
          break _loop179;
        }
        
      } while (true);
      }
      AST tmp184_AST = null;
      tmp184_AST = astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp184_AST);
      match(DOT);
      AST tmp185_AST = null;
      tmp185_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp185_AST);
      match(LITERAL_class);
      primaryExpression_AST = (AST)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = primaryExpression_AST;
  }
  
/** object instantiation.
 *  Trees are built as illustrated by the following input/tree pairs:
 *
 *  new T()
 *
 *  new
 *   |
 *   T --  ELIST
 *           |
 *          arg1 -- arg2 -- .. -- argn
 *
 *  new int[]
 *
 *  new
 *   |
 *  int -- ARRAY_DECLARATOR
 *
 *  new int[] {1,2}
 *
 *  new
 *   |
 *  int -- ARRAY_DECLARATOR -- ARRAY_INIT
 *                                  |
 *                                EXPR -- EXPR
 *                                  |      |
 *                                  1      2
 *
 *  new int[3]
 *  new
 *   |
 *  int -- ARRAY_DECLARATOR
 *                |
 *              EXPR
 *                |
 *                3
 *
 *  new int[1][2]
 *
 *  new
 *   |
 *  int -- ARRAY_DECLARATOR
 *               |
 *         ARRAY_DECLARATOR -- EXPR
 *               |              |
 *             EXPR             1
 *               |
 *               2
 *
 */
  public final void newExpression() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST newExpression_AST = null;
    
    AST tmp186_AST = null;
    tmp186_AST = astFactory.create(LT(1));
    astFactory.makeASTRoot(currentAST, tmp186_AST);
    match(LITERAL_new);
    type();
    astFactory.addASTChild(currentAST, returnAST);
    {
    switch ( LA(1)) {
    case LPAREN:
    {
      match(LPAREN);
      argList();
      astFactory.addASTChild(currentAST, returnAST);
      match(RPAREN);
      {
      switch ( LA(1)) {
      case LCURLY:
      {
        classBlock();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      case SEMI:
      case LBRACK:
      case RBRACK:
      case DOT:
      case STAR:
      case RCURLY:
      case COMMA:
      case RPAREN:
      case ASSIGN:
      case COLON:
      case PLUS_ASSIGN:
      case MINUS_ASSIGN:
      case STAR_ASSIGN:
      case DIV_ASSIGN:
      case MOD_ASSIGN:
      case SR_ASSIGN:
      case BSR_ASSIGN:
      case SL_ASSIGN:
      case BAND_ASSIGN:
      case BXOR_ASSIGN:
      case BOR_ASSIGN:
      case QUESTION:
      case LOR:
      case LAND:
      case BOR:
      case BXOR:
      case BAND:
      case NOT_EQUAL:
      case EQUAL:
      case LT:
      case GT:
      case LE:
      case GE:
      case LITERAL_instanceof:
      case SL:
      case SR:
      case BSR:
      case PLUS:
      case MINUS:
      case DIV:
      case MOD:
      case INC:
      case DEC:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      break;
    }
    case LBRACK:
    {
      newArrayDeclarator();
      astFactory.addASTChild(currentAST, returnAST);
      {
      switch ( LA(1)) {
      case LCURLY:
      {
        arrayInitializer();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      case SEMI:
      case LBRACK:
      case RBRACK:
      case DOT:
      case STAR:
      case RCURLY:
      case COMMA:
      case RPAREN:
      case ASSIGN:
      case COLON:
      case PLUS_ASSIGN:
      case MINUS_ASSIGN:
      case STAR_ASSIGN:
      case DIV_ASSIGN:
      case MOD_ASSIGN:
      case SR_ASSIGN:
      case BSR_ASSIGN:
      case SL_ASSIGN:
      case BAND_ASSIGN:
      case BXOR_ASSIGN:
      case BOR_ASSIGN:
      case QUESTION:
      case LOR:
      case LAND:
      case BOR:
      case BXOR:
      case BAND:
      case NOT_EQUAL:
      case EQUAL:
      case LT:
      case GT:
      case LE:
      case GE:
      case LITERAL_instanceof:
      case SL:
      case SR:
      case BSR:
      case PLUS:
      case MINUS:
      case DIV:
      case MOD:
      case INC:
      case DEC:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    newExpression_AST = (AST)currentAST.root;
    returnAST = newExpression_AST;
  }
  
/** Match a, a.b.c refs, a.b.c(...) refs, a.b.c[], a.b.c[].class,
 *  and a.b.c.class refs.  Also this(...) and super(...).  Match
 *  this or super.
 */
  public final void identPrimary() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST identPrimary_AST = null;
    Token  lp = null;
    AST lp_AST = null;
    Token  lbc = null;
    AST lbc_AST = null;
    
    AST tmp189_AST = null;
    tmp189_AST = astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp189_AST);
    match(IDENT);
    {
    _loop182:
    do {
      if ((LA(1)==DOT) && (LA(2)==IDENT)) {
        AST tmp190_AST = null;
        tmp190_AST = astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp190_AST);
        match(DOT);
        AST tmp191_AST = null;
        tmp191_AST = astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp191_AST);
        match(IDENT);
      }
      else {
        break _loop182;
      }
      
    } while (true);
    }
    {
    if ((LA(1)==LPAREN)) {
      {
      lp = LT(1);
      lp_AST = astFactory.create(lp);
      astFactory.makeASTRoot(currentAST, lp_AST);
      match(LPAREN);
      if ( inputState.guessing==0 ) {
        lp_AST.setType(METHOD_CALL);
      }
      argList();
      astFactory.addASTChild(currentAST, returnAST);
      match(RPAREN);
      }
    }
    else if ((LA(1)==LBRACK) && (LA(2)==RBRACK)) {
      {
      int _cnt186=0;
      _loop186:
      do {
        if ((LA(1)==LBRACK) && (LA(2)==RBRACK)) {
          lbc = LT(1);
          lbc_AST = astFactory.create(lbc);
          astFactory.makeASTRoot(currentAST, lbc_AST);
          match(LBRACK);
          if ( inputState.guessing==0 ) {
            lbc_AST.setType(ARRAY_DECLARATOR);
          }
          match(RBRACK);
        }
        else {
          if ( _cnt186>=1 ) { break _loop186; } else {throw new NoViableAltException(LT(1), getFilename());}
        }
        
        _cnt186++;
      } while (true);
      }
    }
    else if ((_tokenSet_25.member(LA(1))) && (_tokenSet_26.member(LA(2)))) {
    }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
    
    }
    identPrimary_AST = (AST)currentAST.root;
    returnAST = identPrimary_AST;
  }
  
  public final void constant() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST constant_AST = null;
    
    switch ( LA(1)) {
    case NUM_INT:
    {
      AST tmp194_AST = null;
      tmp194_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp194_AST);
      match(NUM_INT);
      constant_AST = (AST)currentAST.root;
      break;
    }
    case CHAR_LITERAL:
    {
      AST tmp195_AST = null;
      tmp195_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp195_AST);
      match(CHAR_LITERAL);
      constant_AST = (AST)currentAST.root;
      break;
    }
    case STRING_LITERAL:
    {
      AST tmp196_AST = null;
      tmp196_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp196_AST);
      match(STRING_LITERAL);
      constant_AST = (AST)currentAST.root;
      break;
    }
    case NUM_FLOAT:
    {
      AST tmp197_AST = null;
      tmp197_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp197_AST);
      match(NUM_FLOAT);
      constant_AST = (AST)currentAST.root;
      break;
    }
    case NUM_LONG:
    {
      AST tmp198_AST = null;
      tmp198_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp198_AST);
      match(NUM_LONG);
      constant_AST = (AST)currentAST.root;
      break;
    }
    case NUM_DOUBLE:
    {
      AST tmp199_AST = null;
      tmp199_AST = astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp199_AST);
      match(NUM_DOUBLE);
      constant_AST = (AST)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = constant_AST;
  }
  
  public final void newArrayDeclarator() throws RecognitionException, TokenStreamException {
    
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    AST newArrayDeclarator_AST = null;
    Token  lb = null;
    AST lb_AST = null;
    
    {
    int _cnt196=0;
    _loop196:
    do {
      if ((LA(1)==LBRACK) && (_tokenSet_27.member(LA(2)))) {
        lb = LT(1);
        lb_AST = astFactory.create(lb);
        astFactory.makeASTRoot(currentAST, lb_AST);
        match(LBRACK);
        if ( inputState.guessing==0 ) {
          lb_AST.setType(ARRAY_DECLARATOR);
        }
        {
        switch ( LA(1)) {
        case LITERAL_void:
        case LITERAL_boolean:
        case LITERAL_byte:
        case LITERAL_char:
        case LITERAL_short:
        case LITERAL_int:
        case LITERAL_float:
        case LITERAL_long:
        case LITERAL_double:
        case IDENT:
        case LPAREN:
        case LITERAL_this:
        case LITERAL_super:
        case PLUS:
        case MINUS:
        case INC:
        case DEC:
        case BNOT:
        case LNOT:
        case LITERAL_true:
        case LITERAL_false:
        case LITERAL_null:
        case LITERAL_new:
        case NUM_INT:
        case CHAR_LITERAL:
        case STRING_LITERAL:
        case NUM_FLOAT:
        case NUM_LONG:
        case NUM_DOUBLE:
        {
          expression();
          astFactory.addASTChild(currentAST, returnAST);
          break;
        }
        case RBRACK:
        {
          break;
        }
        default:
        {
          throw new NoViableAltException(LT(1), getFilename());
        }
        }
        }
        match(RBRACK);
      }
      else {
        if ( _cnt196>=1 ) { break _loop196; } else {throw new NoViableAltException(LT(1), getFilename());}
      }
      
      _cnt196++;
    } while (true);
    }
    newArrayDeclarator_AST = (AST)currentAST.root;
    returnAST = newArrayDeclarator_AST;
  }
  
  
  public static final String[] _tokenNames = {
    "<0>",
    "EOF",
    "<2>",
    "NULL_TREE_LOOKAHEAD",
    "BLOCK",
    "MODIFIERS",
    "OBJBLOCK",
    "SLIST",
    "CTOR_DEF",
    "METHOD_DEF",
    "VARIABLE_DEF",
    "INSTANCE_INIT",
    "STATIC_INIT",
    "TYPE",
    "CLASS_DEF",
    "INTERFACE_DEF",
    "PACKAGE_DEF",
    "ARRAY_DECLARATOR",
    "EXTENDS_CLAUSE",
    "IMPLEMENTS_CLAUSE",
    "PARAMETERS",
    "PARAMETER_DEF",
    "LABELED_STAT",
    "TYPECAST",
    "INDEX_OP",
    "POST_INC",
    "POST_DEC",
    "METHOD_CALL",
    "EXPR",
    "ARRAY_INIT",
    "IMPORT",
    "UNARY_MINUS",
    "UNARY_PLUS",
    "CASE_GROUP",
    "ELIST",
    "FOR_INIT",
    "FOR_CONDITION",
    "FOR_ITERATOR",
    "EMPTY_STAT",
    "\"final\"",
    "\"abstract\"",
    "\"strictfp\"",
    "SUPER_CTOR_CALL",
    "CTOR_CALL",
    "\"package\"",
    "SEMI",
    "\"import\"",
    "LBRACK",
    "RBRACK",
    "\"void\"",
    "\"boolean\"",
    "\"byte\"",
    "\"char\"",
    "\"short\"",
    "\"int\"",
    "\"float\"",
    "\"long\"",
    "\"double\"",
    "IDENT",
    "DOT",
    "STAR",
    "\"private\"",
    "\"public\"",
    "\"protected\"",
    "\"static\"",
    "\"transient\"",
    "\"native\"",
    "\"threadsafe\"",
    "\"synchronized\"",
    "\"volatile\"",
    "\"class\"",
    "\"extends\"",
    "\"interface\"",
    "LCURLY",
    "RCURLY",
    "COMMA",
    "\"implements\"",
    "LPAREN",
    "RPAREN",
    "\"this\"",
    "\"super\"",
    "ASSIGN",
    "\"throws\"",
    "COLON",
    "\"if\"",
    "\"else\"",
    "\"for\"",
    "\"while\"",
    "\"do\"",
    "\"break\"",
    "\"continue\"",
    "\"return\"",
    "\"switch\"",
    "\"throw\"",
    "\"case\"",
    "\"default\"",
    "\"try\"",
    "\"finally\"",
    "\"catch\"",
    "PLUS_ASSIGN",
    "MINUS_ASSIGN",
    "STAR_ASSIGN",
    "DIV_ASSIGN",
    "MOD_ASSIGN",
    "SR_ASSIGN",
    "BSR_ASSIGN",
    "SL_ASSIGN",
    "BAND_ASSIGN",
    "BXOR_ASSIGN",
    "BOR_ASSIGN",
    "QUESTION",
    "LOR",
    "LAND",
    "BOR",
    "BXOR",
    "BAND",
    "NOT_EQUAL",
    "EQUAL",
    "LT",
    "GT",
    "LE",
    "GE",
    "\"instanceof\"",
    "SL",
    "SR",
    "BSR",
    "PLUS",
    "MINUS",
    "DIV",
    "MOD",
    "INC",
    "DEC",
    "BNOT",
    "LNOT",
    "\"true\"",
    "\"false\"",
    "\"null\"",
    "\"new\"",
    "NUM_INT",
    "CHAR_LITERAL",
    "STRING_LITERAL",
    "NUM_FLOAT",
    "NUM_LONG",
    "NUM_DOUBLE",
    "WS",
    "SL_COMMENT",
    "ML_COMMENT",
    "ESC",
    "HEX_DIGIT",
    "VOCAB",
    "EXPONENT",
    "FLOAT_SUFFIX"
  };
  
  protected void buildTokenTypeASTClassMap() {
    tokenTypeToASTClassMap=null;
  };
  
  private static final long[] mk_tokenSet_0() {
    long[] data = { -2305803976550907904L, 383L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_0 = new BitSet(mk_tokenSet_0());
  private static final long[] mk_tokenSet_1() {
    long[] data = { -2305733607806730238L, 383L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_1 = new BitSet(mk_tokenSet_1());
  private static final long[] mk_tokenSet_2() {
    long[] data = { -2305803976550907902L, 383L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_2 = new BitSet(mk_tokenSet_2());
  private static final long[] mk_tokenSet_3() {
    long[] data = { -2305839160922996736L, 63L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_3 = new BitSet(mk_tokenSet_3());
  private static final long[] mk_tokenSet_4() {
    long[] data = { -1729941358572994560L, 383L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_4 = new BitSet(mk_tokenSet_4());
  private static final long[] mk_tokenSet_5() {
    long[] data = { -1153339868781215744L, 8575L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_5 = new BitSet(mk_tokenSet_5());
  private static final long[] mk_tokenSet_6() {
    long[] data = { 864831865943490560L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_6 = new BitSet(mk_tokenSet_6());
  private static final long[] mk_tokenSet_7() {
    long[] data = { 175921860444160L, 133120L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_7 = new BitSet(mk_tokenSet_7());
  private static final long[] mk_tokenSet_8() {
    long[] data = { -1729906174200905728L, -4611686013061716353L, 65532L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_8 = new BitSet(mk_tokenSet_8());
  private static final long[] mk_tokenSet_9() {
    long[] data = { -383179802279936L, -28993411201L, 65535L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_9 = new BitSet(mk_tokenSet_9());
  private static final long[] mk_tokenSet_10() {
    long[] data = { -1729906174200905728L, -4611686013061717377L, 65532L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_10 = new BitSet(mk_tokenSet_10());
  private static final long[] mk_tokenSet_11() {
    long[] data = { -1729906174200905728L, -4611686009838393729L, 65532L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_11 = new BitSet(mk_tokenSet_11());
  private static final long[] mk_tokenSet_12() {
    long[] data = { -383179802279936L, -284801L, 65535L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_12 = new BitSet(mk_tokenSet_12());
  private static final long[] mk_tokenSet_13() {
    long[] data = { -1729941358572994560L, 63L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_13 = new BitSet(mk_tokenSet_13());
  private static final long[] mk_tokenSet_14() {
    long[] data = { -1153339868781215744L, 63L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_14 = new BitSet(mk_tokenSet_14());
  private static final long[] mk_tokenSet_15() {
    long[] data = { 575897802350002176L, -4611686018427281408L, 65532L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_15 = new BitSet(mk_tokenSet_15());
  private static final long[] mk_tokenSet_16() {
    long[] data = { 2305455981120716800L, -34359500800L, 65535L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_16 = new BitSet(mk_tokenSet_16());
  private static final long[] mk_tokenSet_17() {
    long[] data = { -2305839160922996736L, 127L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_17 = new BitSet(mk_tokenSet_17());
  private static final long[] mk_tokenSet_18() {
    long[] data = { -2017608784771284992L, 127L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_18 = new BitSet(mk_tokenSet_18());
  private static final long[] mk_tokenSet_19() {
    long[] data = { 575897802350002176L, -4611686018427280896L, 65532L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_19 = new BitSet(mk_tokenSet_19());
  private static final long[] mk_tokenSet_20() {
    long[] data = { 2305455981120716800L, -34359498752L, 65535L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_20 = new BitSet(mk_tokenSet_20());
  private static final long[] mk_tokenSet_21() {
    long[] data = { 575897802350002176L, -4611686018426757120L, 65532L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_21 = new BitSet(mk_tokenSet_21());
  private static final long[] mk_tokenSet_22() {
    long[] data = { 1152921504606846976L, 0L, 3L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_22 = new BitSet(mk_tokenSet_22());
  private static final long[] mk_tokenSet_23() {
    long[] data = { 575897802350002176L, 106496L, 65472L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_23 = new BitSet(mk_tokenSet_23());
  private static final long[] mk_tokenSet_24() {
    long[] data = { 2305737456097427456L, -34358957056L, 65535L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_24 = new BitSet(mk_tokenSet_24());
  private static final long[] mk_tokenSet_25() {
    long[] data = { 1729839653747425280L, -34359063552L, 15L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_25 = new BitSet(mk_tokenSet_25());
  private static final long[] mk_tokenSet_26() {
    long[] data = { -101704825569280L, -25770070145L, 65535L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_26 = new BitSet(mk_tokenSet_26());
  private static final long[] mk_tokenSet_27() {
    long[] data = { 576179277326712832L, -4611686018427281408L, 65532L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_27 = new BitSet(mk_tokenSet_27());
  
  }
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.