/* A Bison parser, made by GNU Bison 3.7.5.  */

/* Bison implementation for Yacc-like parsers in C

   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
   Inc.

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

/* As a special exception, you may create a larger work that contains
   part or all of the Bison parser skeleton and distribute that work
   under terms of your choice, so long as that work isn't itself a
   parser generator using the skeleton or a modified version thereof
   as a parser skeleton.  Alternatively, if you modify or redistribute
   the parser skeleton itself, you may (at your option) remove this
   special exception, which will cause the skeleton and the resulting
   Bison output files to be licensed under the GNU General Public
   License without this special exception.

   This special exception was added by the Free Software Foundation in
   version 2.2 of Bison.  */

/* C LALR(1) parser skeleton written by Richard Stallman, by
   simplifying the original so-called "semantic" parser.  */

/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
   especially those whose name start with YY_ or yy_.  They are
   private implementation details that can be changed or removed.  */

/* All symbols defined below should begin with yy or YY, to avoid
   infringing on user name space.  This should be done even for local
   variables, as they might otherwise be expanded by user macros.
   There are some unavoidable exceptions within include files to
   define necessary library symbols; they are noted "INFRINGES ON
   USER NAME SPACE" below.  */

/* Identify Bison output, and Bison version.  */
#define YYBISON 30705

/* Bison version string.  */
#define YYBISON_VERSION "3.7.5"

/* Skeleton name.  */
#define YYSKELETON_NAME "yacc.c"

/* Pure parsers.  */
#define YYPURE 1

/* Push parsers.  */
#define YYPUSH 0

/* Pull parsers.  */
#define YYPULL 1


/* Substitute the variable and function names.  */
#define yyparse         cmDependsJava_yyparse
#define yylex           cmDependsJava_yylex
#define yyerror         cmDependsJava_yyerror
#define yydebug         cmDependsJava_yydebug
#define yynerrs         cmDependsJava_yynerrs

/* First part of user prologue.  */
#line 1 "cmDependsJavaParser.y"

/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
   file Copyright.txt or https://cmake.org/licensing for details.  */
/*

This file must be translated to C and modified to build everywhere.

Run bison like this:

  bison --name-prefix=cmDependsJava_yy --defines=cmDependsJavaParserTokens.h -ocmDependsJavaParser.cxx cmDependsJavaParser.y

*/

#include "cmConfigure.h" // IWYU pragma: keep

#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <string>

#define yyGetParser (cmDependsJava_yyget_extra(yyscanner))

/*-------------------------------------------------------------------------*/
#include "cmDependsJavaParserHelper.h" /* Interface to parser object.  */
#include "cmDependsJavaLexer.h"  /* Interface to lexer object.  */

/* Forward declare the lexer entry point.  */
YY_DECL;

/* Helper function to forward error callback from parser.  */
static void cmDependsJava_yyerror(yyscan_t yyscanner, const char* message);

#define YYMAXDEPTH 1000000


#define jpCheckEmpty(cnt) yyGetParser->CheckEmpty(__LINE__, cnt, yyvsp)
#define jpElementStart(cnt) yyGetParser->PrepareElement(&yyval)
#define jpStoreClass(str) yyGetParser->AddClassFound(str); yyGetParser->DeallocateParserType(&(str))
/* Disable some warnings in the generated code.  */
#ifdef _MSC_VER
# pragma warning (disable: 4102) /* Unused goto label.  */
# pragma warning (disable: 4065) /* Switch statement contains default but no case. */
#endif
#if defined(__GNUC__) && __GNUC__ >= 8
# pragma GCC diagnostic ignored "-Wconversion"
# pragma GCC diagnostic ignored "-Wfree-nonheap-object"
#endif

#line 125 "cmDependsJavaParser.cxx"

# ifndef YY_CAST
#  ifdef __cplusplus
#   define YY_CAST(Type, Val) static_cast<Type> (Val)
#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
#  else
#   define YY_CAST(Type, Val) ((Type) (Val))
#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
#  endif
# endif
# ifndef YY_NULLPTR
#  if defined __cplusplus
#   if 201103L <= __cplusplus
#    define YY_NULLPTR nullptr
#   else
#    define YY_NULLPTR 0
#   endif
#  else
#   define YY_NULLPTR ((void*)0)
#  endif
# endif

#include "cmDependsJavaParserTokens.h"
/* Symbol kind.  */
enum yysymbol_kind_t
{
  YYSYMBOL_YYEMPTY = -2,
  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
  YYSYMBOL_YYerror = 1,                    /* error  */
  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
  YYSYMBOL_jp_ABSTRACT = 3,                /* jp_ABSTRACT  */
  YYSYMBOL_jp_ASSERT = 4,                  /* jp_ASSERT  */
  YYSYMBOL_jp_BOOLEAN_TYPE = 5,            /* jp_BOOLEAN_TYPE  */
  YYSYMBOL_jp_BREAK = 6,                   /* jp_BREAK  */
  YYSYMBOL_jp_BYTE_TYPE = 7,               /* jp_BYTE_TYPE  */
  YYSYMBOL_jp_CASE = 8,                    /* jp_CASE  */
  YYSYMBOL_jp_CATCH = 9,                   /* jp_CATCH  */
  YYSYMBOL_jp_CHAR_TYPE = 10,              /* jp_CHAR_TYPE  */
  YYSYMBOL_jp_CLASS = 11,                  /* jp_CLASS  */
  YYSYMBOL_jp_CONTINUE = 12,               /* jp_CONTINUE  */
  YYSYMBOL_jp_DEFAULT = 13,                /* jp_DEFAULT  */
  YYSYMBOL_jp_DO = 14,                     /* jp_DO  */
  YYSYMBOL_jp_DOUBLE_TYPE = 15,            /* jp_DOUBLE_TYPE  */
  YYSYMBOL_jp_ELSE = 16,                   /* jp_ELSE  */
  YYSYMBOL_jp_EXTENDS = 17,                /* jp_EXTENDS  */
  YYSYMBOL_jp_FINAL = 18,                  /* jp_FINAL  */
  YYSYMBOL_jp_FINALLY = 19,                /* jp_FINALLY  */
  YYSYMBOL_jp_FLOAT_TYPE = 20,             /* jp_FLOAT_TYPE  */
  YYSYMBOL_jp_FOR = 21,                    /* jp_FOR  */
  YYSYMBOL_jp_IF = 22,                     /* jp_IF  */
  YYSYMBOL_jp_IMPLEMENTS = 23,             /* jp_IMPLEMENTS  */
  YYSYMBOL_jp_IMPORT = 24,                 /* jp_IMPORT  */
  YYSYMBOL_jp_INSTANCEOF = 25,             /* jp_INSTANCEOF  */
  YYSYMBOL_jp_INT_TYPE = 26,               /* jp_INT_TYPE  */
  YYSYMBOL_jp_INTERFACE = 27,              /* jp_INTERFACE  */
  YYSYMBOL_jp_LONG_TYPE = 28,              /* jp_LONG_TYPE  */
  YYSYMBOL_jp_NATIVE = 29,                 /* jp_NATIVE  */
  YYSYMBOL_jp_NEW = 30,                    /* jp_NEW  */
  YYSYMBOL_jp_PACKAGE = 31,                /* jp_PACKAGE  */
  YYSYMBOL_jp_PRIVATE = 32,                /* jp_PRIVATE  */
  YYSYMBOL_jp_PROTECTED = 33,              /* jp_PROTECTED  */
  YYSYMBOL_jp_PUBLIC = 34,                 /* jp_PUBLIC  */
  YYSYMBOL_jp_RETURN = 35,                 /* jp_RETURN  */
  YYSYMBOL_jp_SHORT_TYPE = 36,             /* jp_SHORT_TYPE  */
  YYSYMBOL_jp_STATIC = 37,                 /* jp_STATIC  */
  YYSYMBOL_jp_STRICTFP = 38,               /* jp_STRICTFP  */
  YYSYMBOL_jp_SUPER = 39,                  /* jp_SUPER  */
  YYSYMBOL_jp_SWITCH = 40,                 /* jp_SWITCH  */
  YYSYMBOL_jp_SYNCHRONIZED = 41,           /* jp_SYNCHRONIZED  */
  YYSYMBOL_jp_THIS = 42,                   /* jp_THIS  */
  YYSYMBOL_jp_THROW = 43,                  /* jp_THROW  */
  YYSYMBOL_jp_THROWS = 44,                 /* jp_THROWS  */
  YYSYMBOL_jp_TRANSIENT = 45,              /* jp_TRANSIENT  */
  YYSYMBOL_jp_TRY = 46,                    /* jp_TRY  */
  YYSYMBOL_jp_VOID = 47,                   /* jp_VOID  */
  YYSYMBOL_jp_VOLATILE = 48,               /* jp_VOLATILE  */
  YYSYMBOL_jp_WHILE = 49,                  /* jp_WHILE  */
  YYSYMBOL_jp_BOOLEANLITERAL = 50,         /* jp_BOOLEANLITERAL  */
  YYSYMBOL_jp_CHARACTERLITERAL = 51,       /* jp_CHARACTERLITERAL  */
  YYSYMBOL_jp_DECIMALINTEGERLITERAL = 52,  /* jp_DECIMALINTEGERLITERAL  */
  YYSYMBOL_jp_FLOATINGPOINTLITERAL = 53,   /* jp_FLOATINGPOINTLITERAL  */
  YYSYMBOL_jp_HEXINTEGERLITERAL = 54,      /* jp_HEXINTEGERLITERAL  */
  YYSYMBOL_jp_NULLLITERAL = 55,            /* jp_NULLLITERAL  */
  YYSYMBOL_jp_STRINGLITERAL = 56,          /* jp_STRINGLITERAL  */
  YYSYMBOL_jp_NAME = 57,                   /* jp_NAME  */
  YYSYMBOL_jp_AND = 58,                    /* jp_AND  */
  YYSYMBOL_jp_ANDAND = 59,                 /* jp_ANDAND  */
  YYSYMBOL_jp_ANDEQUALS = 60,              /* jp_ANDEQUALS  */
  YYSYMBOL_jp_BRACKETEND = 61,             /* jp_BRACKETEND  */
  YYSYMBOL_jp_BRACKETSTART = 62,           /* jp_BRACKETSTART  */
  YYSYMBOL_jp_CARROT = 63,                 /* jp_CARROT  */
  YYSYMBOL_jp_CARROTEQUALS = 64,           /* jp_CARROTEQUALS  */
  YYSYMBOL_jp_COLON = 65,                  /* jp_COLON  */
  YYSYMBOL_jp_COMMA = 66,                  /* jp_COMMA  */
  YYSYMBOL_jp_CURLYEND = 67,               /* jp_CURLYEND  */
  YYSYMBOL_jp_CURLYSTART = 68,             /* jp_CURLYSTART  */
  YYSYMBOL_jp_DIVIDE = 69,                 /* jp_DIVIDE  */
  YYSYMBOL_jp_DIVIDEEQUALS = 70,           /* jp_DIVIDEEQUALS  */
  YYSYMBOL_jp_DOLLAR = 71,                 /* jp_DOLLAR  */
  YYSYMBOL_jp_DOT = 72,                    /* jp_DOT  */
  YYSYMBOL_jp_EQUALS = 73,                 /* jp_EQUALS  */
  YYSYMBOL_jp_EQUALSEQUALS = 74,           /* jp_EQUALSEQUALS  */
  YYSYMBOL_jp_EXCLAMATION = 75,            /* jp_EXCLAMATION  */
  YYSYMBOL_jp_EXCLAMATIONEQUALS = 76,      /* jp_EXCLAMATIONEQUALS  */
  YYSYMBOL_jp_GREATER = 77,                /* jp_GREATER  */
  YYSYMBOL_jp_GTEQUALS = 78,               /* jp_GTEQUALS  */
  YYSYMBOL_jp_GTGT = 79,                   /* jp_GTGT  */
  YYSYMBOL_jp_GTGTEQUALS = 80,             /* jp_GTGTEQUALS  */
  YYSYMBOL_jp_GTGTGT = 81,                 /* jp_GTGTGT  */
  YYSYMBOL_jp_GTGTGTEQUALS = 82,           /* jp_GTGTGTEQUALS  */
  YYSYMBOL_jp_LESLESEQUALS = 83,           /* jp_LESLESEQUALS  */
  YYSYMBOL_jp_LESSTHAN = 84,               /* jp_LESSTHAN  */
  YYSYMBOL_jp_LTEQUALS = 85,               /* jp_LTEQUALS  */
  YYSYMBOL_jp_LTLT = 86,                   /* jp_LTLT  */
  YYSYMBOL_jp_MINUS = 87,                  /* jp_MINUS  */
  YYSYMBOL_jp_MINUSEQUALS = 88,            /* jp_MINUSEQUALS  */
  YYSYMBOL_jp_MINUSMINUS = 89,             /* jp_MINUSMINUS  */
  YYSYMBOL_jp_PAREEND = 90,                /* jp_PAREEND  */
  YYSYMBOL_jp_PARESTART = 91,              /* jp_PARESTART  */
  YYSYMBOL_jp_PERCENT = 92,                /* jp_PERCENT  */
  YYSYMBOL_jp_PERCENTEQUALS = 93,          /* jp_PERCENTEQUALS  */
  YYSYMBOL_jp_PIPE = 94,                   /* jp_PIPE  */
  YYSYMBOL_jp_PIPEEQUALS = 95,             /* jp_PIPEEQUALS  */
  YYSYMBOL_jp_PIPEPIPE = 96,               /* jp_PIPEPIPE  */
  YYSYMBOL_jp_PLUS = 97,                   /* jp_PLUS  */
  YYSYMBOL_jp_PLUSEQUALS = 98,             /* jp_PLUSEQUALS  */
  YYSYMBOL_jp_PLUSPLUS = 99,               /* jp_PLUSPLUS  */
  YYSYMBOL_jp_QUESTION = 100,              /* jp_QUESTION  */
  YYSYMBOL_jp_SEMICOL = 101,               /* jp_SEMICOL  */
  YYSYMBOL_jp_TILDE = 102,                 /* jp_TILDE  */
  YYSYMBOL_jp_TIMES = 103,                 /* jp_TIMES  */
  YYSYMBOL_jp_TIMESEQUALS = 104,           /* jp_TIMESEQUALS  */
  YYSYMBOL_jp_ERROR = 105,                 /* jp_ERROR  */
  YYSYMBOL_YYACCEPT = 106,                 /* $accept  */
  YYSYMBOL_Goal = 107,                     /* Goal  */
  YYSYMBOL_Literal = 108,                  /* Literal  */
  YYSYMBOL_IntegerLiteral = 109,           /* IntegerLiteral  */
  YYSYMBOL_Type = 110,                     /* Type  */
  YYSYMBOL_PrimitiveType = 111,            /* PrimitiveType  */
  YYSYMBOL_ReferenceType = 112,            /* ReferenceType  */
  YYSYMBOL_ClassOrInterfaceType = 113,     /* ClassOrInterfaceType  */
  YYSYMBOL_ClassType = 114,                /* ClassType  */
  YYSYMBOL_InterfaceType = 115,            /* InterfaceType  */
  YYSYMBOL_ArrayType = 116,                /* ArrayType  */
  YYSYMBOL_Name = 117,                     /* Name  */
  YYSYMBOL_SimpleName = 118,               /* SimpleName  */
  YYSYMBOL_Identifier = 119,               /* Identifier  */
  YYSYMBOL_QualifiedName = 120,            /* QualifiedName  */
  YYSYMBOL_SimpleType = 121,               /* SimpleType  */
  YYSYMBOL_CompilationUnit = 122,          /* CompilationUnit  */
  YYSYMBOL_PackageDeclarationopt = 123,    /* PackageDeclarationopt  */
  YYSYMBOL_ImportDeclarations = 124,       /* ImportDeclarations  */
  YYSYMBOL_TypeDeclarations = 125,         /* TypeDeclarations  */
  YYSYMBOL_PackageDeclaration = 126,       /* PackageDeclaration  */
  YYSYMBOL_ImportDeclaration = 127,        /* ImportDeclaration  */
  YYSYMBOL_SingleTypeImportDeclaration = 128, /* SingleTypeImportDeclaration  */
  YYSYMBOL_TypeImportOnDemandDeclaration = 129, /* TypeImportOnDemandDeclaration  */
  YYSYMBOL_TypeDeclaration = 130,          /* TypeDeclaration  */
  YYSYMBOL_Modifiers = 131,                /* Modifiers  */
  YYSYMBOL_Modifier = 132,                 /* Modifier  */
  YYSYMBOL_ClassHeader = 133,              /* ClassHeader  */
  YYSYMBOL_ClassDeclaration = 134,         /* ClassDeclaration  */
  YYSYMBOL_Modifiersopt = 135,             /* Modifiersopt  */
  YYSYMBOL_Super = 136,                    /* Super  */
  YYSYMBOL_Interfaces = 137,               /* Interfaces  */
  YYSYMBOL_InterfaceTypeList = 138,        /* InterfaceTypeList  */
  YYSYMBOL_ClassBody = 139,                /* ClassBody  */
  YYSYMBOL_ClassBodyDeclarations = 140,    /* ClassBodyDeclarations  */
  YYSYMBOL_ClassBodyDeclaration = 141,     /* ClassBodyDeclaration  */
  YYSYMBOL_ClassMemberDeclaration = 142,   /* ClassMemberDeclaration  */
  YYSYMBOL_FieldDeclaration = 143,         /* FieldDeclaration  */
  YYSYMBOL_VariableDeclarators = 144,      /* VariableDeclarators  */
  YYSYMBOL_VariableDeclarator = 145,       /* VariableDeclarator  */
  YYSYMBOL_VariableDeclaratorId = 146,     /* VariableDeclaratorId  */
  YYSYMBOL_VariableInitializer = 147,      /* VariableInitializer  */
  YYSYMBOL_MethodDeclaration = 148,        /* MethodDeclaration  */
  YYSYMBOL_MethodHeader = 149,             /* MethodHeader  */
  YYSYMBOL_Throwsopt = 150,                /* Throwsopt  */
  YYSYMBOL_MethodDeclarator = 151,         /* MethodDeclarator  */
  YYSYMBOL_FormalParameterListopt = 152,   /* FormalParameterListopt  */
  YYSYMBOL_FormalParameterList = 153,      /* FormalParameterList  */
  YYSYMBOL_FormalParameter = 154,          /* FormalParameter  */
  YYSYMBOL_Throws = 155,                   /* Throws  */
  YYSYMBOL_ClassTypeList = 156,            /* ClassTypeList  */
  YYSYMBOL_MethodBody = 157,               /* MethodBody  */
  YYSYMBOL_StaticInitializer = 158,        /* StaticInitializer  */
  YYSYMBOL_ConstructorDeclaration = 159,   /* ConstructorDeclaration  */
  YYSYMBOL_ConstructorDeclarator = 160,    /* ConstructorDeclarator  */
  YYSYMBOL_ConstructorBody = 161,          /* ConstructorBody  */
  YYSYMBOL_ExplicitConstructorInvocationopt = 162, /* ExplicitConstructorInvocationopt  */
  YYSYMBOL_ExplicitConstructorInvocation = 163, /* ExplicitConstructorInvocation  */
  YYSYMBOL_InterfaceHeader = 164,          /* InterfaceHeader  */
  YYSYMBOL_InterfaceDeclaration = 165,     /* InterfaceDeclaration  */
  YYSYMBOL_ExtendsInterfacesopt = 166,     /* ExtendsInterfacesopt  */
  YYSYMBOL_ExtendsInterfaces = 167,        /* ExtendsInterfaces  */
  YYSYMBOL_InterfaceBody = 168,            /* InterfaceBody  */
  YYSYMBOL_InterfaceMemberDeclarations = 169, /* InterfaceMemberDeclarations  */
  YYSYMBOL_InterfaceMemberDeclaration = 170, /* InterfaceMemberDeclaration  */
  YYSYMBOL_ConstantDeclaration = 171,      /* ConstantDeclaration  */
  YYSYMBOL_AbstractMethodDeclaration = 172, /* AbstractMethodDeclaration  */
  YYSYMBOL_Semicols = 173,                 /* Semicols  */
  YYSYMBOL_ArrayInitializer = 174,         /* ArrayInitializer  */
  YYSYMBOL_VariableInitializersOptional = 175, /* VariableInitializersOptional  */
  YYSYMBOL_VariableInitializers = 176,     /* VariableInitializers  */
  YYSYMBOL_Block = 177,                    /* Block  */
  YYSYMBOL_BlockStatementsopt = 178,       /* BlockStatementsopt  */
  YYSYMBOL_BlockStatements = 179,          /* BlockStatements  */
  YYSYMBOL_BlockStatement = 180,           /* BlockStatement  */
  YYSYMBOL_LocalVariableDeclarationStatement = 181, /* LocalVariableDeclarationStatement  */
  YYSYMBOL_LocalVariableDeclaration = 182, /* LocalVariableDeclaration  */
  YYSYMBOL_Statement = 183,                /* Statement  */
  YYSYMBOL_StatementNoShortIf = 184,       /* StatementNoShortIf  */
  YYSYMBOL_StatementWithoutTrailingSubstatement = 185, /* StatementWithoutTrailingSubstatement  */
  YYSYMBOL_EmptyStatement = 186,           /* EmptyStatement  */
  YYSYMBOL_LabeledStatement = 187,         /* LabeledStatement  */
  YYSYMBOL_LabeledStatementNoShortIf = 188, /* LabeledStatementNoShortIf  */
  YYSYMBOL_ExpressionStatement = 189,      /* ExpressionStatement  */
  YYSYMBOL_StatementExpression = 190,      /* StatementExpression  */
  YYSYMBOL_IfThenStatement = 191,          /* IfThenStatement  */
  YYSYMBOL_IfThenElseStatement = 192,      /* IfThenElseStatement  */
  YYSYMBOL_IfThenElseStatementNoShortIf = 193, /* IfThenElseStatementNoShortIf  */
  YYSYMBOL_SwitchStatement = 194,          /* SwitchStatement  */
  YYSYMBOL_SwitchBlock = 195,              /* SwitchBlock  */
  YYSYMBOL_SwitchLabelsopt = 196,          /* SwitchLabelsopt  */
  YYSYMBOL_SwitchBlockStatementGroups = 197, /* SwitchBlockStatementGroups  */
  YYSYMBOL_SwitchBlockStatementGroup = 198, /* SwitchBlockStatementGroup  */
  YYSYMBOL_SwitchLabels = 199,             /* SwitchLabels  */
  YYSYMBOL_SwitchLabel = 200,              /* SwitchLabel  */
  YYSYMBOL_WhileStatement = 201,           /* WhileStatement  */
  YYSYMBOL_WhileStatementNoShortIf = 202,  /* WhileStatementNoShortIf  */
  YYSYMBOL_DoStatement = 203,              /* DoStatement  */
  YYSYMBOL_ForStatement = 204,             /* ForStatement  */
  YYSYMBOL_ForUpdateopt = 205,             /* ForUpdateopt  */
  YYSYMBOL_ForInitopt = 206,               /* ForInitopt  */
  YYSYMBOL_ForStatementNoShortIf = 207,    /* ForStatementNoShortIf  */
  YYSYMBOL_Expressionopt = 208,            /* Expressionopt  */
  YYSYMBOL_ForInit = 209,                  /* ForInit  */
  YYSYMBOL_ForUpdate = 210,                /* ForUpdate  */
  YYSYMBOL_StatementExpressionList = 211,  /* StatementExpressionList  */
  YYSYMBOL_AssertStatement = 212,          /* AssertStatement  */
  YYSYMBOL_BreakStatement = 213,           /* BreakStatement  */
  YYSYMBOL_Identifieropt = 214,            /* Identifieropt  */
  YYSYMBOL_ContinueStatement = 215,        /* ContinueStatement  */
  YYSYMBOL_ReturnStatement = 216,          /* ReturnStatement  */
  YYSYMBOL_ThrowStatement = 217,           /* ThrowStatement  */
  YYSYMBOL_SynchronizedStatement = 218,    /* SynchronizedStatement  */
  YYSYMBOL_TryStatement = 219,             /* TryStatement  */
  YYSYMBOL_Catchesopt = 220,               /* Catchesopt  */
  YYSYMBOL_Catches = 221,                  /* Catches  */
  YYSYMBOL_CatchClause = 222,              /* CatchClause  */
  YYSYMBOL_Finally = 223,                  /* Finally  */
  YYSYMBOL_Primary = 224,                  /* Primary  */
  YYSYMBOL_PrimaryNoNewArray = 225,        /* PrimaryNoNewArray  */
  YYSYMBOL_ClassInstanceCreationExpression = 226, /* ClassInstanceCreationExpression  */
  YYSYMBOL_ClassBodyOpt = 227,             /* ClassBodyOpt  */
  YYSYMBOL_ArgumentListopt = 228,          /* ArgumentListopt  */
  YYSYMBOL_ArgumentList = 229,             /* ArgumentList  */
  YYSYMBOL_ArrayCreationExpression = 230,  /* ArrayCreationExpression  */
  YYSYMBOL_Dimsopt = 231,                  /* Dimsopt  */
  YYSYMBOL_DimExprs = 232,                 /* DimExprs  */
  YYSYMBOL_DimExpr = 233,                  /* DimExpr  */
  YYSYMBOL_Dims = 234,                     /* Dims  */
  YYSYMBOL_FieldAccess = 235,              /* FieldAccess  */
  YYSYMBOL_MethodInvocation = 236,         /* MethodInvocation  */
  YYSYMBOL_ArrayAccess = 237,              /* ArrayAccess  */
  YYSYMBOL_PostfixExpression = 238,        /* PostfixExpression  */
  YYSYMBOL_PostIncrementExpression = 239,  /* PostIncrementExpression  */
  YYSYMBOL_PostDecrementExpression = 240,  /* PostDecrementExpression  */
  YYSYMBOL_UnaryExpression = 241,          /* UnaryExpression  */
  YYSYMBOL_PreIncrementExpression = 242,   /* PreIncrementExpression  */
  YYSYMBOL_PreDecrementExpression = 243,   /* PreDecrementExpression  */
  YYSYMBOL_UnaryExpressionNotPlusMinus = 244, /* UnaryExpressionNotPlusMinus  */
  YYSYMBOL_CastExpression = 245,           /* CastExpression  */
  YYSYMBOL_MultiplicativeExpression = 246, /* MultiplicativeExpression  */
  YYSYMBOL_AdditiveExpression = 247,       /* AdditiveExpression  */
  YYSYMBOL_ShiftExpression = 248,          /* ShiftExpression  */
  YYSYMBOL_RelationalExpression = 249,     /* RelationalExpression  */
  YYSYMBOL_EqualityExpression = 250,       /* EqualityExpression  */
  YYSYMBOL_AndExpression = 251,            /* AndExpression  */
  YYSYMBOL_ExclusiveOrExpression = 252,    /* ExclusiveOrExpression  */
  YYSYMBOL_InclusiveOrExpression = 253,    /* InclusiveOrExpression  */
  YYSYMBOL_ConditionalAndExpression = 254, /* ConditionalAndExpression  */
  YYSYMBOL_ConditionalOrExpression = 255,  /* ConditionalOrExpression  */
  YYSYMBOL_ConditionalExpression = 256,    /* ConditionalExpression  */
  YYSYMBOL_AssignmentExpression = 257,     /* AssignmentExpression  */
  YYSYMBOL_Assignment = 258,               /* Assignment  */
  YYSYMBOL_LeftHandSide = 259,             /* LeftHandSide  */
  YYSYMBOL_AssignmentOperator = 260,       /* AssignmentOperator  */
  YYSYMBOL_Expression = 261,               /* Expression  */
  YYSYMBOL_ConstantExpression = 262,       /* ConstantExpression  */
  YYSYMBOL_New = 263                       /* New  */
};
typedef enum yysymbol_kind_t yysymbol_kind_t;




#ifdef short
# undef short
#endif

/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
   <limits.h> and (if available) <stdint.h> are included
   so that the code can choose integer types of a good width.  */

#ifndef __PTRDIFF_MAX__
# include <limits.h> /* INFRINGES ON USER NAME SPACE */
# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
#  define YY_STDINT_H
# endif
#endif

/* Narrow types that promote to a signed type and that can represent a
   signed or unsigned integer of at least N bits.  In tables they can
   save space and decrease cache pressure.  Promoting to a signed type
   helps avoid bugs in integer arithmetic.  */

#ifdef __INT_LEAST8_MAX__
typedef __INT_LEAST8_TYPE__ yytype_int8;
#elif defined YY_STDINT_H
typedef int_least8_t yytype_int8;
#else
typedef signed char yytype_int8;
#endif

#ifdef __INT_LEAST16_MAX__
typedef __INT_LEAST16_TYPE__ yytype_int16;
#elif defined YY_STDINT_H
typedef int_least16_t yytype_int16;
#else
typedef short yytype_int16;
#endif

/* Work around bug in HP-UX 11.23, which defines these macros
   incorrectly for preprocessor constants.  This workaround can likely
   be removed in 2023, as HPE has promised support for HP-UX 11.23
   (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
   <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
#ifdef __hpux
# undef UINT_LEAST8_MAX
# undef UINT_LEAST16_MAX
# define UINT_LEAST8_MAX 255
# define UINT_LEAST16_MAX 65535
#endif

#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
typedef __UINT_LEAST8_TYPE__ yytype_uint8;
#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
       && UINT_LEAST8_MAX <= INT_MAX)
typedef uint_least8_t yytype_uint8;
#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
typedef unsigned char yytype_uint8;
#else
typedef short yytype_uint8;
#endif

#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
typedef __UINT_LEAST16_TYPE__ yytype_uint16;
#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
       && UINT_LEAST16_MAX <= INT_MAX)
typedef uint_least16_t yytype_uint16;
#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
typedef unsigned short yytype_uint16;
#else
typedef int yytype_uint16;
#endif

#ifndef YYPTRDIFF_T
# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
#  define YYPTRDIFF_T __PTRDIFF_TYPE__
#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
# elif defined PTRDIFF_MAX
#  ifndef ptrdiff_t
#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
#  endif
#  define YYPTRDIFF_T ptrdiff_t
#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
# else
#  define YYPTRDIFF_T long
#  define YYPTRDIFF_MAXIMUM LONG_MAX
# endif
#endif

#ifndef YYSIZE_T
# ifdef __SIZE_TYPE__
#  define YYSIZE_T __SIZE_TYPE__
# elif defined size_t
#  define YYSIZE_T size_t
# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
#  define YYSIZE_T size_t
# else
#  define YYSIZE_T unsigned
# endif
#endif

#define YYSIZE_MAXIMUM                                  \
  YY_CAST (YYPTRDIFF_T,                                 \
           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
            ? YYPTRDIFF_MAXIMUM                         \
            : YY_CAST (YYSIZE_T, -1)))

#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))


/* Stored state numbers (used for stacks). */
typedef yytype_int16 yy_state_t;

/* State numbers in computations.  */
typedef int yy_state_fast_t;

#ifndef YY_
# if defined YYENABLE_NLS && YYENABLE_NLS
#  if ENABLE_NLS
#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
#  endif
# endif
# ifndef YY_
#  define YY_(Msgid) Msgid
# endif
#endif


#ifndef YY_ATTRIBUTE_PURE
# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
# else
#  define YY_ATTRIBUTE_PURE
# endif
#endif

#ifndef YY_ATTRIBUTE_UNUSED
# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
# else
#  define YY_ATTRIBUTE_UNUSED
# endif
#endif

/* Suppress unused-variable warnings by "using" E.  */
#if ! defined lint || defined __GNUC__
# define YY_USE(E) ((void) (E))
#else
# define YY_USE(E) /* empty */
#endif

#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
    _Pragma ("GCC diagnostic push")                                     \
    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
    _Pragma ("GCC diagnostic pop")
#else
# define YY_INITIAL_VALUE(Value) Value
#endif
#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
# define YY_IGNORE_MAYBE_UNINITIALIZED_END
#endif
#ifndef YY_INITIAL_VALUE
# define YY_INITIAL_VALUE(Value) /* Nothing. */
#endif

#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
# define YY_IGNORE_USELESS_CAST_BEGIN                          \
    _Pragma ("GCC diagnostic push")                            \
    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
# define YY_IGNORE_USELESS_CAST_END            \
    _Pragma ("GCC diagnostic pop")
#endif
#ifndef YY_IGNORE_USELESS_CAST_BEGIN
# define YY_IGNORE_USELESS_CAST_BEGIN
# define YY_IGNORE_USELESS_CAST_END
#endif


#define YY_ASSERT(E) ((void) (0 && (E)))

#if 1

/* The parser invokes alloca or malloc; define the necessary symbols.  */

# ifdef YYSTACK_USE_ALLOCA
#  if YYSTACK_USE_ALLOCA
#   ifdef __GNUC__
#    define YYSTACK_ALLOC __builtin_alloca
#   elif defined __BUILTIN_VA_ARG_INCR
#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
#   elif defined _AIX
#    define YYSTACK_ALLOC __alloca
#   elif defined _MSC_VER
#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
#    define alloca _alloca
#   else
#    define YYSTACK_ALLOC alloca
#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
#     ifndef EXIT_SUCCESS
#      define EXIT_SUCCESS 0
#     endif
#    endif
#   endif
#  endif
# endif

# ifdef YYSTACK_ALLOC
   /* Pacify GCC's 'empty if-body' warning.  */
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
#  ifndef YYSTACK_ALLOC_MAXIMUM
    /* The OS might guarantee only one guard page at the bottom of the stack,
       and a page size can be as small as 4096 bytes.  So we cannot safely
       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
       to allow for a few compiler-allocated temporary stack slots.  */
#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
#  endif
# else
#  define YYSTACK_ALLOC YYMALLOC
#  define YYSTACK_FREE YYFREE
#  ifndef YYSTACK_ALLOC_MAXIMUM
#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
#  endif
#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
       && ! ((defined YYMALLOC || defined malloc) \
             && (defined YYFREE || defined free)))
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
#   ifndef EXIT_SUCCESS
#    define EXIT_SUCCESS 0
#   endif
#  endif
#  ifndef YYMALLOC
#   define YYMALLOC malloc
#   if ! defined malloc && ! defined EXIT_SUCCESS
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
#   endif
#  endif
#  ifndef YYFREE
#   define YYFREE free
#   if ! defined free && ! defined EXIT_SUCCESS
void free (void *); /* INFRINGES ON USER NAME SPACE */
#   endif
#  endif
# endif
#endif /* 1 */

#if (! defined yyoverflow \
     && (! defined __cplusplus \
         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))

/* A type that is properly aligned for any stack member.  */
union yyalloc
{
  yy_state_t yyss_alloc;
  YYSTYPE yyvs_alloc;
};

/* The size of the maximum gap between one aligned stack and the next.  */
# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)

/* The size of an array large to enough to hold all stacks, each with
   N elements.  */
# define YYSTACK_BYTES(N) \
     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
      + YYSTACK_GAP_MAXIMUM)

# define YYCOPY_NEEDED 1

/* Relocate STACK from its old location to the new one.  The
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
   elements in the stack, and YYPTR gives the new location of the
   stack.  Advance YYPTR to a properly aligned location for the next
   stack.  */
# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
    do                                                                  \
      {                                                                 \
        YYPTRDIFF_T yynewbytes;                                         \
        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
        Stack = &yyptr->Stack_alloc;                                    \
        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
      }                                                                 \
    while (0)

#endif

#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
/* Copy COUNT objects from SRC to DST.  The source and destination do
   not overlap.  */
# ifndef YYCOPY
#  if defined __GNUC__ && 1 < __GNUC__
#   define YYCOPY(Dst, Src, Count) \
      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
#  else
#   define YYCOPY(Dst, Src, Count)              \
      do                                        \
        {                                       \
          YYPTRDIFF_T yyi;                      \
          for (yyi = 0; yyi < (Count); yyi++)   \
            (Dst)[yyi] = (Src)[yyi];            \
        }                                       \
      while (0)
#  endif
# endif
#endif /* !YYCOPY_NEEDED */

/* YYFINAL -- State number of the termination state.  */
#define YYFINAL  23
/* YYLAST -- Last index in YYTABLE.  */
#define YYLAST   2215

/* YYNTOKENS -- Number of terminals.  */
#define YYNTOKENS  106
/* YYNNTS -- Number of nonterminals.  */
#define YYNNTS  158
/* YYNRULES -- Number of rules.  */
#define YYNRULES  351
/* YYNSTATES -- Number of states.  */
#define YYNSTATES  575

/* YYMAXUTOK -- Last valid token kind.  */
#define YYMAXUTOK   360


/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
   as returned by yylex, with out-of-bounds checking.  */
#define YYTRANSLATE(YYX)                                \
  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
   : YYSYMBOL_YYUNDEF)

/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
   as returned by yylex.  */
static const yytype_int8 yytranslate[] =
{
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
     105
};

#if YYDEBUG
  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
static const yytype_int16 yyrline[] =
{
       0,   180,   180,   189,   197,   205,   213,   221,   229,   238,
     246,   255,   263,   272,   277,   282,   287,   292,   297,   302,
     307,   313,   321,   330,   340,   349,   358,   366,   376,   382,
     389,   396,   402,   409,   418,   428,   438,   447,   455,   464,
     473,   479,   488,   494,   503,   509,   518,   530,   538,   547,
     559,   572,   580,   588,   597,   605,   614,   614,   614,   615,
     616,   616,   616,   616,   616,   616,   617,   620,   630,   639,
     648,   657,   667,   673,   682,   691,   700,   708,   717,   726,
     732,   741,   749,   757,   765,   774,   782,   791,   797,   805,
     814,   822,   831,   840,   849,   857,   866,   874,   882,   891,
     900,   910,   917,   927,   937,   944,   951,   954,   960,   970,
     980,   990,   996,  1006,  1016,  1026,  1035,  1045,  1056,  1066,
    1073,  1083,  1092,  1102,  1111,  1121,  1127,  1137,  1146,  1156,
    1166,  1173,  1182,  1191,  1200,  1209,  1217,  1226,  1235,  1245,
    1255,  1264,  1274,  1284,  1291,  1300,  1310,  1319,  1329,  1338,
    1345,  1355,  1364,  1374,  1383,  1392,  1402,  1412,  1421,  1431,
    1440,  1449,  1458,  1467,  1476,  1486,  1495,  1504,  1513,  1522,
    1532,  1541,  1550,  1559,  1568,  1577,  1586,  1595,  1604,  1613,
    1622,  1631,  1641,  1651,  1662,  1672,  1682,  1691,  1700,  1709,
    1718,  1727,  1736,  1746,  1756,  1766,  1776,  1783,  1790,  1797,
    1807,  1814,  1824,  1834,  1843,  1853,  1862,  1872,  1879,  1886,
    1893,  1901,  1908,  1918,  1925,  1935,  1945,  1952,  1962,  1971,
    1981,  1991,  2000,  2010,  2019,  2029,  2040,  2047,  2054,  2065,
    2075,  2085,  2095,  2104,  2114,  2121,  2131,  2140,  2150,  2157,
    2167,  2176,  2186,  2195,  2201,  2210,  2219,  2228,  2237,  2247,
    2257,  2264,  2274,  2281,  2291,  2300,  2310,  2319,  2328,  2337,
    2347,  2354,  2364,  2373,  2383,  2393,  2399,  2406,  2416,  2426,
    2436,  2447,  2457,  2468,  2478,  2489,  2499,  2509,  2518,  2527,
    2536,  2545,  2555,  2565,  2575,  2584,  2593,  2602,  2611,  2621,
    2631,  2641,  2650,  2659,  2668,  2678,  2687,  2696,  2703,  2712,
    2721,  2730,  2740,  2749,  2758,  2768,  2777,  2786,  2795,  2805,
    2814,  2823,  2832,  2841,  2850,  2860,  2869,  2878,  2888,  2897,
    2907,  2916,  2926,  2935,  2945,  2954,  2964,  2973,  2983,  2992,
    3002,  3011,  3021,  3031,  3041,  3050,  3060,  3069,  3078,  3087,
    3096,  3105,  3114,  3123,  3132,  3141,  3150,  3159,  3169,  3179,
    3189,  3198
};
#endif

/** Accessing symbol of state STATE.  */
#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])

#if 1
/* The user-facing name of the symbol whose (internal) number is
   YYSYMBOL.  No bounds checking.  */
static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;

/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
static const char *const yytname[] =
{
  "\"end of file\"", "error", "\"invalid token\"", "jp_ABSTRACT",
  "jp_ASSERT", "jp_BOOLEAN_TYPE", "jp_BREAK", "jp_BYTE_TYPE", "jp_CASE",
  "jp_CATCH", "jp_CHAR_TYPE", "jp_CLASS", "jp_CONTINUE", "jp_DEFAULT",
  "jp_DO", "jp_DOUBLE_TYPE", "jp_ELSE", "jp_EXTENDS", "jp_FINAL",
  "jp_FINALLY", "jp_FLOAT_TYPE", "jp_FOR", "jp_IF", "jp_IMPLEMENTS",
  "jp_IMPORT", "jp_INSTANCEOF", "jp_INT_TYPE", "jp_INTERFACE",
  "jp_LONG_TYPE", "jp_NATIVE", "jp_NEW", "jp_PACKAGE", "jp_PRIVATE",
  "jp_PROTECTED", "jp_PUBLIC", "jp_RETURN", "jp_SHORT_TYPE", "jp_STATIC",
  "jp_STRICTFP", "jp_SUPER", "jp_SWITCH", "jp_SYNCHRONIZED", "jp_THIS",
  "jp_THROW", "jp_THROWS", "jp_TRANSIENT", "jp_TRY", "jp_VOID",
  "jp_VOLATILE", "jp_WHILE", "jp_BOOLEANLITERAL", "jp_CHARACTERLITERAL",
  "jp_DECIMALINTEGERLITERAL", "jp_FLOATINGPOINTLITERAL",
  "jp_HEXINTEGERLITERAL", "jp_NULLLITERAL", "jp_STRINGLITERAL", "jp_NAME",
  "jp_AND", "jp_ANDAND", "jp_ANDEQUALS", "jp_BRACKETEND",
  "jp_BRACKETSTART", "jp_CARROT", "jp_CARROTEQUALS", "jp_COLON",
  "jp_COMMA", "jp_CURLYEND", "jp_CURLYSTART", "jp_DIVIDE",
  "jp_DIVIDEEQUALS", "jp_DOLLAR", "jp_DOT", "jp_EQUALS", "jp_EQUALSEQUALS",
  "jp_EXCLAMATION", "jp_EXCLAMATIONEQUALS", "jp_GREATER", "jp_GTEQUALS",
  "jp_GTGT", "jp_GTGTEQUALS", "jp_GTGTGT", "jp_GTGTGTEQUALS",
  "jp_LESLESEQUALS", "jp_LESSTHAN", "jp_LTEQUALS", "jp_LTLT", "jp_MINUS",
  "jp_MINUSEQUALS", "jp_MINUSMINUS", "jp_PAREEND", "jp_PARESTART",
  "jp_PERCENT", "jp_PERCENTEQUALS", "jp_PIPE", "jp_PIPEEQUALS",
  "jp_PIPEPIPE", "jp_PLUS", "jp_PLUSEQUALS", "jp_PLUSPLUS", "jp_QUESTION",
  "jp_SEMICOL", "jp_TILDE", "jp_TIMES", "jp_TIMESEQUALS", "jp_ERROR",
  "$accept", "Goal", "Literal", "IntegerLiteral", "Type", "PrimitiveType",
  "ReferenceType", "ClassOrInterfaceType", "ClassType", "InterfaceType",
  "ArrayType", "Name", "SimpleName", "Identifier", "QualifiedName",
  "SimpleType", "CompilationUnit", "PackageDeclarationopt",
  "ImportDeclarations", "TypeDeclarations", "PackageDeclaration",
  "ImportDeclaration", "SingleTypeImportDeclaration",
  "TypeImportOnDemandDeclaration", "TypeDeclaration", "Modifiers",
  "Modifier", "ClassHeader", "ClassDeclaration", "Modifiersopt", "Super",
  "Interfaces", "InterfaceTypeList", "ClassBody", "ClassBodyDeclarations",
  "ClassBodyDeclaration", "ClassMemberDeclaration", "FieldDeclaration",
  "VariableDeclarators", "VariableDeclarator", "VariableDeclaratorId",
  "VariableInitializer", "MethodDeclaration", "MethodHeader", "Throwsopt",
  "MethodDeclarator", "FormalParameterListopt", "FormalParameterList",
  "FormalParameter", "Throws", "ClassTypeList", "MethodBody",
  "StaticInitializer", "ConstructorDeclaration", "ConstructorDeclarator",
  "ConstructorBody", "ExplicitConstructorInvocationopt",
  "ExplicitConstructorInvocation", "InterfaceHeader",
  "InterfaceDeclaration", "ExtendsInterfacesopt", "ExtendsInterfaces",
  "InterfaceBody", "InterfaceMemberDeclarations",
  "InterfaceMemberDeclaration", "ConstantDeclaration",
  "AbstractMethodDeclaration", "Semicols", "ArrayInitializer",
  "VariableInitializersOptional", "VariableInitializers", "Block",
  "BlockStatementsopt", "BlockStatements", "BlockStatement",
  "LocalVariableDeclarationStatement", "LocalVariableDeclaration",
  "Statement", "StatementNoShortIf",
  "StatementWithoutTrailingSubstatement", "EmptyStatement",
  "LabeledStatement", "LabeledStatementNoShortIf", "ExpressionStatement",
  "StatementExpression", "IfThenStatement", "IfThenElseStatement",
  "IfThenElseStatementNoShortIf", "SwitchStatement", "SwitchBlock",
  "SwitchLabelsopt", "SwitchBlockStatementGroups",
  "SwitchBlockStatementGroup", "SwitchLabels", "SwitchLabel",
  "WhileStatement", "WhileStatementNoShortIf", "DoStatement",
  "ForStatement", "ForUpdateopt", "ForInitopt", "ForStatementNoShortIf",
  "Expressionopt", "ForInit", "ForUpdate", "StatementExpressionList",
  "AssertStatement", "BreakStatement", "Identifieropt",
  "ContinueStatement", "ReturnStatement", "ThrowStatement",
  "SynchronizedStatement", "TryStatement", "Catchesopt", "Catches",
  "CatchClause", "Finally", "Primary", "PrimaryNoNewArray",
  "ClassInstanceCreationExpression", "ClassBodyOpt", "ArgumentListopt",
  "ArgumentList", "ArrayCreationExpression", "Dimsopt", "DimExprs",
  "DimExpr", "Dims", "FieldAccess", "MethodInvocation", "ArrayAccess",
  "PostfixExpression", "PostIncrementExpression",
  "PostDecrementExpression", "UnaryExpression", "PreIncrementExpression",
  "PreDecrementExpression", "UnaryExpressionNotPlusMinus",
  "CastExpression", "MultiplicativeExpression", "AdditiveExpression",
  "ShiftExpression", "RelationalExpression", "EqualityExpression",
  "AndExpression", "ExclusiveOrExpression", "InclusiveOrExpression",
  "ConditionalAndExpression", "ConditionalOrExpression",
  "ConditionalExpression", "AssignmentExpression", "Assignment",
  "LeftHandSide", "AssignmentOperator", "Expression", "ConstantExpression",
  "New", YY_NULLPTR
};

static const char *
yysymbol_name (yysymbol_kind_t yysymbol)
{
  return yytname[yysymbol];
}
#endif

#ifdef YYPRINT
/* YYTOKNUM[NUM] -- (External) token number corresponding to the
   (internal) symbol number NUM (which must be that of a token).  */
static const yytype_int16 yytoknum[] =
{
       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     315,   316,   317,   318,   319,   320,   321,   322,   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,
     355,   356,   357,   358,   359,   360
};
#endif

#define YYPACT_NINF (-503)

#define yypact_value_is_default(Yyn) \
  ((Yyn) == YYPACT_NINF)

#define YYTABLE_NINF (-336)

#define yytable_value_is_error(Yyn) \
  0

  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
     STATE-NUM.  */
static const yytype_int16 yypact[] =
{
     159,  1039,   236,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
    -503,  -503,  -503,  -503,  -503,  -503,   186,  -503,    56,  -503,
    -503,  -503,   178,  -503,    35,  -503,    21,  -503,   248,  1039,
     273,  -503,  -503,  -503,  -503,  -503,  -503,  -503,    78,  -503,
    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
    -503,  -503,  2088,  -503,    32,  -503,    16,   245,  -503,    28,
    -503,  -503,  1039,  1039,  -503,    80,   206,  -503,   129,   129,
    1039,   221,   228,   194,  -503,  -503,   225,  -503,  -503,   234,
     164,   206,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  1039,
    -503,  1039,   233,  -503,  -503,   739,  -503,  -503,  -503,  -503,
     -49,  -503,  -503,  -503,  1116,  -503,  -503,  1276,  -503,   129,
     129,    40,  -503,  -503,  -503,   122,   212,   265,  -503,   215,
    -503,  -503,   219,   739,  -503,   222,   224,  -503,  -503,  -503,
    1820,   129,   129,  1627,   237,   238,  -503,  1820,   241,   239,
     242,   283,  1820,   233,   266,  -503,  -503,  -503,  -503,  -503,
    -503,  -503,  1820,  1820,  1820,  -503,  -503,  -503,   129,   284,
     476,   293,  2067,  -503,   349,  -503,   296,  1366,  -503,  -503,
     264,  -503,  -503,  -503,  -503,  -503,   268,  -503,  -503,  -503,
    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
     294,   305,    72,  -503,  2070,    88,  2084,   121,   130,   148,
    -503,  -503,  -503,  2111,  1039,   281,   133,   281,   -25,  -503,
     126,   133,   314,   315,   315,   921,  1039,   308,  -503,  -503,
    -503,  -503,   277,  -503,  1820,  1820,  1820,  1820,  1820,   317,
     284,   545,  -503,  -503,   121,  -503,  -503,  -503,  -503,  -503,
    -503,  -503,    73,   124,   163,    59,   196,   323,   319,   290,
     324,    18,  -503,  -503,  -503,   -30,  -503,   285,   286,   242,
     342,  1941,  1820,   291,  -503,   129,  1820,  1820,   129,   292,
     385,  1820,    96,  -503,  -503,  -503,   310,  -503,  -503,   329,
     387,  1085,     3,  1820,  1627,   129,  -503,  -503,  -503,  -503,
     175,  1820,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,
    -503,  -503,  -503,  -503,  -503,  -503,  1820,   339,   339,   311,
     921,   343,  -503,   129,  -503,   344,  1766,  -503,  -503,   346,
    1039,   313,   347,  -503,  -503,   353,  -503,   307,  -503,  -503,
    -503,     6,   545,   326,  -503,  -503,  1820,  1820,  1820,  1820,
    1820,  1820,  1820,  1820,  1039,  1820,  1820,  1820,  1820,  1820,
    1820,  1820,  1820,  1820,  1820,  1820,  1820,  1820,  -503,  -503,
    -503,   330,  2067,  -503,  -503,   327,  -503,   354,   334,  -503,
     345,   335,   340,   348,  -503,   351,   416,   232,  -503,   356,
    -503,  -503,   376,  -503,   357,   377,  -503,  -503,   329,  -503,
     358,   390,  -503,  1085,   339,  -503,   154,   339,   154,  1820,
     362,  -503,  -503,  -503,  1766,  -503,  -503,  -503,  -503,   129,
    -503,  2088,  1039,  1456,  -503,   363,    70,    93,  1874,  -503,
    -503,  -503,    73,    73,   124,   124,   124,  -503,   163,   163,
     163,   163,    59,    59,   196,   323,   319,   290,   324,   383,
     360,  1820,  1820,  1995,  1699,  1820,   386,   233,  1820,  2088,
     233,  -503,  -503,  1627,  -503,  -503,  1820,  1820,  -503,   394,
    -503,  -503,   315,  -503,  -503,  -503,   369,  -503,  -503,   396,
     404,   410,  -503,  -503,    26,   113,  -503,   407,  1820,  1874,
    -503,  1820,  -503,   391,   374,  -503,   393,   395,   397,   411,
    -503,   466,   471,  -503,  -503,  -503,  -503,   399,  -503,  -503,
    -503,   400,   401,  -503,  -503,  -503,   402,  -503,   206,  -503,
    1766,  1820,  1820,  -503,  -503,  -503,  -503,   403,  1995,  1941,
    1820,  1820,  1699,  1627,  -503,    34,  -503,   233,  -503,  -503,
    -503,  -503,   405,   412,  -503,   413,  -503,   354,   406,   418,
     421,  -503,  -503,  1820,   429,   430,  -503,  1186,  -503,  -503,
     419,   422,  1627,  1820,  1699,  1699,  -503,   447,  -503,  -503,
    1555,  -503,  -503,  -503,  -503,   423,   497,  -503,  -503,  1995,
    1699,   432,  -503,  1699,  -503
};

  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
     Performed when YYTABLE does not specify something else to do.  Zero
     means the default is an error.  */
static const yytype_int16 yydefact[] =
{
      40,     0,     0,     2,    42,    41,    20,    13,    17,    19,
      18,    15,    16,    14,    38,    31,     0,    37,     0,    28,
      30,    29,     0,     1,    44,    32,     0,    46,     0,     0,
      72,    43,    47,    48,    34,    35,    33,    36,     0,    60,
      61,    62,    58,    57,    56,    59,    66,    63,    64,    65,
      53,    45,    73,    54,     0,    51,     0,   125,    52,     0,
      49,    55,     0,     0,    79,     0,     0,    68,     0,     0,
       0,     0,   126,     0,    24,    74,    23,    25,    76,    75,
      72,     0,    70,    69,    67,   123,   127,   130,   124,     0,
      50,     0,    59,    78,    84,     0,    80,    81,    85,    86,
       0,    82,    83,    71,    72,   128,    77,    72,   114,    38,
       0,    11,    12,    21,    22,    23,    28,   101,    96,    97,
     113,   129,   134,     0,   138,     0,   136,   131,   132,   133,
       0,   226,   226,     0,     0,     0,   350,   216,     0,     0,
      63,   243,     0,     0,     0,     5,     6,     9,     4,    10,
       8,     7,     0,     0,     0,   182,   242,     3,     0,    22,
     333,    30,    73,   155,     0,   170,     0,    72,   151,   153,
       0,   154,   159,   171,   160,   172,     0,   161,   162,   173,
     163,   174,   164,   181,   175,   176,   177,   179,   178,   180,
     277,   240,   245,   241,   246,   247,   248,     0,   189,   190,
     187,   188,   186,     0,     0,     0,   101,    92,     0,    88,
      90,   101,     0,    26,    27,    72,     0,     0,   102,    98,
     135,   140,   139,   137,     0,     0,     0,     0,     0,    37,
       0,   278,   245,   247,   291,   280,   281,   298,   284,   285,
     288,   294,   302,   305,   309,   315,   318,   320,   322,   324,
     326,   328,   330,   348,   331,     0,   227,     0,     0,     0,
       0,   213,     0,     0,   217,     0,     0,     0,     0,     0,
     234,     0,   278,   246,   248,   290,     0,   289,    92,   158,
       0,     0,     0,   252,     0,     0,   148,   152,   156,   185,
       0,     0,   283,   282,   345,   346,   338,   336,   343,   344,
     342,   341,   339,   347,   340,   337,     0,    37,    24,     0,
      72,     0,   100,     0,    87,     0,     0,    99,   265,     0,
       0,     0,   106,   107,   111,   110,   119,   115,   141,   293,
     287,    37,   278,     0,   286,   292,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   223,   225,
     228,     0,     0,   219,   221,     0,   214,   218,     0,   229,
     268,     0,     0,   269,   230,     0,     0,   232,   236,     0,
     244,   279,     0,   351,     0,   253,   254,   183,   157,   270,
     267,     0,   332,     0,   260,   262,     0,   260,     0,   252,
       0,   104,    89,    93,   143,    91,    95,    94,   266,     0,
     117,    72,     0,    72,   116,     0,    26,    27,   244,   300,
     301,   299,   304,   303,   307,   308,   306,   314,   311,   313,
     310,   312,   316,   317,   319,   321,   323,   325,   327,     0,
       0,     0,   216,     0,     0,   252,     0,     0,   252,    72,
       0,   233,   237,     0,   275,   271,     0,   252,   276,     0,
     256,   263,   261,   258,   257,   259,     0,   103,   146,     0,
     144,   109,   108,   112,     0,   243,   120,     0,     0,     0,
     296,     0,   224,     0,     0,   222,     0,     0,     0,    30,
     193,     0,   159,   166,   167,   168,   169,     0,   200,   196,
     231,     0,     0,   239,   207,   255,     0,   264,   250,   142,
     145,   252,   252,   118,   295,   297,   329,     0,   211,   213,
       0,     0,     0,     0,   273,   198,   274,     0,   272,   251,
     249,   147,     0,     0,   209,     0,   212,   220,     0,     0,
       0,   184,   194,     0,     0,     0,   201,    72,   203,   238,
       0,     0,     0,   216,     0,     0,   349,     0,   206,   197,
     202,   204,   122,   121,   210,     0,     0,   208,   205,   211,
       0,     0,   195,     0,   215
};

  /* YYPGOTO[NTERM-NUM].  */
static const yytype_int16 yypgoto[] =
{
    -503,  -503,  -503,  -503,   -85,     2,   181,   -41,  -198,   -45,
     -87,    -1,   431,    14,  -503,  -503,  -503,  -503,  -503,  -503,
    -503,  -503,  -503,  -503,   448,   -81,   -47,  -503,     7,   -23,
    -503,   462,  -503,   -64,  -503,  -503,  -503,   425,  -146,   217,
     123,  -391,  -503,   427,  -101,   424,   230,  -503,  -360,  -503,
    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,   439,
    -503,  -503,  -503,  -503,  -503,  -503,  -503,  -503,  -110,  -503,
    -503,   -77,   138,   -12,  -163,  -503,  -250,   -13,  -421,  -414,
    -503,  -503,  -503,  -503,  -252,  -503,  -503,  -503,  -503,  -503,
    -503,  -503,  -503,  -503,     5,  -503,  -503,  -503,  -503,   -16,
      36,  -503,  -418,  -503,  -503,  -502,  -503,  -503,   440,  -503,
    -503,  -503,  -503,  -503,  -503,  -503,   179,  -503,  -503,  -503,
     -54,  -503,  -341,  -503,  -503,  -149,   255,  -136,   102,   652,
     101,   688,   145,   157,   201,   -98,   289,   338,  -384,  -503,
     -59,   -58,   -92,   -57,   213,   226,   218,   223,   227,  -503,
      95,   274,   350,  -503,  -503,   660,  -503,  -503
};

  /* YYDEFGOTO[NTERM-NUM].  */
static const yytype_int16 yydefgoto[] =
{
       0,     2,   156,   157,   158,   229,   112,   113,    75,    78,
     230,   231,    19,    20,    21,    22,     3,     4,    24,    30,
       5,    31,    32,    33,    51,    52,    53,    54,   163,   164,
      65,    66,    79,    67,    80,    96,    97,    98,   208,   209,
     210,   405,    99,   100,   217,   206,   321,   322,   323,   218,
     325,   119,   101,   102,   117,   327,   413,   476,    57,    58,
      71,    72,    88,   104,   127,   128,   129,   222,   406,   469,
     470,   165,   166,   167,   168,   169,   170,   171,   491,   172,
     173,   174,   493,   175,   176,   177,   178,   494,   179,   499,
     545,   525,   546,   547,   548,   180,   495,   181,   182,   535,
     365,   496,   263,   366,   536,   367,   183,   184,   257,   185,
     186,   187,   188,   189,   376,   377,   378,   451,   190,   191,
     232,   530,   384,   385,   193,   415,   394,   395,   214,   194,
     233,   196,   234,   235,   236,   237,   238,   239,   240,   241,
     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
     252,   253,   254,   203,   306,   386,   557,   204
};

  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
     positive, shift that token.  If negative, reduce the rule whose
     number is the opposite.  If YYTABLE_NINF, syntax error.  */
static const yytype_int16 yytable[] =
{
      18,    82,    83,    17,   287,    61,   309,    56,   114,   364,
     110,   363,   279,   468,    34,   108,   537,   103,   324,   107,
     159,    74,    77,   120,   484,    86,   162,    68,    38,    77,
     492,    17,    34,   383,   480,   357,   114,    55,   110,    34,
      36,   313,   543,    69,   105,    35,   106,   544,    77,    62,
      77,   472,   118,   192,   275,    63,   277,    95,   466,    29,
      15,    76,    76,    35,    17,    17,   270,   537,   212,    76,
      35,   358,    17,    36,    16,   114,   314,   285,    15,   192,
     159,   123,    84,    85,   344,    15,   162,    55,    76,   502,
      76,    17,    16,    17,   115,   515,  -260,   111,   265,    16,
      64,   541,   212,    63,   497,   312,   160,   501,   492,   111,
     317,   122,   -37,   192,   355,    61,   506,   511,   356,   531,
     260,   161,   115,   205,   207,   111,   329,   330,    26,   334,
     335,    73,   319,   566,   567,   565,   345,   346,  -192,   388,
     492,   492,   336,   347,   348,   256,   256,   161,    64,   572,
      59,   272,   574,   272,  -191,   319,   492,    27,   281,   492,
    -261,   115,  -192,   308,   111,   337,   160,    39,   282,   111,
     532,   533,   278,  -192,   159,    74,   338,   216,  -191,    60,
     362,   161,    40,   479,   212,   268,    15,   283,   315,  -191,
       1,   485,   320,    41,    26,   311,    42,    43,    44,   316,
      16,    92,    46,    76,   512,    47,   307,   192,   195,    48,
     292,   339,    49,   213,   473,    76,   319,   389,    17,  -280,
     293,   340,   404,   272,   272,   332,   272,   272,   331,  -280,
     192,    93,    15,   114,   195,   409,    23,  -281,   419,   420,
     421,   375,   341,    25,   342,   460,    16,  -281,   464,   343,
      28,  -235,   197,   428,   429,   430,   431,   114,   461,    37,
     160,   461,    70,   111,   198,    50,   364,   364,   195,   363,
     349,   387,   350,   -39,    64,   114,    39,   285,   197,   370,
     422,   423,   373,   424,   425,   426,   463,   320,   465,    87,
     198,    40,   432,   433,    89,    90,    36,    26,   161,   278,
      91,   107,    41,   215,   390,    42,    43,    44,   199,   216,
      45,    46,   197,   265,    47,    61,   219,   364,    48,   115,
     220,    49,   111,   221,   198,   223,   159,   278,   261,   262,
     266,   213,   162,   267,   199,   272,   272,   272,   272,   272,
     272,   272,   272,   115,   272,   272,   272,   272,   272,   272,
     272,   272,   272,   272,   272,   268,   280,   271,   284,   192,
      68,   115,   195,   286,   111,   288,   290,   291,   199,   289,
     500,    74,   310,   503,    50,   318,   326,   319,   328,   212,
     514,   351,   352,   354,   353,   195,   359,   360,   320,   192,
     192,   361,   369,   374,   375,   313,   200,   287,   381,   192,
     380,   393,   399,   410,   401,   403,   197,   408,   414,   396,
     398,    76,   160,   411,    17,   111,   418,   272,   198,   412,
     443,   441,   200,   278,   444,   446,   320,   161,   442,   197,
     447,   490,   159,   416,   417,   450,   445,   454,   362,   448,
     504,   198,   449,   456,   529,   201,   453,   455,   481,   457,
     549,   458,   467,   478,   498,   507,   200,   202,   489,   508,
     159,   482,   199,   509,   192,   192,   162,   161,   192,   192,
     510,   201,   315,   159,   513,   518,   522,   272,   272,   162,
     272,   517,   523,   202,   519,   199,   520,  -165,   521,   524,
     526,   527,   528,   192,   558,   550,   462,   559,   192,   462,
     192,   192,   551,   552,   534,   201,   192,   553,   554,   387,
     542,   555,   568,   570,   195,   192,   192,   202,   160,   192,
     562,   111,   573,   563,   569,   427,   116,    81,    94,   124,
     402,   125,   471,   -23,   211,   560,   489,   161,   281,   564,
     400,   490,   504,   126,   195,   195,   160,   -23,   282,   111,
     200,   477,   561,   571,   195,   538,   452,   542,   197,   160,
     564,   161,   111,   397,   434,  -278,   161,   283,   489,   489,
     198,   436,   258,   200,   161,  -278,   516,   437,   435,     0,
     392,     0,   438,     0,   489,     0,     0,   489,   197,   197,
       0,     0,     0,     0,     0,     0,     0,     0,   197,   201,
     198,   198,     0,     0,     0,  -333,     0,   281,     0,  -333,
     198,   202,     0,     0,   199,  -333,     0,   282,  -333,   195,
     195,     0,   201,   195,   195,  -333,     0,  -333,  -333,     0,
       0,     0,     0,  -333,   202,     0,   283,     0,  -333,     0,
    -333,     0,     0,  -333,   199,   199,     0,     0,   195,  -333,
       0,     0,     0,   195,   199,   195,   195,     0,     0,     0,
       0,   195,     0,   197,   197,     0,     0,   197,   197,     0,
     195,   195,     0,     0,   195,   198,   198,     0,     0,   198,
     198,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   197,     0,     0,     0,     0,   197,     0,   197,
     197,     0,   200,     0,   198,   197,     0,     0,     0,   198,
       0,   198,   198,     0,   197,   197,     0,   198,   197,   199,
     199,     0,     0,   199,   199,     0,   198,   198,     0,     0,
     198,     0,   200,   200,     0,     0,     0,     0,     0,     0,
       0,     0,   200,     0,     6,     0,     7,     0,   199,     8,
      68,   201,     0,   199,     9,   199,   199,     0,     0,    10,
       0,   199,     0,   202,     0,    11,    69,    12,     0,     0,
     199,   199,     0,     0,   199,    13,     0,     0,     0,     0,
       0,   201,   201,     0,     0,     0,   109,     0,     0,     0,
     255,   201,     0,   202,   202,     0,    15,   264,     0,     0,
       0,     0,   269,   202,   273,     0,   273,   200,   200,     0,
      16,   200,   200,   276,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   200,     0,     0,     0,
     274,   200,   274,   200,   200,     0,     0,     0,     0,   200,
       0,     0,     0,     0,     0,     0,   201,   201,   200,   200,
     201,   201,   200,     0,     0,     0,     0,     0,   202,   202,
       0,     0,   202,   202,     0,     0,   273,   273,     0,   273,
     273,     0,     0,     0,     0,   201,   333,     0,     0,     0,
     201,     0,   201,   201,     0,     0,     0,   202,   201,     0,
       0,     0,   202,     0,   202,   202,     0,   201,   201,     0,
     202,   201,   274,   274,     0,   274,   274,     0,     0,   202,
     202,     0,   368,   202,    39,     0,   371,   372,     0,     0,
       0,   379,     0,     0,     0,     0,     0,     0,     0,    40,
       0,   382,     0,     0,     0,     0,     0,     0,     0,     0,
      41,   391,     0,    42,    43,    44,     0,     0,    45,    46,
       0,     0,    47,     0,     0,     0,    48,     0,     0,    49,
       0,     0,     0,     0,     0,     0,   407,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   273,   273,
     273,   273,   273,   273,   273,   273,     0,   273,   273,   273,
     273,   273,   273,   273,   273,   273,   273,   273,     0,     0,
       0,  -105,     0,     0,     0,     0,   439,   440,     0,     0,
       0,     0,     0,     0,   274,   274,   274,   274,   274,   274,
     274,   274,     0,   274,   274,   274,   274,   274,   274,   274,
     274,   274,   274,   274,     6,     0,     7,     0,     0,     8,
       0,     0,     0,   459,     9,     0,     0,     0,     0,    10,
       0,     0,     0,     0,   407,    11,     0,    12,     0,     0,
     273,     0,     0,     0,     0,    13,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,    14,     0,     0,     0,
       6,     0,     7,     0,     0,     8,    15,     0,     0,     0,
       9,   483,   264,     0,     0,    10,   274,     0,     0,     0,
      16,    11,     0,    12,     0,   136,   505,     0,     0,    39,
       0,    13,     0,     0,   138,     0,     0,   141,     0,     0,
     273,   273,    14,   273,    40,   145,   146,   147,   148,   149,
     150,   151,    15,     0,     0,    41,   318,     0,    42,    43,
      44,     0,     0,    45,    46,     0,    16,    47,     0,     0,
     224,    48,     0,     0,    49,     0,   274,   274,     0,   274,
     407,     0,   225,     0,   152,     0,   226,     0,     0,     0,
     539,   540,   227,   121,   154,     0,     0,   228,     0,    39,
     130,     6,   131,     7,   543,     0,     8,     0,   132,   544,
     133,     9,     0,   556,    40,     0,    10,   134,   135,     0,
       0,     0,    11,   264,    12,    41,   136,     0,    42,    43,
      44,   137,    13,    45,    46,   138,   139,   140,   141,   142,
       0,    48,   143,    14,    49,   144,   145,   146,   147,   148,
     149,   150,   151,    15,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  -199,   107,     0,     0,    16,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   152,     0,   153,     0,    39,
     130,     6,   131,     7,     0,   154,     8,   155,   132,     0,
     133,     9,     0,     0,    40,     0,    10,   134,   135,     0,
       0,     0,    11,     0,    12,    41,   136,     0,    42,    43,
      44,   137,    13,    45,    46,   138,   139,   140,   141,   142,
       0,    48,   143,    14,    49,   144,   145,   146,   147,   148,
     149,   150,   151,    15,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  -149,   107,     0,     0,    16,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   152,     0,   153,     0,    39,
     130,     6,   131,     7,     0,   154,     8,   155,   132,     0,
     133,     9,     0,     0,    40,     0,    10,   134,   135,     0,
       0,     0,    11,     0,    12,    41,   136,     0,    42,    43,
      44,   137,    13,    45,    46,   138,   139,   140,   141,   142,
       0,    48,   143,    14,    49,   144,   145,   146,   147,   148,
     149,   150,   151,    15,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  -150,   107,     0,     0,    16,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   152,     0,   153,     0,    39,
     130,     6,   131,     7,     0,   154,     8,   155,   132,     0,
     133,     9,     0,     0,    40,     0,    10,   134,   135,     0,
       0,     0,    11,     0,    12,    41,   136,     0,    42,    43,
      44,   137,    13,    45,    46,   474,   139,   140,   475,   142,
       0,    48,   143,    14,    49,   144,   145,   146,   147,   148,
     149,   150,   151,    15,     0,     0,     0,     0,     0,     0,
       0,     0,     0,  -149,   107,     0,     0,    16,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   152,     0,   153,     0,     0,
       0,     0,     0,     0,     0,   154,     0,   155,    39,   130,
       6,   131,     7,     0,     0,     8,   -72,   132,     0,   133,
       9,     0,     0,    40,     0,    10,   134,   135,     0,     0,
       0,    11,     0,    12,    41,   136,     0,    42,    43,    44,
     137,    13,    45,    46,   138,   139,   140,   141,   142,     0,
      48,   143,    14,    49,   144,   145,   146,   147,   148,   149,
     150,   151,    15,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   107,     0,     0,    16,     0,     0,     0,
       0,   130,     6,   131,     7,     0,     0,     8,     0,   132,
       0,   133,     9,     0,   152,     0,   153,    10,   134,   135,
       0,     0,     0,    11,   154,    12,   155,   136,     0,     0,
       0,     0,   137,    13,     0,     0,   138,   139,   259,   141,
     142,     0,     0,   143,    14,     0,   144,   145,   146,   147,
     148,   149,   150,   151,    15,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   107,     0,     0,    16,     0,
       0,     0,     0,   130,     6,   131,     7,     0,     0,     8,
       0,   132,     0,   133,     9,     0,   152,     0,   153,    10,
     486,   487,     0,     0,     0,    11,   154,    12,   155,   136,
       0,     0,     0,     0,   137,    13,     0,     0,   138,   139,
     259,   141,   142,     0,     0,   143,    14,     0,   488,   145,
     146,   147,   148,   149,   150,   151,    15,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   107,     0,     0,
      16,     6,     0,     7,     0,     0,     8,     0,     0,     0,
       0,     9,     0,     0,     0,     0,    10,     0,   152,     0,
     153,     0,    11,     0,    12,     0,   136,     0,   154,     0,
     155,     0,    13,     0,     0,   138,     0,     0,   141,     0,
       0,     0,     0,    14,     0,     0,   145,   146,   147,   148,
     149,   150,   151,    15,     0,     6,     0,     7,     0,     0,
       8,     0,     0,     0,   404,     9,     0,    16,     0,     0,
      10,   224,     0,     0,     0,     0,    11,     0,    12,     0,
     136,     0,     0,   225,     0,   152,    13,   226,     0,   138,
       0,     0,   141,   227,     0,   154,     0,    14,   228,     0,
     145,   146,   147,   148,   149,   150,   151,    15,     0,     6,
       0,     7,     0,     0,     8,     0,     0,     0,     0,     9,
       0,    16,     0,     0,    10,   224,     0,     0,     0,     0,
      11,     0,    12,     0,   136,     0,     0,   225,     0,   152,
      13,   226,     0,   138,     0,     0,   141,   227,     0,   154,
       0,    14,   228,     0,   145,   146,   147,   148,   149,   150,
     151,    15,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,    39,    16,     6,     0,     7,   224,
       0,     8,     0,     0,     0,     0,     9,     0,     0,    40,
       0,    10,     0,     0,     0,   226,     0,    11,     0,    12,
      41,   136,     0,    42,    43,    44,   228,    13,    45,    46,
     138,     0,    47,   141,     0,     0,    48,     0,    14,    49,
       0,   145,   146,   147,   148,   149,   150,   151,    15,     0,
       6,     0,     7,     0,     0,     8,     0,     0,     0,     0,
       9,     0,    16,     0,     0,    10,     0,     0,     0,     0,
       0,    11,     0,    12,     0,   136,     0,     0,     0,     0,
     152,    13,   153,     0,   138,     0,     0,   141,     0,     0,
     154,     0,    14,     0,     0,   145,   146,   147,   148,   149,
     150,   151,    15,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,    16,     0,     0,     0,
      39,     0,     6,     0,     7,     0,     0,     8,     0,     0,
       0,     0,     9,     0,   152,    40,   153,    10,     0,     0,
       0,    39,     0,    11,   154,    12,    41,     0,     0,    42,
      43,    44,     0,    13,    45,    46,    40,     0,    47,     0,
       0,     0,    48,     0,    14,    49,     0,    41,     0,     0,
      42,    43,    44,     0,    15,    45,    46,     0,     0,    47,
    -334,     0,     0,    48,  -334,     0,    49,     0,    16,     0,
    -334,     0,     0,  -334,  -335,     0,     0,     0,  -335,     0,
    -334,     0,  -334,  -334,  -335,     0,     0,  -335,  -334,     0,
       0,     0,     0,  -334,  -335,  -334,  -335,  -335,  -334,     0,
       0,   294,  -335,     0,  -334,   295,     0,  -335,     0,  -335,
       0,   296,  -335,     0,   297,     0,     0,     0,  -335,     0,
       0,   298,     0,   299,   300,     0,     0,     0,     0,   301,
       0,     0,     0,     0,   302,     0,   303,     0,     0,   304,
       0,     0,     0,     0,     0,   305
};

static const yytype_int16 yycheck[] =
{
       1,    65,    66,     1,   167,    52,   204,    30,    95,   261,
      95,   261,   158,   404,    11,    92,   518,    81,   216,    68,
     107,    62,    63,   100,   442,    70,   107,    11,    29,    70,
     444,    29,    11,    30,   418,    65,   123,    30,   123,    11,
      26,    66,     8,    27,    89,    42,    91,    13,    89,    17,
      91,   411,   101,   107,   152,    23,   154,    80,   399,    24,
      57,    62,    63,    42,    62,    63,   143,   569,    62,    70,
      42,   101,    70,    59,    71,   162,   101,   162,    57,   133,
     167,   104,    68,    69,    25,    57,   167,    80,    89,   449,
      91,    89,    71,    91,    95,   479,    90,    95,    72,    71,
      68,   522,    62,    23,   445,   206,   107,   448,   522,   107,
     211,   104,    72,   167,    96,   162,   457,    91,   100,   510,
     133,   107,   123,   109,   110,   123,   224,   225,    72,   227,
     228,   103,    62,   554,   555,   553,    77,    78,    66,   285,
     554,   555,    69,    84,    85,   131,   132,   133,    68,   570,
      72,   152,   573,   154,    66,    62,   570,   101,    62,   573,
      90,   162,    90,   204,   162,    92,   167,     3,    72,   167,
     511,   512,   158,   101,   261,   216,   103,    44,    90,   101,
     261,   167,    18,    90,    62,    72,    57,    91,    62,   101,
      31,   443,   215,    29,    72,    62,    32,    33,    34,    73,
      71,    37,    38,   204,    91,    41,   204,   261,   107,    45,
      89,    87,    48,   111,   412,   216,    62,    42,   216,    89,
      99,    97,    68,   224,   225,   226,   227,   228,   226,    99,
     284,    67,    57,   320,   133,   320,     0,    89,   336,   337,
     338,     9,    79,    57,    81,   394,    71,    99,   397,    86,
      72,    19,   107,   345,   346,   347,   348,   344,   394,    11,
     261,   397,    17,   261,   107,   101,   518,   519,   167,   519,
      74,   284,    76,     0,    68,   362,     3,   362,   133,   265,
     339,   340,   268,   341,   342,   343,   396,   310,   398,    68,
     133,    18,   349,   350,    66,   101,   282,    72,   284,   285,
      66,    68,    29,    91,   290,    32,    33,    34,   107,    44,
      37,    38,   167,    72,    41,   362,   101,   569,    45,   320,
     101,    48,   320,   101,   167,   101,   413,   313,    91,    91,
      91,   229,   413,    91,   133,   336,   337,   338,   339,   340,
     341,   342,   343,   344,   345,   346,   347,   348,   349,   350,
     351,   352,   353,   354,   355,    72,    72,    91,    65,   413,
      11,   362,   261,    67,   362,   101,    72,    62,   167,   101,
     447,   412,    91,   450,   101,    61,    68,    62,   101,    62,
     478,    58,    63,    59,    94,   284,   101,   101,   411,   443,
     444,    49,   101,   101,     9,    66,   107,   560,    11,   453,
      90,    62,    91,    90,    61,    61,   261,    61,   101,   307,
     308,   412,   413,    66,   412,   413,    90,   418,   261,    66,
      66,    91,   133,   409,    90,    90,   449,   413,   101,   284,
      90,   444,   519,   331,   332,    19,    91,    61,   519,    91,
     453,   284,    91,    66,   508,   107,    90,    90,    65,    91,
     527,    61,    90,    90,    68,    61,   167,   107,   444,    90,
     547,   101,   261,    67,   518,   519,   547,   453,   522,   523,
      66,   133,    62,   560,    67,   101,    65,   478,   479,   560,
     481,    90,    16,   133,    91,   284,    91,    16,    91,    90,
      90,    90,    90,   547,    65,    90,   394,    67,   552,   397,
     554,   555,    90,    90,   101,   167,   560,   101,    90,   522,
     523,    90,    65,    16,   413,   569,   570,   167,   519,   573,
     101,   519,    90,   101,   101,   344,    95,    65,    80,   104,
     313,   104,   409,    57,   110,   547,   522,   523,    62,   552,
     310,   554,   555,   104,   443,   444,   547,    71,    72,   547,
     261,   413,   547,   569,   453,   519,   377,   570,   413,   560,
     573,   547,   560,   308,   351,    89,   552,    91,   554,   555,
     413,   353,   132,   284,   560,    99,   481,   354,   352,    -1,
     306,    -1,   355,    -1,   570,    -1,    -1,   573,   443,   444,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   453,   261,
     443,   444,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,
     453,   261,    -1,    -1,   413,    70,    -1,    72,    73,   518,
     519,    -1,   284,   522,   523,    80,    -1,    82,    83,    -1,
      -1,    -1,    -1,    88,   284,    -1,    91,    -1,    93,    -1,
      95,    -1,    -1,    98,   443,   444,    -1,    -1,   547,   104,
      -1,    -1,    -1,   552,   453,   554,   555,    -1,    -1,    -1,
      -1,   560,    -1,   518,   519,    -1,    -1,   522,   523,    -1,
     569,   570,    -1,    -1,   573,   518,   519,    -1,    -1,   522,
     523,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   547,    -1,    -1,    -1,    -1,   552,    -1,   554,
     555,    -1,   413,    -1,   547,   560,    -1,    -1,    -1,   552,
      -1,   554,   555,    -1,   569,   570,    -1,   560,   573,   518,
     519,    -1,    -1,   522,   523,    -1,   569,   570,    -1,    -1,
     573,    -1,   443,   444,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   453,    -1,     5,    -1,     7,    -1,   547,    10,
      11,   413,    -1,   552,    15,   554,   555,    -1,    -1,    20,
      -1,   560,    -1,   413,    -1,    26,    27,    28,    -1,    -1,
     569,   570,    -1,    -1,   573,    36,    -1,    -1,    -1,    -1,
      -1,   443,   444,    -1,    -1,    -1,    47,    -1,    -1,    -1,
     130,   453,    -1,   443,   444,    -1,    57,   137,    -1,    -1,
      -1,    -1,   142,   453,   152,    -1,   154,   518,   519,    -1,
      71,   522,   523,   153,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   547,    -1,    -1,    -1,
     152,   552,   154,   554,   555,    -1,    -1,    -1,    -1,   560,
      -1,    -1,    -1,    -1,    -1,    -1,   518,   519,   569,   570,
     522,   523,   573,    -1,    -1,    -1,    -1,    -1,   518,   519,
      -1,    -1,   522,   523,    -1,    -1,   224,   225,    -1,   227,
     228,    -1,    -1,    -1,    -1,   547,   226,    -1,    -1,    -1,
     552,    -1,   554,   555,    -1,    -1,    -1,   547,   560,    -1,
      -1,    -1,   552,    -1,   554,   555,    -1,   569,   570,    -1,
     560,   573,   224,   225,    -1,   227,   228,    -1,    -1,   569,
     570,    -1,   262,   573,     3,    -1,   266,   267,    -1,    -1,
      -1,   271,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    18,
      -1,   281,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      29,   291,    -1,    32,    33,    34,    -1,    -1,    37,    38,
      -1,    -1,    41,    -1,    -1,    -1,    45,    -1,    -1,    48,
      -1,    -1,    -1,    -1,    -1,    -1,   316,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   336,   337,
     338,   339,   340,   341,   342,   343,    -1,   345,   346,   347,
     348,   349,   350,   351,   352,   353,   354,   355,    -1,    -1,
      -1,    90,    -1,    -1,    -1,    -1,   356,   357,    -1,    -1,
      -1,    -1,    -1,    -1,   336,   337,   338,   339,   340,   341,
     342,   343,    -1,   345,   346,   347,   348,   349,   350,   351,
     352,   353,   354,   355,     5,    -1,     7,    -1,    -1,    10,
      -1,    -1,    -1,   393,    15,    -1,    -1,    -1,    -1,    20,
      -1,    -1,    -1,    -1,   404,    26,    -1,    28,    -1,    -1,
     418,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,
       5,    -1,     7,    -1,    -1,    10,    57,    -1,    -1,    -1,
      15,   441,   442,    -1,    -1,    20,   418,    -1,    -1,    -1,
      71,    26,    -1,    28,    -1,    30,   456,    -1,    -1,     3,
      -1,    36,    -1,    -1,    39,    -1,    -1,    42,    -1,    -1,
     478,   479,    47,   481,    18,    50,    51,    52,    53,    54,
      55,    56,    57,    -1,    -1,    29,    61,    -1,    32,    33,
      34,    -1,    -1,    37,    38,    -1,    71,    41,    -1,    -1,
      75,    45,    -1,    -1,    48,    -1,   478,   479,    -1,   481,
     510,    -1,    87,    -1,    89,    -1,    91,    -1,    -1,    -1,
     520,   521,    97,    67,    99,    -1,    -1,   102,    -1,     3,
       4,     5,     6,     7,     8,    -1,    10,    -1,    12,    13,
      14,    15,    -1,   543,    18,    -1,    20,    21,    22,    -1,
      -1,    -1,    26,   553,    28,    29,    30,    -1,    32,    33,
      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
      -1,    45,    46,    47,    48,    49,    50,    51,    52,    53,
      54,    55,    56,    57,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    67,    68,    -1,    -1,    71,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    89,    -1,    91,    -1,     3,
       4,     5,     6,     7,    -1,    99,    10,   101,    12,    -1,
      14,    15,    -1,    -1,    18,    -1,    20,    21,    22,    -1,
      -1,    -1,    26,    -1,    28,    29,    30,    -1,    32,    33,
      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
      -1,    45,    46,    47,    48,    49,    50,    51,    52,    53,
      54,    55,    56,    57,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    67,    68,    -1,    -1,    71,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    89,    -1,    91,    -1,     3,
       4,     5,     6,     7,    -1,    99,    10,   101,    12,    -1,
      14,    15,    -1,    -1,    18,    -1,    20,    21,    22,    -1,
      -1,    -1,    26,    -1,    28,    29,    30,    -1,    32,    33,
      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
      -1,    45,    46,    47,    48,    49,    50,    51,    52,    53,
      54,    55,    56,    57,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    67,    68,    -1,    -1,    71,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    89,    -1,    91,    -1,     3,
       4,     5,     6,     7,    -1,    99,    10,   101,    12,    -1,
      14,    15,    -1,    -1,    18,    -1,    20,    21,    22,    -1,
      -1,    -1,    26,    -1,    28,    29,    30,    -1,    32,    33,
      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
      -1,    45,    46,    47,    48,    49,    50,    51,    52,    53,
      54,    55,    56,    57,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    67,    68,    -1,    -1,    71,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    89,    -1,    91,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    99,    -1,   101,     3,     4,
       5,     6,     7,    -1,    -1,    10,    11,    12,    -1,    14,
      15,    -1,    -1,    18,    -1,    20,    21,    22,    -1,    -1,
      -1,    26,    -1,    28,    29,    30,    -1,    32,    33,    34,
      35,    36,    37,    38,    39,    40,    41,    42,    43,    -1,
      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
      55,    56,    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,
      -1,     4,     5,     6,     7,    -1,    -1,    10,    -1,    12,
      -1,    14,    15,    -1,    89,    -1,    91,    20,    21,    22,
      -1,    -1,    -1,    26,    99,    28,   101,    30,    -1,    -1,
      -1,    -1,    35,    36,    -1,    -1,    39,    40,    41,    42,
      43,    -1,    -1,    46,    47,    -1,    49,    50,    51,    52,
      53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,
      -1,    -1,    -1,     4,     5,     6,     7,    -1,    -1,    10,
      -1,    12,    -1,    14,    15,    -1,    89,    -1,    91,    20,
      21,    22,    -1,    -1,    -1,    26,    99,    28,   101,    30,
      -1,    -1,    -1,    -1,    35,    36,    -1,    -1,    39,    40,
      41,    42,    43,    -1,    -1,    46,    47,    -1,    49,    50,
      51,    52,    53,    54,    55,    56,    57,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
      71,     5,    -1,     7,    -1,    -1,    10,    -1,    -1,    -1,
      -1,    15,    -1,    -1,    -1,    -1,    20,    -1,    89,    -1,
      91,    -1,    26,    -1,    28,    -1,    30,    -1,    99,    -1,
     101,    -1,    36,    -1,    -1,    39,    -1,    -1,    42,    -1,
      -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    53,
      54,    55,    56,    57,    -1,     5,    -1,     7,    -1,    -1,
      10,    -1,    -1,    -1,    68,    15,    -1,    71,    -1,    -1,
      20,    75,    -1,    -1,    -1,    -1,    26,    -1,    28,    -1,
      30,    -1,    -1,    87,    -1,    89,    36,    91,    -1,    39,
      -1,    -1,    42,    97,    -1,    99,    -1,    47,   102,    -1,
      50,    51,    52,    53,    54,    55,    56,    57,    -1,     5,
      -1,     7,    -1,    -1,    10,    -1,    -1,    -1,    -1,    15,
      -1,    71,    -1,    -1,    20,    75,    -1,    -1,    -1,    -1,
      26,    -1,    28,    -1,    30,    -1,    -1,    87,    -1,    89,
      36,    91,    -1,    39,    -1,    -1,    42,    97,    -1,    99,
      -1,    47,   102,    -1,    50,    51,    52,    53,    54,    55,
      56,    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,     3,    71,     5,    -1,     7,    75,
      -1,    10,    -1,    -1,    -1,    -1,    15,    -1,    -1,    18,
      -1,    20,    -1,    -1,    -1,    91,    -1,    26,    -1,    28,
      29,    30,    -1,    32,    33,    34,   102,    36,    37,    38,
      39,    -1,    41,    42,    -1,    -1,    45,    -1,    47,    48,
      -1,    50,    51,    52,    53,    54,    55,    56,    57,    -1,
       5,    -1,     7,    -1,    -1,    10,    -1,    -1,    -1,    -1,
      15,    -1,    71,    -1,    -1,    20,    -1,    -1,    -1,    -1,
      -1,    26,    -1,    28,    -1,    30,    -1,    -1,    -1,    -1,
      89,    36,    91,    -1,    39,    -1,    -1,    42,    -1,    -1,
      99,    -1,    47,    -1,    -1,    50,    51,    52,    53,    54,
      55,    56,    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,
       3,    -1,     5,    -1,     7,    -1,    -1,    10,    -1,    -1,
      -1,    -1,    15,    -1,    89,    18,    91,    20,    -1,    -1,
      -1,     3,    -1,    26,    99,    28,    29,    -1,    -1,    32,
      33,    34,    -1,    36,    37,    38,    18,    -1,    41,    -1,
      -1,    -1,    45,    -1,    47,    48,    -1,    29,    -1,    -1,
      32,    33,    34,    -1,    57,    37,    38,    -1,    -1,    41,
      60,    -1,    -1,    45,    64,    -1,    48,    -1,    71,    -1,
      70,    -1,    -1,    73,    60,    -1,    -1,    -1,    64,    -1,
      80,    -1,    82,    83,    70,    -1,    -1,    73,    88,    -1,
      -1,    -1,    -1,    93,    80,    95,    82,    83,    98,    -1,
      -1,    60,    88,    -1,   104,    64,    -1,    93,    -1,    95,
      -1,    70,    98,    -1,    73,    -1,    -1,    -1,   104,    -1,
      -1,    80,    -1,    82,    83,    -1,    -1,    -1,    -1,    88,
      -1,    -1,    -1,    -1,    93,    -1,    95,    -1,    -1,    98,
      -1,    -1,    -1,    -1,    -1,   104
};

  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
     symbol of state STATE-NUM.  */
static const yytype_int16 yystos[] =
{
       0,    31,   107,   122,   123,   126,     5,     7,    10,    15,
      20,    26,    28,    36,    47,    57,    71,   111,   117,   118,
     119,   120,   121,     0,   124,    57,    72,   101,    72,    24,
     125,   127,   128,   129,    11,    42,   119,    11,   117,     3,
      18,    29,    32,    33,    34,    37,    38,    41,    45,    48,
     101,   130,   131,   132,   133,   134,   135,   164,   165,    72,
     101,   132,    17,    23,    68,   136,   137,   139,    11,    27,
      17,   166,   167,   103,   113,   114,   117,   113,   115,   138,
     140,   137,   139,   139,   119,   119,   115,    68,   168,    66,
     101,    66,    37,    67,   130,   135,   141,   142,   143,   148,
     149,   158,   159,   139,   169,   115,   115,    68,   177,    47,
     110,   111,   112,   113,   116,   117,   118,   160,   101,   157,
     177,    67,   134,   135,   143,   149,   165,   170,   171,   172,
       4,     6,    12,    14,    21,    22,    30,    35,    39,    40,
      41,    42,    43,    46,    49,    50,    51,    52,    53,    54,
      55,    56,    89,    91,    99,   101,   108,   109,   110,   116,
     117,   119,   131,   134,   135,   177,   178,   179,   180,   181,
     182,   183,   185,   186,   187,   189,   190,   191,   192,   194,
     201,   203,   204,   212,   213,   215,   216,   217,   218,   219,
     224,   225,   226,   230,   235,   236,   237,   238,   239,   240,
     242,   243,   258,   259,   263,   119,   151,   119,   144,   145,
     146,   151,    62,   234,   234,    91,    44,   150,   155,   101,
     101,   101,   173,   101,    75,    87,    91,    97,   102,   111,
     116,   117,   226,   236,   238,   239,   240,   241,   242,   243,
     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
     254,   255,   256,   257,   258,   261,   119,   214,   214,    41,
     183,    91,    91,   208,   261,    72,    91,    91,    72,   261,
     177,    91,   117,   235,   237,   241,   261,   241,   119,   144,
      72,    62,    72,    91,    65,   110,    67,   180,   101,   101,
      72,    62,    89,    99,    60,    64,    70,    73,    80,    82,
      83,    88,    93,    95,    98,   104,   260,   111,   113,   114,
      91,    62,   150,    66,   101,    62,    73,   150,    61,    62,
     135,   152,   153,   154,   114,   156,    68,   161,   101,   241,
     241,   111,   117,   261,   241,   241,    69,    92,   103,    87,
      97,    79,    81,    86,    25,    77,    78,    84,    85,    74,
      76,    58,    63,    94,    59,    96,   100,    65,   101,   101,
     101,    49,   131,   182,   190,   206,   209,   211,   261,   101,
     119,   261,   261,   119,   101,     9,   220,   221,   222,   261,
      90,    11,   261,    30,   228,   229,   261,   183,   144,    42,
     119,   261,   257,    62,   232,   233,   234,   232,   234,    91,
     152,    61,   145,    61,    68,   147,   174,   261,    61,   110,
      90,    66,    66,   162,   101,   231,   234,   234,    90,   241,
     241,   241,   246,   246,   247,   247,   247,   112,   248,   248,
     248,   248,   249,   249,   250,   251,   252,   253,   254,   261,
     261,    91,   101,    66,    90,    91,    90,    90,    91,    91,
      19,   223,   222,    90,    61,    90,    66,    91,    61,   261,
     231,   233,   234,   174,   231,   174,   228,    90,   147,   175,
     176,   146,   154,   114,    39,    42,   163,   178,    90,    90,
     244,    65,   101,   261,   208,   190,    21,    22,    49,   119,
     183,   184,   185,   188,   193,   202,   207,   228,    68,   195,
     177,   228,   154,   177,   183,   261,   228,    61,    90,    67,
      66,    91,    91,    67,   241,   244,   256,    90,   101,    91,
      91,    91,    65,    16,    90,   197,    90,    90,    90,   139,
     227,   147,   228,   228,   101,   205,   210,   211,   206,   261,
     261,   184,   183,     8,    13,   196,   198,   199,   200,   177,
      90,    90,    90,   101,    90,    90,   261,   262,    65,    67,
     179,   200,   101,   101,   183,   208,   184,   184,    65,   101,
      16,   205,   184,    90,   184
};

  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
static const yytype_int16 yyr1[] =
{
       0,   106,   107,   108,   108,   108,   108,   108,   108,   109,
     109,   110,   110,   111,   111,   111,   111,   111,   111,   111,
     111,   112,   112,   113,   114,   115,   116,   116,   117,   117,
     118,   119,   119,   120,   120,   120,   120,   121,   121,   122,
     123,   123,   124,   124,   125,   125,   126,   127,   127,   128,
     129,   130,   130,   130,   131,   131,   132,   132,   132,   132,
     132,   132,   132,   132,   132,   132,   132,   133,   134,   134,
     134,   134,   135,   135,   136,   137,   138,   138,   139,   140,
     140,   141,   141,   141,   141,   142,   142,   143,   144,   144,
     145,   145,   146,   146,   147,   147,   148,   148,   148,   149,
     149,   150,   150,   151,   151,   152,   152,   153,   153,   154,
     155,   156,   156,   157,   158,   159,   159,   160,   161,   162,
     162,   163,   163,   164,   165,   166,   166,   167,   167,   168,
     169,   169,   170,   170,   170,   170,   170,   170,   171,   172,
     173,   173,   174,   175,   175,   175,   176,   176,   177,   178,
     178,   179,   179,   180,   180,   180,   181,   182,   182,   183,
     183,   183,   183,   183,   183,   184,   184,   184,   184,   184,
     185,   185,   185,   185,   185,   185,   185,   185,   185,   185,
     185,   185,   186,   187,   188,   189,   190,   190,   190,   190,
     190,   190,   190,   191,   192,   193,   194,   195,   196,   196,
     197,   197,   198,   199,   199,   200,   200,   201,   202,   203,
     204,   205,   205,   206,   206,   207,   208,   208,   209,   209,
     210,   211,   211,   212,   212,   213,   214,   214,   215,   216,
     217,   218,   219,   219,   220,   220,   221,   221,   222,   223,
     224,   224,   225,   225,   225,   225,   225,   225,   225,   226,
     227,   227,   228,   228,   229,   229,   230,   230,   230,   230,
     231,   231,   232,   232,   233,   234,   234,   235,   235,   235,
     235,   236,   236,   236,   236,   237,   237,   238,   238,   238,
     238,   238,   239,   240,   241,   241,   241,   241,   241,   242,
     243,   244,   244,   244,   244,   245,   245,   245,   246,   246,
     246,   246,   247,   247,   247,   248,   248,   248,   248,   249,
     249,   249,   249,   249,   249,   250,   250,   250,   251,   251,
     252,   252,   253,   253,   254,   254,   255,   255,   256,   256,
     257,   257,   258,   259,   259,   259,   260,   260,   260,   260,
     260,   260,   260,   260,   260,   260,   260,   260,   261,   262,
     263,   263
};

  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
static const yytype_int8 yyr2[] =
{
       0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     2,     2,     1,     1,
       1,     1,     2,     3,     3,     3,     3,     1,     1,     3,
       0,     1,     0,     2,     0,     2,     3,     1,     1,     3,
       5,     1,     1,     1,     1,     2,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     3,     2,     3,
       3,     4,     0,     1,     2,     2,     1,     3,     3,     0,
       2,     1,     1,     1,     1,     1,     1,     4,     1,     3,
       1,     3,     1,     3,     1,     1,     2,     2,     3,     4,
       4,     0,     1,     4,     3,     0,     1,     1,     3,     3,
       2,     1,     3,     1,     2,     4,     5,     4,     4,     0,
       2,     5,     5,     3,     3,     0,     1,     2,     3,     3,
       0,     2,     1,     1,     1,     2,     1,     2,     1,     2,
       1,     2,     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,     1,     1,     1,
       1,     1,     1,     3,     3,     2,     1,     1,     1,     1,
       1,     1,     1,     5,     7,     7,     5,     4,     0,     1,
       0,     2,     2,     1,     2,     3,     2,     5,     5,     7,
       9,     0,     1,     0,     1,     9,     0,     1,     1,     1,
       1,     1,     3,     3,     5,     3,     0,     1,     3,     3,
       3,     5,     3,     4,     0,     1,     1,     2,     5,     2,
       1,     1,     1,     1,     3,     1,     1,     1,     1,     6,
       0,     1,     0,     1,     1,     3,     4,     4,     4,     4,
       0,     1,     1,     2,     3,     2,     3,     3,     3,     3,
       3,     4,     6,     6,     6,     4,     4,     1,     1,     3,
       1,     1,     2,     2,     1,     1,     2,     2,     1,     2,
       2,     1,     2,     2,     1,     5,     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,     3
};


enum { YYENOMEM = -2 };

#define yyerrok         (yyerrstatus = 0)
#define yyclearin       (yychar = YYEMPTY)

#define YYACCEPT        goto yyacceptlab
#define YYABORT         goto yyabortlab
#define YYERROR         goto yyerrorlab


#define YYRECOVERING()  (!!yyerrstatus)

#define YYBACKUP(Token, Value)                                    \
  do                                                              \
    if (yychar == YYEMPTY)                                        \
      {                                                           \
        yychar = (Token);                                         \
        yylval = (Value);                                         \
        YYPOPSTACK (yylen);                                       \
        yystate = *yyssp;                                         \
        goto yybackup;                                            \
      }                                                           \
    else                                                          \
      {                                                           \
        yyerror (yyscanner, YY_("syntax error: cannot back up")); \
        YYERROR;                                                  \
      }                                                           \
  while (0)

/* Backward compatibility with an undocumented macro.
   Use YYerror or YYUNDEF. */
#define YYERRCODE YYUNDEF


/* Enable debugging if requested.  */
#if YYDEBUG

# ifndef YYFPRINTF
#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
#  define YYFPRINTF fprintf
# endif

# define YYDPRINTF(Args)                        \
do {                                            \
  if (yydebug)                                  \
    YYFPRINTF Args;                             \
} while (0)

/* This macro is provided for backward compatibility. */
# ifndef YY_LOCATION_PRINT
#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
# endif


# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
do {                                                                      \
  if (yydebug)                                                            \
    {                                                                     \
      YYFPRINTF (stderr, "%s ", Title);                                   \
      yy_symbol_print (stderr,                                            \
                  Kind, Value, yyscanner); \
      YYFPRINTF (stderr, "\n");                                           \
    }                                                                     \
} while (0)


/*-----------------------------------.
| Print this symbol's value on YYO.  |
`-----------------------------------*/

static void
yy_symbol_value_print (FILE *yyo,
                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, yyscan_t yyscanner)
{
  FILE *yyoutput = yyo;
  YY_USE (yyoutput);
  YY_USE (yyscanner);
  if (!yyvaluep)
    return;
# ifdef YYPRINT
  if (yykind < YYNTOKENS)
    YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
# endif
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  YY_USE (yykind);
  YY_IGNORE_MAYBE_UNINITIALIZED_END
}


/*---------------------------.
| Print this symbol on YYO.  |
`---------------------------*/

static void
yy_symbol_print (FILE *yyo,
                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, yyscan_t yyscanner)
{
  YYFPRINTF (yyo, "%s %s (",
             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));

  yy_symbol_value_print (yyo, yykind, yyvaluep, yyscanner);
  YYFPRINTF (yyo, ")");
}

/*------------------------------------------------------------------.
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
| TOP (included).                                                   |
`------------------------------------------------------------------*/

static void
yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
{
  YYFPRINTF (stderr, "Stack now");
  for (; yybottom <= yytop; yybottom++)
    {
      int yybot = *yybottom;
      YYFPRINTF (stderr, " %d", yybot);
    }
  YYFPRINTF (stderr, "\n");
}

# define YY_STACK_PRINT(Bottom, Top)                            \
do {                                                            \
  if (yydebug)                                                  \
    yy_stack_print ((Bottom), (Top));                           \
} while (0)


/*------------------------------------------------.
| Report that the YYRULE is going to be reduced.  |
`------------------------------------------------*/

static void
yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
                 int yyrule, yyscan_t yyscanner)
{
  int yylno = yyrline[yyrule];
  int yynrhs = yyr2[yyrule];
  int yyi;
  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
             yyrule - 1, yylno);
  /* The symbols being reduced.  */
  for (yyi = 0; yyi < yynrhs; yyi++)
    {
      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
      yy_symbol_print (stderr,
                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
                       &yyvsp[(yyi + 1) - (yynrhs)], yyscanner);
      YYFPRINTF (stderr, "\n");
    }
}

# define YY_REDUCE_PRINT(Rule)          \
do {                                    \
  if (yydebug)                          \
    yy_reduce_print (yyssp, yyvsp, Rule, yyscanner); \
} while (0)

/* Nonzero means print parse trace.  It is left uninitialized so that
   multiple parsers can coexist.  */
int yydebug;
#else /* !YYDEBUG */
# define YYDPRINTF(Args) ((void) 0)
# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
# define YY_STACK_PRINT(Bottom, Top)
# define YY_REDUCE_PRINT(Rule)
#endif /* !YYDEBUG */


/* YYINITDEPTH -- initial size of the parser's stacks.  */
#ifndef YYINITDEPTH
# define YYINITDEPTH 200
#endif

/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
   if the built-in stack extension method is used).

   Do not make this value too large; the results are undefined if
   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
   evaluated with infinite-precision integer arithmetic.  */

#ifndef YYMAXDEPTH
# define YYMAXDEPTH 10000
#endif


/* Context of a parse error.  */
typedef struct
{
  yy_state_t *yyssp;
  yysymbol_kind_t yytoken;
} yypcontext_t;

/* Put in YYARG at most YYARGN of the expected tokens given the
   current YYCTX, and return the number of tokens stored in YYARG.  If
   YYARG is null, return the number of expected tokens (guaranteed to
   be less than YYNTOKENS).  Return YYENOMEM on memory exhaustion.
   Return 0 if there are more than YYARGN expected tokens, yet fill
   YYARG up to YYARGN. */
static int
yypcontext_expected_tokens (const yypcontext_t *yyctx,
                            yysymbol_kind_t yyarg[], int yyargn)
{
  /* Actual size of YYARG. */
  int yycount = 0;
  int yyn = yypact[+*yyctx->yyssp];
  if (!yypact_value_is_default (yyn))
    {
      /* Start YYX at -YYN if negative to avoid negative indexes in
         YYCHECK.  In other words, skip the first -YYN actions for
         this state because they are default actions.  */
      int yyxbegin = yyn < 0 ? -yyn : 0;
      /* Stay within bounds of both yycheck and yytname.  */
      int yychecklim = YYLAST - yyn + 1;
      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
      int yyx;
      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
        if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
            && !yytable_value_is_error (yytable[yyx + yyn]))
          {
            if (!yyarg)
              ++yycount;
            else if (yycount == yyargn)
              return 0;
            else
              yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
          }
    }
  if (yyarg && yycount == 0 && 0 < yyargn)
    yyarg[0] = YYSYMBOL_YYEMPTY;
  return yycount;
}




#ifndef yystrlen
# if defined __GLIBC__ && defined _STRING_H
#  define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
# else
/* Return the length of YYSTR.  */
static YYPTRDIFF_T
yystrlen (const char *yystr)
{
  YYPTRDIFF_T yylen;
  for (yylen = 0; yystr[yylen]; yylen++)
    continue;
  return yylen;
}
# endif
#endif

#ifndef yystpcpy
# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
#  define yystpcpy stpcpy
# else
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
   YYDEST.  */
static char *
yystpcpy (char *yydest, const char *yysrc)
{
  char *yyd = yydest;
  const char *yys = yysrc;

  while ((*yyd++ = *yys++) != '\0')
    continue;

  return yyd - 1;
}
# endif
#endif

#ifndef yytnamerr
/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
   quotes and backslashes, so that it's suitable for yyerror.  The
   heuristic is that double-quoting is unnecessary unless the string
   contains an apostrophe, a comma, or backslash (other than
   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
   null, do not copy; instead, return the length of what the result
   would have been.  */
static YYPTRDIFF_T
yytnamerr (char *yyres, const char *yystr)
{
  if (*yystr == '"')
    {
      YYPTRDIFF_T yyn = 0;
      char const *yyp = yystr;
      for (;;)
        switch (*++yyp)
          {
          case '\'':
          case ',':
            goto do_not_strip_quotes;

          case '\\':
            if (*++yyp != '\\')
              goto do_not_strip_quotes;
            else
              goto append;

          append:
          default:
            if (yyres)
              yyres[yyn] = *yyp;
            yyn++;
            break;

          case '"':
            if (yyres)
              yyres[yyn] = '\0';
            return yyn;
          }
    do_not_strip_quotes: ;
    }

  if (yyres)
    return yystpcpy (yyres, yystr) - yyres;
  else
    return yystrlen (yystr);
}
#endif


static int
yy_syntax_error_arguments (const yypcontext_t *yyctx,
                           yysymbol_kind_t yyarg[], int yyargn)
{
  /* Actual size of YYARG. */
  int yycount = 0;
  /* There are many possibilities here to consider:
     - If this state is a consistent state with a default action, then
       the only way this function was invoked is if the default action
       is an error action.  In that case, don't check for expected
       tokens because there are none.
     - The only way there can be no lookahead present (in yychar) is if
       this state is a consistent state with a default action.  Thus,
       detecting the absence of a lookahead is sufficient to determine
       that there is no unexpected or expected token to report.  In that
       case, just report a simple "syntax error".
     - Don't assume there isn't a lookahead just because this state is a
       consistent state with a default action.  There might have been a
       previous inconsistent state, consistent state with a non-default
       action, or user semantic action that manipulated yychar.
     - Of course, the expected token list depends on states to have
       correct lookahead information, and it depends on the parser not
       to perform extra reductions after fetching a lookahead from the
       scanner and before detecting a syntax error.  Thus, state merging
       (from LALR or IELR) and default reductions corrupt the expected
       token list.  However, the list is correct for canonical LR with
       one exception: it will still contain any token that will not be
       accepted due to an error action in a later state.
  */
  if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
    {
      int yyn;
      if (yyarg)
        yyarg[yycount] = yyctx->yytoken;
      ++yycount;
      yyn = yypcontext_expected_tokens (yyctx,
                                        yyarg ? yyarg + 1 : yyarg, yyargn - 1);
      if (yyn == YYENOMEM)
        return YYENOMEM;
      else
        yycount += yyn;
    }
  return yycount;
}

/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
   about the unexpected token YYTOKEN for the state stack whose top is
   YYSSP.

   Return 0 if *YYMSG was successfully written.  Return -1 if *YYMSG is
   not large enough to hold the message.  In that case, also set
   *YYMSG_ALLOC to the required number of bytes.  Return YYENOMEM if the
   required number of bytes is too large to store.  */
static int
yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
                const yypcontext_t *yyctx)
{
  enum { YYARGS_MAX = 5 };
  /* Internationalized format string. */
  const char *yyformat = YY_NULLPTR;
  /* Arguments of yyformat: reported tokens (one for the "unexpected",
     one per "expected"). */
  yysymbol_kind_t yyarg[YYARGS_MAX];
  /* Cumulated lengths of YYARG.  */
  YYPTRDIFF_T yysize = 0;

  /* Actual size of YYARG. */
  int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
  if (yycount == YYENOMEM)
    return YYENOMEM;

  switch (yycount)
    {
#define YYCASE_(N, S)                       \
      case N:                               \
        yyformat = S;                       \
        break
    default: /* Avoid compiler warnings. */
      YYCASE_(0, YY_("syntax error"));
      YYCASE_(1, YY_("syntax error, unexpected %s"));
      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
#undef YYCASE_
    }

  /* Compute error message size.  Don't count the "%s"s, but reserve
     room for the terminator.  */
  yysize = yystrlen (yyformat) - 2 * yycount + 1;
  {
    int yyi;
    for (yyi = 0; yyi < yycount; ++yyi)
      {
        YYPTRDIFF_T yysize1
          = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
        if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
          yysize = yysize1;
        else
          return YYENOMEM;
      }
  }

  if (*yymsg_alloc < yysize)
    {
      *yymsg_alloc = 2 * yysize;
      if (! (yysize <= *yymsg_alloc
             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
      return -1;
    }

  /* Avoid sprintf, as that infringes on the user's name space.
     Don't have undefined behavior even if the translation
     produced a string with the wrong number of "%s"s.  */
  {
    char *yyp = *yymsg;
    int yyi = 0;
    while ((*yyp = *yyformat) != '\0')
      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
        {
          yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
          yyformat += 2;
        }
      else
        {
          ++yyp;
          ++yyformat;
        }
  }
  return 0;
}


/*-----------------------------------------------.
| Release the memory associated to this symbol.  |
`-----------------------------------------------*/

static void
yydestruct (const char *yymsg,
            yysymbol_kind_t yykind, YYSTYPE *yyvaluep, yyscan_t yyscanner)
{
  YY_USE (yyvaluep);
  YY_USE (yyscanner);
  if (!yymsg)
    yymsg = "Deleting";
  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);

  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  YY_USE (yykind);
  YY_IGNORE_MAYBE_UNINITIALIZED_END
}






/*----------.
| yyparse.  |
`----------*/

int
yyparse (yyscan_t yyscanner)
{
/* Lookahead token kind.  */
int yychar;


/* The semantic value of the lookahead symbol.  */
/* Default value used for initialization, for pacifying older GCCs
   or non-GCC compilers.  */
YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);

    /* Number of syntax errors so far.  */
    int yynerrs = 0;

    yy_state_fast_t yystate = 0;
    /* Number of tokens to shift before error messages enabled.  */
    int yyerrstatus = 0;

    /* Refer to the stacks through separate pointers, to allow yyoverflow
       to reallocate them elsewhere.  */

    /* Their size.  */
    YYPTRDIFF_T yystacksize = YYINITDEPTH;

    /* The state stack: array, bottom, top.  */
    yy_state_t yyssa[YYINITDEPTH];
    yy_state_t *yyss = yyssa;
    yy_state_t *yyssp = yyss;

    /* The semantic value stack: array, bottom, top.  */
    YYSTYPE yyvsa[YYINITDEPTH];
    YYSTYPE *yyvs = yyvsa;
    YYSTYPE *yyvsp = yyvs;

  int yyn;
  /* The return value of yyparse.  */
  int yyresult;
  /* Lookahead symbol kind.  */
  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
  /* The variables used to return semantic value and location from the
     action routines.  */
  YYSTYPE yyval;

  /* Buffer for error messages, and its allocated size.  */
  char yymsgbuf[128];
  char *yymsg = yymsgbuf;
  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;

#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))

  /* The number of symbols on the RHS of the reduced rule.
     Keep to zero when no symbol should be popped.  */
  int yylen = 0;

  YYDPRINTF ((stderr, "Starting parse\n"));

  yychar = YYEMPTY; /* Cause a token to be read.  */
  goto yysetstate;


/*------------------------------------------------------------.
| yynewstate -- push a new state, which is found in yystate.  |
`------------------------------------------------------------*/
yynewstate:
  /* In all cases, when you get here, the value and location stacks
     have just been pushed.  So pushing a state here evens the stacks.  */
  yyssp++;


/*--------------------------------------------------------------------.
| yysetstate -- set current state (the top of the stack) to yystate.  |
`--------------------------------------------------------------------*/
yysetstate:
  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
  YY_IGNORE_USELESS_CAST_BEGIN
  *yyssp = YY_CAST (yy_state_t, yystate);
  YY_IGNORE_USELESS_CAST_END
  YY_STACK_PRINT (yyss, yyssp);

  if (yyss + yystacksize - 1 <= yyssp)
#if !defined yyoverflow && !defined YYSTACK_RELOCATE
    goto yyexhaustedlab;
#else
    {
      /* Get the current used size of the three stacks, in elements.  */
      YYPTRDIFF_T yysize = yyssp - yyss + 1;

# if defined yyoverflow
      {
        /* Give user a chance to reallocate the stack.  Use copies of
           these so that the &'s don't force the real ones into
           memory.  */
        yy_state_t *yyss1 = yyss;
        YYSTYPE *yyvs1 = yyvs;

        /* Each stack pointer address is followed by the size of the
           data in use in that stack, in bytes.  This used to be a
           conditional around just the two extra args, but that might
           be undefined if yyoverflow is a macro.  */
        yyoverflow (YY_("memory exhausted"),
                    &yyss1, yysize * YYSIZEOF (*yyssp),
                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
                    &yystacksize);
        yyss = yyss1;
        yyvs = yyvs1;
      }
# else /* defined YYSTACK_RELOCATE */
      /* Extend the stack our own way.  */
      if (YYMAXDEPTH <= yystacksize)
        goto yyexhaustedlab;
      yystacksize *= 2;
      if (YYMAXDEPTH < yystacksize)
        yystacksize = YYMAXDEPTH;

      {
        yy_state_t *yyss1 = yyss;
        union yyalloc *yyptr =
          YY_CAST (union yyalloc *,
                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
        if (! yyptr)
          goto yyexhaustedlab;
        YYSTACK_RELOCATE (yyss_alloc, yyss);
        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
#  undef YYSTACK_RELOCATE
        if (yyss1 != yyssa)
          YYSTACK_FREE (yyss1);
      }
# endif

      yyssp = yyss + yysize - 1;
      yyvsp = yyvs + yysize - 1;

      YY_IGNORE_USELESS_CAST_BEGIN
      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
                  YY_CAST (long, yystacksize)));
      YY_IGNORE_USELESS_CAST_END

      if (yyss + yystacksize - 1 <= yyssp)
        YYABORT;
    }
#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */

  if (yystate == YYFINAL)
    YYACCEPT;

  goto yybackup;


/*-----------.
| yybackup.  |
`-----------*/
yybackup:
  /* Do appropriate processing given the current state.  Read a
     lookahead token if we need one and don't already have one.  */

  /* First try to decide what to do without reference to lookahead token.  */
  yyn = yypact[yystate];
  if (yypact_value_is_default (yyn))
    goto yydefault;

  /* Not known => get a lookahead token if don't already have one.  */

  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
  if (yychar == YYEMPTY)
    {
      YYDPRINTF ((stderr, "Reading a token\n"));
      yychar = yylex (&yylval, yyscanner);
    }

  if (yychar <= YYEOF)
    {
      yychar = YYEOF;
      yytoken = YYSYMBOL_YYEOF;
      YYDPRINTF ((stderr, "Now at end of input.\n"));
    }
  else if (yychar == YYerror)
    {
      /* The scanner already issued an error message, process directly
         to error recovery.  But do not keep the error token as
         lookahead, it is too special and may lead us to an endless
         loop in error recovery. */
      yychar = YYUNDEF;
      yytoken = YYSYMBOL_YYerror;
      goto yyerrlab1;
    }
  else
    {
      yytoken = YYTRANSLATE (yychar);
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
    }

  /* If the proper action on seeing token YYTOKEN is to reduce or to
     detect an error, take that action.  */
  yyn += yytoken;
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
    goto yydefault;
  yyn = yytable[yyn];
  if (yyn <= 0)
    {
      if (yytable_value_is_error (yyn))
        goto yyerrlab;
      yyn = -yyn;
      goto yyreduce;
    }

  /* Count tokens shifted since error; after three, turn off error
     status.  */
  if (yyerrstatus)
    yyerrstatus--;

  /* Shift the lookahead token.  */
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
  yystate = yyn;
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  *++yyvsp = yylval;
  YY_IGNORE_MAYBE_UNINITIALIZED_END

  /* Discard the shifted token.  */
  yychar = YYEMPTY;
  goto yynewstate;


/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state.  |
`-----------------------------------------------------------*/
yydefault:
  yyn = yydefact[yystate];
  if (yyn == 0)
    goto yyerrlab;
  goto yyreduce;


/*-----------------------------.
| yyreduce -- do a reduction.  |
`-----------------------------*/
yyreduce:
  /* yyn is the number of a rule to reduce with.  */
  yylen = yyr2[yyn];

  /* If YYLEN is nonzero, implement the default value of the action:
     '$$ = $1'.

     Otherwise, the following line sets YYVAL to garbage.
     This behavior is undocumented and Bison
     users should not rely upon it.  Assigning to YYVAL
     unconditionally makes the parser a bit smaller, and it avoids a
     GCC warning that YYVAL may be used uninitialized.  */
  yyval = yyvsp[1-yylen];


  YY_REDUCE_PRINT (yyn);
  switch (yyn)
    {
  case 2: /* Goal: CompilationUnit  */
#line 181 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2493 "cmDependsJavaParser.cxx"
    break;

  case 3: /* Literal: IntegerLiteral  */
#line 190 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2504 "cmDependsJavaParser.cxx"
    break;

  case 4: /* Literal: jp_FLOATINGPOINTLITERAL  */
#line 198 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2515 "cmDependsJavaParser.cxx"
    break;

  case 5: /* Literal: jp_BOOLEANLITERAL  */
#line 206 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2526 "cmDependsJavaParser.cxx"
    break;

  case 6: /* Literal: jp_CHARACTERLITERAL  */
#line 214 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2537 "cmDependsJavaParser.cxx"
    break;

  case 7: /* Literal: jp_STRINGLITERAL  */
#line 222 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2548 "cmDependsJavaParser.cxx"
    break;

  case 8: /* Literal: jp_NULLLITERAL  */
#line 230 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2559 "cmDependsJavaParser.cxx"
    break;

  case 9: /* IntegerLiteral: jp_DECIMALINTEGERLITERAL  */
#line 239 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2570 "cmDependsJavaParser.cxx"
    break;

  case 10: /* IntegerLiteral: jp_HEXINTEGERLITERAL  */
#line 247 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2581 "cmDependsJavaParser.cxx"
    break;

  case 11: /* Type: PrimitiveType  */
#line 256 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2592 "cmDependsJavaParser.cxx"
    break;

  case 12: /* Type: ReferenceType  */
#line 264 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2603 "cmDependsJavaParser.cxx"
    break;

  case 13: /* PrimitiveType: jp_BYTE_TYPE  */
#line 273 "cmDependsJavaParser.y"
{
  jpElementStart(0);
}
#line 2611 "cmDependsJavaParser.cxx"
    break;

  case 14: /* PrimitiveType: jp_SHORT_TYPE  */
#line 278 "cmDependsJavaParser.y"
{
  jpElementStart(0);
}
#line 2619 "cmDependsJavaParser.cxx"
    break;

  case 15: /* PrimitiveType: jp_INT_TYPE  */
#line 283 "cmDependsJavaParser.y"
{
  jpElementStart(0);
}
#line 2627 "cmDependsJavaParser.cxx"
    break;

  case 16: /* PrimitiveType: jp_LONG_TYPE  */
#line 288 "cmDependsJavaParser.y"
{
  jpElementStart(0);
}
#line 2635 "cmDependsJavaParser.cxx"
    break;

  case 17: /* PrimitiveType: jp_CHAR_TYPE  */
#line 293 "cmDependsJavaParser.y"
{
  jpElementStart(0);
}
#line 2643 "cmDependsJavaParser.cxx"
    break;

  case 18: /* PrimitiveType: jp_FLOAT_TYPE  */
#line 298 "cmDependsJavaParser.y"
{
  jpElementStart(0);
}
#line 2651 "cmDependsJavaParser.cxx"
    break;

  case 19: /* PrimitiveType: jp_DOUBLE_TYPE  */
#line 303 "cmDependsJavaParser.y"
{
  jpElementStart(0);
}
#line 2659 "cmDependsJavaParser.cxx"
    break;

  case 20: /* PrimitiveType: jp_BOOLEAN_TYPE  */
#line 308 "cmDependsJavaParser.y"
{
  jpElementStart(0);
}
#line 2667 "cmDependsJavaParser.cxx"
    break;

  case 21: /* ReferenceType: ClassOrInterfaceType  */
#line 314 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2678 "cmDependsJavaParser.cxx"
    break;

  case 22: /* ReferenceType: ArrayType  */
#line 322 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2689 "cmDependsJavaParser.cxx"
    break;

  case 23: /* ClassOrInterfaceType: Name  */
#line 331 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpStoreClass((yyvsp[0].str));
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2701 "cmDependsJavaParser.cxx"
    break;

  case 24: /* ClassType: ClassOrInterfaceType  */
#line 341 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2712 "cmDependsJavaParser.cxx"
    break;

  case 25: /* InterfaceType: ClassOrInterfaceType  */
#line 350 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2723 "cmDependsJavaParser.cxx"
    break;

  case 26: /* ArrayType: PrimitiveType Dims  */
#line 359 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2734 "cmDependsJavaParser.cxx"
    break;

  case 27: /* ArrayType: Name Dims  */
#line 367 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpStoreClass((yyvsp[-1].str));
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2746 "cmDependsJavaParser.cxx"
    break;

  case 28: /* Name: SimpleName  */
#line 377 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  (yyval.str) = (yyvsp[0].str);
}
#line 2755 "cmDependsJavaParser.cxx"
    break;

  case 29: /* Name: QualifiedName  */
#line 383 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  (yyval.str) = (yyvsp[0].str);
}
#line 2764 "cmDependsJavaParser.cxx"
    break;

  case 30: /* SimpleName: Identifier  */
#line 390 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  (yyval.str) = (yyvsp[0].str);
}
#line 2773 "cmDependsJavaParser.cxx"
    break;

  case 31: /* Identifier: jp_NAME  */
#line 397 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  (yyval.str) = (yyvsp[0].str);
}
#line 2782 "cmDependsJavaParser.cxx"
    break;

  case 32: /* Identifier: jp_DOLLAR jp_NAME  */
#line 403 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  (yyval.str) = (yyvsp[0].str);
}
#line 2791 "cmDependsJavaParser.cxx"
    break;

  case 33: /* QualifiedName: Name jp_DOT Identifier  */
#line 410 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  yyGetParser->AddClassFound((yyvsp[-2].str));
  yyGetParser->UpdateCombine((yyvsp[-2].str), (yyvsp[0].str));
  yyGetParser->DeallocateParserType(&((yyvsp[-2].str)));
  (yyval.str) = const_cast<char*>(yyGetParser->GetCurrentCombine());
}
#line 2803 "cmDependsJavaParser.cxx"
    break;

  case 34: /* QualifiedName: Name jp_DOT jp_CLASS  */
#line 419 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpStoreClass((yyvsp[-2].str));
  jpCheckEmpty(3);
  yyGetParser->SetCurrentCombine("");
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2816 "cmDependsJavaParser.cxx"
    break;

  case 35: /* QualifiedName: Name jp_DOT jp_THIS  */
#line 429 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpStoreClass((yyvsp[-2].str));
  yyGetParser->SetCurrentCombine("");
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2829 "cmDependsJavaParser.cxx"
    break;

  case 36: /* QualifiedName: SimpleType jp_DOT jp_CLASS  */
#line 439 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2840 "cmDependsJavaParser.cxx"
    break;

  case 37: /* SimpleType: PrimitiveType  */
#line 448 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2851 "cmDependsJavaParser.cxx"
    break;

  case 38: /* SimpleType: jp_VOID  */
#line 456 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2862 "cmDependsJavaParser.cxx"
    break;

  case 39: /* CompilationUnit: PackageDeclarationopt ImportDeclarations TypeDeclarations  */
#line 465 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2873 "cmDependsJavaParser.cxx"
    break;

  case 40: /* PackageDeclarationopt: %empty  */
#line 473 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2883 "cmDependsJavaParser.cxx"
    break;

  case 41: /* PackageDeclarationopt: PackageDeclaration  */
#line 480 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2894 "cmDependsJavaParser.cxx"
    break;

  case 42: /* ImportDeclarations: %empty  */
#line 488 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2904 "cmDependsJavaParser.cxx"
    break;

  case 43: /* ImportDeclarations: ImportDeclarations ImportDeclaration  */
#line 495 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2915 "cmDependsJavaParser.cxx"
    break;

  case 44: /* TypeDeclarations: %empty  */
#line 503 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2925 "cmDependsJavaParser.cxx"
    break;

  case 45: /* TypeDeclarations: TypeDeclarations TypeDeclaration  */
#line 510 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2936 "cmDependsJavaParser.cxx"
    break;

  case 46: /* PackageDeclaration: jp_PACKAGE Name jp_SEMICOL  */
#line 519 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  yyGetParser->SetCurrentPackage((yyvsp[-1].str));
  yyGetParser->DeallocateParserType(&((yyvsp[-1].str)));
  yyGetParser->SetCurrentCombine("");
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2950 "cmDependsJavaParser.cxx"
    break;

  case 47: /* ImportDeclaration: SingleTypeImportDeclaration  */
#line 531 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2961 "cmDependsJavaParser.cxx"
    break;

  case 48: /* ImportDeclaration: TypeImportOnDemandDeclaration  */
#line 539 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2972 "cmDependsJavaParser.cxx"
    break;

  case 49: /* SingleTypeImportDeclaration: jp_IMPORT Name jp_SEMICOL  */
#line 548 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  yyGetParser->AddPackagesImport((yyvsp[-1].str));
  yyGetParser->DeallocateParserType(&((yyvsp[-1].str)));
  yyGetParser->SetCurrentCombine("");
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 2986 "cmDependsJavaParser.cxx"
    break;

  case 50: /* TypeImportOnDemandDeclaration: jp_IMPORT Name jp_DOT jp_TIMES jp_SEMICOL  */
#line 560 "cmDependsJavaParser.y"
{
  jpElementStart(5);
  std::string str = (yyvsp[-3].str);
  str += ".*";
  yyGetParser->AddPackagesImport(str.c_str());
  yyGetParser->DeallocateParserType(&((yyvsp[-3].str)));
  yyGetParser->SetCurrentCombine("");
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3001 "cmDependsJavaParser.cxx"
    break;

  case 51: /* TypeDeclaration: ClassDeclaration  */
#line 573 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3012 "cmDependsJavaParser.cxx"
    break;

  case 52: /* TypeDeclaration: InterfaceDeclaration  */
#line 581 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3023 "cmDependsJavaParser.cxx"
    break;

  case 53: /* TypeDeclaration: jp_SEMICOL  */
#line 589 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3034 "cmDependsJavaParser.cxx"
    break;

  case 54: /* Modifiers: Modifier  */
#line 598 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3045 "cmDependsJavaParser.cxx"
    break;

  case 55: /* Modifiers: Modifiers Modifier  */
#line 606 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3056 "cmDependsJavaParser.cxx"
    break;

  case 67: /* ClassHeader: Modifiersopt jp_CLASS Identifier  */
#line 621 "cmDependsJavaParser.y"
{
  yyGetParser->StartClass((yyvsp[0].str));
  jpElementStart(3);
  yyGetParser->DeallocateParserType(&((yyvsp[0].str)));
  jpCheckEmpty(3);
}
#line 3067 "cmDependsJavaParser.cxx"
    break;

  case 68: /* ClassDeclaration: ClassHeader ClassBody  */
#line 631 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
  yyGetParser->EndClass();
}
#line 3079 "cmDependsJavaParser.cxx"
    break;

  case 69: /* ClassDeclaration: ClassHeader Interfaces ClassBody  */
#line 640 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
  yyGetParser->EndClass();
}
#line 3091 "cmDependsJavaParser.cxx"
    break;

  case 70: /* ClassDeclaration: ClassHeader Super ClassBody  */
#line 649 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
  yyGetParser->EndClass();
}
#line 3103 "cmDependsJavaParser.cxx"
    break;

  case 71: /* ClassDeclaration: ClassHeader Super Interfaces ClassBody  */
#line 658 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  jpCheckEmpty(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
  yyGetParser->EndClass();
}
#line 3115 "cmDependsJavaParser.cxx"
    break;

  case 72: /* Modifiersopt: %empty  */
#line 667 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3125 "cmDependsJavaParser.cxx"
    break;

  case 73: /* Modifiersopt: Modifiers  */
#line 674 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3136 "cmDependsJavaParser.cxx"
    break;

  case 74: /* Super: jp_EXTENDS ClassType  */
#line 683 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3147 "cmDependsJavaParser.cxx"
    break;

  case 75: /* Interfaces: jp_IMPLEMENTS InterfaceTypeList  */
#line 692 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3158 "cmDependsJavaParser.cxx"
    break;

  case 76: /* InterfaceTypeList: InterfaceType  */
#line 701 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3169 "cmDependsJavaParser.cxx"
    break;

  case 77: /* InterfaceTypeList: InterfaceTypeList jp_COMMA InterfaceType  */
#line 709 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3180 "cmDependsJavaParser.cxx"
    break;

  case 78: /* ClassBody: jp_CURLYSTART ClassBodyDeclarations jp_CURLYEND  */
#line 718 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3191 "cmDependsJavaParser.cxx"
    break;

  case 79: /* ClassBodyDeclarations: %empty  */
#line 726 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3201 "cmDependsJavaParser.cxx"
    break;

  case 80: /* ClassBodyDeclarations: ClassBodyDeclarations ClassBodyDeclaration  */
#line 733 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3212 "cmDependsJavaParser.cxx"
    break;

  case 81: /* ClassBodyDeclaration: ClassMemberDeclaration  */
#line 742 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3223 "cmDependsJavaParser.cxx"
    break;

  case 82: /* ClassBodyDeclaration: StaticInitializer  */
#line 750 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3234 "cmDependsJavaParser.cxx"
    break;

  case 83: /* ClassBodyDeclaration: ConstructorDeclaration  */
#line 758 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3245 "cmDependsJavaParser.cxx"
    break;

  case 84: /* ClassBodyDeclaration: TypeDeclaration  */
#line 766 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3256 "cmDependsJavaParser.cxx"
    break;

  case 85: /* ClassMemberDeclaration: FieldDeclaration  */
#line 775 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3267 "cmDependsJavaParser.cxx"
    break;

  case 86: /* ClassMemberDeclaration: MethodDeclaration  */
#line 783 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3278 "cmDependsJavaParser.cxx"
    break;

  case 87: /* FieldDeclaration: Modifiersopt Type VariableDeclarators jp_SEMICOL  */
#line 792 "cmDependsJavaParser.y"
{
  jpElementStart(4);
}
#line 3286 "cmDependsJavaParser.cxx"
    break;

  case 88: /* VariableDeclarators: VariableDeclarator  */
#line 798 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3297 "cmDependsJavaParser.cxx"
    break;

  case 89: /* VariableDeclarators: VariableDeclarators jp_COMMA VariableDeclarator  */
#line 806 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3308 "cmDependsJavaParser.cxx"
    break;

  case 90: /* VariableDeclarator: VariableDeclaratorId  */
#line 815 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3319 "cmDependsJavaParser.cxx"
    break;

  case 91: /* VariableDeclarator: VariableDeclaratorId jp_EQUALS VariableInitializer  */
#line 823 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3330 "cmDependsJavaParser.cxx"
    break;

  case 92: /* VariableDeclaratorId: Identifier  */
#line 832 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  yyGetParser->DeallocateParserType(&((yyvsp[0].str)));
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3342 "cmDependsJavaParser.cxx"
    break;

  case 93: /* VariableDeclaratorId: VariableDeclaratorId jp_BRACKETSTART jp_BRACKETEND  */
#line 841 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3353 "cmDependsJavaParser.cxx"
    break;

  case 94: /* VariableInitializer: Expression  */
#line 850 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3364 "cmDependsJavaParser.cxx"
    break;

  case 95: /* VariableInitializer: ArrayInitializer  */
#line 858 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3375 "cmDependsJavaParser.cxx"
    break;

  case 96: /* MethodDeclaration: MethodHeader jp_SEMICOL  */
#line 867 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3386 "cmDependsJavaParser.cxx"
    break;

  case 97: /* MethodDeclaration: MethodHeader MethodBody  */
#line 875 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3397 "cmDependsJavaParser.cxx"
    break;

  case 98: /* MethodDeclaration: MethodHeader MethodBody jp_SEMICOL  */
#line 883 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3408 "cmDependsJavaParser.cxx"
    break;

  case 99: /* MethodHeader: Modifiersopt Type MethodDeclarator Throwsopt  */
#line 892 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  jpCheckEmpty(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3420 "cmDependsJavaParser.cxx"
    break;

  case 100: /* MethodHeader: Modifiersopt jp_VOID MethodDeclarator Throwsopt  */
#line 901 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  jpCheckEmpty(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3432 "cmDependsJavaParser.cxx"
    break;

  case 101: /* Throwsopt: %empty  */
#line 910 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3443 "cmDependsJavaParser.cxx"
    break;

  case 102: /* Throwsopt: Throws  */
#line 918 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3455 "cmDependsJavaParser.cxx"
    break;

  case 103: /* MethodDeclarator: Identifier jp_PARESTART FormalParameterListopt jp_PAREEND  */
#line 928 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  yyGetParser->DeallocateParserType(&((yyvsp[-3].str)));
  jpCheckEmpty(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3468 "cmDependsJavaParser.cxx"
    break;

  case 104: /* MethodDeclarator: MethodDeclarator jp_BRACKETSTART jp_BRACKETEND  */
#line 938 "cmDependsJavaParser.y"
{
  jpElementStart(3);

}
#line 3477 "cmDependsJavaParser.cxx"
    break;

  case 105: /* FormalParameterListopt: %empty  */
#line 944 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3488 "cmDependsJavaParser.cxx"
    break;

  case 107: /* FormalParameterList: FormalParameter  */
#line 955 "cmDependsJavaParser.y"
{
  jpElementStart(1);

}
#line 3497 "cmDependsJavaParser.cxx"
    break;

  case 108: /* FormalParameterList: FormalParameterList jp_COMMA FormalParameter  */
#line 961 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3509 "cmDependsJavaParser.cxx"
    break;

  case 109: /* FormalParameter: Modifiersopt Type VariableDeclaratorId  */
#line 971 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3521 "cmDependsJavaParser.cxx"
    break;

  case 110: /* Throws: jp_THROWS ClassTypeList  */
#line 981 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3533 "cmDependsJavaParser.cxx"
    break;

  case 111: /* ClassTypeList: ClassType  */
#line 991 "cmDependsJavaParser.y"
{
  jpElementStart(1);

}
#line 3542 "cmDependsJavaParser.cxx"
    break;

  case 112: /* ClassTypeList: ClassTypeList jp_COMMA ClassType  */
#line 997 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3554 "cmDependsJavaParser.cxx"
    break;

  case 113: /* MethodBody: Block  */
#line 1007 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3566 "cmDependsJavaParser.cxx"
    break;

  case 114: /* StaticInitializer: jp_STATIC Block  */
#line 1017 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3578 "cmDependsJavaParser.cxx"
    break;

  case 115: /* ConstructorDeclaration: Modifiersopt ConstructorDeclarator Throwsopt ConstructorBody  */
#line 1027 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  jpCheckEmpty(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3590 "cmDependsJavaParser.cxx"
    break;

  case 116: /* ConstructorDeclaration: Modifiersopt ConstructorDeclarator Throwsopt ConstructorBody jp_SEMICOL  */
#line 1036 "cmDependsJavaParser.y"
{
  jpElementStart(5);
  jpCheckEmpty(5);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3602 "cmDependsJavaParser.cxx"
    break;

  case 117: /* ConstructorDeclarator: SimpleName jp_PARESTART FormalParameterListopt jp_PAREEND  */
#line 1046 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  yyGetParser->DeallocateParserType(&((yyvsp[-3].str)));
  jpCheckEmpty(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3615 "cmDependsJavaParser.cxx"
    break;

  case 118: /* ConstructorBody: jp_CURLYSTART ExplicitConstructorInvocationopt BlockStatementsopt jp_CURLYEND  */
#line 1057 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  jpCheckEmpty(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3627 "cmDependsJavaParser.cxx"
    break;

  case 119: /* ExplicitConstructorInvocationopt: %empty  */
#line 1066 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3638 "cmDependsJavaParser.cxx"
    break;

  case 120: /* ExplicitConstructorInvocationopt: ExplicitConstructorInvocationopt ExplicitConstructorInvocation  */
#line 1074 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3650 "cmDependsJavaParser.cxx"
    break;

  case 121: /* ExplicitConstructorInvocation: jp_THIS jp_PARESTART ArgumentListopt jp_PAREEND jp_SEMICOL  */
#line 1084 "cmDependsJavaParser.y"
{
  jpElementStart(5);
  jpCheckEmpty(5);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3662 "cmDependsJavaParser.cxx"
    break;

  case 122: /* ExplicitConstructorInvocation: jp_SUPER jp_PARESTART ArgumentListopt jp_PAREEND jp_SEMICOL  */
#line 1093 "cmDependsJavaParser.y"
{
  jpElementStart(5);
  jpCheckEmpty(5);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3674 "cmDependsJavaParser.cxx"
    break;

  case 123: /* InterfaceHeader: Modifiersopt jp_INTERFACE Identifier  */
#line 1103 "cmDependsJavaParser.y"
{
  yyGetParser->StartClass((yyvsp[0].str));
  jpElementStart(3);
  yyGetParser->DeallocateParserType(&((yyvsp[0].str)));
  jpCheckEmpty(3);
}
#line 3685 "cmDependsJavaParser.cxx"
    break;

  case 124: /* InterfaceDeclaration: InterfaceHeader ExtendsInterfacesopt InterfaceBody  */
#line 1112 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
  yyGetParser->EndClass();
}
#line 3697 "cmDependsJavaParser.cxx"
    break;

  case 125: /* ExtendsInterfacesopt: %empty  */
#line 1121 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");
}
#line 3707 "cmDependsJavaParser.cxx"
    break;

  case 126: /* ExtendsInterfacesopt: ExtendsInterfaces  */
#line 1128 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3719 "cmDependsJavaParser.cxx"
    break;

  case 127: /* ExtendsInterfaces: jp_EXTENDS InterfaceType  */
#line 1138 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3731 "cmDependsJavaParser.cxx"
    break;

  case 128: /* ExtendsInterfaces: ExtendsInterfaces jp_COMMA InterfaceType  */
#line 1147 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3743 "cmDependsJavaParser.cxx"
    break;

  case 129: /* InterfaceBody: jp_CURLYSTART InterfaceMemberDeclarations jp_CURLYEND  */
#line 1157 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3755 "cmDependsJavaParser.cxx"
    break;

  case 130: /* InterfaceMemberDeclarations: %empty  */
#line 1166 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3766 "cmDependsJavaParser.cxx"
    break;

  case 131: /* InterfaceMemberDeclarations: InterfaceMemberDeclarations InterfaceMemberDeclaration  */
#line 1174 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3777 "cmDependsJavaParser.cxx"
    break;

  case 132: /* InterfaceMemberDeclaration: ConstantDeclaration  */
#line 1183 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3789 "cmDependsJavaParser.cxx"
    break;

  case 133: /* InterfaceMemberDeclaration: AbstractMethodDeclaration  */
#line 1192 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3801 "cmDependsJavaParser.cxx"
    break;

  case 134: /* InterfaceMemberDeclaration: ClassDeclaration  */
#line 1201 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3813 "cmDependsJavaParser.cxx"
    break;

  case 135: /* InterfaceMemberDeclaration: ClassDeclaration jp_SEMICOL  */
#line 1210 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3824 "cmDependsJavaParser.cxx"
    break;

  case 136: /* InterfaceMemberDeclaration: InterfaceDeclaration  */
#line 1218 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3836 "cmDependsJavaParser.cxx"
    break;

  case 137: /* InterfaceMemberDeclaration: InterfaceDeclaration jp_SEMICOL  */
#line 1227 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3847 "cmDependsJavaParser.cxx"
    break;

  case 138: /* ConstantDeclaration: FieldDeclaration  */
#line 1236 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3859 "cmDependsJavaParser.cxx"
    break;

  case 139: /* AbstractMethodDeclaration: MethodHeader Semicols  */
#line 1246 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3871 "cmDependsJavaParser.cxx"
    break;

  case 140: /* Semicols: jp_SEMICOL  */
#line 1256 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3883 "cmDependsJavaParser.cxx"
    break;

  case 141: /* Semicols: Semicols jp_SEMICOL  */
#line 1265 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3895 "cmDependsJavaParser.cxx"
    break;

  case 142: /* ArrayInitializer: jp_CURLYSTART VariableInitializersOptional jp_CURLYEND  */
#line 1275 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3907 "cmDependsJavaParser.cxx"
    break;

  case 143: /* VariableInitializersOptional: %empty  */
#line 1284 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3918 "cmDependsJavaParser.cxx"
    break;

  case 144: /* VariableInitializersOptional: VariableInitializers  */
#line 1292 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3930 "cmDependsJavaParser.cxx"
    break;

  case 145: /* VariableInitializersOptional: VariableInitializers jp_COMMA  */
#line 1301 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3942 "cmDependsJavaParser.cxx"
    break;

  case 146: /* VariableInitializers: VariableInitializer  */
#line 1311 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3954 "cmDependsJavaParser.cxx"
    break;

  case 147: /* VariableInitializers: VariableInitializers jp_COMMA VariableInitializer  */
#line 1320 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3966 "cmDependsJavaParser.cxx"
    break;

  case 148: /* Block: jp_CURLYSTART BlockStatementsopt jp_CURLYEND  */
#line 1330 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3977 "cmDependsJavaParser.cxx"
    break;

  case 149: /* BlockStatementsopt: %empty  */
#line 1338 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 3988 "cmDependsJavaParser.cxx"
    break;

  case 150: /* BlockStatementsopt: BlockStatements  */
#line 1346 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4000 "cmDependsJavaParser.cxx"
    break;

  case 151: /* BlockStatements: BlockStatement  */
#line 1356 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4012 "cmDependsJavaParser.cxx"
    break;

  case 152: /* BlockStatements: BlockStatements BlockStatement  */
#line 1365 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4024 "cmDependsJavaParser.cxx"
    break;

  case 153: /* BlockStatement: LocalVariableDeclarationStatement  */
#line 1375 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4036 "cmDependsJavaParser.cxx"
    break;

  case 154: /* BlockStatement: Statement  */
#line 1384 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4048 "cmDependsJavaParser.cxx"
    break;

  case 155: /* BlockStatement: ClassDeclaration  */
#line 1393 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4060 "cmDependsJavaParser.cxx"
    break;

  case 156: /* LocalVariableDeclarationStatement: LocalVariableDeclaration jp_SEMICOL  */
#line 1403 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4072 "cmDependsJavaParser.cxx"
    break;

  case 157: /* LocalVariableDeclaration: Modifiers Type VariableDeclarators  */
#line 1413 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4084 "cmDependsJavaParser.cxx"
    break;

  case 158: /* LocalVariableDeclaration: Type VariableDeclarators  */
#line 1422 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4096 "cmDependsJavaParser.cxx"
    break;

  case 159: /* Statement: StatementWithoutTrailingSubstatement  */
#line 1432 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4108 "cmDependsJavaParser.cxx"
    break;

  case 160: /* Statement: LabeledStatement  */
#line 1441 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4120 "cmDependsJavaParser.cxx"
    break;

  case 161: /* Statement: IfThenStatement  */
#line 1450 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4132 "cmDependsJavaParser.cxx"
    break;

  case 162: /* Statement: IfThenElseStatement  */
#line 1459 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4144 "cmDependsJavaParser.cxx"
    break;

  case 163: /* Statement: WhileStatement  */
#line 1468 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4156 "cmDependsJavaParser.cxx"
    break;

  case 164: /* Statement: ForStatement  */
#line 1477 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4168 "cmDependsJavaParser.cxx"
    break;

  case 165: /* StatementNoShortIf: StatementWithoutTrailingSubstatement  */
#line 1487 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4180 "cmDependsJavaParser.cxx"
    break;

  case 166: /* StatementNoShortIf: LabeledStatementNoShortIf  */
#line 1496 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4192 "cmDependsJavaParser.cxx"
    break;

  case 167: /* StatementNoShortIf: IfThenElseStatementNoShortIf  */
#line 1505 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4204 "cmDependsJavaParser.cxx"
    break;

  case 168: /* StatementNoShortIf: WhileStatementNoShortIf  */
#line 1514 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4216 "cmDependsJavaParser.cxx"
    break;

  case 169: /* StatementNoShortIf: ForStatementNoShortIf  */
#line 1523 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4228 "cmDependsJavaParser.cxx"
    break;

  case 170: /* StatementWithoutTrailingSubstatement: Block  */
#line 1533 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4240 "cmDependsJavaParser.cxx"
    break;

  case 171: /* StatementWithoutTrailingSubstatement: EmptyStatement  */
#line 1542 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4252 "cmDependsJavaParser.cxx"
    break;

  case 172: /* StatementWithoutTrailingSubstatement: ExpressionStatement  */
#line 1551 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4264 "cmDependsJavaParser.cxx"
    break;

  case 173: /* StatementWithoutTrailingSubstatement: SwitchStatement  */
#line 1560 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4276 "cmDependsJavaParser.cxx"
    break;

  case 174: /* StatementWithoutTrailingSubstatement: DoStatement  */
#line 1569 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4288 "cmDependsJavaParser.cxx"
    break;

  case 175: /* StatementWithoutTrailingSubstatement: BreakStatement  */
#line 1578 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4300 "cmDependsJavaParser.cxx"
    break;

  case 176: /* StatementWithoutTrailingSubstatement: ContinueStatement  */
#line 1587 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4312 "cmDependsJavaParser.cxx"
    break;

  case 177: /* StatementWithoutTrailingSubstatement: ReturnStatement  */
#line 1596 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4324 "cmDependsJavaParser.cxx"
    break;

  case 178: /* StatementWithoutTrailingSubstatement: SynchronizedStatement  */
#line 1605 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4336 "cmDependsJavaParser.cxx"
    break;

  case 179: /* StatementWithoutTrailingSubstatement: ThrowStatement  */
#line 1614 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4348 "cmDependsJavaParser.cxx"
    break;

  case 180: /* StatementWithoutTrailingSubstatement: TryStatement  */
#line 1623 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4360 "cmDependsJavaParser.cxx"
    break;

  case 181: /* StatementWithoutTrailingSubstatement: AssertStatement  */
#line 1632 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4372 "cmDependsJavaParser.cxx"
    break;

  case 182: /* EmptyStatement: jp_SEMICOL  */
#line 1642 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4384 "cmDependsJavaParser.cxx"
    break;

  case 183: /* LabeledStatement: Identifier jp_COLON Statement  */
#line 1652 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  yyGetParser->DeallocateParserType(&((yyvsp[-2].str)));
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4397 "cmDependsJavaParser.cxx"
    break;

  case 184: /* LabeledStatementNoShortIf: Identifier jp_COLON StatementNoShortIf  */
#line 1663 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4409 "cmDependsJavaParser.cxx"
    break;

  case 185: /* ExpressionStatement: StatementExpression jp_SEMICOL  */
#line 1673 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4421 "cmDependsJavaParser.cxx"
    break;

  case 186: /* StatementExpression: Assignment  */
#line 1683 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4433 "cmDependsJavaParser.cxx"
    break;

  case 187: /* StatementExpression: PreIncrementExpression  */
#line 1692 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4445 "cmDependsJavaParser.cxx"
    break;

  case 188: /* StatementExpression: PreDecrementExpression  */
#line 1701 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4457 "cmDependsJavaParser.cxx"
    break;

  case 189: /* StatementExpression: PostIncrementExpression  */
#line 1710 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4469 "cmDependsJavaParser.cxx"
    break;

  case 190: /* StatementExpression: PostDecrementExpression  */
#line 1719 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4481 "cmDependsJavaParser.cxx"
    break;

  case 191: /* StatementExpression: MethodInvocation  */
#line 1728 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4493 "cmDependsJavaParser.cxx"
    break;

  case 192: /* StatementExpression: ClassInstanceCreationExpression  */
#line 1737 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4505 "cmDependsJavaParser.cxx"
    break;

  case 193: /* IfThenStatement: jp_IF jp_PARESTART Expression jp_PAREEND Statement  */
#line 1747 "cmDependsJavaParser.y"
{
  jpElementStart(5);
  jpCheckEmpty(5);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4517 "cmDependsJavaParser.cxx"
    break;

  case 194: /* IfThenElseStatement: jp_IF jp_PARESTART Expression jp_PAREEND StatementNoShortIf jp_ELSE Statement  */
#line 1757 "cmDependsJavaParser.y"
{
  jpElementStart(7);
  jpCheckEmpty(7);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4529 "cmDependsJavaParser.cxx"
    break;

  case 195: /* IfThenElseStatementNoShortIf: jp_IF jp_PARESTART Expression jp_PAREEND StatementNoShortIf jp_ELSE StatementNoShortIf  */
#line 1767 "cmDependsJavaParser.y"
{
  jpElementStart(7);
  jpCheckEmpty(7);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4541 "cmDependsJavaParser.cxx"
    break;

  case 196: /* SwitchStatement: jp_SWITCH jp_PARESTART Expression jp_PAREEND SwitchBlock  */
#line 1777 "cmDependsJavaParser.y"
{
  jpElementStart(5);

}
#line 4550 "cmDependsJavaParser.cxx"
    break;

  case 197: /* SwitchBlock: jp_CURLYSTART SwitchBlockStatementGroups SwitchLabelsopt jp_CURLYEND  */
#line 1784 "cmDependsJavaParser.y"
{
  jpElementStart(4);

}
#line 4559 "cmDependsJavaParser.cxx"
    break;

  case 198: /* SwitchLabelsopt: %empty  */
#line 1790 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4570 "cmDependsJavaParser.cxx"
    break;

  case 199: /* SwitchLabelsopt: SwitchLabels  */
#line 1798 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4582 "cmDependsJavaParser.cxx"
    break;

  case 200: /* SwitchBlockStatementGroups: %empty  */
#line 1807 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4593 "cmDependsJavaParser.cxx"
    break;

  case 201: /* SwitchBlockStatementGroups: SwitchBlockStatementGroups SwitchBlockStatementGroup  */
#line 1815 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4605 "cmDependsJavaParser.cxx"
    break;

  case 202: /* SwitchBlockStatementGroup: SwitchLabels BlockStatements  */
#line 1825 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4617 "cmDependsJavaParser.cxx"
    break;

  case 203: /* SwitchLabels: SwitchLabel  */
#line 1835 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4629 "cmDependsJavaParser.cxx"
    break;

  case 204: /* SwitchLabels: SwitchLabels SwitchLabel  */
#line 1844 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4641 "cmDependsJavaParser.cxx"
    break;

  case 205: /* SwitchLabel: jp_CASE ConstantExpression jp_COLON  */
#line 1854 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4653 "cmDependsJavaParser.cxx"
    break;

  case 206: /* SwitchLabel: jp_DEFAULT jp_COLON  */
#line 1863 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4665 "cmDependsJavaParser.cxx"
    break;

  case 207: /* WhileStatement: jp_WHILE jp_PARESTART Expression jp_PAREEND Statement  */
#line 1873 "cmDependsJavaParser.y"
{
  jpElementStart(5);

}
#line 4674 "cmDependsJavaParser.cxx"
    break;

  case 208: /* WhileStatementNoShortIf: jp_WHILE jp_PARESTART Expression jp_PAREEND StatementNoShortIf  */
#line 1880 "cmDependsJavaParser.y"
{
  jpElementStart(5);

}
#line 4683 "cmDependsJavaParser.cxx"
    break;

  case 209: /* DoStatement: jp_DO Statement jp_WHILE jp_PARESTART Expression jp_PAREEND jp_SEMICOL  */
#line 1887 "cmDependsJavaParser.y"
{
  jpElementStart(7);

}
#line 4692 "cmDependsJavaParser.cxx"
    break;

  case 210: /* ForStatement: jp_FOR jp_PARESTART ForInitopt jp_SEMICOL Expressionopt jp_SEMICOL ForUpdateopt jp_PAREEND Statement  */
#line 1895 "cmDependsJavaParser.y"
{
  jpElementStart(9);

}
#line 4701 "cmDependsJavaParser.cxx"
    break;

  case 211: /* ForUpdateopt: %empty  */
#line 1901 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4712 "cmDependsJavaParser.cxx"
    break;

  case 212: /* ForUpdateopt: ForUpdate  */
#line 1909 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4724 "cmDependsJavaParser.cxx"
    break;

  case 213: /* ForInitopt: %empty  */
#line 1918 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4735 "cmDependsJavaParser.cxx"
    break;

  case 214: /* ForInitopt: ForInit  */
#line 1926 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4747 "cmDependsJavaParser.cxx"
    break;

  case 215: /* ForStatementNoShortIf: jp_FOR jp_PARESTART ForInitopt jp_SEMICOL Expressionopt jp_SEMICOL ForUpdateopt jp_PAREEND StatementNoShortIf  */
#line 1937 "cmDependsJavaParser.y"
{
  jpElementStart(9);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4758 "cmDependsJavaParser.cxx"
    break;

  case 216: /* Expressionopt: %empty  */
#line 1945 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4769 "cmDependsJavaParser.cxx"
    break;

  case 217: /* Expressionopt: Expression  */
#line 1953 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4781 "cmDependsJavaParser.cxx"
    break;

  case 218: /* ForInit: StatementExpressionList  */
#line 1963 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4793 "cmDependsJavaParser.cxx"
    break;

  case 219: /* ForInit: LocalVariableDeclaration  */
#line 1972 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4805 "cmDependsJavaParser.cxx"
    break;

  case 220: /* ForUpdate: StatementExpressionList  */
#line 1982 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4817 "cmDependsJavaParser.cxx"
    break;

  case 221: /* StatementExpressionList: StatementExpression  */
#line 1992 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4829 "cmDependsJavaParser.cxx"
    break;

  case 222: /* StatementExpressionList: StatementExpressionList jp_COMMA StatementExpression  */
#line 2001 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4841 "cmDependsJavaParser.cxx"
    break;

  case 223: /* AssertStatement: jp_ASSERT Expression jp_SEMICOL  */
#line 2011 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4853 "cmDependsJavaParser.cxx"
    break;

  case 224: /* AssertStatement: jp_ASSERT Expression jp_COLON Expression jp_SEMICOL  */
#line 2020 "cmDependsJavaParser.y"
{
  jpElementStart(5);
  jpCheckEmpty(5);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4865 "cmDependsJavaParser.cxx"
    break;

  case 225: /* BreakStatement: jp_BREAK Identifieropt jp_SEMICOL  */
#line 2030 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  yyGetParser->DeallocateParserType(&((yyvsp[-1].str)));
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4878 "cmDependsJavaParser.cxx"
    break;

  case 226: /* Identifieropt: %empty  */
#line 2040 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4889 "cmDependsJavaParser.cxx"
    break;

  case 227: /* Identifieropt: Identifier  */
#line 2048 "cmDependsJavaParser.y"
{
  jpElementStart(1);

}
#line 4898 "cmDependsJavaParser.cxx"
    break;

  case 228: /* ContinueStatement: jp_CONTINUE Identifieropt jp_SEMICOL  */
#line 2055 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  yyGetParser->DeallocateParserType(&((yyvsp[-1].str)));
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4911 "cmDependsJavaParser.cxx"
    break;

  case 229: /* ReturnStatement: jp_RETURN Expressionopt jp_SEMICOL  */
#line 2066 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4923 "cmDependsJavaParser.cxx"
    break;

  case 230: /* ThrowStatement: jp_THROW Expression jp_SEMICOL  */
#line 2076 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4935 "cmDependsJavaParser.cxx"
    break;

  case 231: /* SynchronizedStatement: jp_SYNCHRONIZED jp_PARESTART Expression jp_PAREEND Block  */
#line 2086 "cmDependsJavaParser.y"
{
  jpElementStart(5);
  jpCheckEmpty(5);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4947 "cmDependsJavaParser.cxx"
    break;

  case 232: /* TryStatement: jp_TRY Block Catches  */
#line 2096 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4959 "cmDependsJavaParser.cxx"
    break;

  case 233: /* TryStatement: jp_TRY Block Catchesopt Finally  */
#line 2105 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  jpCheckEmpty(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4971 "cmDependsJavaParser.cxx"
    break;

  case 234: /* Catchesopt: %empty  */
#line 2114 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4982 "cmDependsJavaParser.cxx"
    break;

  case 235: /* Catchesopt: Catches  */
#line 2122 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 4994 "cmDependsJavaParser.cxx"
    break;

  case 236: /* Catches: CatchClause  */
#line 2132 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5006 "cmDependsJavaParser.cxx"
    break;

  case 237: /* Catches: Catches CatchClause  */
#line 2141 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5018 "cmDependsJavaParser.cxx"
    break;

  case 238: /* CatchClause: jp_CATCH jp_PARESTART FormalParameter jp_PAREEND Block  */
#line 2151 "cmDependsJavaParser.y"
{
  jpElementStart(5);

}
#line 5027 "cmDependsJavaParser.cxx"
    break;

  case 239: /* Finally: jp_FINALLY Block  */
#line 2158 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5039 "cmDependsJavaParser.cxx"
    break;

  case 240: /* Primary: PrimaryNoNewArray  */
#line 2168 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5051 "cmDependsJavaParser.cxx"
    break;

  case 241: /* Primary: ArrayCreationExpression  */
#line 2177 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5063 "cmDependsJavaParser.cxx"
    break;

  case 242: /* PrimaryNoNewArray: Literal  */
#line 2187 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5075 "cmDependsJavaParser.cxx"
    break;

  case 243: /* PrimaryNoNewArray: jp_THIS  */
#line 2196 "cmDependsJavaParser.y"
{
  jpElementStart(1);

}
#line 5084 "cmDependsJavaParser.cxx"
    break;

  case 244: /* PrimaryNoNewArray: jp_PARESTART Expression jp_PAREEND  */
#line 2202 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5096 "cmDependsJavaParser.cxx"
    break;

  case 245: /* PrimaryNoNewArray: ClassInstanceCreationExpression  */
#line 2211 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5108 "cmDependsJavaParser.cxx"
    break;

  case 246: /* PrimaryNoNewArray: FieldAccess  */
#line 2220 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5120 "cmDependsJavaParser.cxx"
    break;

  case 247: /* PrimaryNoNewArray: MethodInvocation  */
#line 2229 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5132 "cmDependsJavaParser.cxx"
    break;

  case 248: /* PrimaryNoNewArray: ArrayAccess  */
#line 2238 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5144 "cmDependsJavaParser.cxx"
    break;

  case 249: /* ClassInstanceCreationExpression: New ClassType jp_PARESTART ArgumentListopt jp_PAREEND ClassBodyOpt  */
#line 2248 "cmDependsJavaParser.y"
{
  jpElementStart(6);
  jpCheckEmpty(6);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5156 "cmDependsJavaParser.cxx"
    break;

  case 250: /* ClassBodyOpt: %empty  */
#line 2257 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5167 "cmDependsJavaParser.cxx"
    break;

  case 251: /* ClassBodyOpt: ClassBody  */
#line 2265 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5179 "cmDependsJavaParser.cxx"
    break;

  case 252: /* ArgumentListopt: %empty  */
#line 2274 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5190 "cmDependsJavaParser.cxx"
    break;

  case 253: /* ArgumentListopt: ArgumentList  */
#line 2282 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5202 "cmDependsJavaParser.cxx"
    break;

  case 254: /* ArgumentList: Expression  */
#line 2292 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5214 "cmDependsJavaParser.cxx"
    break;

  case 255: /* ArgumentList: ArgumentList jp_COMMA Expression  */
#line 2301 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5226 "cmDependsJavaParser.cxx"
    break;

  case 256: /* ArrayCreationExpression: New PrimitiveType DimExprs Dimsopt  */
#line 2311 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  jpCheckEmpty(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5238 "cmDependsJavaParser.cxx"
    break;

  case 257: /* ArrayCreationExpression: New ClassOrInterfaceType DimExprs Dimsopt  */
#line 2320 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  jpCheckEmpty(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5250 "cmDependsJavaParser.cxx"
    break;

  case 258: /* ArrayCreationExpression: New PrimitiveType Dims ArrayInitializer  */
#line 2329 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  jpCheckEmpty(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5262 "cmDependsJavaParser.cxx"
    break;

  case 259: /* ArrayCreationExpression: New ClassOrInterfaceType Dims ArrayInitializer  */
#line 2338 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  jpCheckEmpty(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5274 "cmDependsJavaParser.cxx"
    break;

  case 260: /* Dimsopt: %empty  */
#line 2347 "cmDependsJavaParser.y"
{
  jpElementStart(0);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5285 "cmDependsJavaParser.cxx"
    break;

  case 261: /* Dimsopt: Dims  */
#line 2355 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5297 "cmDependsJavaParser.cxx"
    break;

  case 262: /* DimExprs: DimExpr  */
#line 2365 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5309 "cmDependsJavaParser.cxx"
    break;

  case 263: /* DimExprs: DimExprs DimExpr  */
#line 2374 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5321 "cmDependsJavaParser.cxx"
    break;

  case 264: /* DimExpr: jp_BRACKETSTART Expression jp_BRACKETEND  */
#line 2384 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5333 "cmDependsJavaParser.cxx"
    break;

  case 265: /* Dims: jp_BRACKETSTART jp_BRACKETEND  */
#line 2394 "cmDependsJavaParser.y"
{
  jpElementStart(2);

}
#line 5342 "cmDependsJavaParser.cxx"
    break;

  case 266: /* Dims: Dims jp_BRACKETSTART jp_BRACKETEND  */
#line 2400 "cmDependsJavaParser.y"
{
  jpElementStart(3);

}
#line 5351 "cmDependsJavaParser.cxx"
    break;

  case 267: /* FieldAccess: Primary jp_DOT Identifier  */
#line 2407 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  yyGetParser->DeallocateParserType(&((yyvsp[0].str)));
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5364 "cmDependsJavaParser.cxx"
    break;

  case 268: /* FieldAccess: jp_SUPER jp_DOT Identifier  */
#line 2417 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  yyGetParser->DeallocateParserType(&((yyvsp[0].str)));
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5377 "cmDependsJavaParser.cxx"
    break;

  case 269: /* FieldAccess: jp_THIS jp_DOT Identifier  */
#line 2427 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  yyGetParser->DeallocateParserType(&((yyvsp[0].str)));
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5390 "cmDependsJavaParser.cxx"
    break;

  case 270: /* FieldAccess: Primary jp_DOT jp_THIS  */
#line 2437 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  yyGetParser->DeallocateParserType(&((yyvsp[0].str)));
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5403 "cmDependsJavaParser.cxx"
    break;

  case 271: /* MethodInvocation: Name jp_PARESTART ArgumentListopt jp_PAREEND  */
#line 2448 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  yyGetParser->DeallocateParserType(&((yyvsp[-3].str)));
  jpCheckEmpty(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5416 "cmDependsJavaParser.cxx"
    break;

  case 272: /* MethodInvocation: Primary jp_DOT Identifier jp_PARESTART ArgumentListopt jp_PAREEND  */
#line 2458 "cmDependsJavaParser.y"
{
  jpElementStart(6);
  yyGetParser->DeallocateParserType(&((yyvsp[-5].str)));
  yyGetParser->DeallocateParserType(&((yyvsp[-3].str)));
  jpCheckEmpty(6);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5430 "cmDependsJavaParser.cxx"
    break;

  case 273: /* MethodInvocation: jp_SUPER jp_DOT Identifier jp_PARESTART ArgumentListopt jp_PAREEND  */
#line 2469 "cmDependsJavaParser.y"
{
  jpElementStart(6);
  yyGetParser->DeallocateParserType(&((yyvsp[-3].str)));
  jpCheckEmpty(6);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5443 "cmDependsJavaParser.cxx"
    break;

  case 274: /* MethodInvocation: jp_THIS jp_DOT Identifier jp_PARESTART ArgumentListopt jp_PAREEND  */
#line 2479 "cmDependsJavaParser.y"
{
  jpElementStart(6);
  yyGetParser->DeallocateParserType(&((yyvsp[-3].str)));
  jpCheckEmpty(6);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5456 "cmDependsJavaParser.cxx"
    break;

  case 275: /* ArrayAccess: Name jp_BRACKETSTART Expression jp_BRACKETEND  */
#line 2490 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  yyGetParser->DeallocateParserType(&((yyvsp[-3].str)));
  jpCheckEmpty(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5469 "cmDependsJavaParser.cxx"
    break;

  case 276: /* ArrayAccess: PrimaryNoNewArray jp_BRACKETSTART Expression jp_BRACKETEND  */
#line 2500 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  jpCheckEmpty(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5481 "cmDependsJavaParser.cxx"
    break;

  case 277: /* PostfixExpression: Primary  */
#line 2510 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5493 "cmDependsJavaParser.cxx"
    break;

  case 278: /* PostfixExpression: Name  */
#line 2519 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  yyGetParser->DeallocateParserType(&((yyvsp[0].str)));
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5505 "cmDependsJavaParser.cxx"
    break;

  case 279: /* PostfixExpression: ArrayType jp_DOT jp_CLASS  */
#line 2528 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5517 "cmDependsJavaParser.cxx"
    break;

  case 280: /* PostfixExpression: PostIncrementExpression  */
#line 2537 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5529 "cmDependsJavaParser.cxx"
    break;

  case 281: /* PostfixExpression: PostDecrementExpression  */
#line 2546 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5541 "cmDependsJavaParser.cxx"
    break;

  case 282: /* PostIncrementExpression: PostfixExpression jp_PLUSPLUS  */
#line 2556 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5553 "cmDependsJavaParser.cxx"
    break;

  case 283: /* PostDecrementExpression: PostfixExpression jp_MINUSMINUS  */
#line 2566 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5565 "cmDependsJavaParser.cxx"
    break;

  case 284: /* UnaryExpression: PreIncrementExpression  */
#line 2576 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5577 "cmDependsJavaParser.cxx"
    break;

  case 285: /* UnaryExpression: PreDecrementExpression  */
#line 2585 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5589 "cmDependsJavaParser.cxx"
    break;

  case 286: /* UnaryExpression: jp_PLUS UnaryExpression  */
#line 2594 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5601 "cmDependsJavaParser.cxx"
    break;

  case 287: /* UnaryExpression: jp_MINUS UnaryExpression  */
#line 2603 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5613 "cmDependsJavaParser.cxx"
    break;

  case 288: /* UnaryExpression: UnaryExpressionNotPlusMinus  */
#line 2612 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5625 "cmDependsJavaParser.cxx"
    break;

  case 289: /* PreIncrementExpression: jp_PLUSPLUS UnaryExpression  */
#line 2622 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5637 "cmDependsJavaParser.cxx"
    break;

  case 290: /* PreDecrementExpression: jp_MINUSMINUS UnaryExpression  */
#line 2632 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5649 "cmDependsJavaParser.cxx"
    break;

  case 291: /* UnaryExpressionNotPlusMinus: PostfixExpression  */
#line 2642 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5661 "cmDependsJavaParser.cxx"
    break;

  case 292: /* UnaryExpressionNotPlusMinus: jp_TILDE UnaryExpression  */
#line 2651 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5673 "cmDependsJavaParser.cxx"
    break;

  case 293: /* UnaryExpressionNotPlusMinus: jp_EXCLAMATION UnaryExpression  */
#line 2660 "cmDependsJavaParser.y"
{
  jpElementStart(2);
  jpCheckEmpty(2);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5685 "cmDependsJavaParser.cxx"
    break;

  case 294: /* UnaryExpressionNotPlusMinus: CastExpression  */
#line 2669 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5697 "cmDependsJavaParser.cxx"
    break;

  case 295: /* CastExpression: jp_PARESTART PrimitiveType Dimsopt jp_PAREEND UnaryExpression  */
#line 2679 "cmDependsJavaParser.y"
{
  jpElementStart(5);
  jpCheckEmpty(5);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5709 "cmDependsJavaParser.cxx"
    break;

  case 296: /* CastExpression: jp_PARESTART Expression jp_PAREEND UnaryExpressionNotPlusMinus  */
#line 2688 "cmDependsJavaParser.y"
{
  jpElementStart(4);
  jpCheckEmpty(4);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5721 "cmDependsJavaParser.cxx"
    break;

  case 297: /* CastExpression: jp_PARESTART Name Dims jp_PAREEND UnaryExpressionNotPlusMinus  */
#line 2697 "cmDependsJavaParser.y"
{
  jpElementStart(5);

}
#line 5730 "cmDependsJavaParser.cxx"
    break;

  case 298: /* MultiplicativeExpression: UnaryExpression  */
#line 2704 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5742 "cmDependsJavaParser.cxx"
    break;

  case 299: /* MultiplicativeExpression: MultiplicativeExpression jp_TIMES UnaryExpression  */
#line 2713 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5754 "cmDependsJavaParser.cxx"
    break;

  case 300: /* MultiplicativeExpression: MultiplicativeExpression jp_DIVIDE UnaryExpression  */
#line 2722 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5766 "cmDependsJavaParser.cxx"
    break;

  case 301: /* MultiplicativeExpression: MultiplicativeExpression jp_PERCENT UnaryExpression  */
#line 2731 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5778 "cmDependsJavaParser.cxx"
    break;

  case 302: /* AdditiveExpression: MultiplicativeExpression  */
#line 2741 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5790 "cmDependsJavaParser.cxx"
    break;

  case 303: /* AdditiveExpression: AdditiveExpression jp_PLUS MultiplicativeExpression  */
#line 2750 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5802 "cmDependsJavaParser.cxx"
    break;

  case 304: /* AdditiveExpression: AdditiveExpression jp_MINUS MultiplicativeExpression  */
#line 2759 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5814 "cmDependsJavaParser.cxx"
    break;

  case 305: /* ShiftExpression: AdditiveExpression  */
#line 2769 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5826 "cmDependsJavaParser.cxx"
    break;

  case 306: /* ShiftExpression: ShiftExpression jp_LTLT AdditiveExpression  */
#line 2778 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5838 "cmDependsJavaParser.cxx"
    break;

  case 307: /* ShiftExpression: ShiftExpression jp_GTGT AdditiveExpression  */
#line 2787 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5850 "cmDependsJavaParser.cxx"
    break;

  case 308: /* ShiftExpression: ShiftExpression jp_GTGTGT AdditiveExpression  */
#line 2796 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5862 "cmDependsJavaParser.cxx"
    break;

  case 309: /* RelationalExpression: ShiftExpression  */
#line 2806 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5874 "cmDependsJavaParser.cxx"
    break;

  case 310: /* RelationalExpression: RelationalExpression jp_LESSTHAN ShiftExpression  */
#line 2815 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5886 "cmDependsJavaParser.cxx"
    break;

  case 311: /* RelationalExpression: RelationalExpression jp_GREATER ShiftExpression  */
#line 2824 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5898 "cmDependsJavaParser.cxx"
    break;

  case 312: /* RelationalExpression: RelationalExpression jp_LTEQUALS ShiftExpression  */
#line 2833 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5910 "cmDependsJavaParser.cxx"
    break;

  case 313: /* RelationalExpression: RelationalExpression jp_GTEQUALS ShiftExpression  */
#line 2842 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5922 "cmDependsJavaParser.cxx"
    break;

  case 314: /* RelationalExpression: RelationalExpression jp_INSTANCEOF ReferenceType  */
#line 2851 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5934 "cmDependsJavaParser.cxx"
    break;

  case 315: /* EqualityExpression: RelationalExpression  */
#line 2861 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5946 "cmDependsJavaParser.cxx"
    break;

  case 316: /* EqualityExpression: EqualityExpression jp_EQUALSEQUALS RelationalExpression  */
#line 2870 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5958 "cmDependsJavaParser.cxx"
    break;

  case 317: /* EqualityExpression: EqualityExpression jp_EXCLAMATIONEQUALS RelationalExpression  */
#line 2879 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5970 "cmDependsJavaParser.cxx"
    break;

  case 318: /* AndExpression: EqualityExpression  */
#line 2889 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5982 "cmDependsJavaParser.cxx"
    break;

  case 319: /* AndExpression: AndExpression jp_AND EqualityExpression  */
#line 2898 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 5994 "cmDependsJavaParser.cxx"
    break;

  case 320: /* ExclusiveOrExpression: AndExpression  */
#line 2908 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6006 "cmDependsJavaParser.cxx"
    break;

  case 321: /* ExclusiveOrExpression: ExclusiveOrExpression jp_CARROT AndExpression  */
#line 2917 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6018 "cmDependsJavaParser.cxx"
    break;

  case 322: /* InclusiveOrExpression: ExclusiveOrExpression  */
#line 2927 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6030 "cmDependsJavaParser.cxx"
    break;

  case 323: /* InclusiveOrExpression: InclusiveOrExpression jp_PIPE ExclusiveOrExpression  */
#line 2936 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6042 "cmDependsJavaParser.cxx"
    break;

  case 324: /* ConditionalAndExpression: InclusiveOrExpression  */
#line 2946 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6054 "cmDependsJavaParser.cxx"
    break;

  case 325: /* ConditionalAndExpression: ConditionalAndExpression jp_ANDAND InclusiveOrExpression  */
#line 2955 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6066 "cmDependsJavaParser.cxx"
    break;

  case 326: /* ConditionalOrExpression: ConditionalAndExpression  */
#line 2965 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6078 "cmDependsJavaParser.cxx"
    break;

  case 327: /* ConditionalOrExpression: ConditionalOrExpression jp_PIPEPIPE ConditionalAndExpression  */
#line 2974 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6090 "cmDependsJavaParser.cxx"
    break;

  case 328: /* ConditionalExpression: ConditionalOrExpression  */
#line 2984 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6102 "cmDependsJavaParser.cxx"
    break;

  case 329: /* ConditionalExpression: ConditionalOrExpression jp_QUESTION Expression jp_COLON ConditionalExpression  */
#line 2993 "cmDependsJavaParser.y"
{
  jpElementStart(5);
  jpCheckEmpty(5);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6114 "cmDependsJavaParser.cxx"
    break;

  case 330: /* AssignmentExpression: ConditionalExpression  */
#line 3003 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6126 "cmDependsJavaParser.cxx"
    break;

  case 331: /* AssignmentExpression: Assignment  */
#line 3012 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6138 "cmDependsJavaParser.cxx"
    break;

  case 332: /* Assignment: LeftHandSide AssignmentOperator AssignmentExpression  */
#line 3022 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6150 "cmDependsJavaParser.cxx"
    break;

  case 333: /* LeftHandSide: Name  */
#line 3032 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  yyGetParser->DeallocateParserType(&((yyvsp[0].str)));
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6163 "cmDependsJavaParser.cxx"
    break;

  case 334: /* LeftHandSide: FieldAccess  */
#line 3042 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6175 "cmDependsJavaParser.cxx"
    break;

  case 335: /* LeftHandSide: ArrayAccess  */
#line 3051 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6187 "cmDependsJavaParser.cxx"
    break;

  case 336: /* AssignmentOperator: jp_EQUALS  */
#line 3061 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6199 "cmDependsJavaParser.cxx"
    break;

  case 337: /* AssignmentOperator: jp_TIMESEQUALS  */
#line 3070 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6211 "cmDependsJavaParser.cxx"
    break;

  case 338: /* AssignmentOperator: jp_DIVIDEEQUALS  */
#line 3079 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6223 "cmDependsJavaParser.cxx"
    break;

  case 339: /* AssignmentOperator: jp_PERCENTEQUALS  */
#line 3088 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6235 "cmDependsJavaParser.cxx"
    break;

  case 340: /* AssignmentOperator: jp_PLUSEQUALS  */
#line 3097 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6247 "cmDependsJavaParser.cxx"
    break;

  case 341: /* AssignmentOperator: jp_MINUSEQUALS  */
#line 3106 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6259 "cmDependsJavaParser.cxx"
    break;

  case 342: /* AssignmentOperator: jp_LESLESEQUALS  */
#line 3115 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6271 "cmDependsJavaParser.cxx"
    break;

  case 343: /* AssignmentOperator: jp_GTGTEQUALS  */
#line 3124 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6283 "cmDependsJavaParser.cxx"
    break;

  case 344: /* AssignmentOperator: jp_GTGTGTEQUALS  */
#line 3133 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6295 "cmDependsJavaParser.cxx"
    break;

  case 345: /* AssignmentOperator: jp_ANDEQUALS  */
#line 3142 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6307 "cmDependsJavaParser.cxx"
    break;

  case 346: /* AssignmentOperator: jp_CARROTEQUALS  */
#line 3151 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6319 "cmDependsJavaParser.cxx"
    break;

  case 347: /* AssignmentOperator: jp_PIPEEQUALS  */
#line 3160 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6331 "cmDependsJavaParser.cxx"
    break;

  case 348: /* Expression: AssignmentExpression  */
#line 3170 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6343 "cmDependsJavaParser.cxx"
    break;

  case 349: /* ConstantExpression: Expression  */
#line 3180 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6355 "cmDependsJavaParser.cxx"
    break;

  case 350: /* New: jp_NEW  */
#line 3190 "cmDependsJavaParser.y"
{
  jpElementStart(1);
  jpCheckEmpty(1);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6367 "cmDependsJavaParser.cxx"
    break;

  case 351: /* New: Name jp_DOT jp_NEW  */
#line 3199 "cmDependsJavaParser.y"
{
  jpElementStart(3);
  jpStoreClass((yyvsp[-2].str));
  jpCheckEmpty(3);
  (yyval.str) = 0;
  yyGetParser->SetCurrentCombine("");

}
#line 6380 "cmDependsJavaParser.cxx"
    break;


#line 6384 "cmDependsJavaParser.cxx"

      default: break;
    }
  /* User semantic actions sometimes alter yychar, and that requires
     that yytoken be updated with the new translation.  We take the
     approach of translating immediately before every use of yytoken.
     One alternative is translating here after every semantic action,
     but that translation would be missed if the semantic action invokes
     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
     incorrect destructor might then be invoked immediately.  In the
     case of YYERROR or YYBACKUP, subsequent parser actions might lead
     to an incorrect destructor call or verbose syntax error message
     before the lookahead is translated.  */
  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);

  YYPOPSTACK (yylen);
  yylen = 0;

  *++yyvsp = yyval;

  /* Now 'shift' the result of the reduction.  Determine what state
     that goes to, based on the state we popped back to and the rule
     number reduced by.  */
  {
    const int yylhs = yyr1[yyn] - YYNTOKENS;
    const int yyi = yypgoto[yylhs] + *yyssp;
    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
               ? yytable[yyi]
               : yydefgoto[yylhs]);
  }

  goto yynewstate;


/*--------------------------------------.
| yyerrlab -- here on detecting error.  |
`--------------------------------------*/
yyerrlab:
  /* Make sure we have latest lookahead translation.  See comments at
     user semantic actions for why this is necessary.  */
  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
  /* If not already recovering from an error, report this error.  */
  if (!yyerrstatus)
    {
      ++yynerrs;
      {
        yypcontext_t yyctx
          = {yyssp, yytoken};
        char const *yymsgp = YY_("syntax error");
        int yysyntax_error_status;
        yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
        if (yysyntax_error_status == 0)
          yymsgp = yymsg;
        else if (yysyntax_error_status == -1)
          {
            if (yymsg != yymsgbuf)
              YYSTACK_FREE (yymsg);
            yymsg = YY_CAST (char *,
                             YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
            if (yymsg)
              {
                yysyntax_error_status
                  = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
                yymsgp = yymsg;
              }
            else
              {
                yymsg = yymsgbuf;
                yymsg_alloc = sizeof yymsgbuf;
                yysyntax_error_status = YYENOMEM;
              }
          }
        yyerror (yyscanner, yymsgp);
        if (yysyntax_error_status == YYENOMEM)
          goto yyexhaustedlab;
      }
    }

  if (yyerrstatus == 3)
    {
      /* If just tried and failed to reuse lookahead token after an
         error, discard it.  */

      if (yychar <= YYEOF)
        {
          /* Return failure if at end of input.  */
          if (yychar == YYEOF)
            YYABORT;
        }
      else
        {
          yydestruct ("Error: discarding",
                      yytoken, &yylval, yyscanner);
          yychar = YYEMPTY;
        }
    }

  /* Else will try to reuse lookahead token after shifting the error
     token.  */
  goto yyerrlab1;


/*---------------------------------------------------.
| yyerrorlab -- error raised explicitly by YYERROR.  |
`---------------------------------------------------*/
yyerrorlab:
  /* Pacify compilers when the user code never invokes YYERROR and the
     label yyerrorlab therefore never appears in user code.  */
  if (0)
    YYERROR;

  /* Do not reclaim the symbols of the rule whose action triggered
     this YYERROR.  */
  YYPOPSTACK (yylen);
  yylen = 0;
  YY_STACK_PRINT (yyss, yyssp);
  yystate = *yyssp;
  goto yyerrlab1;


/*-------------------------------------------------------------.
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
`-------------------------------------------------------------*/
yyerrlab1:
  yyerrstatus = 3;      /* Each real token shifted decrements this.  */

  /* Pop stack until we find a state that shifts the error token.  */
  for (;;)
    {
      yyn = yypact[yystate];
      if (!yypact_value_is_default (yyn))
        {
          yyn += YYSYMBOL_YYerror;
          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
            {
              yyn = yytable[yyn];
              if (0 < yyn)
                break;
            }
        }

      /* Pop the current state because it cannot handle the error token.  */
      if (yyssp == yyss)
        YYABORT;


      yydestruct ("Error: popping",
                  YY_ACCESSING_SYMBOL (yystate), yyvsp, yyscanner);
      YYPOPSTACK (1);
      yystate = *yyssp;
      YY_STACK_PRINT (yyss, yyssp);
    }

  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  *++yyvsp = yylval;
  YY_IGNORE_MAYBE_UNINITIALIZED_END


  /* Shift the error token.  */
  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);

  yystate = yyn;
  goto yynewstate;


/*-------------------------------------.
| yyacceptlab -- YYACCEPT comes here.  |
`-------------------------------------*/
yyacceptlab:
  yyresult = 0;
  goto yyreturn;


/*-----------------------------------.
| yyabortlab -- YYABORT comes here.  |
`-----------------------------------*/
yyabortlab:
  yyresult = 1;
  goto yyreturn;


#if 1
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here.  |
`-------------------------------------------------*/
yyexhaustedlab:
  yyerror (yyscanner, YY_("memory exhausted"));
  yyresult = 2;
  goto yyreturn;
#endif


/*-------------------------------------------------------.
| yyreturn -- parsing is finished, clean up and return.  |
`-------------------------------------------------------*/
yyreturn:
  if (yychar != YYEMPTY)
    {
      /* Make sure we have latest lookahead translation.  See comments at
         user semantic actions for why this is necessary.  */
      yytoken = YYTRANSLATE (yychar);
      yydestruct ("Cleanup: discarding lookahead",
                  yytoken, &yylval, yyscanner);
    }
  /* Do not reclaim the symbols of the rule whose action triggered
     this YYABORT or YYACCEPT.  */
  YYPOPSTACK (yylen);
  YY_STACK_PRINT (yyss, yyssp);
  while (yyssp != yyss)
    {
      yydestruct ("Cleanup: popping",
                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yyscanner);
      YYPOPSTACK (1);
    }
#ifndef yyoverflow
  if (yyss != yyssa)
    YYSTACK_FREE (yyss);
#endif
  if (yymsg != yymsgbuf)
    YYSTACK_FREE (yymsg);
  return yyresult;
}

#line 3208 "cmDependsJavaParser.y"

/* End of grammar */

/*--------------------------------------------------------------------------*/
void cmDependsJava_yyerror(yyscan_t yyscanner, const char* message)
{
  yyGetParser->Error(message);
}
