Package processing.app.preproc

Source Code of processing.app.preproc.WParser

// $ANTLR 2.7.2: "expandedWParser.g" -> "WParser.java"$

package processing.app.preproc;

import java.io.*;

import antlr.CommonAST;
import antlr.DumpASTVisitor;

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;

public class WParser extends antlr.LLkParser       implements WTokenTypes
{

    // Suppport C++-style single-line comments?
    public static boolean CPPComments = true;

    // access to symbol table
    public CSymbolTable symbolTable = new CSymbolTable();

    // source for names to unnamed scopes
    protected int unnamedScopeCounter = 0;

    public boolean isTypedefName(String name) {
      boolean returnValue = false;
      TNode node = symbolTable.lookupNameInCurrentScope(name);
      for (; node != null; node = (TNode) node.getNextSibling() ) {
        if(node.getType() == LITERAL_typedef) {
            returnValue = true;
            break;
        }
      }
      return returnValue;
    }


    public String getAScopeName() {
      return "" + (unnamedScopeCounter++);
    }

    public void pushScope(String scopeName) {
      symbolTable.pushScope(scopeName);
    }

    public void popScope() {
      symbolTable.popScope();
    }

        int traceDepth = 0;
        public void reportError(RecognitionException ex) {
          try {
            System.err.println("ANTLR Parsing Error: "+ex + " token name:" + tokenNames[LA(1)]);
            ex.printStackTrace(System.err);
          }
    catch (TokenStreamException e) {
            System.err.println("ANTLR Parsing Error: "+ex);
            ex.printStackTrace(System.err);             
          }
        }
        public void reportError(String s) {
            System.err.println("ANTLR Parsing Error from String: " + s);
        }
        public void reportWarning(String s) {
            System.err.println("ANTLR Parsing Warning from String: " + s);
        }
        public void match(int t) throws MismatchedTokenException {
          boolean debugging = false;
         
          if ( debugging ) {
           for (int x=0; x<traceDepth; x++) System.out.print(" ");
           try {
            System.out.println("Match("+tokenNames[t]+") with LA(1)="+
                tokenNames[LA(1)] + ((inputState.guessing>0)?" [inputState.guessing "+ inputState.guessing + "]":""));
           }
           catch (TokenStreamException e) {
            System.out.println("Match("+tokenNames[t]+") " + ((inputState.guessing>0)?" [inputState.guessing "+ inputState.guessing + "]":""));

           }
   
          }
          try {
            if ( LA(1)!=t ) {
                if ( debugging ){
                    for (int x=0; x<traceDepth; x++) System.out.print(" ");
                    System.out.println("token mismatch: "+tokenNames[LA(1)]
                                + "!="+tokenNames[t]);
                }
          throw new MismatchedTokenException(tokenNames, LT(1), t, false, getFilename());

            } else {
                // mark token as consumed -- fetch next token deferred until LA/LT
                consume();
            }
          }
          catch (TokenStreamException e) {
          }
   
        }
        public void traceIn(String rname) {
          traceDepth += 1;
          for (int x=0; x<traceDepth; x++) System.out.print(" ");
          try {
            System.out.println("> "+rname+"; LA(1)==("+ tokenNames[LT(1).getType()]
                + ") " + LT(1).getText() + " [inputState.guessing "+ inputState.guessing + "]");
          }
          catch (TokenStreamException e) {
          }
        }
        public void traceOut(String rname) {
          for (int x=0; x<traceDepth; x++) System.out.print(" ");
          try {
            System.out.println("< "+rname+"; LA(1)==("+ tokenNames[LT(1).getType()]
                + ") "+LT(1).getText() + " [inputState.guessing "+ inputState.guessing + "]");
          }
          catch (TokenStreamException e) {
          }
          traceDepth -= 1;
        }
   

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

public WParser(TokenBuffer tokenBuf) {
  this(tokenBuf,1);
}

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

public WParser(TokenStream lexer) {
  this(lexer,1);
}

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

  public final void translationUnit() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode translationUnit_AST = null;
   
    {
    switch ( LA(1)) {
    case LITERAL_typedef:
    case LITERAL_asm:
    case LITERAL_volatile:
    case SEMI:
    case LITERAL_struct:
    case LITERAL_union:
    case LITERAL_enum:
    case LITERAL_auto:
    case LITERAL_register:
    case LITERAL_extern:
    case LITERAL_static:
    case LITERAL_const:
    case LITERAL_void:
    case LITERAL_char:
    case LITERAL_short:
    case LITERAL_int:
    case LITERAL_long:
    case LITERAL_float:
    case LITERAL_double:
    case LITERAL_signed:
    case LITERAL_unsigned:
    case ID:
    case STAR:
    case LPAREN:
    case LITERAL_inline:
    case LITERAL_byte:
    case LITERAL_boolean:
    case LITERAL_typeof:
    case LITERAL___complex:
    {
      externalList();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case EOF:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    translationUnit_AST = (TNode)currentAST.root;
    returnAST = translationUnit_AST;
  }
 
  public final void externalList() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode externalList_AST = null;
   
    {
    int _cnt211=0;
    _loop211:
    do {
      if ((_tokenSet_0.member(LA(1)))) {
        externalDef();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        if ( _cnt211>=1 ) { break _loop211; } else {throw new NoViableAltException(LT(1), getFilename());}
      }
     
      _cnt211++;
    } while (true);
    }
    externalList_AST = (TNode)currentAST.root;
    returnAST = externalList_AST;
  }
 
  public final void asm_expr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode asm_expr_AST = null;
   
    TNode tmp1_AST = null;
    tmp1_AST = (TNode)astFactory.create(LT(1));
    astFactory.makeASTRoot(currentAST, tmp1_AST);
    match(LITERAL_asm);
    {
    switch ( LA(1)) {
    case LITERAL_volatile:
    {
      TNode tmp2_AST = null;
      tmp2_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp2_AST);
      match(LITERAL_volatile);
      break;
    }
    case LCURLY:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    TNode tmp3_AST = null;
    tmp3_AST = (TNode)astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp3_AST);
    match(LCURLY);
    expr();
    astFactory.addASTChild(currentAST, returnAST);
    TNode tmp4_AST = null;
    tmp4_AST = (TNode)astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp4_AST);
    match(RCURLY);
    {
    int _cnt6=0;
    _loop6:
    do {
      if ((LA(1)==SEMI)) {
        TNode tmp5_AST = null;
        tmp5_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp5_AST);
        match(SEMI);
      }
      else {
        if ( _cnt6>=1 ) { break _loop6; } else {throw new NoViableAltException(LT(1), getFilename());}
      }
     
      _cnt6++;
    } while (true);
    }
    asm_expr_AST = (TNode)currentAST.root;
    returnAST = asm_expr_AST;
  }
 
  public final void expr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode expr_AST = null;
    Token  c = null;
    TNode c_AST = null;
   
    assignExpr();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop261:
    do {
      if ((LA(1)==COMMA)) {
        c = LT(1);
        c_AST = (TNode)astFactory.create(c);
        astFactory.makeASTRoot(currentAST, c_AST);
        match(COMMA);
        if ( inputState.guessing==0 ) {
          c_AST.setType(NCommaExpr);
        }
        assignExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop261;
      }
     
    } while (true);
    }
    expr_AST = (TNode)currentAST.root;
    returnAST = expr_AST;
  }
 
  public final void idList() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode idList_AST = null;
   
    TNode tmp6_AST = null;
    tmp6_AST = (TNode)astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp6_AST);
    match(ID);
    {
    _loop9:
    do {
      if ((LA(1)==COMMA)) {
        TNode tmp7_AST = null;
        tmp7_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp7_AST);
        match(COMMA);
        TNode tmp8_AST = null;
        tmp8_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp8_AST);
        match(ID);
      }
      else {
        break _loop9;
      }
     
    } while (true);
    }
    idList_AST = (TNode)currentAST.root;
    returnAST = idList_AST;
  }
 
  public final void externalDef() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode externalDef_AST = null;
   
    switch ( LA(1)) {
    case LITERAL_asm:
    {
      asm_expr();
      astFactory.addASTChild(currentAST, returnAST);
      externalDef_AST = (TNode)currentAST.root;
      break;
    }
    case SEMI:
    {
      TNode tmp9_AST = null;
      tmp9_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp9_AST);
      match(SEMI);
      externalDef_AST = (TNode)currentAST.root;
      break;
    }
    default:
      boolean synPredMatched12 = false;
      if (((_tokenSet_1.member(LA(1))))) {
        int _m12 = mark();
        synPredMatched12 = true;
        inputState.guessing++;
        try {
          {
          if ((LA(1)==LITERAL_typedef)) {
            match(LITERAL_typedef);
          }
          else if ((_tokenSet_1.member(LA(1)))) {
            declaration();
          }
          else {
            throw new NoViableAltException(LT(1), getFilename());
          }
         
          }
        }
        catch (RecognitionException pe) {
          synPredMatched12 = false;
        }
        rewind(_m12);
        inputState.guessing--;
      }
      if ( synPredMatched12 ) {
        declaration();
        astFactory.addASTChild(currentAST, returnAST);
        externalDef_AST = (TNode)currentAST.root;
      }
      else {
        boolean synPredMatched14 = false;
        if (((_tokenSet_2.member(LA(1))))) {
          int _m14 = mark();
          synPredMatched14 = true;
          inputState.guessing++;
          try {
            {
            functionPrefix();
            }
          }
          catch (RecognitionException pe) {
            synPredMatched14 = false;
          }
          rewind(_m14);
          inputState.guessing--;
        }
        if ( synPredMatched14 ) {
          functionDef();
          astFactory.addASTChild(currentAST, returnAST);
          externalDef_AST = (TNode)currentAST.root;
        }
        else if ((_tokenSet_3.member(LA(1)))) {
          typelessDeclaration();
          astFactory.addASTChild(currentAST, returnAST);
          externalDef_AST = (TNode)currentAST.root;
        }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }}
      returnAST = externalDef_AST;
    }
   
  public final void declaration() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode declaration_AST = null;
    TNode ds_AST = null;
    AST ds1 = null;
   
    declSpecifiers();
    ds_AST = (TNode)returnAST;
    astFactory.addASTChild(currentAST, returnAST);
    if ( inputState.guessing==0 ) {
      ds1 = astFactory.dupList(ds_AST);
    }
    {
    switch ( LA(1)) {
    case ID:
    case STAR:
    case LPAREN:
    {
      initDeclList(ds1);
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case SEMI:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    {
    int _cnt78=0;
    _loop78:
    do {
      if ((LA(1)==SEMI)) {
        TNode tmp10_AST = null;
        tmp10_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp10_AST);
        match(SEMI);
      }
      else {
        if ( _cnt78>=1 ) { break _loop78; } else {throw new NoViableAltException(LT(1), getFilename());}
      }
     
      _cnt78++;
    } while (true);
    }
    if ( inputState.guessing==0 ) {
      declaration_AST = (TNode)currentAST.root;
      declaration_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NDeclaration)).add(declaration_AST));
      currentAST.root = declaration_AST;
      currentAST.child = declaration_AST!=null &&declaration_AST.getFirstChild()!=null ?
        declaration_AST.getFirstChild() : declaration_AST;
      currentAST.advanceChildToEnd();
    }
    declaration_AST = (TNode)currentAST.root;
    returnAST = declaration_AST;
  }
 
  public final void functionPrefix() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode functionPrefix_AST = null;
    TNode ds_AST = null;
    TNode d_AST = null;
    String declName;
   
    {
    boolean synPredMatched18 = false;
    if (((_tokenSet_4.member(LA(1))))) {
      int _m18 = mark();
      synPredMatched18 = true;
      inputState.guessing++;
      try {
        {
        functionDeclSpecifiers();
        }
      }
      catch (RecognitionException pe) {
        synPredMatched18 = false;
      }
      rewind(_m18);
      inputState.guessing--;
    }
    if ( synPredMatched18 ) {
      functionDeclSpecifiers();
      ds_AST = (TNode)returnAST;
      astFactory.addASTChild(currentAST, returnAST);
    }
    else if ((_tokenSet_3.member(LA(1)))) {
    }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
   
    }
    declName=declarator(true);
    d_AST = (TNode)returnAST;
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop20:
    do {
      if ((_tokenSet_1.member(LA(1)))) {
        declaration();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop20;
      }
     
    } while (true);
    }
    {
    switch ( LA(1)) {
    case VARARGS:
    {
      TNode tmp11_AST = null;
      tmp11_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp11_AST);
      match(VARARGS);
      break;
    }
    case LCURLY:
    case SEMI:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    {
    _loop23:
    do {
      if ((LA(1)==SEMI)) {
        TNode tmp12_AST = null;
        tmp12_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp12_AST);
        match(SEMI);
      }
      else {
        break _loop23;
      }
     
    } while (true);
    }
    TNode tmp13_AST = null;
    tmp13_AST = (TNode)astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp13_AST);
    match(LCURLY);
    functionPrefix_AST = (TNode)currentAST.root;
    returnAST = functionPrefix_AST;
  }
 
  public final void functionDef() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode functionDef_AST = null;
    TNode ds_AST = null;
    TNode d_AST = null;
    String declName;
   
    {
    boolean synPredMatched243 = false;
    if (((_tokenSet_4.member(LA(1))))) {
      int _m243 = mark();
      synPredMatched243 = true;
      inputState.guessing++;
      try {
        {
        functionDeclSpecifiers();
        }
      }
      catch (RecognitionException pe) {
        synPredMatched243 = false;
      }
      rewind(_m243);
      inputState.guessing--;
    }
    if ( synPredMatched243 ) {
      functionDeclSpecifiers();
      ds_AST = (TNode)returnAST;
      astFactory.addASTChild(currentAST, returnAST);
    }
    else if ((_tokenSet_3.member(LA(1)))) {
    }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
   
    }
    declName=declarator(true);
    d_AST = (TNode)returnAST;
    astFactory.addASTChild(currentAST, returnAST);
    if ( inputState.guessing==0 ) {
     
      AST d2, ds2;
      d2 = astFactory.dupList(d_AST);
      ds2 = astFactory.dupList(ds_AST);
      symbolTable.add(declName, (TNode)astFactory.make( (new ASTArray(3)).add(null).add(ds2).add(d2)));
      pushScope(declName);
     
    }
    {
    _loop245:
    do {
      if ((_tokenSet_1.member(LA(1)))) {
        declaration();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop245;
      }
     
    } while (true);
    }
    {
    switch ( LA(1)) {
    case VARARGS:
    {
      TNode tmp14_AST = null;
      tmp14_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp14_AST);
      match(VARARGS);
      break;
    }
    case LCURLY:
    case SEMI:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    {
    _loop248:
    do {
      if ((LA(1)==SEMI)) {
        match(SEMI);
      }
      else {
        break _loop248;
      }
     
    } while (true);
    }
    if ( inputState.guessing==0 ) {
      popScope();
    }
    compoundStatement(declName);
    astFactory.addASTChild(currentAST, returnAST);
    if ( inputState.guessing==0 ) {
      functionDef_AST = (TNode)currentAST.root;
      functionDef_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NFunctionDef)).add(functionDef_AST));
      currentAST.root = functionDef_AST;
      currentAST.child = functionDef_AST!=null &&functionDef_AST.getFirstChild()!=null ?
        functionDef_AST.getFirstChild() : functionDef_AST;
      currentAST.advanceChildToEnd();
    }
    functionDef_AST = (TNode)currentAST.root;
    returnAST = functionDef_AST;
  }
 
  public final void typelessDeclaration() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode typelessDeclaration_AST = null;
    AST typeMissing = (TNode)astFactory.create(NTypeMissing);
   
    initDeclList(typeMissing);
    astFactory.addASTChild(currentAST, returnAST);
    TNode tmp16_AST = null;
    tmp16_AST = (TNode)astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp16_AST);
    match(SEMI);
    if ( inputState.guessing==0 ) {
      typelessDeclaration_AST = (TNode)currentAST.root;
      typelessDeclaration_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NTypeMissing)).add(typelessDeclaration_AST));
      currentAST.root = typelessDeclaration_AST;
      currentAST.child = typelessDeclaration_AST!=null &&typelessDeclaration_AST.getFirstChild()!=null ?
        typelessDeclaration_AST.getFirstChild() : typelessDeclaration_AST;
      currentAST.advanceChildToEnd();
    }
    typelessDeclaration_AST = (TNode)currentAST.root;
    returnAST = typelessDeclaration_AST;
  }
 
  public final void functionDeclSpecifiers() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode functionDeclSpecifiers_AST = null;
    int specCount = 0;
   
    {
    int _cnt253=0;
    _loop253:
    do {
      switch ( LA(1)) {
      case LITERAL_extern:
      case LITERAL_static:
      case LITERAL_inline:
      {
        functionStorageClassSpecifier();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      case LITERAL_volatile:
      case LITERAL_const:
      {
        typeQualifier();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      default:
        boolean synPredMatched252 = false;
        if (((_tokenSet_5.member(LA(1))))) {
          int _m252 = mark();
          synPredMatched252 = true;
          inputState.guessing++;
          try {
            {
            if ((LA(1)==LITERAL_struct)) {
              match(LITERAL_struct);
            }
            else if ((LA(1)==LITERAL_union)) {
              match(LITERAL_union);
            }
            else if ((LA(1)==LITERAL_enum)) {
              match(LITERAL_enum);
            }
            else if ((_tokenSet_5.member(LA(1)))) {
              typeSpecifier(specCount);
            }
            else {
              throw new NoViableAltException(LT(1), getFilename());
            }
           
            }
          }
          catch (RecognitionException pe) {
            synPredMatched252 = false;
          }
          rewind(_m252);
          inputState.guessing--;
        }
        if ( synPredMatched252 ) {
          specCount=typeSpecifier(specCount);
          astFactory.addASTChild(currentAST, returnAST);
        }
      else {
        if ( _cnt253>=1 ) { break _loop253; } else {throw new NoViableAltException(LT(1), getFilename());}
      }
      }
      _cnt253++;
    } while (true);
    }
    functionDeclSpecifiers_AST = (TNode)currentAST.root;
    returnAST = functionDeclSpecifiers_AST;
  }
 
  public final String  declarator(
    boolean isFunctionDefinition
  ) throws RecognitionException, TokenStreamException {
    String declName;
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode declarator_AST = null;
    Token  id = null;
    TNode id_AST = null;
    declName = "";
   
    {
    switch ( LA(1)) {
    case STAR:
    {
      pointerGroup();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case ID:
    case LPAREN:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    {
    switch ( LA(1)) {
    case ID:
    {
      id = LT(1);
      id_AST = (TNode)astFactory.create(id);
      astFactory.addASTChild(currentAST, id_AST);
      match(ID);
      if ( inputState.guessing==0 ) {
        declName = id.getText();
      }
      break;
    }
    case LPAREN:
    {
      TNode tmp17_AST = null;
      tmp17_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp17_AST);
      match(LPAREN);
      declName=declarator(false);
      astFactory.addASTChild(currentAST, returnAST);
      TNode tmp18_AST = null;
      tmp18_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp18_AST);
      match(RPAREN);
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    {
    _loop50:
    do {
      switch ( LA(1)) {
      case LPAREN:
      {
        declaratorParamaterList(isFunctionDefinition, declName);
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      case LBRACKET:
      {
        TNode tmp19_AST = null;
        tmp19_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp19_AST);
        match(LBRACKET);
        {
        switch ( LA(1)) {
        case LITERAL_asm:
        case ID:
        case STAR:
        case LPAREN:
        case LAND:
        case BAND:
        case PLUS:
        case MINUS:
        case INC:
        case DEC:
        case LITERAL_sizeof:
        case BNOT:
        case LNOT:
        case CharLiteral:
        case StringLiteral:
        case Number:
        case LITERAL___alignof:
        case LITERAL___real:
        case LITERAL___imag:
        {
          expr();
          astFactory.addASTChild(currentAST, returnAST);
          break;
        }
        case RBRACKET:
        {
          break;
        }
        default:
        {
          throw new NoViableAltException(LT(1), getFilename());
        }
        }
        }
        TNode tmp20_AST = null;
        tmp20_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp20_AST);
        match(RBRACKET);
        break;
      }
      default:
      {
        break _loop50;
      }
      }
    } while (true);
    }
    if ( inputState.guessing==0 ) {
      declarator_AST = (TNode)currentAST.root;
      declarator_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NDeclarator)).add(declarator_AST));
      currentAST.root = declarator_AST;
      currentAST.child = declarator_AST!=null &&declarator_AST.getFirstChild()!=null ?
        declarator_AST.getFirstChild() : declarator_AST;
      currentAST.advanceChildToEnd();
    }
    declarator_AST = (TNode)currentAST.root;
    returnAST = declarator_AST;
    return declName;
  }
 
  public final void initDeclList(
    AST declarationSpecifiers
  ) throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode initDeclList_AST = null;
   
    initDecl(declarationSpecifiers);
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop115:
    do {
      if ((LA(1)==COMMA)) {
        match(COMMA);
        initDecl(declarationSpecifiers);
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop115;
      }
     
    } while (true);
    }
    {
    switch ( LA(1)) {
    case COMMA:
    {
      match(COMMA);
      break;
    }
    case SEMI:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    initDeclList_AST = (TNode)currentAST.root;
    returnAST = initDeclList_AST;
  }
 
  public final void initializer() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode initializer_AST = null;
   
    {
    if ((_tokenSet_6.member(LA(1)))) {
      {
      {
      boolean synPredMatched30 = false;
      if (((_tokenSet_7.member(LA(1))))) {
        int _m30 = mark();
        synPredMatched30 = true;
        inputState.guessing++;
        try {
          {
          initializerElementLabel();
          }
        }
        catch (RecognitionException pe) {
          synPredMatched30 = false;
        }
        rewind(_m30);
        inputState.guessing--;
      }
      if ( synPredMatched30 ) {
        initializerElementLabel();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else if ((_tokenSet_8.member(LA(1)))) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
     
      }
      {
      switch ( LA(1)) {
      case LITERAL_asm:
      case ID:
      case STAR:
      case LPAREN:
      case LAND:
      case BAND:
      case PLUS:
      case MINUS:
      case INC:
      case DEC:
      case LITERAL_sizeof:
      case BNOT:
      case LNOT:
      case CharLiteral:
      case StringLiteral:
      case Number:
      case LITERAL___alignof:
      case LITERAL___real:
      case LITERAL___imag:
      {
        assignExpr();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      case LCURLY:
      {
        lcurlyInitializer();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      if ( inputState.guessing==0 ) {
        initializer_AST = (TNode)currentAST.root;
        initializer_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NInitializer)).add(initializer_AST));
        currentAST.root = initializer_AST;
        currentAST.child = initializer_AST!=null &&initializer_AST.getFirstChild()!=null ?
          initializer_AST.getFirstChild() : initializer_AST;
        currentAST.advanceChildToEnd();
      }
      }
    }
    else if ((LA(1)==LCURLY)) {
      lcurlyInitializer();
      astFactory.addASTChild(currentAST, returnAST);
    }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
   
    }
    initializer_AST = (TNode)currentAST.root;
    returnAST = initializer_AST;
  }
 
  public final void initializerElementLabel() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode initializerElementLabel_AST = null;
   
    {
    switch ( LA(1)) {
    case LBRACKET:
    {
      {
      TNode tmp23_AST = null;
      tmp23_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp23_AST);
      match(LBRACKET);
      {
      boolean synPredMatched37 = false;
      if (((_tokenSet_9.member(LA(1))))) {
        int _m37 = mark();
        synPredMatched37 = true;
        inputState.guessing++;
        try {
          {
          constExpr();
          match(VARARGS);
          }
        }
        catch (RecognitionException pe) {
          synPredMatched37 = false;
        }
        rewind(_m37);
        inputState.guessing--;
      }
      if ( synPredMatched37 ) {
        rangeExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else if ((_tokenSet_9.member(LA(1)))) {
        constExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
     
      }
      TNode tmp24_AST = null;
      tmp24_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp24_AST);
      match(RBRACKET);
      {
      switch ( LA(1)) {
      case ASSIGN:
      {
        TNode tmp25_AST = null;
        tmp25_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp25_AST);
        match(ASSIGN);
        break;
      }
      case LITERAL_asm:
      case LCURLY:
      case ID:
      case STAR:
      case LPAREN:
      case LAND:
      case BAND:
      case PLUS:
      case MINUS:
      case INC:
      case DEC:
      case LITERAL_sizeof:
      case BNOT:
      case LNOT:
      case CharLiteral:
      case StringLiteral:
      case Number:
      case LITERAL___alignof:
      case LITERAL___real:
      case LITERAL___imag:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      }
      break;
    }
    case ID:
    {
      TNode tmp26_AST = null;
      tmp26_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp26_AST);
      match(ID);
      TNode tmp27_AST = null;
      tmp27_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp27_AST);
      match(COLON);
      break;
    }
    case DOT:
    {
      TNode tmp28_AST = null;
      tmp28_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp28_AST);
      match(DOT);
      TNode tmp29_AST = null;
      tmp29_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp29_AST);
      match(ID);
      TNode tmp30_AST = null;
      tmp30_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp30_AST);
      match(ASSIGN);
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    if ( inputState.guessing==0 ) {
      initializerElementLabel_AST = (TNode)currentAST.root;
      initializerElementLabel_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NInitializerElementLabel)).add(initializerElementLabel_AST)) ;
      currentAST.root = initializerElementLabel_AST;
      currentAST.child = initializerElementLabel_AST!=null &&initializerElementLabel_AST.getFirstChild()!=null ?
        initializerElementLabel_AST.getFirstChild() : initializerElementLabel_AST;
      currentAST.advanceChildToEnd();
    }
    initializerElementLabel_AST = (TNode)currentAST.root;
    returnAST = initializerElementLabel_AST;
  }
 
  public final void assignExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode assignExpr_AST = null;
    TNode a_AST = null;
   
    conditionalExpr();
    astFactory.addASTChild(currentAST, returnAST);
    {
    switch ( LA(1)) {
    case ASSIGN:
    case DIV_ASSIGN:
    case PLUS_ASSIGN:
    case MINUS_ASSIGN:
    case STAR_ASSIGN:
    case MOD_ASSIGN:
    case RSHIFT_ASSIGN:
    case LSHIFT_ASSIGN:
    case BAND_ASSIGN:
    case BOR_ASSIGN:
    case BXOR_ASSIGN:
    {
      assignOperator();
      a_AST = (TNode)returnAST;
      assignExpr();
      astFactory.addASTChild(currentAST, returnAST);
      if ( inputState.guessing==0 ) {
        assignExpr_AST = (TNode)currentAST.root;
        assignExpr_AST = (TNode)astFactory.make( (new ASTArray(2)).add(a_AST).add(assignExpr_AST));
        currentAST.root = assignExpr_AST;
        currentAST.child = assignExpr_AST!=null &&assignExpr_AST.getFirstChild()!=null ?
          assignExpr_AST.getFirstChild() : assignExpr_AST;
        currentAST.advanceChildToEnd();
      }
      break;
    }
    case RCURLY:
    case SEMI:
    case COMMA:
    case COLON:
    case RPAREN:
    case RBRACKET:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    assignExpr_AST = (TNode)currentAST.root;
    returnAST = assignExpr_AST;
  }
 
  public final void lcurlyInitializer() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode lcurlyInitializer_AST = null;
   
    TNode tmp31_AST = null;
    tmp31_AST = (TNode)astFactory.create(LT(1));
    astFactory.makeASTRoot(currentAST, tmp31_AST);
    match(LCURLY);
    {
    switch ( LA(1)) {
    case LITERAL_asm:
    case LCURLY:
    case ID:
    case STAR:
    case LPAREN:
    case LBRACKET:
    case LAND:
    case BAND:
    case PLUS:
    case MINUS:
    case INC:
    case DEC:
    case LITERAL_sizeof:
    case BNOT:
    case LNOT:
    case DOT:
    case CharLiteral:
    case StringLiteral:
    case Number:
    case LITERAL___alignof:
    case LITERAL___real:
    case LITERAL___imag:
    {
      initializerList();
      astFactory.addASTChild(currentAST, returnAST);
      {
      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());
    }
    }
    }
    TNode tmp33_AST = null;
    tmp33_AST = (TNode)astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp33_AST);
    match(RCURLY);
    if ( inputState.guessing==0 ) {
      lcurlyInitializer_AST = (TNode)currentAST.root;
      lcurlyInitializer_AST.setType( NLcurlyInitializer );
    }
    lcurlyInitializer_AST = (TNode)currentAST.root;
    returnAST = lcurlyInitializer_AST;
  }
 
  public final void constExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode constExpr_AST = null;
   
    conditionalExpr();
    astFactory.addASTChild(currentAST, returnAST);
    constExpr_AST = (TNode)currentAST.root;
    returnAST = constExpr_AST;
  }
 
  public final void rangeExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode rangeExpr_AST = null;
   
    constExpr();
    astFactory.addASTChild(currentAST, returnAST);
    TNode tmp34_AST = null;
    tmp34_AST = (TNode)astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp34_AST);
    match(VARARGS);
    constExpr();
    astFactory.addASTChild(currentAST, returnAST);
    if ( inputState.guessing==0 ) {
      rangeExpr_AST = (TNode)currentAST.root;
      rangeExpr_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NRangeExpr)).add(rangeExpr_AST));
      currentAST.root = rangeExpr_AST;
      currentAST.child = rangeExpr_AST!=null &&rangeExpr_AST.getFirstChild()!=null ?
        rangeExpr_AST.getFirstChild() : rangeExpr_AST;
      currentAST.advanceChildToEnd();
    }
    rangeExpr_AST = (TNode)currentAST.root;
    returnAST = rangeExpr_AST;
  }
 
  public final void initializerList() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode initializerList_AST = null;
   
    initializer();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop44:
    do {
      if ((LA(1)==COMMA)) {
        match(COMMA);
        initializer();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop44;
      }
     
    } while (true);
    }
    initializerList_AST = (TNode)currentAST.root;
    returnAST = initializerList_AST;
  }
 
  public final void pointerGroup() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode pointerGroup_AST = null;
   
    {
    int _cnt235=0;
    _loop235:
    do {
      if ((LA(1)==STAR)) {
        TNode tmp36_AST = null;
        tmp36_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp36_AST);
        match(STAR);
        {
        _loop234:
        do {
          if ((LA(1)==LITERAL_volatile||LA(1)==LITERAL_const)) {
            typeQualifier();
            astFactory.addASTChild(currentAST, returnAST);
          }
          else {
            break _loop234;
          }
         
        } while (true);
        }
      }
      else {
        if ( _cnt235>=1 ) { break _loop235; } else {throw new NoViableAltException(LT(1), getFilename());}
      }
     
      _cnt235++;
    } while (true);
    }
    if ( inputState.guessing==0 ) {
      pointerGroup_AST = (TNode)currentAST.root;
      pointerGroup_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NPointerGroup)).add(pointerGroup_AST));
      currentAST.root = pointerGroup_AST;
      currentAST.child = pointerGroup_AST!=null &&pointerGroup_AST.getFirstChild()!=null ?
        pointerGroup_AST.getFirstChild() : pointerGroup_AST;
      currentAST.advanceChildToEnd();
    }
    pointerGroup_AST = (TNode)currentAST.root;
    returnAST = pointerGroup_AST;
  }
 
  public final void declaratorParamaterList(
    boolean isFunctionDefinition, String declName
  ) throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode declaratorParamaterList_AST = null;
   
    TNode tmp37_AST = null;
    tmp37_AST = (TNode)astFactory.create(LT(1));
    astFactory.makeASTRoot(currentAST, tmp37_AST);
    match(LPAREN);
    if ( inputState.guessing==0 ) {
     
      if (isFunctionDefinition) {
      pushScope(declName);
      }
      else {
      pushScope("!"+declName);
      }
     
    }
    {
    boolean synPredMatched54 = false;
    if (((_tokenSet_1.member(LA(1))))) {
      int _m54 = mark();
      synPredMatched54 = true;
      inputState.guessing++;
      try {
        {
        declSpecifiers();
        }
      }
      catch (RecognitionException pe) {
        synPredMatched54 = false;
      }
      rewind(_m54);
      inputState.guessing--;
    }
    if ( synPredMatched54 ) {
      parameterTypeList();
      astFactory.addASTChild(currentAST, returnAST);
    }
    else if ((_tokenSet_10.member(LA(1)))) {
      {
      switch ( LA(1)) {
      case ID:
      {
        idList();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      case COMMA:
      case RPAREN:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
    }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
   
    }
    if ( inputState.guessing==0 ) {
     
      popScope();
     
    }
    {
    switch ( LA(1)) {
    case COMMA:
    {
      match(COMMA);
      break;
    }
    case RPAREN:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    TNode tmp39_AST = null;
    tmp39_AST = (TNode)astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp39_AST);
    match(RPAREN);
    if ( inputState.guessing==0 ) {
      declaratorParamaterList_AST = (TNode)currentAST.root;
      declaratorParamaterList_AST.setType(NParameterTypeList);
    }
    declaratorParamaterList_AST = (TNode)currentAST.root;
    returnAST = declaratorParamaterList_AST;
  }
 
  public final void declSpecifiers() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode declSpecifiers_AST = null;
    TNode s_AST = null;
    int specCount=0;
   
    {
    int _cnt216=0;
    _loop216:
    do {
      switch ( LA(1)) {
      case LITERAL_typedef:
      case LITERAL_auto:
      case LITERAL_register:
      case LITERAL_extern:
      case LITERAL_static:
      case LITERAL_inline:
      {
        storageClassSpecifier();
        s_AST = (TNode)returnAST;
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      case LITERAL_volatile:
      case LITERAL_const:
      {
        typeQualifier();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      default:
        boolean synPredMatched215 = false;
        if (((_tokenSet_5.member(LA(1))))) {
          int _m215 = mark();
          synPredMatched215 = true;
          inputState.guessing++;
          try {
            {
            if ((LA(1)==LITERAL_struct)) {
              match(LITERAL_struct);
            }
            else if ((LA(1)==LITERAL_union)) {
              match(LITERAL_union);
            }
            else if ((LA(1)==LITERAL_enum)) {
              match(LITERAL_enum);
            }
            else if ((_tokenSet_5.member(LA(1)))) {
              typeSpecifier(specCount);
            }
            else {
              throw new NoViableAltException(LT(1), getFilename());
            }
           
            }
          }
          catch (RecognitionException pe) {
            synPredMatched215 = false;
          }
          rewind(_m215);
          inputState.guessing--;
        }
        if ( synPredMatched215 ) {
          specCount=typeSpecifier(specCount);
          astFactory.addASTChild(currentAST, returnAST);
        }
      else {
        if ( _cnt216>=1 ) { break _loop216; } else {throw new NoViableAltException(LT(1), getFilename());}
      }
      }
      _cnt216++;
    } while (true);
    }
    declSpecifiers_AST = (TNode)currentAST.root;
    returnAST = declSpecifiers_AST;
  }
 
  public final void parameterTypeList() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode parameterTypeList_AST = null;
   
    parameterDeclaration();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop60:
    do {
      if ((LA(1)==SEMI||LA(1)==COMMA)) {
        {
        switch ( LA(1)) {
        case COMMA:
        {
          TNode tmp40_AST = null;
          tmp40_AST = (TNode)astFactory.create(LT(1));
          astFactory.addASTChild(currentAST, tmp40_AST);
          match(COMMA);
          break;
        }
        case SEMI:
        {
          TNode tmp41_AST = null;
          tmp41_AST = (TNode)astFactory.create(LT(1));
          astFactory.addASTChild(currentAST, tmp41_AST);
          match(SEMI);
          break;
        }
        default:
        {
          throw new NoViableAltException(LT(1), getFilename());
        }
        }
        }
        parameterDeclaration();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop60;
      }
     
    } while (true);
    }
    {
    if ((LA(1)==SEMI||LA(1)==COMMA)) {
      {
      switch ( LA(1)) {
      case COMMA:
      {
        TNode tmp42_AST = null;
        tmp42_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp42_AST);
        match(COMMA);
        break;
      }
      case SEMI:
      {
        TNode tmp43_AST = null;
        tmp43_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp43_AST);
        match(SEMI);
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      TNode tmp44_AST = null;
      tmp44_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp44_AST);
      match(VARARGS);
    }
    else if ((LA(1)==COMMA||LA(1)==RPAREN)) {
    }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
   
    }
    parameterTypeList_AST = (TNode)currentAST.root;
    returnAST = parameterTypeList_AST;
  }
 
  public final void parameterDeclaration() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode parameterDeclaration_AST = null;
    TNode ds_AST = null;
    TNode d_AST = null;
    String declName;
   
    declSpecifiers();
    ds_AST = (TNode)returnAST;
    astFactory.addASTChild(currentAST, returnAST);
    {
    boolean synPredMatched239 = false;
    if (((_tokenSet_3.member(LA(1))))) {
      int _m239 = mark();
      synPredMatched239 = true;
      inputState.guessing++;
      try {
        {
        declarator(false);
        }
      }
      catch (RecognitionException pe) {
        synPredMatched239 = false;
      }
      rewind(_m239);
      inputState.guessing--;
    }
    if ( synPredMatched239 ) {
      declName=declarator(false);
      d_AST = (TNode)returnAST;
      astFactory.addASTChild(currentAST, returnAST);
      if ( inputState.guessing==0 ) {
       
        AST d2, ds2;
        d2 = astFactory.dupList(d_AST);
        ds2 = astFactory.dupList(ds_AST);
        symbolTable.add(declName, (TNode)astFactory.make( (new ASTArray(3)).add(null).add(ds2).add(d2)));
       
      }
    }
    else if ((_tokenSet_11.member(LA(1)))) {
      nonemptyAbstractDeclarator();
      astFactory.addASTChild(currentAST, returnAST);
    }
    else if ((_tokenSet_12.member(LA(1)))) {
    }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
   
    }
    if ( inputState.guessing==0 ) {
      parameterDeclaration_AST = (TNode)currentAST.root;
     
      parameterDeclaration_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NParameterDeclaration)).add(parameterDeclaration_AST));
     
      currentAST.root = parameterDeclaration_AST;
      currentAST.child = parameterDeclaration_AST!=null &&parameterDeclaration_AST.getFirstChild()!=null ?
        parameterDeclaration_AST.getFirstChild() : parameterDeclaration_AST;
      currentAST.advanceChildToEnd();
    }
    parameterDeclaration_AST = (TNode)currentAST.root;
    returnAST = parameterDeclaration_AST;
  }
 
  public final void declarationList() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode declarationList_AST = null;
   
    {
    int _cnt67=0;
    _loop67:
    do {
      if ((LA(1)==LITERAL___label__)) {
        localLabelDeclaration();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        boolean synPredMatched66 = false;
        if (((_tokenSet_1.member(LA(1))))) {
          int _m66 = mark();
          synPredMatched66 = true;
          inputState.guessing++;
          try {
            {
            declarationPredictor();
            }
          }
          catch (RecognitionException pe) {
            synPredMatched66 = false;
          }
          rewind(_m66);
          inputState.guessing--;
        }
        if ( synPredMatched66 ) {
          declaration();
          astFactory.addASTChild(currentAST, returnAST);
        }
        else {
          if ( _cnt67>=1 ) { break _loop67; } else {throw new NoViableAltException(LT(1), getFilename());}
        }
        }
        _cnt67++;
      } while (true);
      }
      declarationList_AST = (TNode)currentAST.root;
      returnAST = declarationList_AST;
    }
   
  public final void localLabelDeclaration() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode localLabelDeclaration_AST = null;
   
    {
    TNode tmp45_AST = null;
    tmp45_AST = (TNode)astFactory.create(LT(1));
    astFactory.makeASTRoot(currentAST, tmp45_AST);
    match(LITERAL___label__);
    TNode tmp46_AST = null;
    tmp46_AST = (TNode)astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp46_AST);
    match(ID);
    {
    _loop71:
    do {
      if ((LA(1)==COMMA)) {
        match(COMMA);
        TNode tmp48_AST = null;
        tmp48_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp48_AST);
        match(ID);
      }
      else {
        break _loop71;
      }
     
    } while (true);
    }
    {
    switch ( LA(1)) {
    case COMMA:
    {
      match(COMMA);
      break;
    }
    case SEMI:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    {
    int _cnt74=0;
    _loop74:
    do {
      if ((LA(1)==SEMI)) {
        match(SEMI);
      }
      else {
        if ( _cnt74>=1 ) { break _loop74; } else {throw new NoViableAltException(LT(1), getFilename());}
      }
     
      _cnt74++;
    } while (true);
    }
    }
    localLabelDeclaration_AST = (TNode)currentAST.root;
    returnAST = localLabelDeclaration_AST;
  }
 
  public final void declarationPredictor() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode declarationPredictor_AST = null;
   
    {
    if ((LA(1)==LITERAL_typedef)) {
      TNode tmp51_AST = null;
      tmp51_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp51_AST);
      match(LITERAL_typedef);
    }
    else if ((_tokenSet_1.member(LA(1)))) {
      declaration();
      astFactory.addASTChild(currentAST, returnAST);
    }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
   
    }
    declarationPredictor_AST = (TNode)currentAST.root;
    returnAST = declarationPredictor_AST;
  }
 
  public final void functionStorageClassSpecifier() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode functionStorageClassSpecifier_AST = null;
   
    switch ( LA(1)) {
    case LITERAL_extern:
    {
      TNode tmp52_AST = null;
      tmp52_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp52_AST);
      match(LITERAL_extern);
      functionStorageClassSpecifier_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_static:
    {
      TNode tmp53_AST = null;
      tmp53_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp53_AST);
      match(LITERAL_static);
      functionStorageClassSpecifier_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_inline:
    {
      TNode tmp54_AST = null;
      tmp54_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp54_AST);
      match(LITERAL_inline);
      functionStorageClassSpecifier_AST = (TNode)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = functionStorageClassSpecifier_AST;
  }
 
  public final int  typeSpecifier(
    int specCount
  ) throws RecognitionException, TokenStreamException {
    int retSpecCount;
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode typeSpecifier_AST = null;
    retSpecCount = specCount + 1;
   
    {
    switch ( LA(1)) {
    case LITERAL_void:
    {
      TNode tmp55_AST = null;
      tmp55_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp55_AST);
      match(LITERAL_void);
      break;
    }
    case LITERAL_char:
    {
      TNode tmp56_AST = null;
      tmp56_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp56_AST);
      match(LITERAL_char);
      break;
    }
    case LITERAL_short:
    {
      TNode tmp57_AST = null;
      tmp57_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp57_AST);
      match(LITERAL_short);
      break;
    }
    case LITERAL_int:
    {
      TNode tmp58_AST = null;
      tmp58_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp58_AST);
      match(LITERAL_int);
      break;
    }
    case LITERAL_long:
    {
      TNode tmp59_AST = null;
      tmp59_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp59_AST);
      match(LITERAL_long);
      break;
    }
    case LITERAL_float:
    {
      TNode tmp60_AST = null;
      tmp60_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp60_AST);
      match(LITERAL_float);
      break;
    }
    case LITERAL_double:
    {
      TNode tmp61_AST = null;
      tmp61_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp61_AST);
      match(LITERAL_double);
      break;
    }
    case LITERAL_signed:
    {
      TNode tmp62_AST = null;
      tmp62_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp62_AST);
      match(LITERAL_signed);
      break;
    }
    case LITERAL_unsigned:
    {
      TNode tmp63_AST = null;
      tmp63_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp63_AST);
      match(LITERAL_unsigned);
      break;
    }
    case LITERAL_byte:
    {
      TNode tmp64_AST = null;
      tmp64_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp64_AST);
      match(LITERAL_byte);
      break;
    }
    case LITERAL_boolean:
    {
      TNode tmp65_AST = null;
      tmp65_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp65_AST);
      match(LITERAL_boolean);
      break;
    }
    case LITERAL_struct:
    case LITERAL_union:
    {
      structOrUnionSpecifier();
      astFactory.addASTChild(currentAST, returnAST);
      {
      _loop83:
      do {
        if ((LA(1)==LITERAL_asm||LA(1)==LITERAL___attribute)) {
          attributeDecl();
          astFactory.addASTChild(currentAST, returnAST);
        }
        else {
          break _loop83;
        }
       
      } while (true);
      }
      break;
    }
    case LITERAL_enum:
    {
      enumSpecifier();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case LITERAL_typeof:
    {
      TNode tmp66_AST = null;
      tmp66_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp66_AST);
      match(LITERAL_typeof);
      TNode tmp67_AST = null;
      tmp67_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp67_AST);
      match(LPAREN);
      {
      boolean synPredMatched86 = false;
      if (((_tokenSet_13.member(LA(1))))) {
        int _m86 = mark();
        synPredMatched86 = true;
        inputState.guessing++;
        try {
          {
          typeName();
          }
        }
        catch (RecognitionException pe) {
          synPredMatched86 = false;
        }
        rewind(_m86);
        inputState.guessing--;
      }
      if ( synPredMatched86 ) {
        typeName();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else if ((_tokenSet_9.member(LA(1)))) {
        expr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
     
      }
      TNode tmp68_AST = null;
      tmp68_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp68_AST);
      match(RPAREN);
      break;
    }
    case LITERAL___complex:
    {
      TNode tmp69_AST = null;
      tmp69_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp69_AST);
      match(LITERAL___complex);
      break;
    }
    default:
      if (((LA(1)==ID))&&( specCount==0 )) {
        typedefName();
        astFactory.addASTChild(currentAST, returnAST);
      }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    typeSpecifier_AST = (TNode)currentAST.root;
    returnAST = typeSpecifier_AST;
    return retSpecCount;
  }
 
  public final void structOrUnionSpecifier() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode structOrUnionSpecifier_AST = null;
    TNode sou_AST = null;
    Token  i = null;
    TNode i_AST = null;
    Token  l = null;
    TNode l_AST = null;
    Token  l1 = null;
    TNode l1_AST = null;
    String scopeName;
   
    structOrUnion();
    sou_AST = (TNode)returnAST;
    {
    boolean synPredMatched90 = false;
    if (((LA(1)==ID))) {
      int _m90 = mark();
      synPredMatched90 = true;
      inputState.guessing++;
      try {
        {
        match(ID);
        match(LCURLY);
        }
      }
      catch (RecognitionException pe) {
        synPredMatched90 = false;
      }
      rewind(_m90);
      inputState.guessing--;
    }
    if ( synPredMatched90 ) {
      i = LT(1);
      i_AST = (TNode)astFactory.create(i);
      astFactory.addASTChild(currentAST, i_AST);
      match(ID);
      l = LT(1);
      l_AST = (TNode)astFactory.create(l);
      astFactory.addASTChild(currentAST, l_AST);
      match(LCURLY);
      if ( inputState.guessing==0 ) {
       
        scopeName = sou_AST.getText() + " " + i_AST.getText();
        l_AST.setText(scopeName);
        pushScope(scopeName);
       
      }
      {
      switch ( LA(1)) {
      case LITERAL_volatile:
      case LITERAL_struct:
      case LITERAL_union:
      case LITERAL_enum:
      case LITERAL_const:
      case LITERAL_void:
      case LITERAL_char:
      case LITERAL_short:
      case LITERAL_int:
      case LITERAL_long:
      case LITERAL_float:
      case LITERAL_double:
      case LITERAL_signed:
      case LITERAL_unsigned:
      case ID:
      case LITERAL_byte:
      case LITERAL_boolean:
      case LITERAL_typeof:
      case LITERAL___complex:
      {
        structDeclarationList();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      case RCURLY:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      if ( inputState.guessing==0 ) {
        popScope();
      }
      TNode tmp70_AST = null;
      tmp70_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp70_AST);
      match(RCURLY);
    }
    else if ((LA(1)==LCURLY)) {
      l1 = LT(1);
      l1_AST = (TNode)astFactory.create(l1);
      astFactory.addASTChild(currentAST, l1_AST);
      match(LCURLY);
      if ( inputState.guessing==0 ) {
       
        scopeName = getAScopeName();
        l1_AST.setText(scopeName);
        pushScope(scopeName);
       
      }
      {
      switch ( LA(1)) {
      case LITERAL_volatile:
      case LITERAL_struct:
      case LITERAL_union:
      case LITERAL_enum:
      case LITERAL_const:
      case LITERAL_void:
      case LITERAL_char:
      case LITERAL_short:
      case LITERAL_int:
      case LITERAL_long:
      case LITERAL_float:
      case LITERAL_double:
      case LITERAL_signed:
      case LITERAL_unsigned:
      case ID:
      case LITERAL_byte:
      case LITERAL_boolean:
      case LITERAL_typeof:
      case LITERAL___complex:
      {
        structDeclarationList();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      case RCURLY:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      if ( inputState.guessing==0 ) {
        popScope();
      }
      TNode tmp71_AST = null;
      tmp71_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp71_AST);
      match(RCURLY);
    }
    else if ((LA(1)==ID)) {
      TNode tmp72_AST = null;
      tmp72_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp72_AST);
      match(ID);
    }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
   
    }
    if ( inputState.guessing==0 ) {
      structOrUnionSpecifier_AST = (TNode)currentAST.root;
     
      structOrUnionSpecifier_AST = (TNode)astFactory.make( (new ASTArray(2)).add(sou_AST).add(structOrUnionSpecifier_AST));
     
      currentAST.root = structOrUnionSpecifier_AST;
      currentAST.child = structOrUnionSpecifier_AST!=null &&structOrUnionSpecifier_AST.getFirstChild()!=null ?
        structOrUnionSpecifier_AST.getFirstChild() : structOrUnionSpecifier_AST;
      currentAST.advanceChildToEnd();
    }
    structOrUnionSpecifier_AST = (TNode)currentAST.root;
    returnAST = structOrUnionSpecifier_AST;
  }
 
  public final void attributeDecl() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode attributeDecl_AST = null;
   
    switch ( LA(1)) {
    case LITERAL___attribute:
    {
      TNode tmp73_AST = null;
      tmp73_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp73_AST);
      match(LITERAL___attribute);
      TNode tmp74_AST = null;
      tmp74_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp74_AST);
      match(LPAREN);
      TNode tmp75_AST = null;
      tmp75_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp75_AST);
      match(LPAREN);
      attributeList();
      astFactory.addASTChild(currentAST, returnAST);
      TNode tmp76_AST = null;
      tmp76_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp76_AST);
      match(RPAREN);
      TNode tmp77_AST = null;
      tmp77_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp77_AST);
      match(RPAREN);
      attributeDecl_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_asm:
    {
      TNode tmp78_AST = null;
      tmp78_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp78_AST);
      match(LITERAL_asm);
      TNode tmp79_AST = null;
      tmp79_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp79_AST);
      match(LPAREN);
      stringConst();
      astFactory.addASTChild(currentAST, returnAST);
      TNode tmp80_AST = null;
      tmp80_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp80_AST);
      match(RPAREN);
      if ( inputState.guessing==0 ) {
        attributeDecl_AST = (TNode)currentAST.root;
        attributeDecl_AST.setType( NAsmAttribute );
      }
      attributeDecl_AST = (TNode)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = attributeDecl_AST;
  }
 
  public final void enumSpecifier() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode enumSpecifier_AST = null;
    Token  i = null;
    TNode i_AST = null;
   
    TNode tmp81_AST = null;
    tmp81_AST = (TNode)astFactory.create(LT(1));
    astFactory.makeASTRoot(currentAST, tmp81_AST);
    match(LITERAL_enum);
    {
    boolean synPredMatched108 = false;
    if (((LA(1)==ID))) {
      int _m108 = mark();
      synPredMatched108 = true;
      inputState.guessing++;
      try {
        {
        match(ID);
        match(LCURLY);
        }
      }
      catch (RecognitionException pe) {
        synPredMatched108 = false;
      }
      rewind(_m108);
      inputState.guessing--;
    }
    if ( synPredMatched108 ) {
      i = LT(1);
      i_AST = (TNode)astFactory.create(i);
      astFactory.addASTChild(currentAST, i_AST);
      match(ID);
      TNode tmp82_AST = null;
      tmp82_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp82_AST);
      match(LCURLY);
      enumList(i.getText());
      astFactory.addASTChild(currentAST, returnAST);
      TNode tmp83_AST = null;
      tmp83_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp83_AST);
      match(RCURLY);
    }
    else if ((LA(1)==LCURLY)) {
      TNode tmp84_AST = null;
      tmp84_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp84_AST);
      match(LCURLY);
      enumList("anonymous");
      astFactory.addASTChild(currentAST, returnAST);
      TNode tmp85_AST = null;
      tmp85_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp85_AST);
      match(RCURLY);
    }
    else if ((LA(1)==ID)) {
      TNode tmp86_AST = null;
      tmp86_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp86_AST);
      match(ID);
    }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
   
    }
    enumSpecifier_AST = (TNode)currentAST.root;
    returnAST = enumSpecifier_AST;
  }
 
  public final void typedefName() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode typedefName_AST = null;
    Token  i = null;
    TNode i_AST = null;
   
    if (!( isTypedefName ( LT(1).getText() ) ))
      throw new SemanticException(" isTypedefName ( LT(1).getText() ) ");
    i = LT(1);
    i_AST = (TNode)astFactory.create(i);
    astFactory.addASTChild(currentAST, i_AST);
    match(ID);
    if ( inputState.guessing==0 ) {
      typedefName_AST = (TNode)currentAST.root;
      typedefName_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NTypedefName)).add(i_AST));
      currentAST.root = typedefName_AST;
      currentAST.child = typedefName_AST!=null &&typedefName_AST.getFirstChild()!=null ?
        typedefName_AST.getFirstChild() : typedefName_AST;
      currentAST.advanceChildToEnd();
    }
    typedefName_AST = (TNode)currentAST.root;
    returnAST = typedefName_AST;
  }
 
  public final void typeName() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode typeName_AST = null;
   
    specifierQualifierList();
    astFactory.addASTChild(currentAST, returnAST);
    {
    switch ( LA(1)) {
    case STAR:
    case LPAREN:
    case LBRACKET:
    {
      nonemptyAbstractDeclarator();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case RPAREN:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    typeName_AST = (TNode)currentAST.root;
    returnAST = typeName_AST;
  }
 
  public final void structOrUnion() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode structOrUnion_AST = null;
   
    switch ( LA(1)) {
    case LITERAL_struct:
    {
      TNode tmp87_AST = null;
      tmp87_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp87_AST);
      match(LITERAL_struct);
      structOrUnion_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_union:
    {
      TNode tmp88_AST = null;
      tmp88_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp88_AST);
      match(LITERAL_union);
      structOrUnion_AST = (TNode)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = structOrUnion_AST;
  }
 
  public final void structDeclarationList() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode structDeclarationList_AST = null;
   
    {
    int _cnt223=0;
    _loop223:
    do {
      if ((_tokenSet_13.member(LA(1)))) {
        structDeclaration();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        if ( _cnt223>=1 ) { break _loop223; } else {throw new NoViableAltException(LT(1), getFilename());}
      }
     
      _cnt223++;
    } while (true);
    }
    structDeclarationList_AST = (TNode)currentAST.root;
    returnAST = structDeclarationList_AST;
  }
 
  public final void structDeclaration() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode structDeclaration_AST = null;
   
    specifierQualifierList();
    astFactory.addASTChild(currentAST, returnAST);
    structDeclaratorList();
    astFactory.addASTChild(currentAST, returnAST);
    {
    switch ( LA(1)) {
    case COMMA:
    {
      match(COMMA);
      break;
    }
    case SEMI:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    {
    int _cnt96=0;
    _loop96:
    do {
      if ((LA(1)==SEMI)) {
        match(SEMI);
      }
      else {
        if ( _cnt96>=1 ) { break _loop96; } else {throw new NoViableAltException(LT(1), getFilename());}
      }
     
      _cnt96++;
    } while (true);
    }
    structDeclaration_AST = (TNode)currentAST.root;
    returnAST = structDeclaration_AST;
  }
 
  public final void specifierQualifierList() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode specifierQualifierList_AST = null;
    int specCount = 0;
   
    {
    int _cnt228=0;
    _loop228:
    do {
      boolean synPredMatched227 = false;
      if (((_tokenSet_5.member(LA(1))))) {
        int _m227 = mark();
        synPredMatched227 = true;
        inputState.guessing++;
        try {
          {
          if ((LA(1)==LITERAL_struct)) {
            match(LITERAL_struct);
          }
          else if ((LA(1)==LITERAL_union)) {
            match(LITERAL_union);
          }
          else if ((LA(1)==LITERAL_enum)) {
            match(LITERAL_enum);
          }
          else if ((_tokenSet_5.member(LA(1)))) {
            typeSpecifier(specCount);
          }
          else {
            throw new NoViableAltException(LT(1), getFilename());
          }
         
          }
        }
        catch (RecognitionException pe) {
          synPredMatched227 = false;
        }
        rewind(_m227);
        inputState.guessing--;
      }
      if ( synPredMatched227 ) {
        specCount=typeSpecifier(specCount);
        astFactory.addASTChild(currentAST, returnAST);
      }
      else if ((LA(1)==LITERAL_volatile||LA(1)==LITERAL_const)) {
        typeQualifier();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        if ( _cnt228>=1 ) { break _loop228; } else {throw new NoViableAltException(LT(1), getFilename());}
      }
     
      _cnt228++;
    } while (true);
    }
    specifierQualifierList_AST = (TNode)currentAST.root;
    returnAST = specifierQualifierList_AST;
  }
 
  public final void structDeclaratorList() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode structDeclaratorList_AST = null;
   
    structDeclarator();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop99:
    do {
      if ((LA(1)==COMMA)) {
        match(COMMA);
        structDeclarator();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop99;
      }
     
    } while (true);
    }
    structDeclaratorList_AST = (TNode)currentAST.root;
    returnAST = structDeclaratorList_AST;
  }
 
  public final void structDeclarator() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode structDeclarator_AST = null;
   
    {
    switch ( LA(1)) {
    case ID:
    case STAR:
    case LPAREN:
    {
      declarator(false);
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case LITERAL_asm:
    case SEMI:
    case COMMA:
    case COLON:
    case LITERAL___attribute:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    {
    switch ( LA(1)) {
    case COLON:
    {
      TNode tmp92_AST = null;
      tmp92_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp92_AST);
      match(COLON);
      constExpr();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case LITERAL_asm:
    case SEMI:
    case COMMA:
    case LITERAL___attribute:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    {
    _loop104:
    do {
      if ((LA(1)==LITERAL_asm||LA(1)==LITERAL___attribute)) {
        attributeDecl();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop104;
      }
     
    } while (true);
    }
    if ( inputState.guessing==0 ) {
      structDeclarator_AST = (TNode)currentAST.root;
      structDeclarator_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NStructDeclarator)).add(structDeclarator_AST));
      currentAST.root = structDeclarator_AST;
      currentAST.child = structDeclarator_AST!=null &&structDeclarator_AST.getFirstChild()!=null ?
        structDeclarator_AST.getFirstChild() : structDeclarator_AST;
      currentAST.advanceChildToEnd();
    }
    structDeclarator_AST = (TNode)currentAST.root;
    returnAST = structDeclarator_AST;
  }
 
  public final void enumList(
    String enumName
  ) throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode enumList_AST = null;
   
    enumerator(enumName);
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop111:
    do {
      if ((LA(1)==COMMA)) {
        match(COMMA);
        enumerator(enumName);
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop111;
      }
     
    } while (true);
    }
    {
    switch ( LA(1)) {
    case COMMA:
    {
      match(COMMA);
      break;
    }
    case RCURLY:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    enumList_AST = (TNode)currentAST.root;
    returnAST = enumList_AST;
  }
 
  public final void enumerator(
    String enumName
  ) throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode enumerator_AST = null;
    Token  i = null;
    TNode i_AST = null;
   
    i = LT(1);
    i_AST = (TNode)astFactory.create(i);
    astFactory.addASTChild(currentAST, i_AST);
    match(ID);
    if ( inputState.guessing==0 ) {
      symbolTable.addi.getText(),
      (TNode)astFactory.make( (new ASTArray(3)).add(null).add((TNode)astFactory.create(LITERAL_enum,"enum")).add((TNode)astFactory.create(ID,enumName)))
      );
     
    }
    {
    switch ( LA(1)) {
    case ASSIGN:
    {
      TNode tmp95_AST = null;
      tmp95_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp95_AST);
      match(ASSIGN);
      constExpr();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case RCURLY:
    case COMMA:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    enumerator_AST = (TNode)currentAST.root;
    returnAST = enumerator_AST;
  }
 
  public final void initDecl(
    AST declarationSpecifiers
  ) throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode initDecl_AST = null;
    TNode d_AST = null;
    String declName = "";
   
    declName=declarator(false);
    d_AST = (TNode)returnAST;
    astFactory.addASTChild(currentAST, returnAST);
    if ( inputState.guessing==0 ) {
      AST ds1, d1;
      ds1 = astFactory.dupList(declarationSpecifiers);
      d1 = astFactory.dupList(d_AST);
      symbolTable.add(declName, (TNode)astFactory.make( (new ASTArray(3)).add(null).add(ds1).add(d1)) );
     
    }
    {
    _loop119:
    do {
      if ((LA(1)==LITERAL_asm||LA(1)==LITERAL___attribute)) {
        attributeDecl();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop119;
      }
     
    } while (true);
    }
    {
    switch ( LA(1)) {
    case ASSIGN:
    {
      TNode tmp96_AST = null;
      tmp96_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp96_AST);
      match(ASSIGN);
      initializer();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case COLON:
    {
      TNode tmp97_AST = null;
      tmp97_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp97_AST);
      match(COLON);
      expr();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case SEMI:
    case COMMA:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    if ( inputState.guessing==0 ) {
      initDecl_AST = (TNode)currentAST.root;
      initDecl_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NInitDecl)).add(initDecl_AST));
      currentAST.root = initDecl_AST;
      currentAST.child = initDecl_AST!=null &&initDecl_AST.getFirstChild()!=null ?
        initDecl_AST.getFirstChild() : initDecl_AST;
      currentAST.advanceChildToEnd();
    }
    initDecl_AST = (TNode)currentAST.root;
    returnAST = initDecl_AST;
  }
 
  public final void attributeList() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode attributeList_AST = null;
   
    attribute();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop124:
    do {
      if ((LA(1)==COMMA)) {
        TNode tmp98_AST = null;
        tmp98_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp98_AST);
        match(COMMA);
        attribute();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop124;
      }
     
    } while (true);
    }
    {
    switch ( LA(1)) {
    case COMMA:
    {
      TNode tmp99_AST = null;
      tmp99_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp99_AST);
      match(COMMA);
      break;
    }
    case RPAREN:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    attributeList_AST = (TNode)currentAST.root;
    returnAST = attributeList_AST;
  }
 
  protected final void stringConst() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode stringConst_AST = null;
   
    {
    int _cnt314=0;
    _loop314:
    do {
      if ((LA(1)==StringLiteral)) {
        TNode tmp100_AST = null;
        tmp100_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp100_AST);
        match(StringLiteral);
      }
      else {
        if ( _cnt314>=1 ) { break _loop314; } else {throw new NoViableAltException(LT(1), getFilename());}
      }
     
      _cnt314++;
    } while (true);
    }
    if ( inputState.guessing==0 ) {
      stringConst_AST = (TNode)currentAST.root;
      stringConst_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NStringSeq)).add(stringConst_AST));
      currentAST.root = stringConst_AST;
      currentAST.child = stringConst_AST!=null &&stringConst_AST.getFirstChild()!=null ?
        stringConst_AST.getFirstChild() : stringConst_AST;
      currentAST.advanceChildToEnd();
    }
    stringConst_AST = (TNode)currentAST.root;
    returnAST = stringConst_AST;
  }
 
  public final void attribute() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode attribute_AST = null;
   
    {
    _loop129:
    do {
      if ((_tokenSet_14.member(LA(1)))) {
        {
        TNode tmp101_AST = null;
        tmp101_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp101_AST);
        match(_tokenSet_14);
        }
      }
      else if ((LA(1)==LPAREN)) {
        TNode tmp102_AST = null;
        tmp102_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp102_AST);
        match(LPAREN);
        attributeList();
        astFactory.addASTChild(currentAST, returnAST);
        TNode tmp103_AST = null;
        tmp103_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp103_AST);
        match(RPAREN);
      }
      else {
        break _loop129;
      }
     
    } while (true);
    }
    attribute_AST = (TNode)currentAST.root;
    returnAST = attribute_AST;
  }
 
  public final void compoundStatement(
    String scopeName
  ) throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode compoundStatement_AST = null;
   
    TNode tmp104_AST = null;
    tmp104_AST = (TNode)astFactory.create(LT(1));
    astFactory.makeASTRoot(currentAST, tmp104_AST);
    match(LCURLY);
    if ( inputState.guessing==0 ) {
     
      pushScope(scopeName);
     
    }
    {
    _loop136:
    do {
      boolean synPredMatched133 = false;
      if (((_tokenSet_15.member(LA(1))))) {
        int _m133 = mark();
        synPredMatched133 = true;
        inputState.guessing++;
        try {
          {
          if ((LA(1)==LITERAL_typedef)) {
            match(LITERAL_typedef);
          }
          else if ((LA(1)==LITERAL___label__)) {
            match(LITERAL___label__);
          }
          else if ((_tokenSet_1.member(LA(1)))) {
            declaration();
          }
          else {
            throw new NoViableAltException(LT(1), getFilename());
          }
         
          }
        }
        catch (RecognitionException pe) {
          synPredMatched133 = false;
        }
        rewind(_m133);
        inputState.guessing--;
      }
      if ( synPredMatched133 ) {
        declarationList();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        boolean synPredMatched135 = false;
        if (((_tokenSet_16.member(LA(1))))) {
          int _m135 = mark();
          synPredMatched135 = true;
          inputState.guessing++;
          try {
            {
            nestedFunctionDef();
            }
          }
          catch (RecognitionException pe) {
            synPredMatched135 = false;
          }
          rewind(_m135);
          inputState.guessing--;
        }
        if ( synPredMatched135 ) {
          nestedFunctionDef();
          astFactory.addASTChild(currentAST, returnAST);
        }
        else {
          break _loop136;
        }
        }
      } while (true);
      }
      {
      switch ( LA(1)) {
      case LITERAL_asm:
      case LCURLY:
      case SEMI:
      case ID:
      case STAR:
      case LPAREN:
      case LITERAL_while:
      case LITERAL_do:
      case LITERAL_for:
      case LITERAL_goto:
      case LITERAL_continue:
      case LITERAL_break:
      case LITERAL_return:
      case LITERAL_case:
      case LITERAL_default:
      case LITERAL_if:
      case LITERAL_switch:
      case LAND:
      case BAND:
      case PLUS:
      case MINUS:
      case INC:
      case DEC:
      case LITERAL_sizeof:
      case BNOT:
      case LNOT:
      case CharLiteral:
      case StringLiteral:
      case Number:
      case LITERAL___alignof:
      case LITERAL___real:
      case LITERAL___imag:
      {
        statementList();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      case RCURLY:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      if ( inputState.guessing==0 ) {
        popScope();
      }
      TNode tmp105_AST = null;
      tmp105_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp105_AST);
      match(RCURLY);
      if ( inputState.guessing==0 ) {
        compoundStatement_AST = (TNode)currentAST.root;
        compoundStatement_AST.setType( NCompoundStatement ); compoundStatement_AST.setAttribute( "scopeName", scopeName );
      }
      compoundStatement_AST = (TNode)currentAST.root;
      returnAST = compoundStatement_AST;
    }
   
  public final void nestedFunctionDef() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode nestedFunctionDef_AST = null;
    TNode ds_AST = null;
    TNode d_AST = null;
    String declName;
   
    {
    switch ( LA(1)) {
    case LITERAL_auto:
    {
      TNode tmp106_AST = null;
      tmp106_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp106_AST);
      match(LITERAL_auto);
      break;
    }
    case LITERAL_volatile:
    case LITERAL_struct:
    case LITERAL_union:
    case LITERAL_enum:
    case LITERAL_extern:
    case LITERAL_static:
    case LITERAL_const:
    case LITERAL_void:
    case LITERAL_char:
    case LITERAL_short:
    case LITERAL_int:
    case LITERAL_long:
    case LITERAL_float:
    case LITERAL_double:
    case LITERAL_signed:
    case LITERAL_unsigned:
    case ID:
    case STAR:
    case LPAREN:
    case LITERAL_inline:
    case LITERAL_byte:
    case LITERAL_boolean:
    case LITERAL_typeof:
    case LITERAL___complex:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    {
    boolean synPredMatched142 = false;
    if (((_tokenSet_4.member(LA(1))))) {
      int _m142 = mark();
      synPredMatched142 = true;
      inputState.guessing++;
      try {
        {
        functionDeclSpecifiers();
        }
      }
      catch (RecognitionException pe) {
        synPredMatched142 = false;
      }
      rewind(_m142);
      inputState.guessing--;
    }
    if ( synPredMatched142 ) {
      functionDeclSpecifiers();
      ds_AST = (TNode)returnAST;
      astFactory.addASTChild(currentAST, returnAST);
    }
    else if ((_tokenSet_3.member(LA(1)))) {
    }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
   
    }
    declName=declarator(false);
    d_AST = (TNode)returnAST;
    astFactory.addASTChild(currentAST, returnAST);
    if ( inputState.guessing==0 ) {
     
      AST d2, ds2;
      d2 = astFactory.dupList(d_AST);
      ds2 = astFactory.dupList(ds_AST);
      symbolTable.add(declName, (TNode)astFactory.make( (new ASTArray(3)).add(null).add(ds2).add(d2)));
      pushScope(declName);
     
    }
    {
    _loop144:
    do {
      if ((_tokenSet_1.member(LA(1)))) {
        declaration();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop144;
      }
     
    } while (true);
    }
    if ( inputState.guessing==0 ) {
      popScope();
    }
    compoundStatement(declName);
    astFactory.addASTChild(currentAST, returnAST);
    if ( inputState.guessing==0 ) {
      nestedFunctionDef_AST = (TNode)currentAST.root;
      nestedFunctionDef_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NFunctionDef)).add(nestedFunctionDef_AST));
      currentAST.root = nestedFunctionDef_AST;
      currentAST.child = nestedFunctionDef_AST!=null &&nestedFunctionDef_AST.getFirstChild()!=null ?
        nestedFunctionDef_AST.getFirstChild() : nestedFunctionDef_AST;
      currentAST.advanceChildToEnd();
    }
    nestedFunctionDef_AST = (TNode)currentAST.root;
    returnAST = nestedFunctionDef_AST;
  }
 
  public final void statementList() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode statementList_AST = null;
   
    {
    int _cnt258=0;
    _loop258:
    do {
      if ((_tokenSet_17.member(LA(1)))) {
        statement();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        if ( _cnt258>=1 ) { break _loop258; } else {throw new NoViableAltException(LT(1), getFilename());}
      }
     
      _cnt258++;
    } while (true);
    }
    statementList_AST = (TNode)currentAST.root;
    returnAST = statementList_AST;
  }
 
  public final void statement() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode statement_AST = null;
    TNode e1_AST = null;
    TNode e2_AST = null;
    TNode e3_AST = null;
    TNode s_AST = null;
   
    switch ( LA(1)) {
    case SEMI:
    {
      TNode tmp107_AST = null;
      tmp107_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp107_AST);
      match(SEMI);
      statement_AST = (TNode)currentAST.root;
      break;
    }
    case LCURLY:
    {
      compoundStatement(getAScopeName());
      astFactory.addASTChild(currentAST, returnAST);
      statement_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_while:
    {
      TNode tmp108_AST = null;
      tmp108_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp108_AST);
      match(LITERAL_while);
      match(LPAREN);
      expr();
      astFactory.addASTChild(currentAST, returnAST);
      match(RPAREN);
      statement();
      astFactory.addASTChild(currentAST, returnAST);
      statement_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_do:
    {
      TNode tmp111_AST = null;
      tmp111_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp111_AST);
      match(LITERAL_do);
      statement();
      astFactory.addASTChild(currentAST, returnAST);
      match(LITERAL_while);
      match(LPAREN);
      expr();
      astFactory.addASTChild(currentAST, returnAST);
      match(RPAREN);
      match(SEMI);
      statement_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_for:
    {
      match(LITERAL_for);
      TNode tmp117_AST = null;
      tmp117_AST = (TNode)astFactory.create(LT(1));
      match(LPAREN);
      {
      switch ( LA(1)) {
      case LITERAL_asm:
      case ID:
      case STAR:
      case LPAREN:
      case LAND:
      case BAND:
      case PLUS:
      case MINUS:
      case INC:
      case DEC:
      case LITERAL_sizeof:
      case BNOT:
      case LNOT:
      case CharLiteral:
      case StringLiteral:
      case Number:
      case LITERAL___alignof:
      case LITERAL___real:
      case LITERAL___imag:
      {
        expr();
        e1_AST = (TNode)returnAST;
        break;
      }
      case SEMI:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      TNode tmp118_AST = null;
      tmp118_AST = (TNode)astFactory.create(LT(1));
      match(SEMI);
      {
      switch ( LA(1)) {
      case LITERAL_asm:
      case ID:
      case STAR:
      case LPAREN:
      case LAND:
      case BAND:
      case PLUS:
      case MINUS:
      case INC:
      case DEC:
      case LITERAL_sizeof:
      case BNOT:
      case LNOT:
      case CharLiteral:
      case StringLiteral:
      case Number:
      case LITERAL___alignof:
      case LITERAL___real:
      case LITERAL___imag:
      {
        expr();
        e2_AST = (TNode)returnAST;
        break;
      }
      case SEMI:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      TNode tmp119_AST = null;
      tmp119_AST = (TNode)astFactory.create(LT(1));
      match(SEMI);
      {
      switch ( LA(1)) {
      case LITERAL_asm:
      case ID:
      case STAR:
      case LPAREN:
      case LAND:
      case BAND:
      case PLUS:
      case MINUS:
      case INC:
      case DEC:
      case LITERAL_sizeof:
      case BNOT:
      case LNOT:
      case CharLiteral:
      case StringLiteral:
      case Number:
      case LITERAL___alignof:
      case LITERAL___real:
      case LITERAL___imag:
      {
        expr();
        e3_AST = (TNode)returnAST;
        break;
      }
      case RPAREN:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      TNode tmp120_AST = null;
      tmp120_AST = (TNode)astFactory.create(LT(1));
      match(RPAREN);
      statement();
      s_AST = (TNode)returnAST;
      if ( inputState.guessing==0 ) {
        statement_AST = (TNode)currentAST.root;
       
        if ( e1_AST == null) { e1_AST = (TNode)astFactory.create(NEmptyExpression); }
        if ( e2_AST == null) { e2_AST = (TNode)astFactory.create(NEmptyExpression); }
        if ( e3_AST == null) { e3_AST = (TNode)astFactory.create(NEmptyExpression); }
        statement_AST = (TNode)astFactory.make( (new ASTArray(5)).add((TNode)astFactory.create(LITERAL_for,"for")).add(e1_AST).add(e2_AST).add(e3_AST).add(s_AST));
       
        currentAST.root = statement_AST;
        currentAST.child = statement_AST!=null &&statement_AST.getFirstChild()!=null ?
          statement_AST.getFirstChild() : statement_AST;
        currentAST.advanceChildToEnd();
      }
      break;
    }
    case LITERAL_goto:
    {
      TNode tmp121_AST = null;
      tmp121_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp121_AST);
      match(LITERAL_goto);
      expr();
      astFactory.addASTChild(currentAST, returnAST);
      match(SEMI);
      statement_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_continue:
    {
      TNode tmp123_AST = null;
      tmp123_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp123_AST);
      match(LITERAL_continue);
      match(SEMI);
      statement_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_break:
    {
      TNode tmp125_AST = null;
      tmp125_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp125_AST);
      match(LITERAL_break);
      match(SEMI);
      statement_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_return:
    {
      TNode tmp127_AST = null;
      tmp127_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp127_AST);
      match(LITERAL_return);
      {
      switch ( LA(1)) {
      case LITERAL_asm:
      case ID:
      case STAR:
      case LPAREN:
      case LAND:
      case BAND:
      case PLUS:
      case MINUS:
      case INC:
      case DEC:
      case LITERAL_sizeof:
      case BNOT:
      case LNOT:
      case CharLiteral:
      case StringLiteral:
      case Number:
      case LITERAL___alignof:
      case LITERAL___real:
      case LITERAL___imag:
      {
        expr();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      case SEMI:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      match(SEMI);
      statement_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_case:
    {
      TNode tmp129_AST = null;
      tmp129_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp129_AST);
      match(LITERAL_case);
      {
      boolean synPredMatched153 = false;
      if (((_tokenSet_9.member(LA(1))))) {
        int _m153 = mark();
        synPredMatched153 = true;
        inputState.guessing++;
        try {
          {
          constExpr();
          match(VARARGS);
          }
        }
        catch (RecognitionException pe) {
          synPredMatched153 = false;
        }
        rewind(_m153);
        inputState.guessing--;
      }
      if ( synPredMatched153 ) {
        rangeExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else if ((_tokenSet_9.member(LA(1)))) {
        constExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
     
      }
      match(COLON);
      {
      if ((_tokenSet_17.member(LA(1)))) {
        statement();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else if ((_tokenSet_18.member(LA(1)))) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
     
      }
      statement_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_default:
    {
      TNode tmp131_AST = null;
      tmp131_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp131_AST);
      match(LITERAL_default);
      match(COLON);
      {
      if ((_tokenSet_17.member(LA(1)))) {
        statement();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else if ((_tokenSet_18.member(LA(1)))) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
     
      }
      statement_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_if:
    {
      TNode tmp133_AST = null;
      tmp133_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp133_AST);
      match(LITERAL_if);
      match(LPAREN);
      expr();
      astFactory.addASTChild(currentAST, returnAST);
      match(RPAREN);
      statement();
      astFactory.addASTChild(currentAST, returnAST);
      {
      if ((LA(1)==LITERAL_else)) {
        TNode tmp136_AST = null;
        tmp136_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp136_AST);
        match(LITERAL_else);
        statement();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else if ((_tokenSet_18.member(LA(1)))) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
     
      }
      statement_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_switch:
    {
      TNode tmp137_AST = null;
      tmp137_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp137_AST);
      match(LITERAL_switch);
      match(LPAREN);
      expr();
      astFactory.addASTChild(currentAST, returnAST);
      match(RPAREN);
      statement();
      astFactory.addASTChild(currentAST, returnAST);
      statement_AST = (TNode)currentAST.root;
      break;
    }
    default:
      if ((_tokenSet_9.member(LA(1)))) {
        expr();
        astFactory.addASTChild(currentAST, returnAST);
        match(SEMI);
        if ( inputState.guessing==0 ) {
          statement_AST = (TNode)currentAST.root;
          statement_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NStatementExpr)).add(statement_AST));
          currentAST.root = statement_AST;
          currentAST.child = statement_AST!=null &&statement_AST.getFirstChild()!=null ?
            statement_AST.getFirstChild() : statement_AST;
          currentAST.advanceChildToEnd();
        }
        statement_AST = (TNode)currentAST.root;
      }
      else if ((LA(1)==ID)) {
        TNode tmp141_AST = null;
        tmp141_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp141_AST);
        match(ID);
        match(COLON);
        {
        if ((_tokenSet_17.member(LA(1)))) {
          statement();
          astFactory.addASTChild(currentAST, returnAST);
        }
        else if ((_tokenSet_18.member(LA(1)))) {
        }
        else {
          throw new NoViableAltException(LT(1), getFilename());
        }
       
        }
        if ( inputState.guessing==0 ) {
          statement_AST = (TNode)currentAST.root;
          statement_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NLabel)).add(statement_AST));
          currentAST.root = statement_AST;
          currentAST.child = statement_AST!=null &&statement_AST.getFirstChild()!=null ?
            statement_AST.getFirstChild() : statement_AST;
          currentAST.advanceChildToEnd();
        }
        statement_AST = (TNode)currentAST.root;
      }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = statement_AST;
  }
 
  public final void conditionalExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode conditionalExpr_AST = null;
   
    logicalOrExpr();
    astFactory.addASTChild(currentAST, returnAST);
    {
    switch ( LA(1)) {
    case QUESTION:
    {
      TNode tmp143_AST = null;
      tmp143_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp143_AST);
      match(QUESTION);
      {
      switch ( LA(1)) {
      case LITERAL_asm:
      case ID:
      case STAR:
      case LPAREN:
      case LAND:
      case BAND:
      case PLUS:
      case MINUS:
      case INC:
      case DEC:
      case LITERAL_sizeof:
      case BNOT:
      case LNOT:
      case CharLiteral:
      case StringLiteral:
      case Number:
      case LITERAL___alignof:
      case LITERAL___real:
      case LITERAL___imag:
      {
        expr();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      case COLON:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      TNode tmp144_AST = null;
      tmp144_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp144_AST);
      match(COLON);
      conditionalExpr();
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case LITERAL_asm:
    case RCURLY:
    case SEMI:
    case COMMA:
    case COLON:
    case ASSIGN:
    case RPAREN:
    case RBRACKET:
    case VARARGS:
    case DIV_ASSIGN:
    case PLUS_ASSIGN:
    case MINUS_ASSIGN:
    case STAR_ASSIGN:
    case MOD_ASSIGN:
    case RSHIFT_ASSIGN:
    case LSHIFT_ASSIGN:
    case BAND_ASSIGN:
    case BOR_ASSIGN:
    case BXOR_ASSIGN:
    case LITERAL___attribute:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    conditionalExpr_AST = (TNode)currentAST.root;
    returnAST = conditionalExpr_AST;
  }
 
  public final void logicalOrExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode logicalOrExpr_AST = null;
   
    logicalAndExpr();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop268:
    do {
      if ((LA(1)==LOR)) {
        TNode tmp145_AST = null;
        tmp145_AST = (TNode)astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp145_AST);
        match(LOR);
        logicalAndExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop268;
      }
     
    } while (true);
    }
    logicalOrExpr_AST = (TNode)currentAST.root;
    returnAST = logicalOrExpr_AST;
  }
 
  public final void castExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode castExpr_AST = null;
   
    boolean synPredMatched163 = false;
    if (((LA(1)==LPAREN))) {
      int _m163 = mark();
      synPredMatched163 = true;
      inputState.guessing++;
      try {
        {
        match(LPAREN);
        typeName();
        match(RPAREN);
        }
      }
      catch (RecognitionException pe) {
        synPredMatched163 = false;
      }
      rewind(_m163);
      inputState.guessing--;
    }
    if ( synPredMatched163 ) {
      TNode tmp146_AST = null;
      tmp146_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp146_AST);
      match(LPAREN);
      typeName();
      astFactory.addASTChild(currentAST, returnAST);
      TNode tmp147_AST = null;
      tmp147_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp147_AST);
      match(RPAREN);
      {
      switch ( LA(1)) {
      case LITERAL_asm:
      case ID:
      case STAR:
      case LPAREN:
      case LAND:
      case BAND:
      case PLUS:
      case MINUS:
      case INC:
      case DEC:
      case LITERAL_sizeof:
      case BNOT:
      case LNOT:
      case CharLiteral:
      case StringLiteral:
      case Number:
      case LITERAL___alignof:
      case LITERAL___real:
      case LITERAL___imag:
      {
        castExpr();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      case LCURLY:
      {
        lcurlyInitializer();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      if ( inputState.guessing==0 ) {
        castExpr_AST = (TNode)currentAST.root;
        castExpr_AST.setType(NCast);
      }
      castExpr_AST = (TNode)currentAST.root;
    }
    else if ((_tokenSet_9.member(LA(1)))) {
      unaryExpr();
      astFactory.addASTChild(currentAST, returnAST);
      castExpr_AST = (TNode)currentAST.root;
    }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
   
    returnAST = castExpr_AST;
  }
 
  public final void unaryExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode unaryExpr_AST = null;
    TNode u_AST = null;
   
    switch ( LA(1)) {
    case ID:
    case LPAREN:
    case CharLiteral:
    case StringLiteral:
    case Number:
    {
      postfixExpr();
      astFactory.addASTChild(currentAST, returnAST);
      unaryExpr_AST = (TNode)currentAST.root;
      break;
    }
    case INC:
    {
      TNode tmp148_AST = null;
      tmp148_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp148_AST);
      match(INC);
      castExpr();
      astFactory.addASTChild(currentAST, returnAST);
      unaryExpr_AST = (TNode)currentAST.root;
      break;
    }
    case DEC:
    {
      TNode tmp149_AST = null;
      tmp149_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp149_AST);
      match(DEC);
      castExpr();
      astFactory.addASTChild(currentAST, returnAST);
      unaryExpr_AST = (TNode)currentAST.root;
      break;
    }
    case STAR:
    case LAND:
    case BAND:
    case PLUS:
    case MINUS:
    case BNOT:
    case LNOT:
    case LITERAL___real:
    case LITERAL___imag:
    {
      unaryOperator();
      u_AST = (TNode)returnAST;
      astFactory.addASTChild(currentAST, returnAST);
      castExpr();
      astFactory.addASTChild(currentAST, returnAST);
      if ( inputState.guessing==0 ) {
        unaryExpr_AST = (TNode)currentAST.root;
        unaryExpr_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NUnaryExpr)).add(unaryExpr_AST));
        currentAST.root = unaryExpr_AST;
        currentAST.child = unaryExpr_AST!=null &&unaryExpr_AST.getFirstChild()!=null ?
          unaryExpr_AST.getFirstChild() : unaryExpr_AST;
        currentAST.advanceChildToEnd();
      }
      unaryExpr_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_sizeof:
    {
      TNode tmp150_AST = null;
      tmp150_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp150_AST);
      match(LITERAL_sizeof);
      {
      boolean synPredMatched184 = false;
      if (((LA(1)==LPAREN))) {
        int _m184 = mark();
        synPredMatched184 = true;
        inputState.guessing++;
        try {
          {
          match(LPAREN);
          typeName();
          }
        }
        catch (RecognitionException pe) {
          synPredMatched184 = false;
        }
        rewind(_m184);
        inputState.guessing--;
      }
      if ( synPredMatched184 ) {
        TNode tmp151_AST = null;
        tmp151_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp151_AST);
        match(LPAREN);
        typeName();
        astFactory.addASTChild(currentAST, returnAST);
        TNode tmp152_AST = null;
        tmp152_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp152_AST);
        match(RPAREN);
      }
      else if ((_tokenSet_9.member(LA(1)))) {
        unaryExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
     
      }
      unaryExpr_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL___alignof:
    {
      TNode tmp153_AST = null;
      tmp153_AST = (TNode)astFactory.create(LT(1));
      astFactory.makeASTRoot(currentAST, tmp153_AST);
      match(LITERAL___alignof);
      {
      boolean synPredMatched187 = false;
      if (((LA(1)==LPAREN))) {
        int _m187 = mark();
        synPredMatched187 = true;
        inputState.guessing++;
        try {
          {
          match(LPAREN);
          typeName();
          }
        }
        catch (RecognitionException pe) {
          synPredMatched187 = false;
        }
        rewind(_m187);
        inputState.guessing--;
      }
      if ( synPredMatched187 ) {
        TNode tmp154_AST = null;
        tmp154_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp154_AST);
        match(LPAREN);
        typeName();
        astFactory.addASTChild(currentAST, returnAST);
        TNode tmp155_AST = null;
        tmp155_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp155_AST);
        match(RPAREN);
      }
      else if ((_tokenSet_9.member(LA(1)))) {
        unaryExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
     
      }
      unaryExpr_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_asm:
    {
      gnuAsmExpr();
      astFactory.addASTChild(currentAST, returnAST);
      unaryExpr_AST = (TNode)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = unaryExpr_AST;
  }
 
  public final void nonemptyAbstractDeclarator() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode nonemptyAbstractDeclarator_AST = null;
   
    {
    switch ( LA(1)) {
    case STAR:
    {
      pointerGroup();
      astFactory.addASTChild(currentAST, returnAST);
      {
      _loop173:
      do {
        switch ( LA(1)) {
        case LPAREN:
        {
          {
          TNode tmp156_AST = null;
          tmp156_AST = (TNode)astFactory.create(LT(1));
          astFactory.addASTChild(currentAST, tmp156_AST);
          match(LPAREN);
          {
          switch ( LA(1)) {
          case STAR:
          case LPAREN:
          case LBRACKET:
          {
            nonemptyAbstractDeclarator();
            astFactory.addASTChild(currentAST, returnAST);
            break;
          }
          case LITERAL_typedef:
          case LITERAL_volatile:
          case LITERAL_struct:
          case LITERAL_union:
          case LITERAL_enum:
          case LITERAL_auto:
          case LITERAL_register:
          case LITERAL_extern:
          case LITERAL_static:
          case LITERAL_const:
          case LITERAL_void:
          case LITERAL_char:
          case LITERAL_short:
          case LITERAL_int:
          case LITERAL_long:
          case LITERAL_float:
          case LITERAL_double:
          case LITERAL_signed:
          case LITERAL_unsigned:
          case ID:
          case LITERAL_inline:
          case LITERAL_byte:
          case LITERAL_boolean:
          case LITERAL_typeof:
          case LITERAL___complex:
          {
            parameterTypeList();
            astFactory.addASTChild(currentAST, returnAST);
            break;
          }
          case COMMA:
          case RPAREN:
          {
            break;
          }
          default:
          {
            throw new NoViableAltException(LT(1), getFilename());
          }
          }
          }
          {
          switch ( LA(1)) {
          case COMMA:
          {
            match(COMMA);
            break;
          }
          case RPAREN:
          {
            break;
          }
          default:
          {
            throw new NoViableAltException(LT(1), getFilename());
          }
          }
          }
          TNode tmp158_AST = null;
          tmp158_AST = (TNode)astFactory.create(LT(1));
          astFactory.addASTChild(currentAST, tmp158_AST);
          match(RPAREN);
          }
          break;
        }
        case LBRACKET:
        {
          {
          TNode tmp159_AST = null;
          tmp159_AST = (TNode)astFactory.create(LT(1));
          astFactory.addASTChild(currentAST, tmp159_AST);
          match(LBRACKET);
          {
          switch ( LA(1)) {
          case LITERAL_asm:
          case ID:
          case STAR:
          case LPAREN:
          case LAND:
          case BAND:
          case PLUS:
          case MINUS:
          case INC:
          case DEC:
          case LITERAL_sizeof:
          case BNOT:
          case LNOT:
          case CharLiteral:
          case StringLiteral:
          case Number:
          case LITERAL___alignof:
          case LITERAL___real:
          case LITERAL___imag:
          {
            expr();
            astFactory.addASTChild(currentAST, returnAST);
            break;
          }
          case RBRACKET:
          {
            break;
          }
          default:
          {
            throw new NoViableAltException(LT(1), getFilename());
          }
          }
          }
          TNode tmp160_AST = null;
          tmp160_AST = (TNode)astFactory.create(LT(1));
          astFactory.addASTChild(currentAST, tmp160_AST);
          match(RBRACKET);
          }
          break;
        }
        default:
        {
          break _loop173;
        }
        }
      } while (true);
      }
      break;
    }
    case LPAREN:
    case LBRACKET:
    {
      {
      int _cnt180=0;
      _loop180:
      do {
        switch ( LA(1)) {
        case LPAREN:
        {
          {
          TNode tmp161_AST = null;
          tmp161_AST = (TNode)astFactory.create(LT(1));
          astFactory.addASTChild(currentAST, tmp161_AST);
          match(LPAREN);
          {
          switch ( LA(1)) {
          case STAR:
          case LPAREN:
          case LBRACKET:
          {
            nonemptyAbstractDeclarator();
            astFactory.addASTChild(currentAST, returnAST);
            break;
          }
          case LITERAL_typedef:
          case LITERAL_volatile:
          case LITERAL_struct:
          case LITERAL_union:
          case LITERAL_enum:
          case LITERAL_auto:
          case LITERAL_register:
          case LITERAL_extern:
          case LITERAL_static:
          case LITERAL_const:
          case LITERAL_void:
          case LITERAL_char:
          case LITERAL_short:
          case LITERAL_int:
          case LITERAL_long:
          case LITERAL_float:
          case LITERAL_double:
          case LITERAL_signed:
          case LITERAL_unsigned:
          case ID:
          case LITERAL_inline:
          case LITERAL_byte:
          case LITERAL_boolean:
          case LITERAL_typeof:
          case LITERAL___complex:
          {
            parameterTypeList();
            astFactory.addASTChild(currentAST, returnAST);
            break;
          }
          case COMMA:
          case RPAREN:
          {
            break;
          }
          default:
          {
            throw new NoViableAltException(LT(1), getFilename());
          }
          }
          }
          {
          switch ( LA(1)) {
          case COMMA:
          {
            match(COMMA);
            break;
          }
          case RPAREN:
          {
            break;
          }
          default:
          {
            throw new NoViableAltException(LT(1), getFilename());
          }
          }
          }
          TNode tmp163_AST = null;
          tmp163_AST = (TNode)astFactory.create(LT(1));
          astFactory.addASTChild(currentAST, tmp163_AST);
          match(RPAREN);
          }
          break;
        }
        case LBRACKET:
        {
          {
          TNode tmp164_AST = null;
          tmp164_AST = (TNode)astFactory.create(LT(1));
          astFactory.addASTChild(currentAST, tmp164_AST);
          match(LBRACKET);
          {
          switch ( LA(1)) {
          case LITERAL_asm:
          case ID:
          case STAR:
          case LPAREN:
          case LAND:
          case BAND:
          case PLUS:
          case MINUS:
          case INC:
          case DEC:
          case LITERAL_sizeof:
          case BNOT:
          case LNOT:
          case CharLiteral:
          case StringLiteral:
          case Number:
          case LITERAL___alignof:
          case LITERAL___real:
          case LITERAL___imag:
          {
            expr();
            astFactory.addASTChild(currentAST, returnAST);
            break;
          }
          case RBRACKET:
          {
            break;
          }
          default:
          {
            throw new NoViableAltException(LT(1), getFilename());
          }
          }
          }
          TNode tmp165_AST = null;
          tmp165_AST = (TNode)astFactory.create(LT(1));
          astFactory.addASTChild(currentAST, tmp165_AST);
          match(RBRACKET);
          }
          break;
        }
        default:
        {
          if ( _cnt180>=1 ) { break _loop180; } else {throw new NoViableAltException(LT(1), getFilename());}
        }
        }
        _cnt180++;
      } while (true);
      }
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    if ( inputState.guessing==0 ) {
      nonemptyAbstractDeclarator_AST = (TNode)currentAST.root;
      nonemptyAbstractDeclarator_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NNonemptyAbstractDeclarator)).add(nonemptyAbstractDeclarator_AST));
      currentAST.root = nonemptyAbstractDeclarator_AST;
      currentAST.child = nonemptyAbstractDeclarator_AST!=null &&nonemptyAbstractDeclarator_AST.getFirstChild()!=null ?
        nonemptyAbstractDeclarator_AST.getFirstChild() : nonemptyAbstractDeclarator_AST;
      currentAST.advanceChildToEnd();
    }
    nonemptyAbstractDeclarator_AST = (TNode)currentAST.root;
    returnAST = nonemptyAbstractDeclarator_AST;
  }
 
  public final void postfixExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode postfixExpr_AST = null;
   
    primaryExpr();
    astFactory.addASTChild(currentAST, returnAST);
    {
    switch ( LA(1)) {
    case LPAREN:
    case LBRACKET:
    case INC:
    case DEC:
    case PTR:
    case DOT:
    {
      postfixSuffix();
      astFactory.addASTChild(currentAST, returnAST);
      if ( inputState.guessing==0 ) {
        postfixExpr_AST = (TNode)currentAST.root;
        postfixExpr_AST = (TNode)astFactory.make( (new ASTArray(2)).add((TNode)astFactory.create(NPostfixExpr)).add(postfixExpr_AST));
        currentAST.root = postfixExpr_AST;
        currentAST.child = postfixExpr_AST!=null &&postfixExpr_AST.getFirstChild()!=null ?
          postfixExpr_AST.getFirstChild() : postfixExpr_AST;
        currentAST.advanceChildToEnd();
      }
      break;
    }
    case LITERAL_asm:
    case RCURLY:
    case SEMI:
    case COMMA:
    case COLON:
    case ASSIGN:
    case STAR:
    case RPAREN:
    case RBRACKET:
    case VARARGS:
    case DIV_ASSIGN:
    case PLUS_ASSIGN:
    case MINUS_ASSIGN:
    case STAR_ASSIGN:
    case MOD_ASSIGN:
    case RSHIFT_ASSIGN:
    case LSHIFT_ASSIGN:
    case BAND_ASSIGN:
    case BOR_ASSIGN:
    case BXOR_ASSIGN:
    case QUESTION:
    case LOR:
    case LAND:
    case BOR:
    case BXOR:
    case BAND:
    case EQUAL:
    case NOT_EQUAL:
    case LT:
    case LTE:
    case GT:
    case GTE:
    case LSHIFT:
    case RSHIFT:
    case PLUS:
    case MINUS:
    case DIV:
    case MOD:
    case LITERAL___attribute:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    postfixExpr_AST = (TNode)currentAST.root;
    returnAST = postfixExpr_AST;
  }
 
  public final void unaryOperator() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode unaryOperator_AST = null;
   
    switch ( LA(1)) {
    case BAND:
    {
      TNode tmp166_AST = null;
      tmp166_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp166_AST);
      match(BAND);
      unaryOperator_AST = (TNode)currentAST.root;
      break;
    }
    case STAR:
    {
      TNode tmp167_AST = null;
      tmp167_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp167_AST);
      match(STAR);
      unaryOperator_AST = (TNode)currentAST.root;
      break;
    }
    case PLUS:
    {
      TNode tmp168_AST = null;
      tmp168_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp168_AST);
      match(PLUS);
      unaryOperator_AST = (TNode)currentAST.root;
      break;
    }
    case MINUS:
    {
      TNode tmp169_AST = null;
      tmp169_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp169_AST);
      match(MINUS);
      unaryOperator_AST = (TNode)currentAST.root;
      break;
    }
    case BNOT:
    {
      TNode tmp170_AST = null;
      tmp170_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp170_AST);
      match(BNOT);
      unaryOperator_AST = (TNode)currentAST.root;
      break;
    }
    case LNOT:
    {
      TNode tmp171_AST = null;
      tmp171_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp171_AST);
      match(LNOT);
      unaryOperator_AST = (TNode)currentAST.root;
      break;
    }
    case LAND:
    {
      TNode tmp172_AST = null;
      tmp172_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp172_AST);
      match(LAND);
      unaryOperator_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL___real:
    {
      TNode tmp173_AST = null;
      tmp173_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp173_AST);
      match(LITERAL___real);
      unaryOperator_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL___imag:
    {
      TNode tmp174_AST = null;
      tmp174_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp174_AST);
      match(LITERAL___imag);
      unaryOperator_AST = (TNode)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = unaryOperator_AST;
  }
 
  public final void gnuAsmExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode gnuAsmExpr_AST = null;
   
    TNode tmp175_AST = null;
    tmp175_AST = (TNode)astFactory.create(LT(1));
    astFactory.makeASTRoot(currentAST, tmp175_AST);
    match(LITERAL_asm);
    {
    switch ( LA(1)) {
    case LITERAL_volatile:
    {
      TNode tmp176_AST = null;
      tmp176_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp176_AST);
      match(LITERAL_volatile);
      break;
    }
    case LPAREN:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    TNode tmp177_AST = null;
    tmp177_AST = (TNode)astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp177_AST);
    match(LPAREN);
    stringConst();
    astFactory.addASTChild(currentAST, returnAST);
    {
    if ((LA(1)==COLON)) {
      TNode tmp178_AST = null;
      tmp178_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp178_AST);
      match(COLON);
      {
      switch ( LA(1)) {
      case StringLiteral:
      {
        strOptExprPair();
        astFactory.addASTChild(currentAST, returnAST);
        {
        _loop194:
        do {
          if ((LA(1)==COMMA)) {
            TNode tmp179_AST = null;
            tmp179_AST = (TNode)astFactory.create(LT(1));
            astFactory.addASTChild(currentAST, tmp179_AST);
            match(COMMA);
            strOptExprPair();
            astFactory.addASTChild(currentAST, returnAST);
          }
          else {
            break _loop194;
          }
         
        } while (true);
        }
        break;
      }
      case COLON:
      case RPAREN:
      {
        break;
      }
      default:
      {
        throw new NoViableAltException(LT(1), getFilename());
      }
      }
      }
      {
      if ((LA(1)==COLON)) {
        TNode tmp180_AST = null;
        tmp180_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp180_AST);
        match(COLON);
        {
        switch ( LA(1)) {
        case StringLiteral:
        {
          strOptExprPair();
          astFactory.addASTChild(currentAST, returnAST);
          {
          _loop198:
          do {
            if ((LA(1)==COMMA)) {
              TNode tmp181_AST = null;
              tmp181_AST = (TNode)astFactory.create(LT(1));
              astFactory.addASTChild(currentAST, tmp181_AST);
              match(COMMA);
              strOptExprPair();
              astFactory.addASTChild(currentAST, returnAST);
            }
            else {
              break _loop198;
            }
           
          } while (true);
          }
          break;
        }
        case COLON:
        case RPAREN:
        {
          break;
        }
        default:
        {
          throw new NoViableAltException(LT(1), getFilename());
        }
        }
        }
      }
      else if ((LA(1)==COLON||LA(1)==RPAREN)) {
      }
      else {
        throw new NoViableAltException(LT(1), getFilename());
      }
     
      }
    }
    else if ((LA(1)==COLON||LA(1)==RPAREN)) {
    }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
   
    }
    {
    switch ( LA(1)) {
    case COLON:
    {
      TNode tmp182_AST = null;
      tmp182_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp182_AST);
      match(COLON);
      stringConst();
      astFactory.addASTChild(currentAST, returnAST);
      {
      _loop201:
      do {
        if ((LA(1)==COMMA)) {
          TNode tmp183_AST = null;
          tmp183_AST = (TNode)astFactory.create(LT(1));
          astFactory.addASTChild(currentAST, tmp183_AST);
          match(COMMA);
          stringConst();
          astFactory.addASTChild(currentAST, returnAST);
        }
        else {
          break _loop201;
        }
       
      } while (true);
      }
      break;
    }
    case RPAREN:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    TNode tmp184_AST = null;
    tmp184_AST = (TNode)astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp184_AST);
    match(RPAREN);
    if ( inputState.guessing==0 ) {
      gnuAsmExpr_AST = (TNode)currentAST.root;
      gnuAsmExpr_AST.setType(NGnuAsmExpr);
    }
    gnuAsmExpr_AST = (TNode)currentAST.root;
    returnAST = gnuAsmExpr_AST;
  }
 
  public final void strOptExprPair() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode strOptExprPair_AST = null;
   
    stringConst();
    astFactory.addASTChild(currentAST, returnAST);
    {
    switch ( LA(1)) {
    case LPAREN:
    {
      TNode tmp185_AST = null;
      tmp185_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp185_AST);
      match(LPAREN);
      expr();
      astFactory.addASTChild(currentAST, returnAST);
      TNode tmp186_AST = null;
      tmp186_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp186_AST);
      match(RPAREN);
      break;
    }
    case COMMA:
    case COLON:
    case RPAREN:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    strOptExprPair_AST = (TNode)currentAST.root;
    returnAST = strOptExprPair_AST;
  }
 
  public final void functionCall() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode functionCall_AST = null;
    TNode a_AST = null;
   
    TNode tmp187_AST = null;
    tmp187_AST = (TNode)astFactory.create(LT(1));
    astFactory.makeASTRoot(currentAST, tmp187_AST);
    match(LPAREN);
    {
    switch ( LA(1)) {
    case LITERAL_asm:
    case ID:
    case STAR:
    case LPAREN:
    case LAND:
    case BAND:
    case PLUS:
    case MINUS:
    case INC:
    case DEC:
    case LITERAL_sizeof:
    case BNOT:
    case LNOT:
    case CharLiteral:
    case StringLiteral:
    case Number:
    case LITERAL___alignof:
    case LITERAL___real:
    case LITERAL___imag:
    {
      argExprList();
      a_AST = (TNode)returnAST;
      astFactory.addASTChild(currentAST, returnAST);
      break;
    }
    case RPAREN:
    {
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    }
    TNode tmp188_AST = null;
    tmp188_AST = (TNode)astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp188_AST);
    match(RPAREN);
    if ( inputState.guessing==0 ) {
      functionCall_AST = (TNode)currentAST.root;
     
      functionCall_AST.setType( NFunctionCallArgs );
     
    }
    functionCall_AST = (TNode)currentAST.root;
    returnAST = functionCall_AST;
  }
 
  public final void argExprList() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode argExprList_AST = null;
   
    assignExpr();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop310:
    do {
      if ((LA(1)==COMMA)) {
        match(COMMA);
        assignExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop310;
      }
     
    } while (true);
    }
    argExprList_AST = (TNode)currentAST.root;
    returnAST = argExprList_AST;
  }
 
  public final void primaryExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode primaryExpr_AST = null;
   
    switch ( LA(1)) {
    case ID:
    {
      TNode tmp190_AST = null;
      tmp190_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp190_AST);
      match(ID);
      primaryExpr_AST = (TNode)currentAST.root;
      break;
    }
    case Number:
    {
      TNode tmp191_AST = null;
      tmp191_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp191_AST);
      match(Number);
      primaryExpr_AST = (TNode)currentAST.root;
      break;
    }
    case CharLiteral:
    {
      charConst();
      astFactory.addASTChild(currentAST, returnAST);
      primaryExpr_AST = (TNode)currentAST.root;
      break;
    }
    case StringLiteral:
    {
      stringConst();
      astFactory.addASTChild(currentAST, returnAST);
      primaryExpr_AST = (TNode)currentAST.root;
      break;
    }
    default:
      boolean synPredMatched208 = false;
      if (((LA(1)==LPAREN))) {
        int _m208 = mark();
        synPredMatched208 = true;
        inputState.guessing++;
        try {
          {
          match(LPAREN);
          match(LCURLY);
          }
        }
        catch (RecognitionException pe) {
          synPredMatched208 = false;
        }
        rewind(_m208);
        inputState.guessing--;
      }
      if ( synPredMatched208 ) {
        TNode tmp192_AST = null;
        tmp192_AST = (TNode)astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp192_AST);
        match(LPAREN);
        compoundStatement(getAScopeName());
        astFactory.addASTChild(currentAST, returnAST);
        TNode tmp193_AST = null;
        tmp193_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp193_AST);
        match(RPAREN);
        primaryExpr_AST = (TNode)currentAST.root;
      }
      else if ((LA(1)==LPAREN)) {
        TNode tmp194_AST = null;
        tmp194_AST = (TNode)astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp194_AST);
        match(LPAREN);
        expr();
        astFactory.addASTChild(currentAST, returnAST);
        TNode tmp195_AST = null;
        tmp195_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp195_AST);
        match(RPAREN);
        if ( inputState.guessing==0 ) {
          primaryExpr_AST = (TNode)currentAST.root;
          primaryExpr_AST.setType(NExpressionGroup);
        }
        primaryExpr_AST = (TNode)currentAST.root;
      }
    else {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = primaryExpr_AST;
  }
 
  protected final void charConst() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode charConst_AST = null;
   
    TNode tmp196_AST = null;
    tmp196_AST = (TNode)astFactory.create(LT(1));
    astFactory.addASTChild(currentAST, tmp196_AST);
    match(CharLiteral);
    charConst_AST = (TNode)currentAST.root;
    returnAST = charConst_AST;
  }
 
  public final void storageClassSpecifier() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode storageClassSpecifier_AST = null;
   
    switch ( LA(1)) {
    case LITERAL_auto:
    {
      TNode tmp197_AST = null;
      tmp197_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp197_AST);
      match(LITERAL_auto);
      storageClassSpecifier_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_register:
    {
      TNode tmp198_AST = null;
      tmp198_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp198_AST);
      match(LITERAL_register);
      storageClassSpecifier_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_typedef:
    {
      TNode tmp199_AST = null;
      tmp199_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp199_AST);
      match(LITERAL_typedef);
      storageClassSpecifier_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_extern:
    case LITERAL_static:
    case LITERAL_inline:
    {
      functionStorageClassSpecifier();
      astFactory.addASTChild(currentAST, returnAST);
      storageClassSpecifier_AST = (TNode)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = storageClassSpecifier_AST;
  }
 
  public final void typeQualifier() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode typeQualifier_AST = null;
   
    switch ( LA(1)) {
    case LITERAL_const:
    {
      TNode tmp200_AST = null;
      tmp200_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp200_AST);
      match(LITERAL_const);
      typeQualifier_AST = (TNode)currentAST.root;
      break;
    }
    case LITERAL_volatile:
    {
      TNode tmp201_AST = null;
      tmp201_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp201_AST);
      match(LITERAL_volatile);
      typeQualifier_AST = (TNode)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = typeQualifier_AST;
  }
 
  public final void assignOperator() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode assignOperator_AST = null;
   
    switch ( LA(1)) {
    case ASSIGN:
    {
      TNode tmp202_AST = null;
      tmp202_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp202_AST);
      match(ASSIGN);
      assignOperator_AST = (TNode)currentAST.root;
      break;
    }
    case DIV_ASSIGN:
    {
      TNode tmp203_AST = null;
      tmp203_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp203_AST);
      match(DIV_ASSIGN);
      assignOperator_AST = (TNode)currentAST.root;
      break;
    }
    case PLUS_ASSIGN:
    {
      TNode tmp204_AST = null;
      tmp204_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp204_AST);
      match(PLUS_ASSIGN);
      assignOperator_AST = (TNode)currentAST.root;
      break;
    }
    case MINUS_ASSIGN:
    {
      TNode tmp205_AST = null;
      tmp205_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp205_AST);
      match(MINUS_ASSIGN);
      assignOperator_AST = (TNode)currentAST.root;
      break;
    }
    case STAR_ASSIGN:
    {
      TNode tmp206_AST = null;
      tmp206_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp206_AST);
      match(STAR_ASSIGN);
      assignOperator_AST = (TNode)currentAST.root;
      break;
    }
    case MOD_ASSIGN:
    {
      TNode tmp207_AST = null;
      tmp207_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp207_AST);
      match(MOD_ASSIGN);
      assignOperator_AST = (TNode)currentAST.root;
      break;
    }
    case RSHIFT_ASSIGN:
    {
      TNode tmp208_AST = null;
      tmp208_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp208_AST);
      match(RSHIFT_ASSIGN);
      assignOperator_AST = (TNode)currentAST.root;
      break;
    }
    case LSHIFT_ASSIGN:
    {
      TNode tmp209_AST = null;
      tmp209_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp209_AST);
      match(LSHIFT_ASSIGN);
      assignOperator_AST = (TNode)currentAST.root;
      break;
    }
    case BAND_ASSIGN:
    {
      TNode tmp210_AST = null;
      tmp210_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp210_AST);
      match(BAND_ASSIGN);
      assignOperator_AST = (TNode)currentAST.root;
      break;
    }
    case BOR_ASSIGN:
    {
      TNode tmp211_AST = null;
      tmp211_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp211_AST);
      match(BOR_ASSIGN);
      assignOperator_AST = (TNode)currentAST.root;
      break;
    }
    case BXOR_ASSIGN:
    {
      TNode tmp212_AST = null;
      tmp212_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp212_AST);
      match(BXOR_ASSIGN);
      assignOperator_AST = (TNode)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = assignOperator_AST;
  }
 
  public final void logicalAndExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode logicalAndExpr_AST = null;
   
    inclusiveOrExpr();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop271:
    do {
      if ((LA(1)==LAND)) {
        TNode tmp213_AST = null;
        tmp213_AST = (TNode)astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp213_AST);
        match(LAND);
        inclusiveOrExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop271;
      }
     
    } while (true);
    }
    logicalAndExpr_AST = (TNode)currentAST.root;
    returnAST = logicalAndExpr_AST;
  }
 
  public final void inclusiveOrExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode inclusiveOrExpr_AST = null;
   
    exclusiveOrExpr();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop274:
    do {
      if ((LA(1)==BOR)) {
        TNode tmp214_AST = null;
        tmp214_AST = (TNode)astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp214_AST);
        match(BOR);
        exclusiveOrExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop274;
      }
     
    } while (true);
    }
    inclusiveOrExpr_AST = (TNode)currentAST.root;
    returnAST = inclusiveOrExpr_AST;
  }
 
  public final void exclusiveOrExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode exclusiveOrExpr_AST = null;
   
    bitAndExpr();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop277:
    do {
      if ((LA(1)==BXOR)) {
        TNode tmp215_AST = null;
        tmp215_AST = (TNode)astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp215_AST);
        match(BXOR);
        bitAndExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop277;
      }
     
    } while (true);
    }
    exclusiveOrExpr_AST = (TNode)currentAST.root;
    returnAST = exclusiveOrExpr_AST;
  }
 
  public final void bitAndExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode bitAndExpr_AST = null;
   
    equalityExpr();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop280:
    do {
      if ((LA(1)==BAND)) {
        TNode tmp216_AST = null;
        tmp216_AST = (TNode)astFactory.create(LT(1));
        astFactory.makeASTRoot(currentAST, tmp216_AST);
        match(BAND);
        equalityExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop280;
      }
     
    } while (true);
    }
    bitAndExpr_AST = (TNode)currentAST.root;
    returnAST = bitAndExpr_AST;
  }
 
  public final void equalityExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode equalityExpr_AST = null;
   
    relationalExpr();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop284:
    do {
      if ((LA(1)==EQUAL||LA(1)==NOT_EQUAL)) {
        {
        switch ( LA(1)) {
        case EQUAL:
        {
          TNode tmp217_AST = null;
          tmp217_AST = (TNode)astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp217_AST);
          match(EQUAL);
          break;
        }
        case NOT_EQUAL:
        {
          TNode tmp218_AST = null;
          tmp218_AST = (TNode)astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp218_AST);
          match(NOT_EQUAL);
          break;
        }
        default:
        {
          throw new NoViableAltException(LT(1), getFilename());
        }
        }
        }
        relationalExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop284;
      }
     
    } while (true);
    }
    equalityExpr_AST = (TNode)currentAST.root;
    returnAST = equalityExpr_AST;
  }
 
  public final void relationalExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode relationalExpr_AST = null;
   
    shiftExpr();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop288:
    do {
      if (((LA(1) >= LT && LA(1) <= GTE))) {
        {
        switch ( LA(1)) {
        case LT:
        {
          TNode tmp219_AST = null;
          tmp219_AST = (TNode)astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp219_AST);
          match(LT);
          break;
        }
        case LTE:
        {
          TNode tmp220_AST = null;
          tmp220_AST = (TNode)astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp220_AST);
          match(LTE);
          break;
        }
        case GT:
        {
          TNode tmp221_AST = null;
          tmp221_AST = (TNode)astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp221_AST);
          match(GT);
          break;
        }
        case GTE:
        {
          TNode tmp222_AST = null;
          tmp222_AST = (TNode)astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp222_AST);
          match(GTE);
          break;
        }
        default:
        {
          throw new NoViableAltException(LT(1), getFilename());
        }
        }
        }
        shiftExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop288;
      }
     
    } while (true);
    }
    relationalExpr_AST = (TNode)currentAST.root;
    returnAST = relationalExpr_AST;
  }
 
  public final void shiftExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode shiftExpr_AST = null;
   
    additiveExpr();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop292:
    do {
      if ((LA(1)==LSHIFT||LA(1)==RSHIFT)) {
        {
        switch ( LA(1)) {
        case LSHIFT:
        {
          TNode tmp223_AST = null;
          tmp223_AST = (TNode)astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp223_AST);
          match(LSHIFT);
          break;
        }
        case RSHIFT:
        {
          TNode tmp224_AST = null;
          tmp224_AST = (TNode)astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp224_AST);
          match(RSHIFT);
          break;
        }
        default:
        {
          throw new NoViableAltException(LT(1), getFilename());
        }
        }
        }
        additiveExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop292;
      }
     
    } while (true);
    }
    shiftExpr_AST = (TNode)currentAST.root;
    returnAST = shiftExpr_AST;
  }
 
  public final void additiveExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode additiveExpr_AST = null;
   
    multExpr();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop296:
    do {
      if ((LA(1)==PLUS||LA(1)==MINUS)) {
        {
        switch ( LA(1)) {
        case PLUS:
        {
          TNode tmp225_AST = null;
          tmp225_AST = (TNode)astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp225_AST);
          match(PLUS);
          break;
        }
        case MINUS:
        {
          TNode tmp226_AST = null;
          tmp226_AST = (TNode)astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp226_AST);
          match(MINUS);
          break;
        }
        default:
        {
          throw new NoViableAltException(LT(1), getFilename());
        }
        }
        }
        multExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop296;
      }
     
    } while (true);
    }
    additiveExpr_AST = (TNode)currentAST.root;
    returnAST = additiveExpr_AST;
  }
 
  public final void multExpr() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode multExpr_AST = null;
   
    castExpr();
    astFactory.addASTChild(currentAST, returnAST);
    {
    _loop300:
    do {
      if ((_tokenSet_19.member(LA(1)))) {
        {
        switch ( LA(1)) {
        case STAR:
        {
          TNode tmp227_AST = null;
          tmp227_AST = (TNode)astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp227_AST);
          match(STAR);
          break;
        }
        case DIV:
        {
          TNode tmp228_AST = null;
          tmp228_AST = (TNode)astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp228_AST);
          match(DIV);
          break;
        }
        case MOD:
        {
          TNode tmp229_AST = null;
          tmp229_AST = (TNode)astFactory.create(LT(1));
          astFactory.makeASTRoot(currentAST, tmp229_AST);
          match(MOD);
          break;
        }
        default:
        {
          throw new NoViableAltException(LT(1), getFilename());
        }
        }
        }
        castExpr();
        astFactory.addASTChild(currentAST, returnAST);
      }
      else {
        break _loop300;
      }
     
    } while (true);
    }
    multExpr_AST = (TNode)currentAST.root;
    returnAST = multExpr_AST;
  }
 
  public final void postfixSuffix() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode postfixSuffix_AST = null;
   
    {
    int _cnt307=0;
    _loop307:
    do {
      switch ( LA(1)) {
      case PTR:
      {
        TNode tmp230_AST = null;
        tmp230_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp230_AST);
        match(PTR);
        TNode tmp231_AST = null;
        tmp231_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp231_AST);
        match(ID);
        break;
      }
      case DOT:
      {
        TNode tmp232_AST = null;
        tmp232_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp232_AST);
        match(DOT);
        TNode tmp233_AST = null;
        tmp233_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp233_AST);
        match(ID);
        break;
      }
      case LPAREN:
      {
        functionCall();
        astFactory.addASTChild(currentAST, returnAST);
        break;
      }
      case LBRACKET:
      {
        TNode tmp234_AST = null;
        tmp234_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp234_AST);
        match(LBRACKET);
        expr();
        astFactory.addASTChild(currentAST, returnAST);
        TNode tmp235_AST = null;
        tmp235_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp235_AST);
        match(RBRACKET);
        break;
      }
      case INC:
      {
        TNode tmp236_AST = null;
        tmp236_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp236_AST);
        match(INC);
        break;
      }
      case DEC:
      {
        TNode tmp237_AST = null;
        tmp237_AST = (TNode)astFactory.create(LT(1));
        astFactory.addASTChild(currentAST, tmp237_AST);
        match(DEC);
        break;
      }
      default:
      {
        if ( _cnt307>=1 ) { break _loop307; } else {throw new NoViableAltException(LT(1), getFilename());}
      }
      }
      _cnt307++;
    } while (true);
    }
    postfixSuffix_AST = (TNode)currentAST.root;
    returnAST = postfixSuffix_AST;
  }
 
  protected final void intConst() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode intConst_AST = null;
   
    switch ( LA(1)) {
    case IntOctalConst:
    {
      TNode tmp238_AST = null;
      tmp238_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp238_AST);
      match(IntOctalConst);
      intConst_AST = (TNode)currentAST.root;
      break;
    }
    case LongOctalConst:
    {
      TNode tmp239_AST = null;
      tmp239_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp239_AST);
      match(LongOctalConst);
      intConst_AST = (TNode)currentAST.root;
      break;
    }
    case UnsignedOctalConst:
    {
      TNode tmp240_AST = null;
      tmp240_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp240_AST);
      match(UnsignedOctalConst);
      intConst_AST = (TNode)currentAST.root;
      break;
    }
    case IntIntConst:
    {
      TNode tmp241_AST = null;
      tmp241_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp241_AST);
      match(IntIntConst);
      intConst_AST = (TNode)currentAST.root;
      break;
    }
    case LongIntConst:
    {
      TNode tmp242_AST = null;
      tmp242_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp242_AST);
      match(LongIntConst);
      intConst_AST = (TNode)currentAST.root;
      break;
    }
    case UnsignedIntConst:
    {
      TNode tmp243_AST = null;
      tmp243_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp243_AST);
      match(UnsignedIntConst);
      intConst_AST = (TNode)currentAST.root;
      break;
    }
    case IntHexConst:
    {
      TNode tmp244_AST = null;
      tmp244_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp244_AST);
      match(IntHexConst);
      intConst_AST = (TNode)currentAST.root;
      break;
    }
    case LongHexConst:
    {
      TNode tmp245_AST = null;
      tmp245_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp245_AST);
      match(LongHexConst);
      intConst_AST = (TNode)currentAST.root;
      break;
    }
    case UnsignedHexConst:
    {
      TNode tmp246_AST = null;
      tmp246_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp246_AST);
      match(UnsignedHexConst);
      intConst_AST = (TNode)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = intConst_AST;
  }
 
  protected final void floatConst() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode floatConst_AST = null;
   
    switch ( LA(1)) {
    case FloatDoubleConst:
    {
      TNode tmp247_AST = null;
      tmp247_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp247_AST);
      match(FloatDoubleConst);
      floatConst_AST = (TNode)currentAST.root;
      break;
    }
    case DoubleDoubleConst:
    {
      TNode tmp248_AST = null;
      tmp248_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp248_AST);
      match(DoubleDoubleConst);
      floatConst_AST = (TNode)currentAST.root;
      break;
    }
    case LongDoubleConst:
    {
      TNode tmp249_AST = null;
      tmp249_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp249_AST);
      match(LongDoubleConst);
      floatConst_AST = (TNode)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = floatConst_AST;
  }
 
  public final void dummy() throws RecognitionException, TokenStreamException {
   
    returnAST = null;
    ASTPair currentAST = new ASTPair();
    TNode dummy_AST = null;
   
    switch ( LA(1)) {
    case NTypedefName:
    {
      TNode tmp250_AST = null;
      tmp250_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp250_AST);
      match(NTypedefName);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NInitDecl:
    {
      TNode tmp251_AST = null;
      tmp251_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp251_AST);
      match(NInitDecl);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NDeclarator:
    {
      TNode tmp252_AST = null;
      tmp252_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp252_AST);
      match(NDeclarator);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NStructDeclarator:
    {
      TNode tmp253_AST = null;
      tmp253_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp253_AST);
      match(NStructDeclarator);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NDeclaration:
    {
      TNode tmp254_AST = null;
      tmp254_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp254_AST);
      match(NDeclaration);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NCast:
    {
      TNode tmp255_AST = null;
      tmp255_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp255_AST);
      match(NCast);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NPointerGroup:
    {
      TNode tmp256_AST = null;
      tmp256_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp256_AST);
      match(NPointerGroup);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NExpressionGroup:
    {
      TNode tmp257_AST = null;
      tmp257_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp257_AST);
      match(NExpressionGroup);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NFunctionCallArgs:
    {
      TNode tmp258_AST = null;
      tmp258_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp258_AST);
      match(NFunctionCallArgs);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NNonemptyAbstractDeclarator:
    {
      TNode tmp259_AST = null;
      tmp259_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp259_AST);
      match(NNonemptyAbstractDeclarator);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NInitializer:
    {
      TNode tmp260_AST = null;
      tmp260_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp260_AST);
      match(NInitializer);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NStatementExpr:
    {
      TNode tmp261_AST = null;
      tmp261_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp261_AST);
      match(NStatementExpr);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NEmptyExpression:
    {
      TNode tmp262_AST = null;
      tmp262_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp262_AST);
      match(NEmptyExpression);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NParameterTypeList:
    {
      TNode tmp263_AST = null;
      tmp263_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp263_AST);
      match(NParameterTypeList);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NFunctionDef:
    {
      TNode tmp264_AST = null;
      tmp264_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp264_AST);
      match(NFunctionDef);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NCompoundStatement:
    {
      TNode tmp265_AST = null;
      tmp265_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp265_AST);
      match(NCompoundStatement);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NParameterDeclaration:
    {
      TNode tmp266_AST = null;
      tmp266_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp266_AST);
      match(NParameterDeclaration);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NCommaExpr:
    {
      TNode tmp267_AST = null;
      tmp267_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp267_AST);
      match(NCommaExpr);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NUnaryExpr:
    {
      TNode tmp268_AST = null;
      tmp268_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp268_AST);
      match(NUnaryExpr);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NLabel:
    {
      TNode tmp269_AST = null;
      tmp269_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp269_AST);
      match(NLabel);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NPostfixExpr:
    {
      TNode tmp270_AST = null;
      tmp270_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp270_AST);
      match(NPostfixExpr);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NRangeExpr:
    {
      TNode tmp271_AST = null;
      tmp271_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp271_AST);
      match(NRangeExpr);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NStringSeq:
    {
      TNode tmp272_AST = null;
      tmp272_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp272_AST);
      match(NStringSeq);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NInitializerElementLabel:
    {
      TNode tmp273_AST = null;
      tmp273_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp273_AST);
      match(NInitializerElementLabel);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NLcurlyInitializer:
    {
      TNode tmp274_AST = null;
      tmp274_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp274_AST);
      match(NLcurlyInitializer);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NAsmAttribute:
    {
      TNode tmp275_AST = null;
      tmp275_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp275_AST);
      match(NAsmAttribute);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NGnuAsmExpr:
    {
      TNode tmp276_AST = null;
      tmp276_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp276_AST);
      match(NGnuAsmExpr);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    case NTypeMissing:
    {
      TNode tmp277_AST = null;
      tmp277_AST = (TNode)astFactory.create(LT(1));
      astFactory.addASTChild(currentAST, tmp277_AST);
      match(NTypeMissing);
      dummy_AST = (TNode)currentAST.root;
      break;
    }
    default:
    {
      throw new NoViableAltException(LT(1), getFilename());
    }
    }
    returnAST = dummy_AST;
  }
 
 
  public static final String[] _tokenNames = {
    "<0>",
    "EOF",
    "<2>",
    "NULL_TREE_LOOKAHEAD",
    "\"typedef\"",
    "\"asm\"",
    "\"volatile\"",
    "LCURLY",
    "RCURLY",
    "SEMI",
    "\"struct\"",
    "\"union\"",
    "\"enum\"",
    "\"auto\"",
    "\"register\"",
    "\"extern\"",
    "\"static\"",
    "\"const\"",
    "\"void\"",
    "\"char\"",
    "\"short\"",
    "\"int\"",
    "\"long\"",
    "\"float\"",
    "\"double\"",
    "\"signed\"",
    "\"unsigned\"",
    "ID",
    "COMMA",
    "COLON",
    "ASSIGN",
    "STAR",
    "LPAREN",
    "RPAREN",
    "LBRACKET",
    "RBRACKET",
    "VARARGS",
    "\"while\"",
    "\"do\"",
    "\"for\"",
    "\"goto\"",
    "\"continue\"",
    "\"break\"",
    "\"return\"",
    "\"case\"",
    "\"default\"",
    "\"if\"",
    "\"else\"",
    "\"switch\"",
    "DIV_ASSIGN",
    "PLUS_ASSIGN",
    "MINUS_ASSIGN",
    "STAR_ASSIGN",
    "MOD_ASSIGN",
    "RSHIFT_ASSIGN",
    "LSHIFT_ASSIGN",
    "BAND_ASSIGN",
    "BOR_ASSIGN",
    "BXOR_ASSIGN",
    "QUESTION",
    "LOR",
    "LAND",
    "BOR",
    "BXOR",
    "BAND",
    "EQUAL",
    "NOT_EQUAL",
    "LT",
    "LTE",
    "GT",
    "GTE",
    "LSHIFT",
    "RSHIFT",
    "PLUS",
    "MINUS",
    "DIV",
    "MOD",
    "INC",
    "DEC",
    "\"sizeof\"",
    "BNOT",
    "LNOT",
    "PTR",
    "DOT",
    "CharLiteral",
    "StringLiteral",
    "IntOctalConst",
    "LongOctalConst",
    "UnsignedOctalConst",
    "IntIntConst",
    "LongIntConst",
    "UnsignedIntConst",
    "IntHexConst",
    "LongHexConst",
    "UnsignedHexConst",
    "FloatDoubleConst",
    "DoubleDoubleConst",
    "LongDoubleConst",
    "NTypedefName",
    "NInitDecl",
    "NDeclarator",
    "NStructDeclarator",
    "NDeclaration",
    "NCast",
    "NPointerGroup",
    "NExpressionGroup",
    "NFunctionCallArgs",
    "NNonemptyAbstractDeclarator",
    "NInitializer",
    "NStatementExpr",
    "NEmptyExpression",
    "NParameterTypeList",
    "NFunctionDef",
    "NCompoundStatement",
    "NParameterDeclaration",
    "NCommaExpr",
    "NUnaryExpr",
    "NLabel",
    "NPostfixExpr",
    "NRangeExpr",
    "NStringSeq",
    "NInitializerElementLabel",
    "NLcurlyInitializer",
    "NAsmAttribute",
    "NGnuAsmExpr",
    "NTypeMissing",
    "Vocabulary",
    "Whitespace",
    "Comment",
    "CPPComment",
    "a line directive",
    "Space",
    "LineDirective",
    "BadStringLiteral",
    "Escape",
    "Digit",
    "LongSuffix",
    "UnsignedSuffix",
    "FloatSuffix",
    "Exponent",
    "Number",
    "\"__label__\"",
    "\"inline\"",
    "\"byte\"",
    "\"boolean\"",
    "\"typeof\"",
    "\"__complex\"",
    "\"__attribute\"",
    "\"__alignof\"",
    "\"__real\"",
    "\"__imag\""
  };
 
  protected void buildTokenTypeASTClassMap() {
    tokenTypeToASTClassMap=null;
  };
 
  private static final long[] mk_tokenSet_0() {
    long[] data = { 6710886000L, 0L, 507904L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_0 = new BitSet(mk_tokenSet_0());
  private static final long[] mk_tokenSet_1() {
    long[] data = { 268434512L, 0L, 507904L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_1 = new BitSet(mk_tokenSet_1());
  private static final long[] mk_tokenSet_2() {
    long[] data = { 6710860864L, 0L, 507904L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_2 = new BitSet(mk_tokenSet_2());
  private static final long[] mk_tokenSet_3() {
    long[] data = { 6576668672L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_3 = new BitSet(mk_tokenSet_3());
  private static final long[] mk_tokenSet_4() {
    long[] data = { 268409920L, 0L, 507904L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_4 = new BitSet(mk_tokenSet_4());
  private static final long[] mk_tokenSet_5() {
    long[] data = { 268180480L, 0L, 491520L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_5 = new BitSet(mk_tokenSet_5());
  private static final long[] mk_tokenSet_6() {
    long[] data = { 2305843032970231968L, 3925505L, 7344128L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_6 = new BitSet(mk_tokenSet_6());
  private static final long[] mk_tokenSet_7() {
    long[] data = { 17314086912L, 524288L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_7 = new BitSet(mk_tokenSet_7());
  private static final long[] mk_tokenSet_8() {
    long[] data = { 2305843015790362784L, 3401217L, 7344128L, 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 = { 2305843015790362656L, 3401217L, 7344128L, 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 = { 8992587776L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_10 = new BitSet(mk_tokenSet_10());
  private static final long[] mk_tokenSet_11() {
    long[] data = { 23622320128L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_11 = new BitSet(mk_tokenSet_11());
  private static final long[] mk_tokenSet_12() {
    long[] data = { 8858370560L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_12 = new BitSet(mk_tokenSet_12());
  private static final long[] mk_tokenSet_13() {
    long[] data = { 268311616L, 0L, 491520L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_13 = new BitSet(mk_tokenSet_13());
  private static final long[] mk_tokenSet_14() {
    long[] data = { -13153337360L, -1L, 8388607L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_14 = new BitSet(mk_tokenSet_14());
  private static final long[] mk_tokenSet_15() {
    long[] data = { 268434512L, 0L, 516096L, 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 = { 6710869056L, 0L, 507904L, 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 = { 2306265090816475808L, 3401217L, 7344128L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_17 = new BitSet(mk_tokenSet_17());
  private static final long[] mk_tokenSet_18() {
    long[] data = { 2306405828304831392L, 3401217L, 7344128L, 0L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_18 = new BitSet(mk_tokenSet_18());
  private static final long[] mk_tokenSet_19() {
    long[] data = { 2147483648L, 6144L, 0L, 0L};
    return data;
  }
  public static final BitSet _tokenSet_19 = new BitSet(mk_tokenSet_19());
 
  }
TOP

Related Classes of processing.app.preproc.WParser

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.