alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

//### This file created by BYACC 1.8(/Java extension  1.1)
//### 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
//### Please send bug reports to rjamison@lincom-asg.com
//### static char yysccsid[] = "@(#)yaccpar	1.8 (Berkeley) 01/20/90";



package org.netbeans.lib.java.parser;



//#line 3 "parser.y"
/*
 *                 Sun Public License Notice
 * 
 * The contents of this file are subject to the Sun Public License
 * Version 1.0 (the "License"). You may not use this file except in
 * compliance with the License. A copy of the License is available at
 * http://www.sun.com/
 * 
 * The Original Code is NetBeans. The Initial Developer of the Original
 * Code is Sun Microsystems, Inc. Portions Copyright 1997-2002 Sun
 * Microsystems, Inc. All Rights Reserved.
 */
/* byaccJ options:
 * -Jpackage=org.netbeans.lib.java.parser -Jimplements=ASTreeTypes,JParser -Jsemantic=ASTClass -d 
*/
    import java.io.*;
//#line 33 "Parser.java"




/**
 * Encapsulates yacc() parser functionality in a Java
 *        class for quick code development
 */
public class Parser
             implements ASTreeTypes,JParser,ParserTokens
{

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[],stateptr;           //state stack
int stateptrmax;                     //highest index of stackptr
int statemax;                        //state when highest index reached
//###############################################################
// methods: state stack push,pop,drop,peek
//###############################################################
void state_push(int state)
{
  if (stateptr>=YYSTACKSIZE)         //overflowed?
    return;
  statestk[++stateptr]=state;
  if (stateptr>statemax)
    {
    statemax=state;
    stateptrmax=stateptr;
    }
}
int state_pop()
{
  if (stateptr<0)                    //underflowed?
    return -1;
  return statestk[stateptr--];
}
void state_drop(int cnt)
{
int ptr;
  ptr=stateptr-cnt;
  if (ptr<0)
    return;
  stateptr = ptr;
}
int state_peek(int relative)
{
int ptr;
  ptr=stateptr-relative;
  if (ptr<0)
    return -1;
  return statestk[ptr];
}
//###############################################################
// method: init_stacks : allocate and prepare stacks
//###############################################################
boolean init_stacks()
{
  statestk = new int[YYSTACKSIZE];
  stateptr = -1;
  statemax = -1;
  stateptrmax = -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=YYSTACKSIZE)
    return;
  valstk[++valptr]=val;
}
ASTClass val_pop()
{
  if (valptr<0)
    return null;
  return valstk[valptr--];
}
void val_drop(int cnt)
{
int ptr;
  ptr=valptr-cnt;
  if (ptr<0)
    return;
  valptr = ptr;
}
ASTClass val_peek(int relative)
{
int ptr;
  ptr=valptr-relative;
  if (ptr<0)
    return null;
  return valstk[ptr];
}
//#### end semantic value section ####
public final static short YYERRCODE=256;
final static short yylhs[] = {                           -1,
    1,    1,    2,    2,    2,    4,    4,    5,    5,    5,
    5,    5,    6,    6,    3,    3,    3,    0,   10,   10,
   11,   11,    9,    9,   12,   12,   14,   15,   16,   16,
   13,   13,   13,   17,   17,   20,   20,   21,   21,   23,
   23,   22,   24,   24,   25,   25,   25,   25,   26,   26,
   26,   26,   26,   30,   30,   32,   32,   33,   34,   34,
   35,   35,   36,   36,   31,   39,   39,   41,   41,   43,
   44,   44,   45,   45,   46,   48,   48,   47,   47,   42,
   42,   40,   40,   27,   28,   29,   29,   50,   51,   52,
   52,   53,   53,   53,   53,   53,   18,   18,   57,   57,
   58,   59,   59,   60,   60,   60,   60,   60,   61,   61,
   38,   62,   62,   62,   63,   63,   49,   64,   64,   65,
   65,   54,   54,   54,   66,   68,   68,   67,   67,   67,
   67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
   67,   67,   67,   67,   74,   69,   75,   85,   85,   85,
   85,   85,   85,   85,   70,   70,   76,   93,   94,   94,
   96,   95,   95,   97,   97,   98,   98,   71,   77,   72,
   73,  100,  100,  100,  101,  101,  102,  102,  103,  103,
   78,  104,  104,   79,   80,   82,   81,   83,   83,  106,
  106,  105,  105,  108,  107,   84,   84,   56,   56,  109,
  109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
  109,  111,  111,  111,  111,  111,  111,   92,   92,   92,
   55,   55,  115,  115,  114,  114,  110,  110,  110,  110,
  110,  110,  116,  116,  117,    8,    8,  112,  112,  112,
   91,   91,   91,   91,   91,  113,  113,  118,  118,  118,
  118,   89,   90,  119,  119,  119,  119,  119,   87,   88,
  120,  120,  120,  120,  121,  121,  121,  121,  122,  122,
  122,  122,  123,  123,  123,  124,  124,  124,  124,  125,
  125,  125,  125,  125,  125,  126,  126,  126,  127,  127,
  128,  128,  129,  129,  130,  130,  131,  131,  132,  132,
  133,  133,   86,  134,  134,  134,  135,  135,  135,  135,
  135,  135,  135,  135,  135,  135,  135,  135,   37,   99,
   19,   19,  136,  136,  136,  136,  136,  136,  136,  136,
  136,  136,  136,    7,    7,
};
final static short yylen[] = {                            2,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    2,    2,    3,    0,    2,
    0,    2,    0,    3,    1,    1,    4,    6,    0,    1,
    1,    1,    1,    6,    5,    0,    2,    0,    2,    1,
    3,    3,    0,    2,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    4,    3,    1,    3,    2,    1,    2,
    0,    2,    1,    1,    2,    4,    3,    1,    2,    4,
    0,    1,    1,    3,    4,    0,    1,    0,    1,    0,
    2,    1,    1,    1,    2,    4,    3,    4,    3,    0,
    2,    1,    5,    5,    7,    7,    5,    4,    0,    2,
    3,    0,    2,    1,    1,    1,    1,    1,    5,    4,
    3,    0,    1,    2,    1,    3,    3,    0,    1,    1,
    2,    1,    1,    1,    2,    3,    2,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    3,    2,    1,    1,    1,
    1,    1,    1,    1,    5,    7,    5,    4,    0,    2,
    2,    0,    1,    1,    2,    3,    2,    5,    7,    7,
    9,    0,    1,    1,    0,    1,    0,    1,    1,    3,
    3,    0,    1,    3,    3,    3,    5,    3,    4,    0,
    1,    1,    2,    5,    2,    3,    5,    1,    1,    1,
    3,    4,    3,    4,    1,    3,    3,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    6,    8,    8,
    0,    1,    1,    3,    0,    1,    4,    3,    4,    3,
    4,    4,    1,    2,    3,    2,    3,    3,    3,    5,
    6,    4,    6,    6,    8,    4,    4,    1,    1,    1,
    1,    2,    2,    1,    1,    2,    2,    1,    2,    2,
    1,    2,    2,    1,    5,    4,    4,    5,    1,    3,
    3,    3,    1,    3,    3,    1,    3,    3,    3,    1,
    3,    3,    3,    3,    3,    1,    3,    3,    1,    3,
    1,    3,    1,    3,    1,    3,    1,    3,    1,    5,
    1,    1,    3,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    2,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    3,
};
final static short yydefred[] = {                         0,
    0,    0,   19,  334,    0,    0,   24,    0,    0,    0,
   20,   25,   26,  335,   30,    0,  326,    0,  328,    0,
  330,  325,  324,  323,  327,  331,  329,  332,  333,   33,
   22,   31,   32,    0,  321,    0,    0,    0,    0,    0,
  322,   27,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  102,   98,    0,    0,   28,
    0,   43,   35,    0,    0,    0,   97,    0,    0,    4,
    8,   12,   14,   13,   10,   11,    9,    5,  101,  108,
    0,    0,    2,    3,    6,    7,    0,  106,  107,    0,
  104,  103,  105,   34,    0,   42,   53,    0,    0,   51,
   52,    0,   44,   45,   46,   47,   48,   49,   50,    0,
   84,    0,    0,    0,   56,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  205,    0,    0,    0,    0,  145,
    0,    0,  214,  212,  213,  215,  216,  217,    0,    0,
    0,    0,  123,    0,  133,  120,    0,    0,    0,  122,
  124,    0,  128,  129,  130,  131,  132,  134,  135,  136,
  137,  138,  139,  140,  141,  142,  143,  144,    0,  148,
  149,  150,    0,    0,    0,    0,    0,  199,  200,    0,
    0,    0,    0,    0,    0,    0,   85,    0,   83,   65,
   82,    0,    0,    0,    0,   55,    0,    0,   58,    0,
    0,  236,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  302,  254,  255,  250,  251,  210,
  208,    0,  269,  258,  264,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  301,  319,  183,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  176,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  209,  211,  259,
  260,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  117,  121,  125,  147,    0,  252,  253,  307,  308,
  309,  310,  311,  312,  313,  314,  315,  316,  317,  318,
    0,   79,    0,    0,   73,    0,   67,    0,    0,    0,
   90,   87,    0,   57,    0,   62,   63,   64,  110,  237,
   54,    0,    0,    0,    0,  263,  262,  256,  257,    0,
    0,  196,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  181,  184,    0,    0,    0,  174,
  179,    0,    0,    0,    0,    0,    0,  233,    0,    0,
    0,  185,    0,    0,    0,  186,    0,    0,    0,  192,
    0,  207,  223,    0,    0,  146,  203,    0,    0,  201,
    0,    0,  206,    0,    0,    0,    0,    0,  303,   88,
    0,    0,   66,   86,    0,   70,  115,    0,    0,  109,
    0,    0,    0,    0,    0,  270,  271,  272,    0,    0,
    0,    0,    0,    0,  285,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  231,    0,  234,    0,  232,    0,    0,
    0,    0,    0,  193,    0,  189,    0,  242,    0,  204,
  246,    0,    0,    0,  202,    0,    0,  247,   74,   77,
    0,    0,    0,   89,    0,   91,   92,    0,  111,    0,
  266,    0,    0,  267,  197,    0,    0,    0,    0,  180,
    0,  235,    0,    0,  159,  157,  187,    0,  195,  168,
  224,    0,    0,    0,    0,    0,   75,    0,    0,    0,
    0,  116,  265,  268,  300,    0,    0,    0,    0,  226,
  218,  244,    0,    0,    0,    0,  241,    0,  243,    0,
    0,    0,    0,  169,    0,    0,  170,  156,    0,    0,
    0,  160,    0,  164,  194,    0,    0,    0,    0,    0,
    0,    0,    0,  320,    0,  167,  158,    0,  165,  220,
  245,  219,   94,   93,    0,    0,  171,  166,    0,    0,
   96,   95,
};
final static short yydgoto[] = {                          2,
  150,  222,   83,   84,   85,   86,  223,  120,    3,    6,
   10,   11,   31,   12,   13,   16,  153,   33,  154,   45,
   53,  520,   55,   68,  103,  104,  105,  106,  107,   91,
  109,  114,  115,  116,  209,  316,  383,  318,  110,  200,
  117,  203,  118,  303,  304,  305,  306,  471,  155,  112,
  312,  405,  476,  156,  384,  157,   47,   57,   65,   92,
   93,  408,  409,  158,  159,  160,  161,  162,  163,  164,
  165,  166,  167,  168,  169,  170,  171,  172,  173,  174,
  175,  176,  177,  178,  179,  225,  226,  227,  228,  229,
  230,  231,  496,  523,  541,  542,  543,  544,  555,  362,
  259,  535,  363,  249,  378,  379,  456,  380,  187,  188,
  189,  190,  191,  521,  385,  367,  368,  232,  233,  234,
  235,  236,  237,  238,  239,  240,  241,  242,  243,  244,
  245,  246,  247,  193,  301,   35,
};
final static short yysindex[] = {                      -238,
 -290,    0,    0,    0,  -91, -205,    0, -243, -141, 3370,
    0,    0,    0,    0,    0, -290,    0, -195,    0, -187,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  577,    0,  -24,  -85,  -69, -129, -106,
    0,    0, -286, -290,    8, -290,   -7,  -85,  -69,   -2,
  -51, -290,    9,  -51,   10,    0,    0,    8,   -7,    0,
   10,    0,    0, -290, 1195,    9,    0, 1153,  -51,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  -48,   44,    0,    0,    0,    0, -109,    0,    0, 1279,
    0,    0,    0,    0, 1048,    0,    0,   79,  -48,    0,
    0, 1237,    0,    0,    0,    0,    0,    0,    0,  -34,
    0,   29,  -66, -186,    0,   84,   29,   44,   77,   98,
   98,  -48, 1578,   51,   51, 1330,    2,  114,  118,    2,
 1578,  126,  122,  133,    0, 1578,  137,  141, 1578,    0,
 1578, 1578,    0,    0,    0,    0,    0,    0, -285,   88,
  -61,    4,    0, 1555,    0,    0,  135,  142, 1048,    0,
    0,  150,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  151,    0,
    0,    0,    0,    0,    0,    0,  154,    0,    0,    0,
    0, -171,  345,  194,   29,  -48,    0,   29,    0,    0,
    0, -290,  161,  194,   98,    0,   88, 1433,    0,  162,
   98,    0,  165, -168,   29, 1578, 1578, 1578, 1578, 1578,
  176,  -61,    4, -190,    0,    0,    0,    0,    0,    0,
    0, -171,    0,    0,    0, -107,   63,   23, -149,  -63,
  149,  148,  155,  159, -226,    0,    0,    0,  182,  185,
  133,  183,   88, 1620, 1578,  188, -198,    0,  187,  145,
 1578, 1578,  197,  255, 1578,  212,    4,    0,    0,    0,
    0, 1578, 1330,   44,  211,  262,    5, 1475, -239,   14,
 -278,    0,    0,    0,    0, 1578,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 1578,    0,  221,  223,    0,    2,    0,   29,  161,   10,
    0,    0,  236,    0, 1433,    0,    0,    0,    0,    0,
    0,  232,  -73,    4,  238,    0,    0,    0,    0,    5,
   14,    0, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578,
 1578,    2, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578,
 1578, 1578, 1578, 1578,    0,    0,  240,  211,    2,    0,
    0, -151,  234,  243, 1475,   43,  188,    0, 1578,   43,
  188,    0,  245,  247,  248,    0,  251,  255,  278,    0,
  254,    0,    0,  256,  249,    0,    0,  289,  257,    0,
  198,  253,    0,  264,  311,  216,  274,  272,    0,    0,
  194,  268,    0,    0,  943,    0,    0,  276,  273,    0,
 1578,  -68,  -59, 1723,  275,    0,    0,    0, -107, -107,
   63,   63,   63,   44,    0,   23,   23,   23,   23, -149,
 -149,  -63,  149,  148,  155,  270,  159, 1578, 1578, 1578,
 1756, 1330,  284,    0,   98,    0,  292,    0,   98, 1578,
  288,  137,  194,    0,  137,    0, 1330,    0, 1578,    0,
    0,  294,  242, 1578,    0,  298, 1578,    0,    0,    0,
   88, -280,  299,    0,   46,    0,    0,  295,    0, 1433,
    0, 1578, 1723,    0,    0, 1578,  301,  306,  312,    0,
  336,    0,    9,  313,    0,    0,    0,  314,    0,    0,
    0, 1578,  307,  316, 1578,  321,    0, 1578, 1578, -196,
 -273,    0,    0,    0,    0,  318, 1756, 1330, 1330,    0,
    0,    0, -137,  137,  324, 1578,    0,  326,    0,  327,
  328, -245,  330,    0,  332,  234,    0,    0, 1578,  317,
  337,    0,  838,    0,    0,    9,  338,    9,  325,  335,
 1578, 1578, 1330,    0,  329,    0,    0, 1048,    0,    0,
    0,    0,    0,    0,  341,  342,    0,    0,  343,  344,
    0,    0,
};
final static short yyrindex[] = {                       505,
    0,    0,    0,    0,    0,  541,    0,    0,  297,  655,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0, -250,  350,    0,    0,
    0,    0,    0,    0,  351,    0,    0, -250,  350,    0,
 -248,    0,    0, -276,  355,    0,    0,  351,    0,    0,
  356,    0,    0,    0,    0,    0,    0,    0,  -40,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0, -305,    0,    0,    0,    0, 1956,    0,    0,    0,
    0,    0,    0,    0,  357,    0,    0, -219,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  360,   -6,    0,    0, -177,  358, -150,    0, 1995,
 2034,    0,    0,  359,  359,    0, 1800,    0,    0,    0,
  361,    0,    0, 3405,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0, 1320,    0,
  309,  618,    0,    0,    0,    0, 2836,    0,  365,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0, -101,  -10,   92,  509, 2656,    0,    0, 2073,
 2146,    0,    0,  369,   71,    0,    0,  360,    0,    0,
    0,    0,    0,  369, -194,    0,    0,    0,    0,    0,
 -145,    0,    0,    0,  358,    0,    0,    0,    0,    0,
 1810,    0, 2438,    0,    0,    0,    0,    0,    0,    0,
    0, 2908,    0,    0,    0, 2944, 3052, 1635,  443,  947,
 1933, 2486,  143, 1491,  209,    0,    0,    0,    0,    0,
    0,    0,    0, -127,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  401,    0,    0, 2872,    0,    0,    0,
    0,  371,    0,  -32, -124,    0,  320,    0,    0,  339,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  374,    0,    0,    0,   71,    0,   78,
    0,    0,    0,    0,  377,    0,    0,    0,    0,    0,
    0,    0,    0, 2511,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0, -115,    0,    0,
    0,    0, -103,    0,    0,    0, 2692,    0,  371,    0,
 2728,    0, 2219,    0,    0,    0,    0,  628,    0,    0,
    0,    0,    0,    0,  380,    0,    0,    0,    0,    0,
    0,    0,    0, 1883,    0,    0, 2292,    0,    0,    0,
  319,  340,    0,    0,    0,    0,    0,    0,  392,    0,
    0,    0,    0, 2584,    0,    0,    0,    0, 2980, 3016,
 3088, 3124, 3160,    0,    0, 3196, 3229, 3262, 3295,  743,
  848, 1052, 2415, 3328, 1398,    0, 1688,    0,  361,    0,
    0,    0,    0,    0, 2764,    0,    0,    0, 2800,  371,
    0,    0,  319,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  371,    0,    0,  371,    0,    0,    0,
    0,    0, -136,    0,  618,    0,    0,  100,    0,  393,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  733,    0, 2620,    0,    0,    0,    0,    0,    0,    0,
    0,  371, 2365,    0,  371,    0,    0,  371,  371,    0,
    0,    0,    0,    0,    0,    0,  396,    0,    0,    0,
    0,    0,  405,    0,    0,  371,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  420,    0,    0,    0,    0,
    0,    0,  419,    0,    0, 2620,    0, 2620,    0,    0,
  371,  371,    0,    0,    0,    0,    0, -237,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,
};
final static short yygindex[] = {                         0,
  -62,  -49,  364,    0,    0,    0,   -1,    3,    0,    0,
    0,    0,    0,    0,    0,    0,   19,  215,   37,  683,
  682,  -11,  -45,    0,    0,    0,    0,    0,    0,  686,
    0, -114,  551,  290,    0, -311,  246,   22,    0,    0,
  -88, -100,    0,  555,    0, -381,    0,    0,  -44,  658,
  454,    0,    0, -157, -315,  370,  715,  706,    0,    0,
    0,    0,    0,    0,  226,    0, -125,  520,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0, -249,  -82,  -74,  -27,  -15,   17,
   55,  108,    0,    0,    0,    0,    0,  233,    0,    0,
  349,    0,  260,  653,    0,    0,    0,  412,    0,    0,
    0,  373,  398, -252,    0,  526,   28,  125,  -35, -404,
    0,   96,   32,   74,   91,  444,  442,  446,  449,  448,
    0,  322,  503,    0,    0,  -16,
};
final static int YYTABLESIZE=3710;
static short yytable[];
static { yytable();}

    static void yytable(){
yytable = new short[]{                          5,
  252,  283,   81,  407,  361,   99,   61,  214,  396,  484,
  195,    1,  180,  396,   36,   82,  210,   41,   82,  469,
  181,  272,  533,  111,  161,  390,  508,  122,   32,   36,
  161,   37,   40,  215,  260,  275,   40,   40,  273,  196,
   82,   63,   51,  180,   54,  151,   34,  391,   50,    1,
   54,  181,   82,  447,   94,    1,  392,  197,   36,  393,
   37,  551,   69,   87,  253,  201,   87,  182,  390,  463,
    4,  498,  161,   41,   14,    9,  180,   82,  514,  183,
  256,  214,  397,   88,  181,   41,  100,  397,   87,  121,
  391,  334,  264,  152,  307,  334,  353,  309,  182,  532,
   87,   90,  393,  354,  102,  270,  271,  308,  369,  151,
  183,  184,  365,   60,  322,  205,    8,   14,   60,   60,
  211,  394,  332,   60,  539,   87,  206,  207,  257,   60,
  540,  182,  342,  333,  494,   61,   61,   41,  358,  267,
  267,  334,  184,  183,  321,  207,   61,  386,  504,  185,
   68,  506,   15,  277,  280,   69,  310,  152,   68,  287,
  288,  439,   68,   69,  394,   37,  323,   69,  512,  343,
  344,  180,  440,   38,  205,  184,  345,  346,  205,  181,
  185,  326,  327,  328,  329,  172,  525,   44,  127,  528,
  180,  490,  530,  531,  205,  205,  172,  126,  181,  127,
   54,  119,  186,   46,  151,    8,  151,  403,  126,  173,
  547,  151,  151,  185,  324,  267,  267,  267,  267,  192,
  173,    7,  151,    8,  330,  331,  182,  334,  335,  250,
  250,   48,  336,  186,  411,  565,  566,  119,  183,  482,
  204,  276,  213,  402,  119,  182,  388,  477,  483,  119,
  192,  213,  152,  276,   49,  395,   82,  183,  366,  370,
   70,  347,   71,    8,  348,   72,  186,  361,   41,  331,
  184,   73,   41,   41,   95,   59,  205,   74,  199,   89,
   59,   59,  101,  192,   75,   59,   76,   52,   42,  184,
   43,   59,  424,  560,   77,  562,  253,  152,  416,  417,
  418,   56,  152,  152,   87,   78,   59,   59,  185,   82,
   60,   59,  113,  152,  278,  213,  491,   62,  279,  388,
  251,  251,  180,   64,  213,  412,  413,  185,  395,  202,
  181,  500,  267,  267,  267,  267,  267,  267,  267,  267,
   87,  267,  267,  267,  267,  267,  267,  267,  267,  267,
  267,  315,  267,  213,  119,  151,  278,   87,  180,  180,
  510,  186,    4,  339,  340,  341,  181,  181,  224,  445,
  421,  422,  423,  449,  180,  481,  258,  182,  192,   80,
  186,  263,  181,   80,  266,  194,   81,  444,  212,  183,
   81,  448,  537,  538,  446,  337,  338,  192,  446,  153,
  283,  208,  210,  475,  153,  153,  210,  497,  213,  267,
  499,  248,  267,  182,  182,  153,  426,  427,  428,  429,
  254,  184,  210,  210,  255,  183,  183,  567,  261,  182,
  248,  248,  419,  420,  180,  180,  180,  430,  431,  262,
  260,  183,  181,  181,  181,   95,  513,  265,  274,  281,
  295,  282,  295,  317,  295,  295,  295,  184,  184,  185,
  180,  325,  284,  285,  286,  295,  295,  302,  181,  311,
  180,  295,  295,  184,  319,  180,  320,  280,  181,  545,
  267,  267,  272,  181,  267,  349,  350,  352,  357,  182,
  182,  182,  351,  151,  355,  185,  185,  356,  365,  372,
  364,  183,  183,  183,   23,  373,  374,  375,  151,  376,
  381,  185,  186,  268,  268,  182,  299,  377,  299,  382,
  299,  299,  299,  389,  207,  182,  387,  183,  400,  192,
  182,  398,  299,  184,  184,  184,  401,  183,  269,  269,
   21,  152,  183,  406,  410,  414,  438,  441,  186,  186,
  442,  450,  455,  460,  451,  452,  152,  453,  462,  184,
  317,  457,  459,  458,  186,  192,  192,  463,  461,  184,
  464,  185,  185,  185,  184,  465,  466,   78,  415,   78,
  467,  192,   78,  468,  470,  479,  480,  485,   78,  268,
  268,  268,  268,  486,   78,  492,  495,  185,  436,  493,
  502,   78,  503,   78,  505,  509,  519,  185,  516,  511,
  443,   78,  185,  526,  269,  269,  269,  269,  517,  518,
  522,  524,   78,  527,  186,  186,  186,   78,  529,   78,
  534,  546,   78,  548,  549,  550,  552,  563,   78,  553,
  556,  192,  192,  192,   78,  561,  557,  564,  569,  570,
  186,   78,  568,   78,   18,  571,  572,   29,   99,   38,
  186,   78,  289,  100,   39,  186,  118,  192,   80,    1,
   80,  182,   78,  175,  119,  190,   71,  192,  221,   78,
   17,   72,  192,  487,  258,  489,  112,  222,  290,  291,
  292,  293,  294,  295,  296,  297,  298,  299,  300,   16,
   76,  113,  114,  177,  501,  425,  268,  268,  268,  268,
  268,  268,  268,  268,  162,  268,  268,  268,  268,  268,
  268,  268,  268,  268,  268,  317,  268,  178,  163,   78,
   58,  269,  269,  269,  269,  269,  269,  269,  269,   66,
  269,  269,  269,  269,  269,  269,  269,  269,  269,  269,
  286,  269,  286,  108,  286,  286,  286,  314,  313,  198,
  507,   23,  404,   59,   67,  286,  286,  286,  558,   23,
  286,  286,  286,  360,  478,  559,  536,  250,   23,  286,
  286,  286,  371,  268,  554,   23,  268,  488,   23,  454,
   23,  433,  432,   23,   23,   23,  434,   21,   23,   23,
  435,  437,   23,  399,    0,   21,   23,  515,  269,   23,
    0,  269,    0,    0,   21,    0,  154,   23,    0,  208,
    0,  154,  154,  208,   21,    0,   21,    0,    0,   21,
   21,   21,  154,   17,   21,   21,    0,    0,   21,  208,
  208,   39,   21,    0,    0,   21,    0,    0,    0,    0,
   19,    0,    0,   21,  268,  268,    0,    0,  268,    0,
   40,    0,   21,    0,    0,   22,   23,   24,    0,    0,
   25,   26,    0,    0,   27,    0,    0,    0,   28,  269,
  269,   29,    0,  269,  188,  188,  188,  188,  188,  188,
    0,  188,  188,    0,  188,  188,  188,  188,  188,    0,
    0,  188,  191,  188,  188,    0,  188,    0,    0,    0,
  188,    0,  188,  188,  188,    0,  188,  188,  188,  188,
  188,  188,  188,  188,  188,  188,  188,  188,    0,  188,
  188,  188,  188,  188,  188,  304,  188,  188,    0,    0,
  188,    0,    0,    0,    0,    0,    0,    0,  249,  249,
    0,    0,    0,    0,    0,    0,    0,    0,  188,  188,
    0,  304,  304,  304,  304,  304,  304,  304,  304,  304,
  304,  304,    0,    0,    0,    0,    0,    0,   15,    0,
    0,    0,  188,  188,  188,  188,  188,  188,  188,  155,
  155,  155,  155,  155,  155,    0,  155,  155,    0,  155,
  155,  155,  155,    0,    0,    0,  155,    0,  155,  155,
    0,  155,    0,    0,    0,  155,    0,  155,  155,  155,
    0,  155,  155,  155,  155,  155,  155,  155,  155,  155,
  155,  155,  155,    0,  155,  155,  155,  155,  155,  155,
    0,  155,  155,    0,    0,  155,    0,    0,    0,    0,
  287,    0,  287,    0,  287,  287,  287,    0,    0,    0,
    0,    0,    0,  155,  155,  287,  287,  287,    0,    0,
  287,  287,  287,    0,    0,    0,    0,    0,    0,  287,
  287,  287,    0,    0,    0,    0,    0,  155,  155,  155,
  155,  155,  155,  155,   17,  123,   70,  124,   71,  539,
    0,   72,   18,    0,  125,  540,  126,   73,    0,    0,
    0,  127,    0,   74,  128,    0,  129,    0,    0,    0,
   75,    0,   76,   21,  130,    0,   22,   23,   24,  131,
   77,   25,   26,  132,  133,  134,  135,  136,    0,   28,
  137,   78,   29,  138,  139,    0,   95,    0,    0,    0,
  140,    0,    0,    0,    0,  288,    0,  288,    0,  288,
  288,  288,    0,    0,    0,    0,    0,    0,  141,  142,
  288,  288,  288,    0,    0,  288,  288,  288,    0,    0,
    0,    0,    0,    0,  288,  288,  288,    0,    0,    0,
    0,    0,  143,  144,  145,  146,  147,  148,  149,   17,
  123,   70,  124,   71,    0,    0,   72,   18,    0,  125,
    0,  126,   73,    0,    0,    0,  127,    0,   74,  128,
    0,  129,    0,    0,    0,   75,    0,   76,   21,  130,
    0,   22,   23,   24,  131,   77,   25,   26,  472,  133,
  134,  473,  136,    0,   28,  137,   78,   29,  138,  139,
    0,   95,  474,    0,  289,  140,  289,    0,  289,  289,
  289,    0,    0,    0,    0,    0,    0,    0,    0,  289,
  289,    0,    0,  141,  142,  289,  289,    0,    0,    0,
    0,    0,    0,  289,  289,  289,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  143,  144,  145,
  146,  147,  148,  149,   17,  123,   70,  124,   71,    0,
    0,   72,   18,    0,  125,    0,  126,   73,    0,    0,
    0,  127,    0,   74,  128,    0,  129,    0,    0,    0,
   75,    0,   76,   21,  130,    0,   22,   23,   24,  131,
   77,   25,   26,  132,  133,  134,  135,  136,    0,   28,
  137,   78,   29,  138,  139,    0,   95,    0,    0,  290,
  140,  290,    0,  290,  290,  290,    0,    0,    0,    0,
    0,    0,    0,    0,  290,  290,    0,    0,  141,  142,
  290,  290,    0,    0,    0,    0,    0,    0,  290,  290,
  290,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  143,  144,  145,  146,  147,  148,  149,   17,
    0,   70,    0,   71,    0,    0,   72,   18,    0,    0,
    0,    0,   73,    0,    0,    0,   19,    0,   74,    0,
    0,    0,    0,    0,    0,   75,   20,   76,   21,    0,
    0,   22,   23,   24,    0,   77,   25,   26,    0,    0,
   27,   17,    0,   70,   28,   71,   78,   29,   72,   18,
    0,   95,   96,    0,   73,   97,    0,    0,   19,    0,
   74,    0,    0,    0,    0,    0,    0,   75,   20,   76,
   21,    0,    0,   22,   23,   24,    0,   77,   25,   26,
    0,    0,   27,   17,    0,   70,   28,   71,   78,   29,
   72,   39,    0,    0,   79,    0,   73,   80,    0,    0,
   19,    0,   74,   98,    0,    0,    0,    0,    0,   75,
   40,   76,   21,    0,    0,   22,   23,   24,    0,   77,
   25,   26,    0,    0,   27,   17,    0,   70,   28,   71,
   78,   29,   72,   39,    0,   95,    0,    0,   73,    0,
    0,    0,   19,    0,   74,    4,    0,    0,    0,    0,
    0,   75,   40,   76,   21,    0,    0,   22,   23,   24,
    0,   77,   25,   26,    0,    0,   27,    0,    0,    0,
   28,    0,   78,   29,    0,    0,    0,  123,   70,  124,
   71,    0,    0,   72,    0,    0,  125,   98,  126,   73,
    0,    0,    0,    0,    0,   74,  128,    0,  129,    0,
    0,    0,   75,    0,   76,    0,  130,    0,    0,    0,
    0,  131,   77,    0,    0,  132,  133,  251,  135,  136,
  334,    0,  137,   78,  334,  138,  139,  334,   95,    4,
    0,    0,  140,    0,    0,    0,    0,    0,    0,    0,
  334,  334,    0,    0,    0,    0,    0,    0,    0,    0,
  141,  142,    0,  334,  334,  334,  334,  334,  334,  334,
  334,  334,  334,  334,    0,    0,    0,    0,    0,    0,
  334,    0,    0,    0,  143,  144,  145,  146,  147,  148,
  149,   70,    0,   71,    0,    0,   72,    0,    0,    0,
    0,    0,   73,    0,    0,  296,    0,  296,   74,  296,
  296,  296,    0,    0,    0,   75,    0,   76,    0,  130,
  296,  296,    0,    0,    0,   77,  296,  296,  132,    0,
    0,  135,    0,   70,    0,   71,   78,    0,   72,  216,
    0,  315,    0,    0,   73,    0,    0,    0,    0,    0,
   74,    0,    0,  217,  218,    0,    0,   75,    0,   76,
    0,  130,    0,  141,  142,  219,  220,   77,    0,    0,
  132,    0,    0,  135,    0,    0,    0,    0,   78,    0,
    0,  216,    0,    0,    0,    0,  212,  143,  144,  145,
  146,  147,  148,  221,    0,  217,  218,    0,  297,    0,
  297,    0,  297,  297,  297,  141,  142,  219,  220,    0,
    0,   17,    0,  297,  297,    0,    0,    0,    0,   39,
  297,    0,    0,    0,    0,    0,    0,    0,   19,  143,
  144,  145,  146,  147,  148,  221,   70,    0,   71,    0,
   21,   72,    0,   22,   23,   24,    0,   73,   25,   26,
    0,    0,   27,   74,    0,    0,   28,    0,    0,   29,
   75,    0,   76,    0,  130,    0,    0,    0,    0,    0,
   77,    0,    0,  132,    0,    0,  135,    0,   70,    0,
   71,   78,    0,   72,  216,    0,    0,    0,    0,   73,
    0,    0,    0,  359,    0,   74,    0,    0,  217,  218,
    0,    0,   75,    0,   76,    0,  130,    0,  141,  142,
  219,  220,   77,    0,    0,  132,  280,    0,  135,    0,
    0,    0,    0,   78,    0,    0,  139,    0,    0,    0,
    0,    0,  143,  144,  145,  146,  147,  148,  221,    0,
    0,    0,  280,    0,  280,    0,  280,  280,  280,    0,
  141,  142,    0,  280,  280,    0,    0,  280,  280,  280,
  280,  280,  280,  280,  280,    0,    0,    0,    0,    0,
    0,  280,  280,  280,  143,  144,  145,  146,  147,  148,
  221,   70,    0,   71,    0,    0,   72,    0,    0,    0,
    0,    0,   73,    0,    0,  298,    0,  298,   74,  298,
  298,  298,    0,    0,    0,   75,    0,   76,    0,  130,
  298,  298,    0,    0,   70,   77,   71,  298,  132,   72,
    0,  135,    0,    0,    0,   73,   78,    0,    0,  216,
    0,   74,    0,    0,    0,    0,    0,    0,   75,    0,
   76,    0,  130,  217,  218,    0,    0,    0,   77,    0,
    0,  132,    0,    0,  135,    0,  328,    0,    0,   78,
    0,    0,  139,    0,  328,    0,    0,    0,    0,    0,
    0,    0,    0,  328,    0,    0,    0,  143,  144,  145,
  146,  147,  148,  221,    0,  328,  141,  142,  328,  328,
  328,  334,    0,  328,  328,    0,    0,  328,    0,    0,
    0,  328,    0,    0,  328,    0,    0,    0,    0,    0,
  143,  144,  145,  146,  147,  148,  221,  334,    0,  334,
  334,  334,  334,  334,  334,    0,    0,  334,  334,  334,
    0,    0,  334,  334,  334,  334,  334,  334,  334,  334,
  334,  334,  334,  334,  334,  334,  334,  334,  334,  334,
  334,  334,  334,  334,  334,  334,  334,  334,  334,  334,
  334,  334,  334,  334,  335,    0,    0,    0,    0,    0,
  334,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  335,    0,  335,  335,  335,  335,  335,  335,    0,    0,
  335,  335,  335,    0,    0,  335,  335,  335,  335,  335,
  335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
  335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
  335,  335,  335,  335,  335,  335,  335,   15,    0,    0,
  291,    0,  291,  335,  291,  291,  291,    0,    0,    0,
    0,    0,    0,    0,    0,  291,  291,    0,    0,    0,
    0,  291,  291,   15,    0,   15,    0,   15,   15,   15,
  291,  291,   15,    0,   15,   15,   17,    0,   15,   15,
   15,   15,   15,   15,   15,   15,    0,    0,    0,    0,
    0,    0,   15,   15,   15,    0,    0,    0,    0,    0,
    0,    0,   17,    0,   17,    0,   17,   17,   17,    0,
    0,   17,    0,   17,   17,   16,   15,   17,   17,   17,
   17,   17,   17,   17,   17,    0,    0,    0,    0,    0,
    0,   17,   17,   17,    0,    0,    0,    0,    0,    0,
    0,   16,    0,   16,    0,   16,   16,   16,    0,    0,
   16,    0,   16,   16,  209,   17,   16,   16,   16,   16,
   16,   16,   16,   16,    0,    0,    0,    0,    0,    0,
   16,   16,   16,    0,    0,    0,    0,    0,    0,    0,
  209,    0,  209,  209,  209,  209,  209,  209,    0,    0,
  305,  209,  209,    0,   16,  209,  209,  209,  209,  209,
  209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
  209,  209,  209,  209,  209,  209,  305,  305,  305,  305,
  305,  305,  305,  305,  305,  305,  305,  211,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  211,    0,  211,  211,  211,  211,  211,
  211,    0,    0,  306,  211,  211,    0,    0,  211,  211,
  211,  211,  211,  211,  211,  211,  211,  211,  211,  211,
  211,  211,  211,  211,  211,  211,  211,  211,  211,  306,
  306,  306,  306,  306,  306,  306,  306,  306,  306,  306,
  239,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  239,    0,  239,  239,
  239,  239,  239,  239,    0,    0,  239,  239,  239,    0,
    0,  239,  239,  239,  239,  239,  239,  239,  239,  239,
  239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
  239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
  239,  239,  239,  238,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,  238,
    0,  238,  238,  238,  238,  238,  238,    0,    0,  238,
  238,  238,    0,    0,  238,  238,  238,  238,  238,  238,
  238,  238,  238,  238,  238,  238,  238,  238,  238,  238,
  238,  238,  238,  238,  238,  238,  238,  238,  238,  238,
  238,  238,  238,  238,  238,  238,  240,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  240,    0,  240,  240,  240,  240,  240,  240,
    0,    0,  240,  240,  240,    0,    0,  240,  240,  240,
  240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
  240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
  240,  240,  240,  240,  240,  240,  240,  240,  240,  249,
    0,    0,  292,    0,  292,    0,  292,  292,  292,    0,
    0,    0,    0,    0,    0,    0,    0,  292,  292,    0,
    0,    0,    0,  292,  292,  249,    0,  249,    0,  249,
  249,  249,  292,  292,    0,  304,  249,  249,    0,    0,
  249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
  249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
  249,  304,  304,  304,  304,  304,  304,  304,  304,  304,
  304,  304,  249,  293,    0,  293,    0,  293,  293,  293,
    0,    0,    0,    0,    0,    0,    0,    0,  293,  293,
    0,    0,    0,    0,  293,  293,    0,    0,  249,    0,
    0,    0,    0,  293,    0,    0,    0,    0,  304,  249,
  249,    0,    0,  249,    0,  249,  249,  249,  249,  249,
  249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
  249,  249,  249,  249,  304,  304,  304,  304,  304,  304,
  304,  304,  304,  304,  304,  207,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  207,    0,  207,  207,  207,  207,  207,  207,    0,
    0,  225,  207,  207,    0,    0,  207,  207,  207,  207,
  207,  207,  207,  207,  207,  207,  207,  207,  207,  207,
  207,  207,  207,  207,  207,  207,  207,  225,    0,  225,
  225,  225,  225,  225,  225,    0,    0,  198,  225,  225,
    0,    0,  225,  225,  225,  225,  225,  225,  225,  225,
  225,  225,  225,  225,  225,  225,  225,  225,  225,  225,
  225,  225,  225,  198,    0,  198,    0,  198,  198,  198,
  198,    0,    0,  228,  198,  198,    0,    0,  198,  198,
  198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
  198,  198,  198,  198,  198,  198,  198,  198,  198,  228,
    0,  228,    0,  228,  228,  228,  228,    0,    0,  230,
  228,  228,    0,    0,  228,  228,  228,  228,  228,  228,
  228,  228,  228,  228,  228,  228,  228,  228,  228,  228,
  228,  228,  228,  228,  228,  230,    0,  230,    0,  230,
  230,  230,  230,    0,    0,  227,  230,  230,    0,    0,
  230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
  230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
  230,  227,    0,  227,    0,  227,  227,  227,  227,    0,
    0,  229,  227,  227,    0,    0,  227,  227,  227,  227,
  227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
  227,  227,  227,  227,  227,  227,  227,  229,    0,  229,
    0,  229,  229,  229,  229,    0,    0,  248,  229,  229,
    0,    0,  229,  229,  229,  229,  229,  229,  229,  229,
  229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
  229,  229,  229,  248,    0,  248,    0,  248,  248,  248,
    0,    0,    0,  249,  248,  248,    0,    0,  248,  248,
  248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
  248,  248,  248,  248,  248,  248,  248,  248,  248,  249,
    0,  249,    0,  249,  249,  249,    0,    0,    0,  261,
  249,  249,    0,    0,  249,  249,  249,  249,  249,  249,
  249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
  249,  249,  249,  249,  249,  261,    0,  261,    0,  261,
  261,  261,    0,    0,    0,  273,  261,  261,    0,    0,
  261,  261,  261,  261,  261,  261,  261,  261,    0,    0,
  261,  261,  261,  261,  261,  261,  261,  261,  261,  261,
  261,  273,    0,  273,    0,  273,  273,  273,    0,    0,
    0,  274,  273,  273,    0,    0,  273,  273,  273,  273,
  273,  273,  273,  273,    0,    0,  273,  273,    0,    0,
  273,  273,  273,    0,  273,  273,  273,  274,    0,  274,
    0,  274,  274,  274,    0,    0,    0,  275,  274,  274,
    0,    0,  274,  274,  274,  274,  274,  274,  274,  274,
    0,    0,  274,  274,    0,    0,  274,  274,  274,    0,
  274,  274,  274,  275,    0,  275,    0,  275,  275,  275,
    0,    0,    0,  276,  275,  275,    0,    0,  275,  275,
  275,  275,  275,  275,  275,  275,    0,    0,  275,  275,
    0,    0,  275,  275,  275,    0,  275,  275,  275,  276,
    0,  276,    0,  276,  276,  276,    0,    0,    0,  277,
  276,  276,    0,    0,  276,  276,  276,  276,  276,  276,
  276,  276,    0,    0,    0,    0,    0,    0,  276,  276,
  276,    0,  276,  276,  276,  277,    0,  277,    0,  277,
  277,  277,    0,    0,    0,  278,  277,  277,    0,    0,
  277,  277,  277,  277,  277,  277,  277,  277,    0,    0,
    0,    0,    0,    0,  277,  277,  277,    0,  277,  277,
  277,  278,    0,  278,    0,  278,  278,  278,    0,    0,
    0,  279,  278,  278,    0,    0,  278,  278,  278,  278,
  278,  278,  278,  278,    0,    0,    0,    0,    0,    0,
  278,  278,  278,    0,  278,  278,  278,  279,    0,  279,
    0,  279,  279,  279,    0,    0,    0,  282,  279,  279,
    0,    0,  279,  279,  279,  279,  279,  279,  279,  279,
    0,    0,    0,    0,    0,    0,  279,  279,  279,    0,
  279,  279,  279,  282,    0,  282,    0,  282,  282,  282,
  281,    0,    0,    0,  282,  282,    0,    0,  282,  282,
  282,  282,  282,  282,  282,  282,    0,    0,    0,    0,
    0,    0,  282,  282,  282,    0,  281,    0,  281,    0,
  281,  281,  281,  283,    0,    0,    0,  281,  281,    0,
    0,  281,  281,  281,  281,  281,  281,  281,  281,    0,
    0,    0,    0,    0,    0,  281,  281,  281,    0,  283,
    0,  283,    0,  283,  283,  283,  284,    0,    0,    0,
  283,  283,    0,    0,  283,  283,  283,  283,  283,  283,
  283,  283,    0,    0,    0,    0,    0,    0,  283,  283,
  283,    0,  284,    0,  284,    0,  284,  284,  284,    0,
    0,    0,    0,  284,  284,    0,    0,  284,  284,  284,
  284,  284,  284,  284,  284,    0,   17,    0,    0,    0,
    0,  284,  284,  284,   18,  294,    0,  294,    0,  294,
  294,  294,    0,   19,    0,    0,    0,    0,    0,    0,
  294,  294,    0,   20,    0,   21,  294,  294,   22,   23,
   24,  329,    0,   25,   26,  294,    0,   27,    0,  329,
    0,   28,    0,    0,   29,    0,    0,    0,  329,    0,
    0,    0,   30,    0,    0,    0,    0,    0,    0,    0,
  329,    0,    0,  329,  329,  329,    0,    0,  329,  329,
    0,    0,  329,    0,    0,    0,  329,    0,    0,  329,
};
}
static short yycheck[];
static { yycheck(); }
static void yycheck() {
yycheck = new short[] {                          1,
  126,  159,   65,  315,  254,   68,   52,  122,  287,  414,
   99,  317,   95,  287,   16,   65,  117,   34,   68,  401,
   95,  307,  296,   68,  262,  265,  307,   90,   10,  280,
  268,  280,  309,  122,  315,  150,  313,  314,  324,  102,
   90,   53,   44,  126,   46,   95,   10,  287,  335,  288,
   52,  126,  102,  369,   66,  361,  296,  102,  309,  299,
  309,  307,   64,   65,  127,  110,   68,   95,  265,  315,
  361,  453,  310,   90,  361,  281,  159,  127,  483,   95,
  130,  196,  361,   65,  159,  102,   68,  361,   90,   87,
  287,  311,  137,   95,  195,  315,  323,  198,  126,  296,
  102,   65,  299,  330,   68,  141,  142,  196,  307,  159,
  126,   95,  311,  308,  215,  113,  315,  361,  313,  314,
  118,  361,  313,  318,  262,  127,  313,  314,  130,  324,
  268,  159,  282,  324,  450,  313,  314,  154,  253,  141,
  142,  361,  126,  159,  313,  314,  324,  273,  464,   95,
  301,  467,  294,  151,  152,  301,  202,  159,  309,  331,
  332,  313,  313,  309,  361,  361,  216,  313,  480,  319,
  320,  254,  324,  361,  311,  159,  326,  327,  315,  254,
  126,  217,  218,  219,  220,  313,  502,  273,  313,  505,
  273,  441,  508,  509,  331,  332,  324,  313,  273,  324,
  202,  311,   95,  273,  254,  315,  308,  308,  324,  313,
  526,  313,  314,  159,  216,  217,  218,  219,  220,   95,
  324,  313,  324,  315,  222,  223,  254,  335,  336,  331,
  332,  361,  340,  126,  308,  551,  552,  311,  254,  308,
  307,  315,  311,  306,  311,  273,  315,  405,  308,  311,
  126,  311,  254,  315,  361,  315,  306,  273,  256,  257,
  259,  325,  261,  315,  328,  264,  159,  517,  309,  267,
  254,  270,  313,  314,  309,  308,  274,  276,  313,   65,
  313,  314,   68,  159,  283,  318,  285,  280,  313,  273,
  315,  324,  342,  546,  293,  548,  359,  308,  334,  335,
  336,  309,  313,  314,  306,  304,  313,  314,  254,  359,
  313,  318,  361,  324,  311,  311,  442,  309,  315,  315,
  331,  332,  405,  314,  311,  323,  324,  273,  315,  301,
  405,  457,  334,  335,  336,  337,  338,  339,  340,  341,
  342,  343,  344,  345,  346,  347,  348,  349,  350,  351,
  352,  309,  354,  311,  311,  405,  311,  359,  441,  442,
  315,  254,  361,  341,  342,  343,  441,  442,  123,  367,
  339,  340,  341,  371,  457,  411,  131,  405,  254,  309,
  273,  136,  457,  313,  139,  307,  309,  366,  312,  405,
  313,  370,  518,  519,  367,  333,  334,  273,  371,  308,
  558,  318,  311,  405,  313,  314,  315,  452,  311,  411,
  455,  361,  414,  441,  442,  324,  343,  344,  345,  346,
  307,  405,  331,  332,  307,  441,  442,  553,  307,  457,
  331,  332,  337,  338,  517,  518,  519,  347,  348,  307,
  315,  457,  517,  518,  519,  309,  482,  307,  361,  315,
  308,  310,  310,  208,  312,  313,  314,  441,  442,  405,
  543,  216,  313,  313,  311,  323,  324,  274,  543,  309,
  553,  329,  330,  457,  313,  558,  312,  475,  553,  524,
  482,  483,  307,  558,  486,  337,  339,  329,  306,  517,
  518,  519,  338,  543,  313,  441,  442,  313,  311,  313,
  255,  517,  518,  519,    0,  361,  261,  262,  558,  313,
  265,  457,  405,  141,  142,  543,  308,  263,  310,  308,
  312,  313,  314,  278,  314,  553,  265,  543,  308,  405,
  558,  286,  324,  517,  518,  519,  314,  553,  141,  142,
    0,  543,  558,  308,  313,  308,  307,  314,  441,  442,
  308,  307,  275,  265,  308,  308,  558,  307,  361,  543,
  315,  308,  314,  308,  457,  441,  442,  315,  312,  553,
  307,  517,  518,  519,  558,  265,  361,  259,  333,  261,
  307,  457,  264,  312,  317,  310,  314,  313,  270,  217,
  218,  219,  220,  324,  276,  312,  309,  543,  353,  308,
  307,  283,  361,  285,  307,  307,  271,  553,  308,  315,
  365,  293,  558,  307,  217,  218,  219,  220,  313,  308,
  308,  308,  304,  308,  517,  518,  519,  259,  308,  261,
  313,  308,  264,  308,  308,  308,  307,  313,  270,  308,
  324,  517,  518,  519,  276,  308,  310,  313,  308,  308,
  543,  283,  324,  285,    0,  313,  313,  361,  309,  309,
  553,  293,  318,  309,  309,  558,  310,  543,  309,  361,
  313,  313,  304,  313,  310,  275,  308,  553,  308,  361,
  361,  308,  558,  438,  439,  440,  310,  308,  344,  345,
  346,  347,  348,  349,  350,  351,  352,  353,  354,  361,
  361,  310,  310,  308,  459,  342,  334,  335,  336,  337,
  338,  339,  340,  341,  310,  343,  344,  345,  346,  347,
  348,  349,  350,  351,  352,  480,  354,  308,  310,  361,
   48,  334,  335,  336,  337,  338,  339,  340,  341,   58,
  343,  344,  345,  346,  347,  348,  349,  350,  351,  352,
  308,  354,  310,   68,  312,  313,  314,  207,  204,  102,
  471,  257,  309,   49,   59,  323,  324,  325,  543,  265,
  328,  329,  330,  254,  405,  543,  517,  125,  274,  337,
  338,  339,  257,  411,  539,  281,  414,  439,  284,  378,
  286,  350,  349,  289,  290,  291,  351,  257,  294,  295,
  352,  354,  298,  301,   -1,  265,  302,  486,  411,  305,
   -1,  414,   -1,   -1,  274,   -1,  308,  313,   -1,  311,
   -1,  313,  314,  315,  284,   -1,  286,   -1,   -1,  289,
  290,  291,  324,  257,  294,  295,   -1,   -1,  298,  331,
  332,  265,  302,   -1,   -1,  305,   -1,   -1,   -1,   -1,
  274,   -1,   -1,  313,  482,  483,   -1,   -1,  486,   -1,
  284,   -1,  286,   -1,   -1,  289,  290,  291,   -1,   -1,
  294,  295,   -1,   -1,  298,   -1,   -1,   -1,  302,  482,
  483,  305,   -1,  486,  257,  258,  259,  260,  261,  262,
   -1,  264,  265,   -1,  267,  268,  269,  270,  271,   -1,
   -1,  274,  275,  276,  277,   -1,  279,   -1,   -1,   -1,
  283,   -1,  285,  286,  287,   -1,  289,  290,  291,  292,
  293,  294,  295,  296,  297,  298,  299,  300,   -1,  302,
  303,  304,  305,  306,  307,  318,  309,  310,   -1,   -1,
  313,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,
   -1,  344,  345,  346,  347,  348,  349,  350,  351,  352,
  353,  354,   -1,   -1,   -1,   -1,   -1,   -1,  361,   -1,
   -1,   -1,  355,  356,  357,  358,  359,  360,  361,  257,
  258,  259,  260,  261,  262,   -1,  264,  265,   -1,  267,
  268,  269,  270,   -1,   -1,   -1,  274,   -1,  276,  277,
   -1,  279,   -1,   -1,   -1,  283,   -1,  285,  286,  287,
   -1,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,  303,  304,  305,  306,  307,
   -1,  309,  310,   -1,   -1,  313,   -1,   -1,   -1,   -1,
  308,   -1,  310,   -1,  312,  313,  314,   -1,   -1,   -1,
   -1,   -1,   -1,  331,  332,  323,  324,  325,   -1,   -1,
  328,  329,  330,   -1,   -1,   -1,   -1,   -1,   -1,  337,
  338,  339,   -1,   -1,   -1,   -1,   -1,  355,  356,  357,
  358,  359,  360,  361,  257,  258,  259,  260,  261,  262,
   -1,  264,  265,   -1,  267,  268,  269,  270,   -1,   -1,
   -1,  274,   -1,  276,  277,   -1,  279,   -1,   -1,   -1,
  283,   -1,  285,  286,  287,   -1,  289,  290,  291,  292,
  293,  294,  295,  296,  297,  298,  299,  300,   -1,  302,
  303,  304,  305,  306,  307,   -1,  309,   -1,   -1,   -1,
  313,   -1,   -1,   -1,   -1,  308,   -1,  310,   -1,  312,
  313,  314,   -1,   -1,   -1,   -1,   -1,   -1,  331,  332,
  323,  324,  325,   -1,   -1,  328,  329,  330,   -1,   -1,
   -1,   -1,   -1,   -1,  337,  338,  339,   -1,   -1,   -1,
   -1,   -1,  355,  356,  357,  358,  359,  360,  361,  257,
  258,  259,  260,  261,   -1,   -1,  264,  265,   -1,  267,
   -1,  269,  270,   -1,   -1,   -1,  274,   -1,  276,  277,
   -1,  279,   -1,   -1,   -1,  283,   -1,  285,  286,  287,
   -1,  289,  290,  291,  292,  293,  294,  295,  296,  297,
  298,  299,  300,   -1,  302,  303,  304,  305,  306,  307,
   -1,  309,  310,   -1,  308,  313,  310,   -1,  312,  313,
  314,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  323,
  324,   -1,   -1,  331,  332,  329,  330,   -1,   -1,   -1,
   -1,   -1,   -1,  337,  338,  339,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  355,  356,  357,
  358,  359,  360,  361,  257,  258,  259,  260,  261,   -1,
   -1,  264,  265,   -1,  267,   -1,  269,  270,   -1,   -1,
   -1,  274,   -1,  276,  277,   -1,  279,   -1,   -1,   -1,
  283,   -1,  285,  286,  287,   -1,  289,  290,  291,  292,
  293,  294,  295,  296,  297,  298,  299,  300,   -1,  302,
  303,  304,  305,  306,  307,   -1,  309,   -1,   -1,  308,
  313,  310,   -1,  312,  313,  314,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,  323,  324,   -1,   -1,  331,  332,
  329,  330,   -1,   -1,   -1,   -1,   -1,   -1,  337,  338,
  339,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  355,  356,  357,  358,  359,  360,  361,  257,
   -1,  259,   -1,  261,   -1,   -1,  264,  265,   -1,   -1,
   -1,   -1,  270,   -1,   -1,   -1,  274,   -1,  276,   -1,
   -1,   -1,   -1,   -1,   -1,  283,  284,  285,  286,   -1,
   -1,  289,  290,  291,   -1,  293,  294,  295,   -1,   -1,
  298,  257,   -1,  259,  302,  261,  304,  305,  264,  265,
   -1,  309,  310,   -1,  270,  313,   -1,   -1,  274,   -1,
  276,   -1,   -1,   -1,   -1,   -1,   -1,  283,  284,  285,
  286,   -1,   -1,  289,  290,  291,   -1,  293,  294,  295,
   -1,   -1,  298,  257,   -1,  259,  302,  261,  304,  305,
  264,  265,   -1,   -1,  310,   -1,  270,  313,   -1,   -1,
  274,   -1,  276,  361,   -1,   -1,   -1,   -1,   -1,  283,
  284,  285,  286,   -1,   -1,  289,  290,  291,   -1,  293,
  294,  295,   -1,   -1,  298,  257,   -1,  259,  302,  261,
  304,  305,  264,  265,   -1,  309,   -1,   -1,  270,   -1,
   -1,   -1,  274,   -1,  276,  361,   -1,   -1,   -1,   -1,
   -1,  283,  284,  285,  286,   -1,   -1,  289,  290,  291,
   -1,  293,  294,  295,   -1,   -1,  298,   -1,   -1,   -1,
  302,   -1,  304,  305,   -1,   -1,   -1,  258,  259,  260,
  261,   -1,   -1,  264,   -1,   -1,  267,  361,  269,  270,
   -1,   -1,   -1,   -1,   -1,  276,  277,   -1,  279,   -1,
   -1,   -1,  283,   -1,  285,   -1,  287,   -1,   -1,   -1,
   -1,  292,  293,   -1,   -1,  296,  297,  298,  299,  300,
  311,   -1,  303,  304,  315,  306,  307,  318,  309,  361,
   -1,   -1,  313,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  331,  332,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  331,  332,   -1,  344,  345,  346,  347,  348,  349,  350,
  351,  352,  353,  354,   -1,   -1,   -1,   -1,   -1,   -1,
  361,   -1,   -1,   -1,  355,  356,  357,  358,  359,  360,
  361,  259,   -1,  261,   -1,   -1,  264,   -1,   -1,   -1,
   -1,   -1,  270,   -1,   -1,  308,   -1,  310,  276,  312,
  313,  314,   -1,   -1,   -1,  283,   -1,  285,   -1,  287,
  323,  324,   -1,   -1,   -1,  293,  329,  330,  296,   -1,
   -1,  299,   -1,  259,   -1,  261,  304,   -1,  264,  307,
   -1,  309,   -1,   -1,  270,   -1,   -1,   -1,   -1,   -1,
  276,   -1,   -1,  321,  322,   -1,   -1,  283,   -1,  285,
   -1,  287,   -1,  331,  332,  333,  334,  293,   -1,   -1,
  296,   -1,   -1,  299,   -1,   -1,   -1,   -1,  304,   -1,
   -1,  307,   -1,   -1,   -1,   -1,  312,  355,  356,  357,
  358,  359,  360,  361,   -1,  321,  322,   -1,  308,   -1,
  310,   -1,  312,  313,  314,  331,  332,  333,  334,   -1,
   -1,  257,   -1,  323,  324,   -1,   -1,   -1,   -1,  265,
  330,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  274,  355,
  356,  357,  358,  359,  360,  361,  259,   -1,  261,   -1,
  286,  264,   -1,  289,  290,  291,   -1,  270,  294,  295,
   -1,   -1,  298,  276,   -1,   -1,  302,   -1,   -1,  305,
  283,   -1,  285,   -1,  287,   -1,   -1,   -1,   -1,   -1,
  293,   -1,   -1,  296,   -1,   -1,  299,   -1,  259,   -1,
  261,  304,   -1,  264,  307,   -1,   -1,   -1,   -1,  270,
   -1,   -1,   -1,  274,   -1,  276,   -1,   -1,  321,  322,
   -1,   -1,  283,   -1,  285,   -1,  287,   -1,  331,  332,
  333,  334,  293,   -1,   -1,  296,  282,   -1,  299,   -1,
   -1,   -1,   -1,  304,   -1,   -1,  307,   -1,   -1,   -1,
   -1,   -1,  355,  356,  357,  358,  359,  360,  361,   -1,
   -1,   -1,  308,   -1,  310,   -1,  312,  313,  314,   -1,
  331,  332,   -1,  319,  320,   -1,   -1,  323,  324,  325,
  326,  327,  328,  329,  330,   -1,   -1,   -1,   -1,   -1,
   -1,  337,  338,  339,  355,  356,  357,  358,  359,  360,
  361,  259,   -1,  261,   -1,   -1,  264,   -1,   -1,   -1,
   -1,   -1,  270,   -1,   -1,  308,   -1,  310,  276,  312,
  313,  314,   -1,   -1,   -1,  283,   -1,  285,   -1,  287,
  323,  324,   -1,   -1,  259,  293,  261,  330,  296,  264,
   -1,  299,   -1,   -1,   -1,  270,  304,   -1,   -1,  307,
   -1,  276,   -1,   -1,   -1,   -1,   -1,   -1,  283,   -1,
  285,   -1,  287,  321,  322,   -1,   -1,   -1,  293,   -1,
   -1,  296,   -1,   -1,  299,   -1,  257,   -1,   -1,  304,
   -1,   -1,  307,   -1,  265,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  274,   -1,   -1,   -1,  355,  356,  357,
  358,  359,  360,  361,   -1,  286,  331,  332,  289,  290,
  291,  282,   -1,  294,  295,   -1,   -1,  298,   -1,   -1,
   -1,  302,   -1,   -1,  305,   -1,   -1,   -1,   -1,   -1,
  355,  356,  357,  358,  359,  360,  361,  308,   -1,  310,
  311,  312,  313,  314,  315,   -1,   -1,  318,  319,  320,
   -1,   -1,  323,  324,  325,  326,  327,  328,  329,  330,
  331,  332,  333,  334,  335,  336,  337,  338,  339,  340,
  341,  342,  343,  344,  345,  346,  347,  348,  349,  350,
  351,  352,  353,  354,  282,   -1,   -1,   -1,   -1,   -1,
  361,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  308,   -1,  310,  311,  312,  313,  314,  315,   -1,   -1,
  318,  319,  320,   -1,   -1,  323,  324,  325,  326,  327,
  328,  329,  330,  331,  332,  333,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,  345,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  282,   -1,   -1,
  308,   -1,  310,  361,  312,  313,  314,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,  323,  324,   -1,   -1,   -1,
   -1,  329,  330,  308,   -1,  310,   -1,  312,  313,  314,
  338,  339,  317,   -1,  319,  320,  282,   -1,  323,  324,
  325,  326,  327,  328,  329,  330,   -1,   -1,   -1,   -1,
   -1,   -1,  337,  338,  339,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  308,   -1,  310,   -1,  312,  313,  314,   -1,
   -1,  317,   -1,  319,  320,  282,  361,  323,  324,  325,
  326,  327,  328,  329,  330,   -1,   -1,   -1,   -1,   -1,
   -1,  337,  338,  339,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  308,   -1,  310,   -1,  312,  313,  314,   -1,   -1,
  317,   -1,  319,  320,  282,  361,  323,  324,  325,  326,
  327,  328,  329,  330,   -1,   -1,   -1,   -1,   -1,   -1,
  337,  338,  339,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  308,   -1,  310,  311,  312,  313,  314,  315,   -1,   -1,
  318,  319,  320,   -1,  361,  323,  324,  325,  326,  327,
  328,  329,  330,  331,  332,  333,  334,  335,  336,  337,
  338,  339,  340,  341,  342,  343,  344,  345,  346,  347,
  348,  349,  350,  351,  352,  353,  354,  282,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,  308,   -1,  310,  311,  312,  313,  314,
  315,   -1,   -1,  318,  319,  320,   -1,   -1,  323,  324,
  325,  326,  327,  328,  329,  330,  331,  332,  333,  334,
  335,  336,  337,  338,  339,  340,  341,  342,  343,  344,
  345,  346,  347,  348,  349,  350,  351,  352,  353,  354,
  282,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,  308,   -1,  310,  311,
  312,  313,  314,  315,   -1,   -1,  318,  319,  320,   -1,
   -1,  323,  324,  325,  326,  327,  328,  329,  330,  331,
  332,  333,  334,  335,  336,  337,  338,  339,  340,  341,
  342,  343,  344,  345,  346,  347,  348,  349,  350,  351,
  352,  353,  354,  282,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  308,
   -1,  310,  311,  312,  313,  314,  315,   -1,   -1,  318,
  319,  320,   -1,   -1,  323,  324,  325,  326,  327,  328,
  329,  330,  331,  332,  333,  334,  335,  336,  337,  338,
  339,  340,  341,  342,  343,  344,  345,  346,  347,  348,
  349,  350,  351,  352,  353,  354,  282,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  308,   -1,  310,  311,  312,  313,  314,  315,
   -1,   -1,  318,  319,  320,   -1,   -1,  323,  324,  325,
  326,  327,  328,  329,  330,  331,  332,  333,  334,  335,
  336,  337,  338,  339,  340,  341,  342,  343,  344,  345,
  346,  347,  348,  349,  350,  351,  352,  353,  354,  282,
   -1,   -1,  308,   -1,  310,   -1,  312,  313,  314,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,  323,  324,   -1,
   -1,   -1,   -1,  329,  330,  308,   -1,  310,   -1,  312,
  313,  314,  338,  339,   -1,  318,  319,  320,   -1,   -1,
  323,  324,  325,  326,  327,  328,  329,  330,  331,  332,
  333,  334,  335,  336,  337,  338,  339,  340,  341,  342,
  343,  344,  345,  346,  347,  348,  349,  350,  351,  352,
  353,  354,  282,  308,   -1,  310,   -1,  312,  313,  314,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  323,  324,
   -1,   -1,   -1,   -1,  329,  330,   -1,   -1,  308,   -1,
   -1,   -1,   -1,  338,   -1,   -1,   -1,   -1,  318,  319,
  320,   -1,   -1,  323,   -1,  325,  326,  327,  328,  329,
  330,  331,  332,  333,  334,  335,  336,  337,  338,  339,
  340,  341,  342,  343,  344,  345,  346,  347,  348,  349,
  350,  351,  352,  353,  354,  282,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,  308,   -1,  310,  311,  312,  313,  314,  315,   -1,
   -1,  282,  319,  320,   -1,   -1,  323,  324,  325,  326,
  327,  328,  329,  330,  331,  332,  333,  334,  335,  336,
  337,  338,  339,  340,  341,  342,  343,  308,   -1,  310,
  311,  312,  313,  314,  315,   -1,   -1,  282,  319,  320,
   -1,   -1,  323,  324,  325,  326,  327,  328,  329,  330,
  331,  332,  333,  334,  335,  336,  337,  338,  339,  340,
  341,  342,  343,  308,   -1,  310,   -1,  312,  313,  314,
  315,   -1,   -1,  282,  319,  320,   -1,   -1,  323,  324,
  325,  326,  327,  328,  329,  330,  331,  332,  333,  334,
  335,  336,  337,  338,  339,  340,  341,  342,  343,  308,
   -1,  310,   -1,  312,  313,  314,  315,   -1,   -1,  282,
  319,  320,   -1,   -1,  323,  324,  325,  326,  327,  328,
  329,  330,  331,  332,  333,  334,  335,  336,  337,  338,
  339,  340,  341,  342,  343,  308,   -1,  310,   -1,  312,
  313,  314,  315,   -1,   -1,  282,  319,  320,   -1,   -1,
  323,  324,  325,  326,  327,  328,  329,  330,  331,  332,
  333,  334,  335,  336,  337,  338,  339,  340,  341,  342,
  343,  308,   -1,  310,   -1,  312,  313,  314,  315,   -1,
   -1,  282,  319,  320,   -1,   -1,  323,  324,  325,  326,
  327,  328,  329,  330,  331,  332,  333,  334,  335,  336,
  337,  338,  339,  340,  341,  342,  343,  308,   -1,  310,
   -1,  312,  313,  314,  315,   -1,   -1,  282,  319,  320,
   -1,   -1,  323,  324,  325,  326,  327,  328,  329,  330,
  331,  332,  333,  334,  335,  336,  337,  338,  339,  340,
  341,  342,  343,  308,   -1,  310,   -1,  312,  313,  314,
   -1,   -1,   -1,  282,  319,  320,   -1,   -1,  323,  324,
  325,  326,  327,  328,  329,  330,  331,  332,  333,  334,
  335,  336,  337,  338,  339,  340,  341,  342,  343,  308,
   -1,  310,   -1,  312,  313,  314,   -1,   -1,   -1,  282,
  319,  320,   -1,   -1,  323,  324,  325,  326,  327,  328,
  329,  330,  331,  332,  333,  334,  335,  336,  337,  338,
  339,  340,  341,  342,  343,  308,   -1,  310,   -1,  312,
  313,  314,   -1,   -1,   -1,  282,  319,  320,   -1,   -1,
  323,  324,  325,  326,  327,  328,  329,  330,   -1,   -1,
  333,  334,  335,  336,  337,  338,  339,  340,  341,  342,
  343,  308,   -1,  310,   -1,  312,  313,  314,   -1,   -1,
   -1,  282,  319,  320,   -1,   -1,  323,  324,  325,  326,
  327,  328,  329,  330,   -1,   -1,  333,  334,   -1,   -1,
  337,  338,  339,   -1,  341,  342,  343,  308,   -1,  310,
   -1,  312,  313,  314,   -1,   -1,   -1,  282,  319,  320,
   -1,   -1,  323,  324,  325,  326,  327,  328,  329,  330,
   -1,   -1,  333,  334,   -1,   -1,  337,  338,  339,   -1,
  341,  342,  343,  308,   -1,  310,   -1,  312,  313,  314,
   -1,   -1,   -1,  282,  319,  320,   -1,   -1,  323,  324,
  325,  326,  327,  328,  329,  330,   -1,   -1,  333,  334,
   -1,   -1,  337,  338,  339,   -1,  341,  342,  343,  308,
   -1,  310,   -1,  312,  313,  314,   -1,   -1,   -1,  282,
  319,  320,   -1,   -1,  323,  324,  325,  326,  327,  328,
  329,  330,   -1,   -1,   -1,   -1,   -1,   -1,  337,  338,
  339,   -1,  341,  342,  343,  308,   -1,  310,   -1,  312,
  313,  314,   -1,   -1,   -1,  282,  319,  320,   -1,   -1,
  323,  324,  325,  326,  327,  328,  329,  330,   -1,   -1,
   -1,   -1,   -1,   -1,  337,  338,  339,   -1,  341,  342,
  343,  308,   -1,  310,   -1,  312,  313,  314,   -1,   -1,
   -1,  282,  319,  320,   -1,   -1,  323,  324,  325,  326,
  327,  328,  329,  330,   -1,   -1,   -1,   -1,   -1,   -1,
  337,  338,  339,   -1,  341,  342,  343,  308,   -1,  310,
   -1,  312,  313,  314,   -1,   -1,   -1,  282,  319,  320,
   -1,   -1,  323,  324,  325,  326,  327,  328,  329,  330,
   -1,   -1,   -1,   -1,   -1,   -1,  337,  338,  339,   -1,
  341,  342,  343,  308,   -1,  310,   -1,  312,  313,  314,
  282,   -1,   -1,   -1,  319,  320,   -1,   -1,  323,  324,
  325,  326,  327,  328,  329,  330,   -1,   -1,   -1,   -1,
   -1,   -1,  337,  338,  339,   -1,  308,   -1,  310,   -1,
  312,  313,  314,  282,   -1,   -1,   -1,  319,  320,   -1,
   -1,  323,  324,  325,  326,  327,  328,  329,  330,   -1,
   -1,   -1,   -1,   -1,   -1,  337,  338,  339,   -1,  308,
   -1,  310,   -1,  312,  313,  314,  282,   -1,   -1,   -1,
  319,  320,   -1,   -1,  323,  324,  325,  326,  327,  328,
  329,  330,   -1,   -1,   -1,   -1,   -1,   -1,  337,  338,
  339,   -1,  308,   -1,  310,   -1,  312,  313,  314,   -1,
   -1,   -1,   -1,  319,  320,   -1,   -1,  323,  324,  325,
  326,  327,  328,  329,  330,   -1,  257,   -1,   -1,   -1,
   -1,  337,  338,  339,  265,  308,   -1,  310,   -1,  312,
  313,  314,   -1,  274,   -1,   -1,   -1,   -1,   -1,   -1,
  323,  324,   -1,  284,   -1,  286,  329,  330,  289,  290,
  291,  257,   -1,  294,  295,  338,   -1,  298,   -1,  265,
   -1,  302,   -1,   -1,  305,   -1,   -1,   -1,  274,   -1,
   -1,   -1,  313,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  286,   -1,   -1,  289,  290,  291,   -1,   -1,  294,  295,
   -1,   -1,  298,   -1,   -1,   -1,  302,   -1,   -1,  305,
};
}
final static short YYFINAL=2;
final static short YYMAXTOKEN=368;
final static String yyname[] = {
"end-of-file",null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,"ABSTRACT","ASSERT","BOOLEAN","BREAK","BYTE","CASE","CATCH",
"CHAR","CLASS","CONST","CONTINUE","DEFAULT","DO","DOUBLE","ELSE","ENUM",
"EXTENDS","FINAL","FINALLY","FLOAT","FOR","GOTO","IF","IMPLEMENTS","IMPORT",
"INSTANCEOF","INT","INTERFACE","LONG","NATIVE","NEW","PACKAGE","PRIVATE",
"PROTECTED","PUBLIC","RETURN","SHORT","STATIC","STRICTFP","SUPER","SWITCH",
"SYNCHRONIZED","THIS","THROW","THROWS","TRANSIENT","TRY","VOID","VOLATILE",
"WHILE","L_PAR","R_PAR","L_CURLY","R_CURLY","L_BRACKET","R_BRACKET","SEMICOLON",
"COMMA","DOT","MONKEYS_AT","ELLIPSIS","ASSIGN","GT","LT","NOT","COMP",
"QUESTION","COLON","EQ","LTE","GTE","NEQ","BOOL_AND","BOOL_OR","INCREMENT",
"DECREMENT","PLUS","MINUS","MULTI","DIV","AND","OR","XOR","MOD","L_SHIFT",
"R_SHIFT","UR_SHIFT","PLUS_ASSIGN","MINUS_ASSIGN","MULTI_ASSIGN","DIV_ASSIGN",
"AND_ASSIGN","OR_ASSIGN","XOR_ASSIGN","MOD_ASSIGN","L_SHIFT_ASSIGN",
"R_SHIFT_ASSIGN","UR_SHIFT_ASSIGN","BOOL_LIT","INT_LIT","FLOAT_LIT","CHAR_LIT",
"STRING_LIT","NULL_LIT","IDENTIFIER","COMMENT","EOL_COMMENT","DOC_COMMENT",
"WHITESPACE","EOL","EOF","ERROR",
};
final static String yyrule[] = {
"$accept : compilation_unit",
"type : primitive_type",
"type : reference_type",
"primitive_type : numeric_type",
"primitive_type : BOOLEAN",
"primitive_type : VOID",
"numeric_type : integer_type",
"numeric_type : floating_point_type",
"integer_type : BYTE",
"integer_type : SHORT",
"integer_type : INT",
"integer_type : LONG",
"integer_type : CHAR",
"floating_point_type : FLOAT",
"floating_point_type : DOUBLE",
"reference_type : multi_part_id",
"reference_type : multi_part_id dims",
"reference_type : primitive_type dims",
"compilation_unit : package_declaration import_declarations type_declarations",
"import_declarations :",
"import_declarations : import_declarations import_declaration",
"type_declarations :",
"type_declarations : type_declarations type_declaration",
"package_declaration :",
"package_declaration : PACKAGE multi_part_id SEMICOLON",
"import_declaration : single_type_import_declaration",
"import_declaration : type_import_on_demand_declaration",
"single_type_import_declaration : IMPORT static_opt multi_part_id SEMICOLON",
"type_import_on_demand_declaration : IMPORT static_opt multi_part_id DOT MULTI SEMICOLON",
"static_opt :",
"static_opt : STATIC",
"type_declaration : class_declaration",
"type_declaration : interface_declaration",
"type_declaration : SEMICOLON",
"class_declaration : modifiers CLASS IDENTIFIER super interfaces class_body",
"class_declaration : CLASS IDENTIFIER super interfaces class_body",
"super :",
"super : EXTENDS multi_part_id",
"interfaces :",
"interfaces : IMPLEMENTS id_type_list",
"id_type_list : multi_part_id",
"id_type_list : id_type_list COMMA multi_part_id",
"class_body : L_CURLY class_body_declarations R_CURLY",
"class_body_declarations :",
"class_body_declarations : class_body_declarations class_body_declaration",
"class_body_declaration : class_member_declaration",
"class_body_declaration : instance_initializer",
"class_body_declaration : static_initializer",
"class_body_declaration : constructor_declaration",
"class_member_declaration : field_declaration",
"class_member_declaration : method_declaration",
"class_member_declaration : class_declaration",
"class_member_declaration : interface_declaration",
"class_member_declaration : SEMICOLON",
"field_declaration : modifiers type variable_declarators SEMICOLON",
"field_declaration : type variable_declarators SEMICOLON",
"variable_declarators : variable_declarator",
"variable_declarators : variable_declarators COMMA variable_declarator",
"variable_declarator : variable_declarator_id variable_initializer_opt",
"variable_declarator_id : IDENTIFIER",
"variable_declarator_id : IDENTIFIER dims",
"variable_initializer_opt :",
"variable_initializer_opt : ASSIGN variable_initializer",
"variable_initializer : expression",
"variable_initializer : array_initializer",
"method_declaration : method_header method_body",
"method_header : modifiers type method_declarator throws",
"method_header : type method_declarator throws",
"method_declarator : modern_method_declarator",
"method_declarator : modern_method_declarator dims",
"modern_method_declarator : IDENTIFIER L_PAR formal_parameter_list_opt R_PAR",
"formal_parameter_list_opt :",
"formal_parameter_list_opt : formal_parameter_list",
"formal_parameter_list : formal_parameter",
"formal_parameter_list : formal_parameter_list COMMA formal_parameter",
"formal_parameter : final_opt type ellipsis_opt variable_declarator_id",
"ellipsis_opt :",
"ellipsis_opt : ELLIPSIS",
"final_opt :",
"final_opt : FINAL",
"throws :",
"throws : THROWS id_type_list",
"method_body : block",
"method_body : SEMICOLON",
"instance_initializer : block",
"static_initializer : modifiers block",
"constructor_declaration : modifiers constructor_declarator throws constructor_body",
"constructor_declaration : constructor_declarator throws constructor_body",
"constructor_declarator : IDENTIFIER L_PAR formal_parameter_list_opt R_PAR",
"constructor_body : L_CURLY constructor_block_statements R_CURLY",
"constructor_block_statements :",
"constructor_block_statements : constructor_block_statements constructor_block_statement",
"constructor_block_statement : block_statement",
"constructor_block_statement : THIS L_PAR argument_list_opt R_PAR SEMICOLON",
"constructor_block_statement : SUPER L_PAR argument_list_opt R_PAR SEMICOLON",
"constructor_block_statement : primary DOT SUPER L_PAR argument_list_opt R_PAR SEMICOLON",
"constructor_block_statement : multi_part_id DOT SUPER L_PAR argument_list_opt R_PAR SEMICOLON",
"interface_declaration : modifiers INTERFACE IDENTIFIER extends_interfaces interface_body",
"interface_declaration : INTERFACE IDENTIFIER extends_interfaces interface_body",
"extends_interfaces :",
"extends_interfaces : EXTENDS id_type_list",
"interface_body : L_CURLY interface_member_declarations R_CURLY",
"interface_member_declarations :",
"interface_member_declarations : interface_member_declarations interface_member_declaration",
"interface_member_declaration : field_declaration",
"interface_member_declaration : abstract_method_declaration",
"interface_member_declaration : class_declaration",
"interface_member_declaration : interface_declaration",
"interface_member_declaration : SEMICOLON",
"abstract_method_declaration : modifiers type method_declarator throws SEMICOLON",
"abstract_method_declaration : type method_declarator throws SEMICOLON",
"array_initializer : L_CURLY variable_initializers_opt R_CURLY",
"variable_initializers_opt :",
"variable_initializers_opt : variable_initializers",
"variable_initializers_opt : variable_initializers COMMA",
"variable_initializers : variable_initializer",
"variable_initializers : variable_initializers COMMA variable_initializer",
"block : L_CURLY block_statements_opt R_CURLY",
"block_statements_opt :",
"block_statements_opt : block_statements",
"block_statements : block_statement",
"block_statements : block_statements block_statement",
"block_statement : local_variable_declaration_statement",
"block_statement : class_declaration",
"block_statement : statement",
"local_variable_declaration_statement : local_variable_declaration SEMICOLON",
"local_variable_declaration : FINAL type variable_declarators",
"local_variable_declaration : type variable_declarators",
"statement : labeled_statement",
"statement : if_statement",
"statement : while_statement",
"statement : for_each_statement",
"statement : for_statement",
"statement : block",
"statement : empty_statement",
"statement : expression_statement",
"statement : switch_statement",
"statement : do_statement",
"statement : break_statement",
"statement : continue_statement",
"statement : return_statement",
"statement : synchronized_statement",
"statement : throw_statement",
"statement : try_statement",
"statement : assert_statement",
"empty_statement : SEMICOLON",
"labeled_statement : IDENTIFIER COLON statement",
"expression_statement : statement_expression SEMICOLON",
"statement_expression : assignment",
"statement_expression : pre_increment_expression",
"statement_expression : pre_decrement_expression",
"statement_expression : post_increment_expression",
"statement_expression : post_decrement_expression",
"statement_expression : method_invocation",
"statement_expression : class_instance_creation_expression",
"if_statement : IF L_PAR expression R_PAR statement",
"if_statement : IF L_PAR expression R_PAR statement ELSE statement",
"switch_statement : SWITCH L_PAR expression R_PAR switch_block",
"switch_block : L_CURLY switch_block_statement_groups switch_labels_opt R_CURLY",
"switch_block_statement_groups :",
"switch_block_statement_groups : switch_block_statement_groups switch_block_statement_group",
"switch_block_statement_group : switch_labels block_statements",
"switch_labels_opt :",
"switch_labels_opt : switch_labels",
"switch_labels : switch_label",
"switch_labels : switch_labels switch_label",
"switch_label : CASE constant_expression COLON",
"switch_label : DEFAULT COLON",
"while_statement : WHILE L_PAR expression R_PAR statement",
"do_statement : DO statement WHILE L_PAR expression R_PAR SEMICOLON",
"for_each_statement : FOR L_PAR for_init COLON expression R_PAR statement",
"for_statement : FOR L_PAR for_init SEMICOLON expression_opt SEMICOLON for_update R_PAR statement",
"for_init :",
"for_init : statement_expression_list",
"for_init : local_variable_declaration",
"expression_opt :",
"expression_opt : expression",
"for_update :",
"for_update : statement_expression_list",
"statement_expression_list : statement_expression",
"statement_expression_list : statement_expression_list COMMA statement_expression",
"break_statement : BREAK identifier_opt SEMICOLON",
"identifier_opt :",
"identifier_opt : IDENTIFIER",
"continue_statement : CONTINUE identifier_opt SEMICOLON",
"return_statement : RETURN expression_opt SEMICOLON",
"throw_statement : THROW expression SEMICOLON",
"synchronized_statement : SYNCHRONIZED L_PAR expression R_PAR block",
"try_statement : TRY block catches",
"try_statement : TRY block catches_opt finally",
"catches_opt :",
"catches_opt : catches",
"catches : catch_clause",
"catches : catches catch_clause",
"catch_clause : CATCH L_PAR formal_parameter R_PAR block",
"finally : FINALLY block",
"assert_statement : ASSERT expression SEMICOLON",
"assert_statement : ASSERT expression COLON expression SEMICOLON",
"primary : primary_no_new_array",
"primary : array_creation_expression",
"primary_no_new_array : literal",
"primary_no_new_array : multi_part_id DOT CLASS",
"primary_no_new_array : multi_part_id dims DOT CLASS",
"primary_no_new_array : primitive_type DOT CLASS",
"primary_no_new_array : primitive_type dims DOT CLASS",
"primary_no_new_array : THIS",
"primary_no_new_array : multi_part_id DOT THIS",
"primary_no_new_array : L_PAR expression R_PAR",
"primary_no_new_array : class_instance_creation_expression",
"primary_no_new_array : field_access",
"primary_no_new_array : method_invocation",
"primary_no_new_array : array_access",
"literal : INT_LIT",
"literal : FLOAT_LIT",
"literal : BOOL_LIT",
"literal : CHAR_LIT",
"literal : STRING_LIT",
"literal : NULL_LIT",
"class_instance_creation_expression : NEW multi_part_id L_PAR argument_list_opt R_PAR class_body_opt",
"class_instance_creation_expression : primary DOT NEW IDENTIFIER L_PAR argument_list_opt R_PAR class_body_opt",
"class_instance_creation_expression : multi_part_id DOT NEW IDENTIFIER L_PAR argument_list_opt R_PAR class_body_opt",
"argument_list_opt :",
"argument_list_opt : argument_list",
"argument_list : expression",
"argument_list : argument_list COMMA expression",
"class_body_opt :",
"class_body_opt : class_body",
"array_creation_expression : NEW primitive_type dim_exprs dims",
"array_creation_expression : NEW primitive_type dim_exprs",
"array_creation_expression : NEW multi_part_id dim_exprs dims",
"array_creation_expression : NEW multi_part_id dim_exprs",
"array_creation_expression : NEW primitive_type dims array_initializer",
"array_creation_expression : NEW multi_part_id dims array_initializer",
"dim_exprs : dim_expr",
"dim_exprs : dim_exprs dim_expr",
"dim_expr : L_BRACKET expression R_BRACKET",
"dims : L_BRACKET R_BRACKET",
"dims : dims L_BRACKET R_BRACKET",
"field_access : primary DOT IDENTIFIER",
"field_access : SUPER DOT IDENTIFIER",
"field_access : multi_part_id DOT SUPER DOT IDENTIFIER",
"method_invocation : multi_part_id DOT IDENTIFIER L_PAR argument_list_opt R_PAR",
"method_invocation : IDENTIFIER L_PAR argument_list_opt R_PAR",
"method_invocation : primary DOT IDENTIFIER L_PAR argument_list_opt R_PAR",
"method_invocation : SUPER DOT IDENTIFIER L_PAR argument_list_opt R_PAR",
"method_invocation : multi_part_id DOT SUPER DOT IDENTIFIER L_PAR argument_list_opt R_PAR",
"array_access : multi_part_id L_BRACKET expression R_BRACKET",
"array_access : primary_no_new_array L_BRACKET expression R_BRACKET",
"postfix_expression : primary",
"postfix_expression : multi_part_id",
"postfix_expression : post_increment_expression",
"postfix_expression : post_decrement_expression",
"post_increment_expression : postfix_expression INCREMENT",
"post_decrement_expression : postfix_expression DECREMENT",
"unary_expression : pre_increment_expression",
"unary_expression : pre_decrement_expression",
"unary_expression : PLUS unary_expression",
"unary_expression : MINUS unary_expression",
"unary_expression : unary_expression_not_plus_minus",
"pre_increment_expression : INCREMENT unary_expression",
"pre_decrement_expression : DECREMENT unary_expression",
"unary_expression_not_plus_minus : postfix_expression",
"unary_expression_not_plus_minus : COMP unary_expression",
"unary_expression_not_plus_minus : NOT unary_expression",
"unary_expression_not_plus_minus : cast_expression",
"cast_expression : L_PAR primitive_type dims R_PAR unary_expression",
"cast_expression : L_PAR primitive_type R_PAR unary_expression",
"cast_expression : L_PAR expression R_PAR unary_expression_not_plus_minus",
"cast_expression : L_PAR multi_part_id dims R_PAR unary_expression_not_plus_minus",
"multicaptive_expression : unary_expression",
"multicaptive_expression : multicaptive_expression MULTI unary_expression",
"multicaptive_expression : multicaptive_expression DIV unary_expression",
"multicaptive_expression : multicaptive_expression MOD unary_expression",
"additive_expression : multicaptive_expression",
"additive_expression : additive_expression PLUS multicaptive_expression",
"additive_expression : additive_expression MINUS multicaptive_expression",
"shift_expression : additive_expression",
"shift_expression : shift_expression L_SHIFT additive_expression",
"shift_expression : shift_expression R_SHIFT additive_expression",
"shift_expression : shift_expression UR_SHIFT additive_expression",
"relational_expression : shift_expression",
"relational_expression : relational_expression LT shift_expression",
"relational_expression : relational_expression GT shift_expression",
"relational_expression : relational_expression LTE shift_expression",
"relational_expression : relational_expression GTE shift_expression",
"relational_expression : relational_expression INSTANCEOF reference_type",
"equality_expression : relational_expression",
"equality_expression : equality_expression EQ relational_expression",
"equality_expression : equality_expression NEQ relational_expression",
"and_expression : equality_expression",
"and_expression : and_expression AND equality_expression",
"exclusive_or_expression : and_expression",
"exclusive_or_expression : exclusive_or_expression XOR and_expression",
"inclusive_or_expression : exclusive_or_expression",
"inclusive_or_expression : inclusive_or_expression OR exclusive_or_expression",
"conditional_and_expression : inclusive_or_expression",
"conditional_and_expression : conditional_and_expression BOOL_AND inclusive_or_expression",
"conditional_or_expression : conditional_and_expression",
"conditional_or_expression : conditional_or_expression BOOL_OR conditional_and_expression",
"conditional_expression : conditional_or_expression",
"conditional_expression : conditional_or_expression QUESTION expression COLON conditional_expression",
"assignment_expression : conditional_expression",
"assignment_expression : assignment",
"assignment : left_hand_side assignment_operator assignment_expression",
"left_hand_side : multi_part_id",
"left_hand_side : field_access",
"left_hand_side : array_access",
"assignment_operator : ASSIGN",
"assignment_operator : PLUS_ASSIGN",
"assignment_operator : MINUS_ASSIGN",
"assignment_operator : MULTI_ASSIGN",
"assignment_operator : DIV_ASSIGN",
"assignment_operator : AND_ASSIGN",
"assignment_operator : OR_ASSIGN",
"assignment_operator : XOR_ASSIGN",
"assignment_operator : MOD_ASSIGN",
"assignment_operator : L_SHIFT_ASSIGN",
"assignment_operator : R_SHIFT_ASSIGN",
"assignment_operator : UR_SHIFT_ASSIGN",
"expression : assignment_expression",
"constant_expression : expression",
"modifiers : modifier",
"modifiers : modifiers modifier",
"modifier : PUBLIC",
"modifier : PROTECTED",
"modifier : PRIVATE",
"modifier : ABSTRACT",
"modifier : STATIC",
"modifier : FINAL",
"modifier : SYNCHRONIZED",
"modifier : NATIVE",
"modifier : STRICTFP",
"modifier : TRANSIENT",
"modifier : VOLATILE",
"multi_part_id : IDENTIFIER",
"multi_part_id : multi_part_id DOT IDENTIFIER",
};

//#line 879 "parser.y"

private Scanner scanner;
private ASTContext astContext;

private int yylex() {
    try {
        int type=scanner.yylex();
        ((ScannerToken)yylval).setContext(astContext);
        return type;
    }
    catch (IOException e) {
        //System.err.println("Error: "+e);
    }
    return -1;
}

private void yyerror(String s) {
    System.err.println("YYError: "+s);
}

public Parser(ASTContext context, Reader in, String filename) {
    scanner = new Scanner(in);
    scanner.setParser(this);
    astContext=context;
}

public Parser(InputStream in) {
    scanner = new Scanner(in);
    scanner.setParser(this);
}

public static void main(String argv[]) {
    if (argv.length == 0) {
        System.out.println("Usage : java Scanner ");
    }
    else {
        for (int i = 0; i < argv.length; i++) {
            Parser parser = null;
            try {
                int status;

                System.out.println("File: "+argv[i]);
                parser = new Parser(null, new FileReader(argv[i]), argv[i] );
                //		  parser.yydebug=true;
                status=parser.yyparse();
                if (status!=0)
                    System.exit(status);
            }
            catch (FileNotFoundException e) {
                System.out.println("File not found : \""+argv[i]+"\"");
            }
            catch (IOException e) {
                System.out.println("IO error scanning file \""+argv[i]+"\"");
                System.out.println(e);
            }
            catch (Exception e) {
                System.out.println("Unexpected exception:");
                e.printStackTrace();
            }
        }
    }
}

public ASTree getASTree() {
    return yyval;
}

public Token[] getTokens() {
    return scanner.getTokens();
}

public int parse() {
    return yyparse();
}

public int doAttribution() {
    return 0;
}

//#line 1715 "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
  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";
          if (yydebug)
            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
    switch(yyn)
      {
//########## USER-SUPPLIED ACTIONS ##########
case 3:
//#line 65 "parser.y"
{ yyval=new ASTreeNode(astContext,PRIMITIVE_TYPE,val_peek(0)); }
break;
case 4:
//#line 66 "parser.y"
{ yyval=new ASTreeNode(astContext,PRIMITIVE_TYPE,val_peek(0)); }
break;
case 5:
//#line 67 "parser.y"
{ yyval=new ASTreeNode(astContext,PRIMITIVE_TYPE,val_peek(0)); }
break;
case 16:
//#line 87 "parser.y"
{ yyval = new ASTreeNode(astContext,REFERENCE_TYPE,val_peek(1),val_peek(0)); }
break;
case 17:
//#line 88 "parser.y"
{ yyval = new ASTreeNode(astContext,REFERENCE_TYPE,val_peek(1),val_peek(0)); }
break;
case 18:
//#line 93 "parser.y"
{ yyval = new ASTreeNode(astContext,COMPILATION_UNIT,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)});  /* System.out.println($$); */ }
break;
case 19:
//#line 96 "parser.y"
{ yyval = null; }
break;
case 20:
//#line 97 "parser.y"
{ if (val_peek(1)==null) yyval=new ASTreeNode(astContext,IMPORT_DECLARATIONS,val_peek(0)); else yyval=val_peek(1).addSubTree(val_peek(0)); }
break;
case 21:
//#line 100 "parser.y"
{ yyval = null; }
break;
case 22:
//#line 101 "parser.y"
{ if (val_peek(1)==null) yyval=new ASTreeNode(astContext,TYPE_DECLARATIONS,val_peek(0)); else yyval=val_peek(1).addSubTree(val_peek(0)); }
break;
case 23:
//#line 105 "parser.y"
{ yyval = null; }
break;
case 24:
//#line 106 "parser.y"
{ yyval = new ASTreeNode(astContext,PACKAGE_DECLARATION,val_peek(2),val_peek(0),val_peek(1)); }
break;
case 27:
//#line 115 "parser.y"
{ yyval = new ASTreeNode(astContext,SINGLE_TYPE_IMPORT,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),val_peek(1)}); }
break;
case 28:
//#line 119 "parser.y"
{ yyval = new ASTreeNode(astContext,TYPE_IMPORT_ON_DEMAND,val_peek(5),val_peek(0),new ASTree[]{val_peek(4),val_peek(3)}); }
break;
case 29:
//#line 122 "parser.y"
{ yyval=null; }
break;
case 34:
//#line 133 "parser.y"
{ yyval = new ASTreeNode(astContext,CLASS_DECLARATION,val_peek(5),val_peek(0),new ASTree[]{val_peek(5),val_peek(3),null,val_peek(2),val_peek(1),val_peek(0)}); /* System.out.println("Class:"+((Token)$3).getValue()); */ }
break;
case 35:
//#line 134 "parser.y"
{ yyval = new ASTreeNode(astContext,CLASS_DECLARATION,val_peek(4),val_peek(0),new ASTree[]{null,val_peek(3),null,val_peek(2),val_peek(1),val_peek(0)}); /* System.out.println("Class:"+((Token)$2).getValue()); */ }
break;
case 36:
//#line 154 "parser.y"
{ yyval=null; }
break;
case 37:
//#line 155 "parser.y"
{ yyval=new ASTreeNode(astContext,SUPER_,val_peek(1),val_peek(0),val_peek(0)); }
break;
case 38:
//#line 159 "parser.y"
{ yyval=null; }
break;
case 39:
//#line 160 "parser.y"
{ yyval = val_peek(0).setFirstToken(val_peek(1)); }
break;
case 40:
//#line 163 "parser.y"
{ yyval = new ASTreeNode(astContext,TYPE_LIST,val_peek(0),val_peek(0),val_peek(0)); }
break;
case 41:
//#line 164 "parser.y"
{ yyval=val_peek(2).addSubTree(val_peek(0)); }
break;
case 42:
//#line 168 "parser.y"
{ if (val_peek(1)!=null) yyval=val_peek(1).setFirstAndLastToken(val_peek(2),val_peek(0));
                                                      else yyval=new ASTreeNode(astContext,CLASS_BODY_DECLARATIONS,val_peek(2),val_peek(0),new ASTree[0]); }
break;
case 43:
//#line 172 "parser.y"
{yyval=null; }
break;
case 44:
//#line 173 "parser.y"
{ if (val_peek(1)==null) yyval=new ASTreeNode(astContext,CLASS_BODY_DECLARATIONS,val_peek(0)); else yyval=val_peek(1).addSubTree(val_peek(0)); }
break;
case 54:
//#line 190 "parser.y"
{ yyval = new ASTreeNode(astContext,FIELD_DECLARATION,val_peek(3),val_peek(0),new ASTree[]{val_peek(3),val_peek(2),val_peek(1)}); }
break;
case 55:
//#line 191 "parser.y"
{ yyval = new ASTreeNode(astContext,FIELD_DECLARATION,val_peek(2),val_peek(0),new ASTree[]{null,val_peek(2),val_peek(1)}); }
break;
case 57:
//#line 195 "parser.y"
{ if (val_peek(2).getType()!=VARIABLE_DECLARATORS) yyval=new ASTreeNode(astContext,VARIABLE_DECLARATORS,val_peek(2),val_peek(0));
                                                       else yyval=val_peek(2).addSubTree(val_peek(0)); }
break;
case 58:
//#line 199 "parser.y"
{ yyval=val_peek(1).addSubTree(val_peek(0)); }
break;
case 59:
//#line 202 "parser.y"
{ yyval=new ASTreeNode(astContext,VARIABLE_DECLARATOR,val_peek(0),val_peek(0),new ASTree[]{val_peek(0),null}); }
break;
case 60:
//#line 203 "parser.y"
{ yyval=new ASTreeNode(astContext,VARIABLE_DECLARATOR,val_peek(1),val_peek(0),new ASTree[]{val_peek(1),val_peek(0)}); }
break;
case 61:
//#line 206 "parser.y"
{ yyval=null; }
break;
case 62:
//#line 207 "parser.y"
{ yyval=val_peek(0); }
break;
case 65:
//#line 231 "parser.y"
{ yyval=val_peek(1).addSubTree(val_peek(0)); }
break;
case 66:
//#line 234 "parser.y"
{ yyval=new ASTreeNode(astContext,METHOD_DECLARATION,new ASTree[]{val_peek(3),null,val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 67:
//#line 235 "parser.y"
{ yyval=new ASTreeNode(astContext,METHOD_DECLARATION,new ASTree[]{null,null,val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 68:
//#line 244 "parser.y"
{ yyval=val_peek(0).addSubTree(null); }
break;
case 69:
//#line 245 "parser.y"
{ yyval=val_peek(1).addSubTree(val_peek(0)); }
break;
case 70:
//#line 248 "parser.y"
{ yyval=new ASTreeNode(astContext,METHOD_DECLARATOR,val_peek(3),val_peek(0),new ASTree[]{val_peek(3),val_peek(1)}); }
break;
case 71:
//#line 253 "parser.y"
{ yyval=null; }
break;
case 73:
//#line 257 "parser.y"
{ yyval=new ASTreeNode(astContext,FORMAL_PARAMETER_LIST,val_peek(0)); }
break;
case 74:
//#line 258 "parser.y"
{ yyval=val_peek(2).addSubTree(val_peek(0)); }
break;
case 75:
//#line 261 "parser.y"
{ yyval=new ASTreeNode(astContext,FORMAL_PARAMETER,new ASTree[]{val_peek(3),val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 76:
//#line 264 "parser.y"
{ yyval=null;}
break;
case 78:
//#line 268 "parser.y"
{ yyval=null; }
break;
case 80:
//#line 292 "parser.y"
{ yyval=null; }
break;
case 81:
//#line 293 "parser.y"
{ yyval=val_peek(0).setFirstToken(val_peek(1)); }
break;
case 84:
//#line 302 "parser.y"
{ yyval=new ASTreeNode(astContext,INSTANCE_INITIALIZER,val_peek(0),val_peek(0),new ASTree[]{null,val_peek(0)}); }
break;
case 85:
//#line 306 "parser.y"
{ yyval=new ASTreeNode(astContext,STATIC_INITIALIZER,val_peek(1),val_peek(0)); }
break;
case 86:
//#line 310 "parser.y"
{ yyval=new ASTreeNode(astContext,CONSTRUCTOR_DECLARATION,new ASTree[]{val_peek(3),null,null,val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 87:
//#line 311 "parser.y"
{ yyval=new ASTreeNode(astContext,CONSTRUCTOR_DECLARATION,val_peek(2),val_peek(0),new ASTree[]{null,null,null,val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 88:
//#line 314 "parser.y"
{ yyval=new ASTreeNode(astContext,CONSTRUCTOR_DECLARATOR,val_peek(3),val_peek(0),new ASTree[]{val_peek(3),val_peek(1)}); }
break;
case 89:
//#line 331 "parser.y"
{ if (val_peek(1)!=null) yyval=val_peek(1).setFirstAndLastToken(val_peek(2),val_peek(0)); 
                                                                 else yyval=new ASTreeNode(astContext,BLOCK_STATEMENTS,val_peek(2),val_peek(0),(ASTree[])null); }
break;
case 90:
//#line 336 "parser.y"
{ yyval=null; }
break;
case 91:
//#line 337 "parser.y"
{ if (val_peek(1)==null) yyval=new ASTreeNode(astContext,BLOCK_STATEMENTS,val_peek(0)); else yyval=val_peek(1).addSubTree(val_peek(0)); }
break;
case 93:
//#line 341 "parser.y"
{ yyval=new ASTreeNode(astContext,EXPLICIT_CONSTRUCTOR_INVOCATION,val_peek(4),val_peek(0),new ASTree[]{null,null,val_peek(4),val_peek(2)}); }
break;
case 94:
//#line 342 "parser.y"
{ yyval=new ASTreeNode(astContext,EXPLICIT_CONSTRUCTOR_INVOCATION,val_peek(4),val_peek(0),new ASTree[]{null,null,val_peek(4),val_peek(2)}); }
break;
case 95:
//#line 343 "parser.y"
{ yyval=new ASTreeNode(astContext,EXPLICIT_CONSTRUCTOR_INVOCATION,val_peek(6),val_peek(0),new ASTree[]{val_peek(6),null,val_peek(4),val_peek(2)}); }
break;
case 96:
//#line 344 "parser.y"
{ yyval=new ASTreeNode(astContext,EXPLICIT_CONSTRUCTOR_INVOCATION,val_peek(6),val_peek(0),new ASTree[]{val_peek(6),null,val_peek(4),val_peek(2)}); }
break;
case 97:
//#line 356 "parser.y"
{ yyval=new ASTreeNode(astContext,INTERFACE_DECLARATION,val_peek(4),val_peek(0),new ASTree[]{val_peek(4),val_peek(2),null,null,val_peek(1),val_peek(0)}); }
break;
case 98:
//#line 357 "parser.y"
{ yyval=new ASTreeNode(astContext,INTERFACE_DECLARATION,val_peek(3),val_peek(0),new ASTree[]{null,val_peek(2),null,null,val_peek(1),val_peek(0)}); }
break;
case 99:
//#line 376 "parser.y"
{ yyval=null; }
break;
case 100:
//#line 377 "parser.y"
{ yyval=val_peek(0).setFirstToken(val_peek(1)); }
break;
case 101:
//#line 381 "parser.y"
{ if (val_peek(1)!=null) yyval=val_peek(1).setFirstAndLastToken(val_peek(2),val_peek(0));
                                                                else yyval=new ASTreeNode(astContext,INTERFACE_MEMBER_DECLARATIONS,val_peek(2),val_peek(0),new ASTree[0]); }
break;
case 102:
//#line 385 "parser.y"
{ yyval=null; }
break;
case 103:
//#line 386 "parser.y"
{ if (val_peek(1)==null) yyval=new ASTreeNode(astContext,INTERFACE_MEMBER_DECLARATIONS,val_peek(0)); else yyval=val_peek(1).addSubTree(val_peek(0)); }
break;
case 109:
//#line 413 "parser.y"
{ yyval=new ASTreeNode(astContext,METHOD_DECLARATION,val_peek(4),val_peek(0),new ASTree[]{val_peek(4),null,val_peek(3),val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 110:
//#line 414 "parser.y"
{ yyval=new ASTreeNode(astContext,METHOD_DECLARATION,val_peek(3),val_peek(0),new ASTree[]{null,null,val_peek(3),val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 111:
//#line 429 "parser.y"
{ yyval=new ASTreeNode(astContext,ARRAY_INITIALIZER,val_peek(2),val_peek(0),val_peek(1)); }
break;
case 112:
//#line 432 "parser.y"
{ yyval=null; }
break;
case 114:
//#line 434 "parser.y"
{ yyval=val_peek(1); }
break;
case 116:
//#line 438 "parser.y"
{ if (val_peek(2).getType()!=VARIABLE_INITIALIZERS) yyval=new ASTreeNode(astContext,VARIABLE_INITIALIZERS,val_peek(2),val_peek(0));
                                                          else yyval=val_peek(2).addSubTree(val_peek(0)); }
break;
case 117:
//#line 443 "parser.y"
{ if (val_peek(1)!=null) yyval=val_peek(1).setFirstAndLastToken(val_peek(2),val_peek(0));
                                              else yyval=new ASTreeNode(astContext,BLOCK_STATEMENTS,val_peek(2),val_peek(0),(ASTree[])null); }
break;
case 118:
//#line 447 "parser.y"
{ yyval=null; }
break;
case 120:
//#line 451 "parser.y"
{ yyval=new ASTreeNode(astContext,BLOCK_STATEMENTS,val_peek(0)); }
break;
case 121:
//#line 452 "parser.y"
{ yyval=val_peek(1).addSubTree(val_peek(0)); }
break;
case 125:
//#line 461 "parser.y"
{ yyval=val_peek(1).setLastToken(val_peek(0)); }
break;
case 126:
//#line 464 "parser.y"
{ yyval=new ASTreeNode(astContext,LOCAL_VARIABLE_DECLARATION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 127:
//#line 465 "parser.y"
{ yyval=new ASTreeNode(astContext,LOCAL_VARIABLE_DECLARATION,new ASTree[]{null,val_peek(1),val_peek(0)}); }
break;
case 145:
//#line 491 "parser.y"
{ yyval=new ASTreeNode(astContext,EMPTY_STATEMENT,val_peek(0),val_peek(0),(ASTree[])null); }
break;
case 146:
//#line 495 "parser.y"
{ yyval=new ASTreeNode(astContext,LABELED_STATEMENT,val_peek(2),val_peek(0)); }
break;
case 147:
//#line 499 "parser.y"
{ yyval=new ASTreeNode(astContext,EXPRESSION_STATEMENT,val_peek(1),val_peek(0),val_peek(1)); }
break;
case 155:
//#line 513 "parser.y"
{ yyval=new ASTreeNode(astContext,IF_STATEMENT,val_peek(4),val_peek(0),new ASTree[]{val_peek(2),val_peek(0),null}); }
break;
case 156:
//#line 514 "parser.y"
{ yyval=new ASTreeNode(astContext,IF_STATEMENT,val_peek(6),val_peek(0),new ASTree[]{val_peek(4),val_peek(2),val_peek(0)}); }
break;
case 157:
//#line 518 "parser.y"
{ yyval=new ASTreeNode(astContext,SWITCH_STATEMENT,val_peek(4),val_peek(0),new ASTree[]{val_peek(2),val_peek(0)}); }
break;
case 158:
//#line 521 "parser.y"
{ yyval=new ASTreeNode(astContext,SWITCH_BLOCK,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),val_peek(1)}); }
break;
case 159:
//#line 524 "parser.y"
{ yyval=null; }
break;
case 160:
//#line 525 "parser.y"
{ if (val_peek(1)==null) yyval=new ASTreeNode(astContext,SWITCH_BLOCK_STATEMENT_GROUPS,val_peek(0)); else yyval=val_peek(1).addSubTree(val_peek(0)); }
break;
case 161:
//#line 528 "parser.y"
{ yyval=new ASTreeNode(astContext,SWITCH_BLOCK_STATEMENT_GROUP,val_peek(1),val_peek(0)); }
break;
case 162:
//#line 531 "parser.y"
{ yyval=null; }
break;
case 165:
//#line 536 "parser.y"
{ if (val_peek(1).getType()!=SWITCH_LABELS) yyval=new ASTreeNode(astContext,SWITCH_LABELS,val_peek(1),val_peek(0)); else yyval=val_peek(1).addSubTree(val_peek(0)); }
break;
case 166:
//#line 539 "parser.y"
{ yyval=new ASTreeNode(astContext,SWITCH_LABEL,val_peek(2),val_peek(0),new ASTree[]{val_peek(1)}); }
break;
case 167:
//#line 540 "parser.y"
{ yyval=new ASTreeNode(astContext,SWITCH_LABEL,val_peek(1),val_peek(0),new ASTree[]{null}); }
break;
case 168:
//#line 544 "parser.y"
{ yyval=new ASTreeNode(astContext,WHILE_STATEMENT,val_peek(4),val_peek(0),new ASTree[]{val_peek(2),val_peek(0)}); }
break;
case 169:
//#line 548 "parser.y"
{ yyval=new ASTreeNode(astContext,DO_STATEMENT,val_peek(6),val_peek(0),new ASTree[]{val_peek(5),val_peek(2)}); }
break;
case 170:
//#line 552 "parser.y"
{ 
        ASTree[] fparts=val_peek(4).getSubTrees();
        ASTree fpar=new ASTreeNode(astContext,FORMAL_PARAMETER,new ASTree[]{fparts[0],fparts[1],null,fparts[2]});
        yyval=new ASTreeNode(astContext,FOR_EACH_STATEMENT,val_peek(6),val_peek(0),new ASTree[]{fpar,val_peek(2),val_peek(0)}); }
break;
case 171:
//#line 559 "parser.y"
{ yyval=new ASTreeNode(astContext,FOR_STATEMENT,val_peek(8),val_peek(0),new ASTree[]{val_peek(6),val_peek(4),val_peek(2),val_peek(0)}); }
break;
case 172:
//#line 562 "parser.y"
{ yyval=null; }
break;
case 175:
//#line 567 "parser.y"
{ yyval=null; }
break;
case 177:
//#line 571 "parser.y"
{ yyval=null; }
break;
case 180:
//#line 576 "parser.y"
{ if (val_peek(2).getType()!=STATEMENT_EXPRESSION_LIST) yyval=new ASTreeNode(astContext,STATEMENT_EXPRESSION_LIST,val_peek(2),val_peek(0));
                                                     else yyval=val_peek(2).addSubTree(val_peek(0)); }
break;
case 181:
//#line 581 "parser.y"
{ yyval=new ASTreeNode(astContext,BREAK_STATEMENT,val_peek(2),val_peek(0),new ASTree[]{val_peek(1)}); }
break;
case 182:
//#line 584 "parser.y"
{ yyval=null; }
break;
case 184:
//#line 589 "parser.y"
{ yyval=new ASTreeNode(astContext,CONTINUE_STATEMENT,val_peek(2),val_peek(0),new ASTree[]{val_peek(1)}); }
break;
case 185:
//#line 594 "parser.y"
{ yyval=new ASTreeNode(astContext,RETURN_STATEMENT,val_peek(2),val_peek(0),new ASTree[]{val_peek(1)}); }
break;
case 186:
//#line 598 "parser.y"
{ yyval=new ASTreeNode(astContext,THROW_STATEMENT,val_peek(2),val_peek(0),new ASTree[]{val_peek(1)}); }
break;
case 187:
//#line 602 "parser.y"
{ yyval=new ASTreeNode(astContext,SYNCHRONIZE_STATEMENT,val_peek(4),val_peek(0),new ASTree[]{val_peek(2),val_peek(0)}); }
break;
case 188:
//#line 606 "parser.y"
{ yyval=new ASTreeNode(astContext,TRY_STATEMENT,val_peek(2),val_peek(0),new ASTree[]{val_peek(1),val_peek(0),null}); }
break;
case 189:
//#line 607 "parser.y"
{ yyval=new ASTreeNode(astContext,TRY_STATEMENT,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 190:
//#line 610 "parser.y"
{ yyval=null; }
break;
case 193:
//#line 615 "parser.y"
{ if (val_peek(1).getType()!=CATCHES) yyval=new ASTreeNode(astContext,CATCHES,val_peek(1),val_peek(0)); else yyval=val_peek(1).addSubTree(val_peek(0)); }
break;
case 194:
//#line 618 "parser.y"
{ yyval=new ASTreeNode(astContext,CATCH_CLAUSE,val_peek(4),val_peek(0),new ASTree[]{val_peek(2),val_peek(0)}); }
break;
case 195:
//#line 621 "parser.y"
{ yyval=val_peek(0); }
break;
case 196:
//#line 625 "parser.y"
{ yyval=new ASTreeNode(astContext,ASSERT_STATEMENT,val_peek(2),val_peek(0),new ASTree[]{val_peek(1),null}); }
break;
case 197:
//#line 626 "parser.y"
{ yyval=new ASTreeNode(astContext,ASSERT_STATEMENT,val_peek(4),val_peek(0),new ASTree[]{val_peek(3),val_peek(1)}); }
break;
case 201:
//#line 637 "parser.y"
{ yyval = new ASTreeNode(astContext,PRIMARY_CLASS,val_peek(2),val_peek(0),new ASTree[]{val_peek(2)}); }
break;
case 202:
//#line 638 "parser.y"
{ yyval = new ASTreeNode(astContext,PRIMARY_CLASS,val_peek(3),val_peek(0),new ASTree[]{new ASTreeNode(astContext,REFERENCE_TYPE,val_peek(3),val_peek(2))}); }
break;
case 203:
//#line 639 "parser.y"
{ yyval = new ASTreeNode(astContext,PRIMARY_CLASS,val_peek(2),val_peek(0),new ASTree[]{val_peek(2)}); }
break;
case 204:
//#line 640 "parser.y"
{ yyval = new ASTreeNode(astContext,PRIMARY_CLASS,val_peek(3),val_peek(0),new ASTree[]{new ASTreeNode(astContext,REFERENCE_TYPE,val_peek(3),val_peek(2))}); }
break;
case 205:
//#line 642 "parser.y"
{ yyval = new ASTreeNode(astContext,PRIMARY_THIS,val_peek(0),val_peek(0),(ASTree[])null); }
break;
case 206:
//#line 643 "parser.y"
{ yyval = new ASTreeNode(astContext,PRIMARY_THIS,val_peek(2),val_peek(0),val_peek(2)); }
break;
case 207:
//#line 644 "parser.y"
{ yyval = new ASTreeNode(astContext,COMPLEX_EXPRESSION,val_peek(2),val_peek(0),val_peek(1)); }
break;
case 218:
//#line 661 "parser.y"
{ yyval=new ASTreeNode(astContext,CLASS_INSTANCE_CREATION_EXPRESSION,val_peek(5),val_peek(0)==null?val_peek(1):val_peek(0),new ASTree[]{null,null,val_peek(4),val_peek(2),val_peek(0)}); }
break;
case 219:
//#line 662 "parser.y"
{ yyval=new ASTreeNode(astContext,CLASS_INSTANCE_CREATION_EXPRESSION,val_peek(7),val_peek(0)==null?val_peek(1):val_peek(0),new ASTree[]{val_peek(7),null,val_peek(4),val_peek(2),val_peek(0)}); }
break;
case 220:
//#line 663 "parser.y"
{ yyval=new ASTreeNode(astContext,CLASS_INSTANCE_CREATION_EXPRESSION,val_peek(7),val_peek(0)==null?val_peek(1):val_peek(0),new ASTree[]{val_peek(7),null,val_peek(4),val_peek(2),val_peek(0)}); }
break;
case 221:
//#line 666 "parser.y"
{ yyval=null; }
break;
case 224:
//#line 671 "parser.y"
{ if (val_peek(2).getType()!=ARGUMENT_LIST) yyval=new ASTreeNode(astContext,ARGUMENT_LIST,val_peek(2),val_peek(0)); else yyval=val_peek(2).addSubTree(val_peek(0)); }
break;
case 225:
//#line 674 "parser.y"
{ yyval=null; }
break;
case 227:
//#line 679 "parser.y"
{ yyval=new ASTreeNode(astContext,ARRAY_CREATION_EXPRESSION,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),val_peek(1),val_peek(0),null}); }
break;
case 228:
//#line 680 "parser.y"
{ yyval=new ASTreeNode(astContext,ARRAY_CREATION_EXPRESSION,val_peek(2),val_peek(0),new ASTree[]{val_peek(1),val_peek(0),null,null}); }
break;
case 229:
//#line 681 "parser.y"
{ yyval=new ASTreeNode(astContext,ARRAY_CREATION_EXPRESSION,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),val_peek(1),val_peek(0),null}); }
break;
case 230:
//#line 682 "parser.y"
{ yyval=new ASTreeNode(astContext,ARRAY_CREATION_EXPRESSION,val_peek(2),val_peek(0),new ASTree[]{val_peek(1),val_peek(0),null,null}); }
break;
case 231:
//#line 683 "parser.y"
{ yyval=new ASTreeNode(astContext,ARRAY_CREATION_EXPRESSION,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),null,val_peek(1),val_peek(0)}); }
break;
case 232:
//#line 684 "parser.y"
{ yyval=new ASTreeNode(astContext,ARRAY_CREATION_EXPRESSION,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),null,val_peek(1),val_peek(0)}); }
break;
case 233:
//#line 687 "parser.y"
{ yyval=new ASTreeNode(astContext,DIM_EXPRS,val_peek(0)); yyval.setFirstToken(val_peek(0).getFirstToken()-1); yyval.setLastToken(val_peek(0).getLastToken()+1); }
break;
case 234:
//#line 688 "parser.y"
{ yyval=val_peek(1).addSubTree(val_peek(0)); yyval.setLastToken(val_peek(0).getLastToken()+1); }
break;
case 235:
//#line 691 "parser.y"
{ yyval = val_peek(1); }
break;
case 236:
//#line 694 "parser.y"
{ yyval=new ASTreeNode(astContext,DIMS,val_peek(1),val_peek(0),(ASTree[])null); }
break;
case 237:
//#line 695 "parser.y"
{ yyval=val_peek(2).setLastToken(val_peek(0)); }
break;
case 238:
//#line 699 "parser.y"
{ yyval= new ASTreeNode(astContext,FIELD_ACCESS,val_peek(2),val_peek(0),new ASTree[]{val_peek(2),null,val_peek(0)}); }
break;
case 239:
//#line 700 "parser.y"
{ yyval= new ASTreeNode(astContext,FIELD_ACCESS,val_peek(2),val_peek(0),new ASTree[]{null,val_peek(2),val_peek(0)}); }
break;
case 240:
//#line 701 "parser.y"
{ yyval= new ASTreeNode(astContext,FIELD_ACCESS,val_peek(4),val_peek(0),new ASTree[]{val_peek(4),val_peek(2),val_peek(0)}); }
break;
case 241:
//#line 705 "parser.y"
{ yyval = new ASTreeNode(astContext,METHOD_INVOCATION,val_peek(5),val_peek(0),new ASTree[]{val_peek(5),null,null,val_peek(3),val_peek(1)}); }
break;
case 242:
//#line 706 "parser.y"
{ yyval = new ASTreeNode(astContext,METHOD_INVOCATION,val_peek(3),val_peek(0),new ASTree[]{null,null,null,val_peek(3),val_peek(1)}); }
break;
case 243:
//#line 707 "parser.y"
{ yyval = new ASTreeNode(astContext,METHOD_INVOCATION,val_peek(5),val_peek(0),new ASTree[]{val_peek(5),null,null,val_peek(3),val_peek(1)}); }
break;
case 244:
//#line 708 "parser.y"
{ yyval = new ASTreeNode(astContext,METHOD_INVOCATION,val_peek(5),val_peek(0),new ASTree[]{null,val_peek(5),null,val_peek(3),val_peek(1)}); }
break;
case 245:
//#line 709 "parser.y"
{ yyval = new ASTreeNode(astContext,METHOD_INVOCATION,val_peek(7),val_peek(0),new ASTree[]{val_peek(7),val_peek(5),null,val_peek(3),val_peek(1)}); }
break;
case 246:
//#line 713 "parser.y"
{ yyval=new ASTreeNode(astContext,ARRAY_ACCESS,val_peek(3),val_peek(0),new ASTree[]{val_peek(3),val_peek(1)}); }
break;
case 247:
//#line 714 "parser.y"
{ yyval=new ASTreeNode(astContext,ARRAY_ACCESS,val_peek(3),val_peek(0),new ASTree[]{val_peek(3),val_peek(1)}); }
break;
case 252:
//#line 725 "parser.y"
{ yyval=new ASTreeNode(astContext,POSTFIX_EXPRESSION,val_peek(1),val_peek(0)); }
break;
case 253:
//#line 729 "parser.y"
{ yyval=new ASTreeNode(astContext,POSTFIX_EXPRESSION,val_peek(1),val_peek(0)); }
break;
case 256:
//#line 735 "parser.y"
{ yyval=new ASTreeNode(astContext,PREFIX_EXPRESSION,val_peek(1),val_peek(0)); }
break;
case 257:
//#line 736 "parser.y"
{ yyval=new ASTreeNode(astContext,PREFIX_EXPRESSION,val_peek(1),val_peek(0)); }
break;
case 259:
//#line 740 "parser.y"
{ yyval=new ASTreeNode(astContext,PREFIX_EXPRESSION,val_peek(1),val_peek(0)); }
break;
case 260:
//#line 743 "parser.y"
{ yyval=new ASTreeNode(astContext,PREFIX_EXPRESSION,val_peek(1),val_peek(0)); }
break;
case 262:
//#line 747 "parser.y"
{ yyval=new ASTreeNode(astContext,PREFIX_EXPRESSION,val_peek(1),val_peek(0)); }
break;
case 263:
//#line 748 "parser.y"
{ yyval=new ASTreeNode(astContext,PREFIX_EXPRESSION,val_peek(1),val_peek(0)); }
break;
case 265:
//#line 753 "parser.y"
{ yyval=new ASTreeNode(astContext,CAST_EXPRESSION,val_peek(4),val_peek(0),new ASTree[]{new ASTreeNode(astContext,REFERENCE_TYPE,val_peek(3),val_peek(2)),val_peek(0)}); }
break;
case 266:
//#line 754 "parser.y"
{ yyval=new ASTreeNode(astContext,CAST_EXPRESSION,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),val_peek(0)}); }
break;
case 267:
//#line 755 "parser.y"
{ yyval=new ASTreeNode(astContext,CAST_EXPRESSION,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),val_peek(0)}); }
break;
case 268:
//#line 756 "parser.y"
{ yyval=new ASTreeNode(astContext,CAST_EXPRESSION,val_peek(4),val_peek(0),new ASTree[]{new ASTreeNode(astContext,REFERENCE_TYPE,val_peek(3),val_peek(2)),val_peek(0)}); }
break;
case 270:
//#line 761 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 271:
//#line 762 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 272:
//#line 763 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 274:
//#line 768 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 275:
//#line 769 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 277:
//#line 774 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 278:
//#line 775 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 279:
//#line 776 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 281:
//#line 781 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 282:
//#line 782 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 283:
//#line 783 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 284:
//#line 784 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 285:
//#line 785 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 287:
//#line 790 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 288:
//#line 791 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 290:
//#line 796 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 292:
//#line 800 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 294:
//#line 804 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 296:
//#line 809 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 298:
//#line 814 "parser.y"
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 300:
//#line 819 "parser.y"
{ yyval=new ASTreeNode(astContext,CONDITIONAL_EXPRESSION,val_peek(4),val_peek(0),new ASTree[]{val_peek(4),val_peek(2),val_peek(0)}); }
break;
case 303:
//#line 827 "parser.y"
{ yyval = new ASTreeNode(astContext,ASSIGNMENT,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
break;
case 321:
//#line 857 "parser.y"
{ yyval=new ASTreeNode(astContext,MODIFIERS,val_peek(0)); }
break;
case 322:
//#line 858 "parser.y"
{ yyval=val_peek(1).addSubTree(val_peek(0)); }
break;
case 335:
//#line 875 "parser.y"
{ yyval=new ASTreeNode(astContext,MULTI_PART_ID,val_peek(2),val_peek(0),new ASTree[]{val_peek(2),val_peek(0),null}); }
break;
//#line 2621 "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 #######################################
/**
 * A default run method, used for operating this parser
 * object in the background.  It is intended for extending Thread
 * or implementing Runnable.  Turn off with -Jnorun .
 */
public void run()
{
  yyparse();
}
//## end of method run() ########################################



//## Constructors ###############################################
/**
 * Default constructor.  Turn off with -Jnoconstruct .

 */
public Parser()
{
  //nothing to do
}


/**
 * Create a parser, setting the debug to true or false.
 * @param debugMe true for debugging, false for no debug.
 */
public Parser(boolean debugMe)
{
  yydebug=debugMe;
}
//###############################################################



}
//################### END OF CLASS ##############################
... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.