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

com.thoughtworks.qdox.parser.impl.Parser Maven / Gradle / Ivy

Go to download

QDox is a high speed, small footprint parser for extracting class/interface/method definitions from source files complete with JavaDoc @tags. It is designed to be used by active code generators or documentation tools.

The newest version!
//### This file created by BYACC 1.8(/Java extension  1.15)
//### Java capabilities added 7 Jan 97, Bob Jamison
//### Updated : 27 Nov 97  -- Bob Jamison, Joe Nieten
//###           01 Jan 98  -- Bob Jamison -- fixed generic semantic constructor
//###           01 Jun 99  -- Bob Jamison -- added Runnable support
//###           06 Aug 00  -- Bob Jamison -- made state variables class-global
//###           03 Jan 01  -- Bob Jamison -- improved flags, tracing
//###           16 May 01  -- Bob Jamison -- added custom stack sizing
//###           04 Mar 02  -- Yuval Oren  -- improved java performance, added options
//###           14 Mar 02  -- Tomas Hurka -- -d support, static initializer workaround
//### Please send bug reports to [email protected]
//### static char yysccsid[] = "@(#)yaccpar	1.8 (Berkeley) 01/20/90";



package com.thoughtworks.qdox.parser.impl;



//#line 2 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

import com.thoughtworks.qdox.builder.Builder;
import com.thoughtworks.qdox.parser.*;
import com.thoughtworks.qdox.parser.expression.*;
import com.thoughtworks.qdox.parser.structs.*;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;
//#line 45 "Parser.java"




public class Parser
             implements CommentHandler
{

boolean yydebug;        //do I want debug output?
int yynerrs;            //number of errors so far
int yyerrflag;          //was there an error?
int yychar;             //the current working character

//########## MESSAGES ##########
//###############################################################
// method: debug
//###############################################################
void debug(String msg)
{
  if (yydebug)
    System.out.println(msg);
}

//########## STATE STACK ##########
final static int YYSTACKSIZE = 500;  //maximum stack size
int statestk[] = new int[YYSTACKSIZE]; //state stack
int stateptr;
int stateptrmax;                     //highest index of stackptr
int statemax;                        //state when highest index reached
//###############################################################
// methods: state stack push,pop,drop,peek
//###############################################################
final void state_push(int state)
{
  try {
		stateptr++;
		statestk[stateptr]=state;
	 }
	 catch (ArrayIndexOutOfBoundsException e) {
     int oldsize = statestk.length;
     int newsize = oldsize * 2;
     int[] newstack = new int[newsize];
     System.arraycopy(statestk,0,newstack,0,oldsize);
     statestk = newstack;
     statestk[stateptr]=state;
  }
}
final int state_pop()
{
  return statestk[stateptr--];
}
final void state_drop(int cnt)
{
  stateptr -= cnt; 
}
final int state_peek(int relative)
{
  return statestk[stateptr-relative];
}
//###############################################################
// method: init_stacks : allocate and prepare stacks
//###############################################################
final boolean init_stacks()
{
  stateptr = -1;
  val_init();
  return true;
}
//###############################################################
// method: dump_stacks : show n levels of the stacks
//###############################################################
void dump_stacks(int count)
{
int i;
  System.out.println("=index==state====value=     s:"+stateptr+"  v:"+valptr);
  for (i=0;i moduleTargets = new LinkedList();
private List typeParams = new LinkedList(); //for both JavaClass and JavaMethod
private LinkedList annotationStack = new LinkedList(); // Use LinkedList instead of Stack because it is unsynchronized 
private List> annoValueListStack = new LinkedList>(); // Use LinkedList instead of Stack because it is unsynchronized
private List annoValueList = null;
private LinkedList recordHeaderStack = new LinkedList();
private CompactConstructorDef compactConstructor = new CompactConstructorDef();
private FieldDef param = new FieldDef();
private java.util.Set modifiers = new java.util.LinkedHashSet();
private TypeDef fieldType;
private TypeVariableDef typeVariable;
private Stack typeStack = new Stack();
private List typeList = new LinkedList();
private int line;
private int column;
private boolean debugLexer;

private void appendToBuffer(String word) {
    if (textBuffer.length() > 0) {
        char lastChar = textBuffer.charAt(textBuffer.length() - 1);
        if (!Character.isWhitespace(lastChar)) {
            textBuffer.append(' ');
        }
    }
    textBuffer.append(word);
}

private String buffer() {
    String result = textBuffer.toString().trim();
    textBuffer.setLength(0);
    return result;
}

public Parser( JavaLexer lexer, Builder builder ) 
{
    lexer.addCommentHandler( this );
    this.lexer = lexer;
    this.builder = builder;
}

public void setDebugParser(boolean debug) {
    yydebug = debug;
}

public void setDebugLexer(boolean debug) {
    debugLexer = debug;
}

/**
 * Parse file. Return true if successful.
 */
public boolean parse() {
    return yyparse() == 0;
}

private int yylex() {
    try {
        final int result = lexer.lex();
        yylval = new Value();
        yylval.sval = lexer.text();
        if (debugLexer) {
            System.err.println("Token: " + yyname[result] + " \"" + yylval.sval + "\"");
        }
        return result;
    }
    catch(IOException e) {
        return 0;
    }
}

private void yyerror(String msg) {
    throw new ParseException(msg, lexer.getLine(), lexer.getColumn());
}

private class Value {
    Object oval;
    String sval;
    int ival;
    boolean bval;
    TypeDef type;
    ElemValueDef annoval;
}


private void makeField(TypeDef field, String body, boolean enumConstant) {
    fd = new FieldDef( field.getName() );
    fd.setName(field.getName());
    fd.setLineNumber(lexer.getLine());
    fd.getModifiers().addAll(modifiers); 
    fd.setType( fieldType );
    fd.setDimensions(field.getDimensions());
    fd.setEnumConstant(enumConstant);
    fd.setBody(body);
}

public void onComment( String comment, int line, int column ) {
  DefaultJavaCommentLexer commentLexer  = new DefaultJavaCommentLexer( new java.io.StringReader( comment ) );
  commentLexer.setLineOffset( line );
  commentLexer.setColumnOffset( column );
  DefaultJavaCommentParser commentParser = new DefaultJavaCommentParser( commentLexer, builder);
  commentParser.setDebugLexer( this.debugLexer );
  commentParser.setDebugParser( this.yydebug );
  commentParser.parse();
}
//#line 1994 "Parser.java"
//###############################################################
// method: yylexdebug : check lexer state
//###############################################################
void yylexdebug(int state,int ch)
{
String s=null;
  if (ch < 0) ch=0;
  if (ch <= YYMAXTOKEN) //check index bounds
     s = yyname[ch];    //now get it
  if (s==null)
    s = "illegal-symbol";
  debug("state "+state+", reading "+ch+" ("+s+")");
}





//The following are now global, to aid in error reporting
int yyn;       //next next thing to do
int yym;       //
int yystate;   //current parsing state from state table
String yys;    //current token string


//###############################################################
// method: yyparse : parse input and execute indicated items
//###############################################################
int yyparse()
{
boolean doaction;
  init_stacks();
  yynerrs = 0;
  yyerrflag = 0;
  yychar = -1;          //impossible char forces a read
  yystate=0;            //initial state
  state_push(yystate);  //save it
  val_push(yylval);     //save empty value
  while (true) //until parsing is done, either correctly, or w/error
    {
    doaction=true;
    if (yydebug) debug("loop"); 
    //#### NEXT ACTION (from reduction table)
    for (yyn=yydefred[yystate];yyn==0;yyn=yydefred[yystate])
      {
      if (yydebug) debug("yyn:"+yyn+"  state:"+yystate+"  yychar:"+yychar);
      if (yychar < 0)      //we want a char?
        {
        yychar = yylex();  //get next token
        if (yydebug) debug(" next yychar:"+yychar);
        //#### ERROR CHECK ####
        if (yychar < 0)    //it it didn't work/error
          {
          yychar = 0;      //change it to default string (no -1!)
          if (yydebug)
            yylexdebug(yystate,yychar);
          }
        }//yychar<0
      yyn = yysindex[yystate];  //get amount to shift by (shift index)
      if ((yyn != 0) && (yyn += yychar) >= 0 &&
          yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
        {
        if (yydebug)
          debug("state "+yystate+", shifting to state "+yytable[yyn]);
        //#### NEXT STATE ####
        yystate = yytable[yyn];//we are in a new state
        state_push(yystate);   //save it
        val_push(yylval);      //push our lval as the input for next rule
        yychar = -1;           //since we have 'eaten' a token, say we need another
        if (yyerrflag > 0)     //have we recovered an error?
           --yyerrflag;        //give ourselves credit
        doaction=false;        //but don't process yet
        break;   //quit the yyn=0 loop
        }

    yyn = yyrindex[yystate];  //reduce
    if ((yyn !=0 ) && (yyn += yychar) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
      {   //we reduced!
      if (yydebug) debug("reduce");
      yyn = yytable[yyn];
      doaction=true; //get ready to execute
      break;         //drop down to actions
      }
    else //ERROR RECOVERY
      {
      if (yyerrflag==0)
        {
        yyerror("syntax error");
        yynerrs++;
        }
      if (yyerrflag < 3) //low error count?
        {
        yyerrflag = 3;
        while (true)   //do until break
          {
          if (stateptr<0)   //check for under & overflow here
            {
            yyerror("stack underflow. aborting...");  //note lower case 's'
            return 1;
            }
          yyn = yysindex[state_peek(0)];
          if ((yyn != 0) && (yyn += YYERRCODE) >= 0 &&
                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
            {
            if (yydebug)
              debug("state "+state_peek(0)+", error recovery shifting to state "+yytable[yyn]+" ");
            yystate = yytable[yyn];
            state_push(yystate);
            val_push(yylval);
            doaction=false;
            break;
            }
          else
            {
            if (yydebug)
              debug("error recovery discarding state "+state_peek(0)+" ");
            if (stateptr<0)   //check for under & overflow here
              {
              yyerror("Stack underflow. aborting...");  //capital 'S'
              return 1;
              }
            state_pop();
            val_pop();
            }
          }
        }
      else            //discard this token
        {
        if (yychar == 0)
          return 1; //yyabort
        if (yydebug)
          {
          yys = null;
          if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
          if (yys == null) yys = "illegal-symbol";
          debug("state "+yystate+", error recovery discards token "+yychar+" ("+yys+")");
          }
        yychar = -1;  //read another
        }
      }//end error recovery
    }//yyn=0 loop
    if (!doaction)   //any reason not to proceed?
      continue;      //skip action
    yym = yylen[yyn];          //get count of terminals on rhs
    if (yydebug)
      debug("state "+yystate+", reducing "+yym+" by rule "+yyn+" ("+yyrule[yyn]+")");
    if (yym>0)                 //if count of rhs not 'nil'
      yyval = val_peek(yym-1); //get current semantic value
    yyval = dup_yyval(yyval); //duplicate yyval if ParserVal is used as semantic value
    switch(yyn)
      {
//########## USER-SUPPLIED ACTIONS ##########
case 8:
//#line 124 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                     ModuleDef module = new ModuleDef(val_peek(0).sval);
                     module.setOpen(true);
                     builder.setModule(module);
                   }
break;
case 10:
//#line 131 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                     builder.setModule(new ModuleDef(val_peek(0).sval));
                   }
break;
case 13:
//#line 142 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                  moduleTargets.add(val_peek(0).sval);
                }
break;
case 14:
//#line 145 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                  moduleTargets.add(val_peek(0).sval);
                }
break;
case 15:
//#line 157 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   ModuleDef.RequiresDef req = new ModuleDef.RequiresDef(val_peek(1).sval, modifiers);
                   modifiers = new java.util.LinkedHashSet();
                   req.setLineNumber(line);
                   builder.addRequires(req);
                 }
break;
case 16:
//#line 164 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   exp = new ModuleDef.ExportsDef(val_peek(0).sval);
                   exp.setLineNumber(line);
                 }
break;
case 17:
//#line 169 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   exp.getTargets().addAll(moduleTargets);
                   moduleTargets = new LinkedList();
                   builder.addExports(exp);
                 }
break;
case 18:
//#line 175 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   opn = new ModuleDef.OpensDef(val_peek(0).sval);
                   opn.setLineNumber(line);
                 }
break;
case 19:
//#line 180 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   opn.getTargets().addAll(moduleTargets);
                   moduleTargets = new LinkedList();
                   builder.addOpens(opn);
                 }
break;
case 20:
//#line 185 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   ModuleDef.UsesDef uss = new ModuleDef.UsesDef(val_peek(1).type);
                   uss.setLineNumber(line);
                   builder.addUses(uss);
                 }
break;
case 21:
//#line 191 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   prv = new ModuleDef.ProvidesDef(val_peek(0).type);
                   prv.setLineNumber(line);
                 }
break;
case 22:
//#line 196 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   prv.getImplementations().addAll(typeList);
                   builder.addProvides(prv);
                 }
break;
case 25:
//#line 205 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ modifiers.add("transitive"); }
break;
case 26:
//#line 206 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ modifiers.add("static"); }
break;
case 31:
//#line 221 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                      line = lexer.getLine(); 
                    }
break;
case 32:
//#line 225 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                      builder.addPackage(new PackageDef(val_peek(1).sval, line)); 
                    }
break;
case 37:
//#line 244 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                               builder.addImport( val_peek(1).sval ); 
                             }
break;
case 38:
//#line 252 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                                 builder.addImport( val_peek(3).sval + ".*" ); 
                               }
break;
case 39:
//#line 260 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                                 builder.addImport( "static " + val_peek(1).sval);
                               }
break;
case 40:
//#line 268 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                                   builder.addImport( "static " + val_peek(3).sval + ".*" ); 
                                 }
break;
case 47:
//#line 298 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                          cls.setType(ClassDef.CLASS);
                          cls.setLineNumber(lexer.getLine());
                          cls.getModifiers().addAll(modifiers); modifiers.clear(); 
                          cls.setName( val_peek(0).sval );
                        }
break;
case 48:
//#line 305 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                          cls.setTypeParameters(typeParams);
                          builder.beginClass(cls); 
                          cls = new ClassDef(); 
                        }
break;
case 49:
//#line 311 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                          builder.endClass(); 
                        }
break;
case 50:
//#line 319 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                  typeParams = new LinkedList(); 
                }
break;
case 57:
//#line 338 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                  cls.getExtends().add(val_peek(0).type);
                }
break;
case 59:
//#line 347 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                       cls.getImplements().addAll( typeList );
                       typeList.clear();
                     }
break;
case 70:
//#line 385 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                             line = lexer.getLine(); 
                           }
break;
case 77:
//#line 407 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                    fieldType = val_peek(1).type;
                    /* we're doing some lexer magic: lexer.getCodeBody() contains [= VariableInitializer]*/
                    makeField(val_peek(0).type, lexer.getCodeBody(), false);
                    builder.beginField(fd);
                    builder.endField();
                  }
break;
case 78:
//#line 415 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                    modifiers.clear();
                  }
break;
case 80:
//#line 422 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
               line = lexer.getLine();
             }
break;
case 81:
//#line 426 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
               /* we're doing some lexer magic: lexer.getCodeBody() contains [= VariableInitializer]*/
               makeField(val_peek(0).type, lexer.getCodeBody(), false);
               builder.beginField(fd);
               builder.endField();
             }
break;
case 82:
//#line 437 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                        yyval.type = new TypeDef(val_peek(1).sval,val_peek(0).ival);
                      }
break;
case 83:
//#line 445 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                     mth.setBody(val_peek(0).sval);
                     builder.endMethod(mth);
                     mth = new MethodDef();
                   }
break;
case 84:
//#line 466 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                builder.beginMethod();
                mth.setLineNumber(lexer.getLine());
                mth.getModifiers().addAll(modifiers); modifiers.clear();
                mth.setTypeParams(typeParams);
                mth.setReturnType(val_peek(1).type);
                mth.setName(val_peek(0).sval);
              }
break;
case 85:
//#line 475 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                mth.setDimensions(val_peek(1).ival);
              }
break;
case 86:
//#line 479 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                builder.beginMethod();
                mth.setLineNumber(lexer.getLine());
                mth.getModifiers().addAll(modifiers); modifiers.clear();
                mth.setTypeParams(typeParams);
                mth.setReturnType(val_peek(1).type);
                mth.setName(val_peek(0).sval);
              }
break;
case 87:
//#line 488 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                mth.setDimensions(val_peek(1).ival);
              }
break;
case 88:
//#line 492 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                builder.beginMethod();
                mth.setLineNumber(lexer.getLine());
                mth.getModifiers().addAll(modifiers); modifiers.clear();
                mth.setReturnType(val_peek(1).type);
                mth.setName(val_peek(0).sval);
              }
break;
case 89:
//#line 500 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                mth.setDimensions(val_peek(1).ival);
              }
break;
case 96:
//#line 526 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                    param.getModifiers().addAll(modifiers); modifiers.clear();
                    param.setType(val_peek(1).type);
                    param.setName(val_peek(0).type.getName());
                    param.setDimensions(val_peek(0).type.getDimensions());
                    param.setVarArgs(false);
                    builder.addParameter(param);
                    param = new FieldDef();
                 }
break;
case 97:
//#line 541 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                       param.getModifiers().addAll(modifiers); modifiers.clear();
                       param.setType(val_peek(2).type);
	                   param.setName(val_peek(0).type.getName());
                       param.setDimensions(val_peek(0).type.getDimensions());
                       param.setVarArgs(true);
                       builder.addParameter(param);
                       param = new FieldDef();
                     }
break;
case 101:
//#line 566 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                     mth.getExceptions().add(val_peek(0).type); 
                   }
break;
case 102:
//#line 570 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                     mth.getExceptions().add(val_peek(0).type);
                   }
break;
case 103:
//#line 579 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
              yyval.sval = lexer.getCodeBody();
            }
break;
case 104:
//#line 583 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
             yyval.sval = "";
           }
break;
case 105:
//#line 599 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                     InitDef def = new InitDef();
                     def.setStatic(modifiers.contains("static"));modifiers.clear();
                     def.setBlockContent(lexer.getCodeBody());
                     builder.addInitializer(def);
                   }
break;
case 106:
//#line 610 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                          builder.beginConstructor();
                          mth.setLineNumber(lexer.getLine());
                          mth.getModifiers().addAll(modifiers); modifiers.clear();
                          mth.setConstructor(true); 
                          mth.setName(val_peek(0).sval);
                        }
break;
case 107:
//#line 618 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                          mth.setBody(val_peek(0).sval);
                          builder.endConstructor(mth);
                          mth = new MethodDef(); 
                        }
break;
case 108:
//#line 624 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                          builder.beginConstructor();
                          mth.setLineNumber(lexer.getLine());
                          mth.setTypeParams(typeParams);
                          mth.getModifiers().addAll(modifiers); modifiers.clear();
                          mth.setConstructor(true); 
                          mth.setName(val_peek(0).sval);
                        }
break;
case 109:
//#line 633 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                          mth.setBody(lexer.getCodeBody());
                          builder.endConstructor(mth);
                          mth = new MethodDef(); 
                        }
break;
case 110:
//#line 654 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                   cls.setLineNumber(lexer.getLine());
                   cls.getModifiers().addAll(modifiers);
                   cls.setName( val_peek(0).sval );
                   cls.setType(ClassDef.ENUM);
                   builder.beginClass(cls);
                   cls = new ClassDef();
                   fieldType = new TypeDef(val_peek(0).sval, 0);
                 }
break;
case 112:
//#line 672 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
            builder.endClass();
            fieldType = null;
            modifiers.clear();
          }
break;
case 116:
//#line 693 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                TypeDef td = new TypeDef(val_peek(0).sval, 0);
                typeStack.push(td); 
                makeField( td, "", true );
                builder.beginField( fd );
              }
break;
case 117:
//#line 700 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                builder.endField();
                typeStack.pop();
              }
break;
case 120:
//#line 715 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                    cls.setLineNumber(lexer.getLine());
                    cls.getModifiers().addAll(modifiers);
                    cls.setName( val_peek(0).sval );
                    cls.setType(ClassDef.RECORD);
                  }
break;
case 121:
//#line 722 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                    cls.setTypeParameters(typeParams);
                    builder.beginClass(cls);
                  }
break;
case 122:
//#line 727 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                    builder.addImplements(cls.getImplements());
                    cls = new ClassDef();
                  }
break;
case 123:
//#line 732 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                    builder.endRecord(recordHeaderStack.removeFirst());
                  }
break;
case 124:
//#line 740 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                builder.beginConstructor();
                mth.setLineNumber(lexer.getLine());
                mth.setConstructor(true); 
                mth.setName(cls.getName());
                recordHeaderStack.addFirst(new RecordFieldsDef());
              }
break;
case 125:
//#line 748 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                builder.endConstructor(mth);
                mth = new MethodDef(); 
              }
break;
case 131:
//#line 768 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                  param.setType(val_peek(1).type);
                  param.setName(val_peek(0).sval);
                  param.setDimensions(0);
                  param.setVarArgs(false);
                  param.setLineNumber(lexer.getLine());
                  builder.addParameter(param);
                  recordHeaderStack.getFirst().addField(param);
                  param = new FieldDef();
                }
break;
case 133:
//#line 784 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                              param.setType(val_peek(2).type);
                              param.setName(val_peek(0).sval);
                              param.setDimensions(0);
                              param.setVarArgs(true);
                              param.setLineNumber(lexer.getLine());
                              builder.addParameter(param);
                              recordHeaderStack.getFirst().addField(param);
                              param = new FieldDef();
                            }
break;
case 138:
//#line 808 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                            line = lexer.getLine(); 
                          }
break;
case 140:
//#line 817 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                                compactConstructor.setModifiers(modifiers); modifiers.clear();
                                compactConstructor.setBody(val_peek(0).sval);
                                compactConstructor.setLineNumber(lexer.getLine());
                                builder.addCompactConstructor(compactConstructor);
                                compactConstructor = new CompactConstructorDef();
                              }
break;
case 143:
//#line 840 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                              cls.setType(ClassDef.INTERFACE);
                              cls.setLineNumber(lexer.getLine());
                              cls.getModifiers().addAll(modifiers); modifiers.clear(); 
                            }
break;
case 144:
//#line 846 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                              cls.setName( val_peek(3).sval );
                              cls.setTypeParameters(typeParams);
                              builder.beginClass(cls); 
                              cls = new ClassDef(); 
                            }
break;
case 145:
//#line 853 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                              builder.endClass(); 
                            }
break;
case 146:
//#line 861 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                     cls.getExtends().addAll( typeList );
                     typeList.clear();
                   }
break;
case 152:
//#line 900 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                             cls.setType(ClassDef.ANNOTATION_TYPE);
                             cls.setLineNumber(lexer.getLine());
                             cls.getModifiers().addAll(modifiers); modifiers.clear(); 
                             cls.setName( val_peek(0).sval );
                             builder.beginClass(cls); 
                             cls = new ClassDef();
                           }
break;
case 153:
//#line 909 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                             builder.endClass(); 
                           }
break;
case 154:
//#line 941 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
              line = lexer.getLine();
            }
break;
case 155:
//#line 945 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
              AnnoDef annotation = new AnnoDef( new TypeDef(val_peek(0).sval) );
              annotation.setLineNumber(line);
              annotationStack.addFirst(annotation);
            }
break;
case 156:
//#line 951 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
              AnnoDef annotation = annotationStack.removeFirst();
              if(annotationStack.isEmpty()) 
              {
                builder.addAnnotation(annotation);
              }
              yyval.annoval = annotation;
            }
break;
case 159:
//#line 970 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                    annotationStack.getFirst().getArgs().put(val_peek(2).sval, val_peek(0).annoval);
                  }
break;
case 163:
//#line 990 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                                annoValueListStack.add(annoValueList);
                                annoValueList = new LinkedList();
                              }
break;
case 164:
//#line 995 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                                yyval.annoval = new ElemValueListDef(annoValueList);
                                annoValueList = annoValueListStack.remove(annoValueListStack.size() - 1);
                              }
break;
case 167:
//#line 1008 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                         annotationStack.getFirst().getArgs().put("value", val_peek(0).annoval);
                       }
break;
case 169:
//#line 1016 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                     annoValueList.add(val_peek(0).annoval); 
                   }
break;
case 179:
//#line 1074 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                     yyval.annoval = new TypeRefDef(new TypeDef(val_peek(3).type.getName(), val_peek(2).ival));
                   }
break;
case 180:
//#line 1078 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                     yyval.annoval = new ParenExpressionDef(val_peek(1).annoval); 
                   }
break;
case 182:
//#line 1083 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                     yyval.annoval = new TypeRefDef(new TypeDef(val_peek(2).sval, 0));
                   }
break;
case 183:
//#line 1087 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                     yyval.annoval = new TypeRefDef(new TypeDef(val_peek(3).sval, val_peek(2).ival));
                   }
break;
case 185:
//#line 1092 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                     yyval.annoval = new FieldRefDef(val_peek(0).sval); 
                   }
break;
case 188:
//#line 1109 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                                              CreatorDef creator = new CreatorDef();
                                              creator.setCreatedName( val_peek(5).sval );
                                              yyval.annoval = creator; 
                                            }
break;
case 189:
//#line 1115 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                                              CreatorDef creator = new CreatorDef();
                                              creator.setCreatedName( val_peek(5).sval );
                                              yyval.annoval = creator; 
                                            }
break;
case 196:
//#line 1152 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                    yyval.annoval = new MethodInvocationDef( val_peek(6).annoval + "." + val_peek(3).sval, null);
                  }
break;
case 197:
//#line 1156 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                    yyval.annoval = new MethodInvocationDef(val_peek(3).sval, null);
                  }
break;
case 198:
//#line 1160 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                    yyval.annoval = new MethodInvocationDef(val_peek(3).sval, null);
                  }
break;
case 199:
//#line 1164 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                    yyval.annoval = new MethodInvocationDef(val_peek(6).sval, null);
                  }
break;
case 200:
//#line 1168 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                    yyval.annoval = new MethodInvocationDef("super." + val_peek(6).sval, null);
                  }
break;
case 201:
//#line 1172 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                    yyval.annoval = new MethodInvocationDef(val_peek(8).sval + ".super", null);
                  }
break;
case 202:
//#line 1180 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                builder.addArgument( (ExpressionDef) val_peek(0).annoval);
              }
break;
case 203:
//#line 1184 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                builder.addArgument( (ExpressionDef) val_peek(0).annoval);
              }
break;
case 206:
//#line 1201 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   yyval.annoval = new MethodReferenceDef();
                 }
break;
case 207:
//#line 1205 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   yyval.annoval = new MethodReferenceDef();
                 }
break;
case 208:
//#line 1209 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   yyval.annoval = new MethodReferenceDef();
                 }
break;
case 209:
//#line 1213 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   yyval.annoval = new MethodReferenceDef();
                 }
break;
case 210:
//#line 1224 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                           CreatorDef creator = new CreatorDef();
                           creator.setCreatedName( val_peek(2).type.getName() );
                           yyval.annoval = creator; 
                         }
break;
case 211:
//#line 1230 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                           CreatorDef creator = new CreatorDef();
                           creator.setCreatedName( val_peek(2).type.getName() );
                           yyval.annoval = creator; 
                         }
break;
case 212:
//#line 1236 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                           CreatorDef creator = new CreatorDef();
                           creator.setCreatedName( val_peek(2).type.getName() );
                           yyval.annoval = creator; 
                         }
break;
case 213:
//#line 1242 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                           CreatorDef creator = new CreatorDef();
                           creator.setCreatedName( val_peek(2).type.getName() );
                           yyval.annoval = creator; 
                         }
break;
case 219:
//#line 1272 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ yyval.annoval = new LambdaDef(); }
break;
case 229:
//#line 1307 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
              yyval.annoval = new AssignmentDef(val_peek(2).annoval, val_peek(1).sval, val_peek(0).annoval);
            }
break;
case 230:
//#line 1317 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                yyval.annoval = new FieldRefDef(val_peek(0).sval);
              }
break;
case 244:
//#line 1354 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                         yyval.annoval = new QueryDef(val_peek(4).annoval, val_peek(2).annoval, val_peek(0).annoval);
                       }
break;
case 246:
//#line 1364 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                           yyval.annoval = new LogicalOrDef(val_peek(2).annoval, val_peek(0).annoval);
                         }
break;
case 248:
//#line 1374 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                            yyval.annoval = new LogicalAndDef(val_peek(2).annoval, val_peek(0).annoval); 
                          }
break;
case 250:
//#line 1384 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                         yyval.annoval = new OrDef(val_peek(2).annoval, val_peek(0).annoval); 
                       }
break;
case 252:
//#line 1394 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                         yyval.annoval = new ExclusiveOrDef(val_peek(2).annoval, val_peek(0).annoval);
                       }
break;
case 254:
//#line 1404 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                 yyval.annoval = new AndDef(val_peek(2).annoval, val_peek(0).annoval); 
               }
break;
case 256:
//#line 1415 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                      yyval.annoval = new EqualsDef(val_peek(2).annoval, val_peek(0).annoval);
                    }
break;
case 257:
//#line 1419 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                      yyval.annoval = new NotEqualsDef(val_peek(2).annoval, val_peek(0).annoval); 
                    }
break;
case 259:
//#line 1433 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                        yyval.annoval = new LessThanDef(val_peek(2).annoval, val_peek(0).annoval); 
                      }
break;
case 260:
//#line 1437 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                        yyval.annoval = new GreaterThanDef(val_peek(2).annoval, val_peek(0).annoval); 
                      }
break;
case 261:
//#line 1441 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                        yyval.annoval = new LessEqualsDef(val_peek(2).annoval, val_peek(0).annoval);
                      }
break;
case 262:
//#line 1445 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                        yyval.annoval = new GreaterEqualsDef(val_peek(2).annoval, val_peek(0).annoval); 
                      }
break;
case 264:
//#line 1457 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                   yyval.annoval = new ShiftLeftDef(val_peek(2).annoval, val_peek(0).annoval);
                 }
break;
case 265:
//#line 1461 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   yyval.annoval = new ShiftRightDef(val_peek(2).annoval, val_peek(0).annoval);
                 }
break;
case 266:
//#line 1465 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   yyval.annoval = new UnsignedShiftRightDef(val_peek(2).annoval, val_peek(0).annoval);
                 }
break;
case 268:
//#line 1476 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                      yyval.annoval = new AddDef(val_peek(2).annoval, val_peek(0).annoval);
                    }
break;
case 269:
//#line 1480 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                      yyval.annoval = new SubtractDef(val_peek(2).annoval, val_peek(0).annoval);
                    }
break;
case 271:
//#line 1492 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                            yyval.annoval = new MultiplyDef(val_peek(2).annoval, val_peek(0).annoval);
                          }
break;
case 272:
//#line 1496 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                            yyval.annoval = new DivideDef(val_peek(2).annoval, val_peek(0).annoval);
                          }
break;
case 273:
//#line 1500 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                            yyval.annoval = new RemainderDef(val_peek(2).annoval, val_peek(0).annoval);
                          }
break;
case 276:
//#line 1514 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   yyval.annoval = new PlusSignDef(val_peek(0).annoval);
                 }
break;
case 277:
//#line 1518 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   yyval.annoval = new MinusSignDef(val_peek(0).annoval);
                 }
break;
case 279:
//#line 1527 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                          yyval.annoval = new PreIncrementDef(val_peek(0).annoval);
                        }
break;
case 280:
//#line 1535 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                          yyval.annoval = new PreDecrementDef(val_peek(0).annoval);
                        }
break;
case 282:
//#line 1547 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                               yyval.annoval = new NotDef(val_peek(0).annoval);
                             }
break;
case 283:
//#line 1551 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                               yyval.annoval = new LogicalNotDef(val_peek(0).annoval);
                             }
break;
case 288:
//#line 1570 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                           yyval.annoval = new PostIncrementDef(val_peek(1).annoval);
                         }
break;
case 289:
//#line 1578 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                           yyval.annoval = new PostDecrementDef(val_peek(1).annoval);
                         }
break;
case 290:
//#line 1588 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                  yyval.annoval = new CastDef(new TypeDef(val_peek(3).type.getName(), val_peek(2).ival), val_peek(0).annoval);
                }
break;
case 291:
//#line 1592 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                  yyval.annoval = new CastDef(new TypeDef(val_peek(2).sval, 0), val_peek(0).annoval);
                }
break;
case 292:
//#line 1596 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                  yyval.annoval = new CastDef(new TypeDef(val_peek(3).sval, val_peek(2).ival), val_peek(0).annoval);
                }
break;
case 298:
//#line 1645 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                        TypeDef td = new TypeDef(val_peek(3).sval + '.' + val_peek(0).sval,0);
                        yyval.type = typeStack.push(td);
                      }
break;
case 299:
//#line 1650 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                        yyval.type = typeStack.pop();
                      }
break;
case 300:
//#line 1655 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                        TypeDef td = new TypeDef(val_peek(0).sval,0);
                        yyval.type = typeStack.push(td);
                      }
break;
case 301:
//#line 1660 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                        yyval.type = typeStack.pop();
                      }
break;
case 302:
//#line 1668 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                yyval.type = new TypeDef(val_peek(0).sval,0);
              }
break;
case 303:
//#line 1678 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
             TypeDef td = val_peek(1).type;
             td.setDimensions(val_peek(0).ival);
             yyval.type = td;
           }
break;
case 304:
//#line 1684 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
             TypeDef td = val_peek(1).type;
             td.setDimensions(val_peek(0).ival);
             yyval.type = td;
           }
break;
case 305:
//#line 1694 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
        yyval.ival = 1;
      }
break;
case 306:
//#line 1698 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
        yyval.ival = val_peek(2).ival + 1;
      }
break;
case 307:
//#line 1701 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
            yyval.ival = 0; 
          }
break;
case 309:
//#line 1710 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                 typeVariable = new TypeVariableDef(val_peek(0).sval);
                 typeVariable.setBounds(new LinkedList());
               }
break;
case 310:
//#line 1715 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                 typeParams.add(typeVariable);
                 typeVariable = null;
               }
break;
case 311:
//#line 1724 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
             typeVariable.setBounds(new LinkedList());
             typeVariable.getBounds().add(val_peek(0).type);
           }
break;
case 315:
//#line 1737 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                   typeVariable.getBounds().add(val_peek(0).type);
                 }
break;
case 318:
//#line 1748 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                 typeStack.peek().setActualArgumentTypes(new LinkedList());
               }
break;
case 322:
//#line 1760 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                    (typeStack.peek()).getActualArgumentTypes().add(val_peek(0).type);
                  }
break;
case 323:
//#line 1764 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                    (typeStack.peek()).getActualArgumentTypes().add(val_peek(0).type);
                  }
break;
case 326:
//#line 1779 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            yyval.type = val_peek(0).type;
          }
break;
case 327:
//#line 1783 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            yyval.type = new WildcardTypeDef();
          }
break;
case 328:
//#line 1792 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                  yyval.type = new WildcardTypeDef(val_peek(0).type, "extends" );
                }
break;
case 329:
//#line 1796 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                  yyval.type = new WildcardTypeDef(val_peek(0).type, "super" ); 
                }
break;
case 331:
//#line 1806 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
                       yyval.sval = val_peek(2).sval + '.' + val_peek(0).sval;
                     }
break;
case 332:
//#line 1832 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
             yyval.type = new TypeDef("byte"); 
           }
break;
case 333:
//#line 1836 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
             yyval.type = new TypeDef("short"); 
           }
break;
case 334:
//#line 1840 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
             yyval.type = new TypeDef("char");
           }
break;
case 335:
//#line 1844 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
             yyval.type = new TypeDef("int"); 
           }
break;
case 336:
//#line 1848 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
             yyval.type = new TypeDef("long"); 
           }
break;
case 337:
//#line 1852 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
             yyval.type = new TypeDef("float");
           }
break;
case 338:
//#line 1856 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
             yyval.type = new TypeDef("double");
           }
break;
case 339:
//#line 1860 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
             yyval.type = new TypeDef("boolean"); 
           }
break;
case 341:
//#line 1870 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
                     yyval.sval = val_peek(2).type.getName() + '.' + val_peek(0).sval;
                   }
break;
case 342:
//#line 1883 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            typeList.add( val_peek(0).type );
          }
break;
case 343:
//#line 1887 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            typeList.add( val_peek(0).type );
          }
break;
case 347:
//#line 1935 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            modifiers.add("public");
          }
break;
case 348:
//#line 1939 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            modifiers.add("protected");
          }
break;
case 349:
//#line 1943 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            modifiers.add("private");
          }
break;
case 350:
//#line 1947 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            modifiers.add("abstract");
          }
break;
case 351:
//#line 1951 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            modifiers.add("static");
          }
break;
case 352:
//#line 1955 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            modifiers.add("final");
          }
break;
case 353:
//#line 1959 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            modifiers.add("sealed");
          }
break;
case 354:
//#line 1963 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            modifiers.add("non-sealed");
          }
break;
case 355:
//#line 1967 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            modifiers.add("strictfp");
          }
break;
case 356:
//#line 1971 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            modifiers.add("native");
          }
break;
case 357:
//#line 1975 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            modifiers.add("synchronized");
          }
break;
case 358:
//#line 1979 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            modifiers.add("volatile");
          }
break;
case 359:
//#line 1983 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            modifiers.add("transient");
          }
break;
case 360:
//#line 1987 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
            modifiers.add("default");
          }
break;
case 363:
//#line 2010 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
           yyval.annoval = new ConstantDef(val_peek(0).sval, Integer.class); 
         }
break;
case 364:
//#line 2014 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
           yyval.annoval = new ConstantDef(val_peek(0).sval, Float.class); 
         }
break;
case 365:
//#line 2018 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
           String s = lexer.getCodeBody(); 
           yyval.annoval = new ConstantDef(s, Character.class); 
         }
break;
case 366:
//#line 2022 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{
           String s = lexer.getCodeBody(); 
           yyval.annoval = new ConstantDef(s, String.class); 
         }
break;
case 367:
//#line 2027 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
           String s = lexer.getCodeBody(); 
           yyval.annoval = new ConstantDef(s, String.class); 
         }
break;
case 368:
//#line 2032 "D:\Data\java-workspace\github\qdox\target\checkout/src/grammar/parser.y"
{ 
           yyval.annoval = new ConstantDef(val_peek(0).sval, Boolean.class);
         }
break;
//#line 3421 "Parser.java"
//########## END OF USER-SUPPLIED ACTIONS ##########
    }//switch
    //#### Now let's reduce... ####
    if (yydebug) debug("reduce");
    state_drop(yym);             //we just reduced yylen states
    yystate = state_peek(0);     //get new state
    val_drop(yym);               //corresponding value drop
    yym = yylhs[yyn];            //select next TERMINAL(on lhs)
    if (yystate == 0 && yym == 0)//done? 'rest' state and at first TERMINAL
      {
      if (yydebug) debug("After reduction, shifting from state 0 to state "+YYFINAL+"");
      yystate = YYFINAL;         //explicitly say we're done
      state_push(YYFINAL);       //and save it
      val_push(yyval);           //also save the semantic value of parsing
      if (yychar < 0)            //we want another character?
        {
        yychar = yylex();        //get next character
        if (yychar<0) yychar=0;  //clean, if necessary
        if (yydebug)
          yylexdebug(yystate,yychar);
        }
      if (yychar == 0)          //Good exit (if lex returns 0 ;-)
         break;                 //quit the loop--all DONE
      }//if yystate
    else                        //else not done yet
      {                         //get next state and push, for next yydefred[]
      yyn = yygindex[yym];      //find out where to go
      if ((yyn != 0) && (yyn += yystate) >= 0 &&
            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
        yystate = yytable[yyn]; //get new state
      else
        yystate = yydgoto[yym]; //else go to new defred
      if (yydebug) debug("after reduction, shifting from state "+state_peek(0)+" to state "+yystate+"");
      state_push(yystate);     //going again, so push state & val...
      val_push(yyval);         //for next action
      }
    }//main loop
  return 0;//yyaccept!!
}
//## end of method parse() ######################################



//## run() --- for Thread #######################################
//## The -Jnorun option was used ##
//## end of method run() ########################################



//## Constructors ###############################################
//## The -Jnoconstruct option was used ##
//###############################################################



}
//################### END OF CLASS ##############################




© 2015 - 2025 Weber Informatics LLC | Privacy Policy