summaryrefslogtreecommitdiff
path: root/Source/cmDependsJavaParser.y
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2005-01-28 17:13:58 -0500
committerAndy Cedilnik <andy.cedilnik@kitware.com>2005-01-28 17:13:58 -0500
commitab475733e4421869055446b5ab35b8055a1dfb52 (patch)
treee72ee04111ccfee48ade4179289f7607ecab8937 /Source/cmDependsJavaParser.y
parent3a67582df81e7e528894bc2a20976c860da4c915 (diff)
downloadcmake-ab475733e4421869055446b5ab35b8055a1dfb52.tar.gz
ENH: Initial import of java parser
Diffstat (limited to 'Source/cmDependsJavaParser.y')
-rw-r--r--Source/cmDependsJavaParser.y3226
1 files changed, 3226 insertions, 0 deletions
diff --git a/Source/cmDependsJavaParser.y b/Source/cmDependsJavaParser.y
new file mode 100644
index 0000000000..3b6c73bbc9
--- /dev/null
+++ b/Source/cmDependsJavaParser.y
@@ -0,0 +1,3226 @@
+%{
+/*=========================================================================
+
+ Program: CMake - Cross-Platform Makefile Generator
+ Module: $RCSfile$
+ Language: C++
+ Date: $Date$
+ Version: $Revision$
+
+ Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
+ See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the above copyright notices for more information.
+
+=========================================================================*/
+/*
+
+This file must be translated to C and modified to build everywhere.
+
+Run bison like this:
+
+ bison --yacc --name-prefix=cmDependsJava_yy --defines=cmDependsJavaParserTokens.h -ocmDependsJavaParser.cxx cmDependsJavaParser.y
+
+Modify cmDependsJavaParser.c:
+ - remove TABs
+
+*/
+
+/* Configure the parser to use a lexer object. */
+#define YYPARSE_PARAM yyscanner
+#define YYLEX_PARAM yyscanner
+#define YYERROR_VERBOSE 1
+#define cmDependsJava_yyerror(x) \
+ cmDependsJavaError(yyscanner, x)
+#define yyGetParser (cmDependsJava_yyget_extra(yyscanner))
+
+/*-------------------------------------------------------------------------*/
+#include "cmDependsJavaParserHelper.h" /* Interface to parser object. */
+#include "cmDependsJavaLexer.h" /* Interface to lexer object. */
+#include "cmDependsJavaParserTokens.h" /* Need YYSTYPE for YY_DECL. */
+
+/* Forward declare the lexer entry point. */
+YY_DECL;
+
+/* Internal utility functions. */
+static void cmDependsJavaError(yyscan_t yyscanner, const char* message);
+
+#define YYDEBUG 1
+#define YYMAXDEPTH 1000000
+
+
+#define CHECKEMPTY(cnt) yyGetParser->CheckEmpty(__LINE__, cnt, yyvsp);
+#define ELEMENTSTART(cnt) yyGetParser->PrepareElement(&yyval)
+#define STORECLASS(str) yyGetParser->AddClassFound(str); yyGetParser->DeallocateParserType(&(str))
+/* Disable some warnings in the generated code. */
+#ifdef __BORLANDC__
+# pragma warn -8004 /* Variable assigned a value that is not used. */
+#endif
+#ifdef _MSC_VER
+# pragma warning (disable: 4102) /* Unused goto label. */
+#endif
+%}
+
+/* Generate a reentrant parser object. */
+%pure_parser
+
+/*
+%union {
+ char* string;
+}
+*/
+
+/*-------------------------------------------------------------------------*/
+/* Tokens */
+%token ABSTRACT
+%token ASSERT
+%token BOOLEAN
+%token BREAK
+%token BYTE
+%token CASE
+%token CATCH
+%token CHAR
+%token CLASS
+%token CONTINUE
+%token DEFAULT
+%token DO
+%token DOUBLE
+%token ELSE
+%token EXTENDS
+%token FINAL
+%token FINALLY
+%token FLOAT
+%token FOR
+%token IF
+%token IMPLEMENTS
+%token IMPORT
+%token INSTANCEOF
+%token INT
+%token INTERFACE
+%token LONG
+%token NATIVE
+%token NEW
+%token PACKAGE
+%token PRIVATE
+%token PROTECTED
+%token PUBLIC
+%token RETURN
+%token SHORT
+%token STATIC
+%token STRICTFP
+%token SUPER
+%token SWITCH
+%token SYNCHRONIZED
+%token THIS
+%token THROW
+%token THROWS
+%token TRANSIENT
+%token TRY
+%token VOID
+%token VOLATILE
+%token WHILE
+
+%token BOOLEANLITERAL
+%token CHARACTERLITERAL
+%token DECIMALINTEGERLITERAL
+%token FLOATINGPOINTLITERAL
+%token HEXINTEGERLITERAL
+%token NULLLITERAL
+%token STRINGLITERAL
+
+%token NAME
+
+%token AND
+%token ANDAND
+%token ANDEQUALS
+%token BRACKETEND
+%token BRACKETSTART
+%token CARROT
+%token CARROTEQUALS
+%token COLON
+%token COMMA
+%token CURLYEND
+%token CURLYSTART
+%token DIVIDE
+%token DIVIDEEQUALS
+%token DOLLAR
+%token DOT
+%token EQUALS
+%token EQUALSEQUALS
+%token EXCLAMATION
+%token EXCLAMATIONEQUALS
+%token GREATER
+%token GTEQUALS
+%token GTGT
+%token GTGTEQUALS
+%token GTGTGT
+%token GTGTGTEQUALS
+%token LESLESEQUALS
+%token LESSTHAN
+%token LTEQUALS
+%token LTLT
+%token MINUS
+%token MINUSEQUALS
+%token MINUSMINUS
+%token PAREEND
+%token PARESTART
+%token PERCENT
+%token PERCENTEQUALS
+%token PIPE
+%token PIPEEQUALS
+%token PIPEPIPE
+%token PLUS
+%token PLUSEQUALS
+%token PLUSPLUS
+%token QUESTION
+%token SEMICOL
+%token TILDE
+%token TIMES
+%token TIMESEQUALS
+
+%token ERROR
+
+/*-------------------------------------------------------------------------*/
+/* grammar */
+%%
+
+Goal:
+CompilationUnit
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+Literal:
+IntegerLiteral
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+FLOATINGPOINTLITERAL
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+BOOLEANLITERAL
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+CHARACTERLITERAL
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+STRINGLITERAL
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+NULLLITERAL
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+IntegerLiteral:
+DECIMALINTEGERLITERAL
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+HEXINTEGERLITERAL
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+Type:
+PrimitiveType
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+ReferenceType
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+PrimitiveType:
+BYTE
+{
+ ELEMENTSTART(0);
+}
+|
+SHORT
+{
+ ELEMENTSTART(0);
+}
+|
+INT
+{
+ ELEMENTSTART(0);
+}
+|
+LONG
+{
+ ELEMENTSTART(0);
+}
+|
+CHAR
+{
+ ELEMENTSTART(0);
+}
+|
+FLOAT
+{
+ ELEMENTSTART(0);
+}
+|
+DOUBLE
+{
+ ELEMENTSTART(0);
+}
+|
+BOOLEAN
+{
+ ELEMENTSTART(0);
+}
+
+ReferenceType:
+ClassOrInterfaceType
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+ArrayType
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+ClassOrInterfaceType:
+Name
+{
+ ELEMENTSTART(1);
+ STORECLASS($<str>1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+ClassType:
+ClassOrInterfaceType
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+InterfaceType:
+ClassOrInterfaceType
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+ArrayType:
+PrimitiveType Dims
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+Name Dims
+{
+ ELEMENTSTART(2);
+ STORECLASS($<str>1);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+Name:
+SimpleName
+{
+ ELEMENTSTART(1);
+ $<str>$ = $<str>1;
+}
+|
+QualifiedName
+{
+ ELEMENTSTART(1);
+ $<str>$ = $<str>1;
+}
+
+SimpleName:
+Identifier
+{
+ ELEMENTSTART(1);
+ $<str>$ = $<str>1;
+}
+
+Identifier:
+NAME
+{
+ ELEMENTSTART(1);
+ $<str>$ = $<str>1;
+}
+|
+DOLLAR NAME
+{
+ ELEMENTSTART(2);
+ $<str>$ = $<str>2;
+}
+
+QualifiedName:
+Name DOT Identifier
+{
+ ELEMENTSTART(3);
+ yyGetParser->AddClassFound($<str>1);
+ yyGetParser->UpdateCombine($<str>1, $<str>3);
+ yyGetParser->DeallocateParserType(&($<str>1));
+ $<str>$ = const_cast<char*>(yyGetParser->GetCurrentCombine());
+}
+|
+Name DOT CLASS
+{
+ ELEMENTSTART(3);
+ STORECLASS($<str>1);
+ CHECKEMPTY(3);
+ yyGetParser->SetCurrentCombine("");
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+Name DOT THIS
+{
+ ELEMENTSTART(3);
+ STORECLASS($<str>1);
+ yyGetParser->SetCurrentCombine("");
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+SimpleType DOT CLASS
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+SimpleType:
+PrimitiveType
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+VOID
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+CompilationUnit:
+PackageDeclarationopt ImportDeclarations TypeDeclarations
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+PackageDeclarationopt:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+PackageDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+ImportDeclarations:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+ImportDeclarations ImportDeclaration
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+TypeDeclarations:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+TypeDeclarations TypeDeclaration
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+PackageDeclaration:
+PACKAGE Name SEMICOL
+{
+ ELEMENTSTART(3);
+ yyGetParser->SetCurrentPackage($<str>2);
+ yyGetParser->DeallocateParserType(&($<str>2));
+ yyGetParser->SetCurrentCombine("");
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+ImportDeclaration:
+SingleTypeImportDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+TypeImportOnDemandDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+SingleTypeImportDeclaration:
+IMPORT Name SEMICOL
+{
+ ELEMENTSTART(3);
+ yyGetParser->AddPackagesImport($<str>2);
+ yyGetParser->DeallocateParserType(&($<str>2));
+ yyGetParser->SetCurrentCombine("");
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+TypeImportOnDemandDeclaration:
+IMPORT Name DOT TIMES SEMICOL
+{
+ ELEMENTSTART(5);
+ std::string str = $<str>2;
+ str += ".*";
+ yyGetParser->AddPackagesImport(str.c_str());
+ yyGetParser->DeallocateParserType(&($<str>2));
+ yyGetParser->SetCurrentCombine("");
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+TypeDeclaration:
+ClassDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+InterfaceDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+SEMICOL
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+Modifiers:
+Modifier
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+Modifiers Modifier
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+Modifier:
+PUBLIC | PROTECTED | PRIVATE |
+STATIC |
+ABSTRACT | FINAL | NATIVE | SYNCHRONIZED | TRANSIENT | VOLATILE |
+STRICTFP
+
+ClassHeader:
+Modifiersopt CLASS Identifier
+{
+ yyGetParser->StartClass($<str>3);
+ ELEMENTSTART(3);
+ yyGetParser->DeallocateParserType(&($<str>3));
+ CHECKEMPTY(3);
+}
+
+
+ClassDeclaration:
+ClassHeader ClassBody
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+ yyGetParser->EndClass();
+}
+|
+ClassHeader Interfaces ClassBody
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+ yyGetParser->EndClass();
+}
+|
+ClassHeader Super ClassBody
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+ yyGetParser->EndClass();
+}
+|
+ClassHeader Super Interfaces ClassBody
+{
+ ELEMENTSTART(4);
+ CHECKEMPTY(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+ yyGetParser->EndClass();
+}
+
+Modifiersopt:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+Modifiers
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+Super:
+EXTENDS ClassType
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+Interfaces:
+IMPLEMENTS InterfaceTypeList
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+InterfaceTypeList:
+InterfaceType
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+InterfaceTypeList COMMA InterfaceType
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+ClassBody:
+CURLYSTART ClassBodyDeclarations CURLYEND
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+ClassBodyDeclarations:
+{
+ ELEMENTSTART(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+ClassBodyDeclarations ClassBodyDeclaration
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+ClassBodyDeclaration:
+ClassMemberDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+StaticInitializer
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+ConstructorDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+TypeDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+ClassMemberDeclaration:
+FieldDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+MethodDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+FieldDeclaration:
+Modifiersopt Type VariableDeclarators SEMICOL
+{
+ ELEMENTSTART(4);
+}
+
+VariableDeclarators:
+VariableDeclarator
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+VariableDeclarators COMMA VariableDeclarator
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+VariableDeclarator:
+VariableDeclaratorId
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+VariableDeclaratorId EQUALS VariableInitializer
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+VariableDeclaratorId:
+Identifier
+{
+ ELEMENTSTART(1);
+ yyGetParser->DeallocateParserType(&($<str>1));
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+VariableDeclaratorId BRACKETSTART BRACKETEND
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+VariableInitializer:
+Expression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+ArrayInitializer
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+MethodDeclaration:
+MethodHeader SEMICOL
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+MethodHeader MethodBody
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+MethodHeader MethodBody SEMICOL
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+
+MethodHeader:
+Modifiersopt Type MethodDeclarator Throwsopt
+{
+ ELEMENTSTART(4);
+ CHECKEMPTY(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+Modifiersopt VOID MethodDeclarator Throwsopt
+{
+ ELEMENTSTART(4);
+ CHECKEMPTY(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+Throwsopt:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+Throws
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+MethodDeclarator:
+Identifier PARESTART FormalParameterListopt PAREEND
+{
+ ELEMENTSTART(4);
+ yyGetParser->DeallocateParserType(&($<str>1));
+ CHECKEMPTY(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+MethodDeclarator BRACKETSTART BRACKETEND
+{
+ ELEMENTSTART(3);
+
+}
+
+FormalParameterListopt:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+FormalParameterList
+
+FormalParameterList:
+FormalParameter
+{
+ ELEMENTSTART(1);
+
+}
+|
+FormalParameterList COMMA FormalParameter
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+FormalParameter:
+Modifiersopt Type VariableDeclaratorId
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+Throws:
+THROWS ClassTypeList
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ClassTypeList:
+ClassType
+{
+ ELEMENTSTART(1);
+
+}
+|
+ClassTypeList COMMA ClassType
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+MethodBody:
+Block
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+StaticInitializer:
+STATIC Block
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ConstructorDeclaration:
+Modifiersopt ConstructorDeclarator Throwsopt ConstructorBody
+{
+ ELEMENTSTART(4);
+ CHECKEMPTY(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+Modifiersopt ConstructorDeclarator Throwsopt ConstructorBody SEMICOL
+{
+ ELEMENTSTART(5);
+ CHECKEMPTY(5);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ConstructorDeclarator:
+SimpleName PARESTART FormalParameterListopt PAREEND
+{
+ ELEMENTSTART(4);
+ yyGetParser->DeallocateParserType(&($<str>1));
+ CHECKEMPTY(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ConstructorBody:
+CURLYSTART ExplicitConstructorInvocationopt BlockStatementsopt CURLYEND
+{
+ ELEMENTSTART(4);
+ CHECKEMPTY(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ExplicitConstructorInvocationopt:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ExplicitConstructorInvocationopt ExplicitConstructorInvocation
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ExplicitConstructorInvocation:
+THIS PARESTART ArgumentListopt PAREEND SEMICOL
+{
+ ELEMENTSTART(5);
+ CHECKEMPTY(5);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+SUPER PARESTART ArgumentListopt PAREEND SEMICOL
+{
+ ELEMENTSTART(5);
+ CHECKEMPTY(5);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+InterfaceHeader:
+Modifiersopt INTERFACE Identifier
+{
+ yyGetParser->StartClass($<str>3);
+ ELEMENTSTART(3);
+ yyGetParser->DeallocateParserType(&($<str>3));
+ CHECKEMPTY(3);
+}
+
+InterfaceDeclaration:
+InterfaceHeader ExtendsInterfacesopt InterfaceBody
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+ yyGetParser->EndClass();
+}
+
+ExtendsInterfacesopt:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+}
+|
+ExtendsInterfaces
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ExtendsInterfaces:
+EXTENDS InterfaceType
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ExtendsInterfaces COMMA InterfaceType
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+InterfaceBody:
+CURLYSTART InterfaceMemberDeclarations CURLYEND
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+InterfaceMemberDeclarations:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+InterfaceMemberDeclarations InterfaceMemberDeclaration
+{
+ ELEMENTSTART(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+InterfaceMemberDeclaration:
+ConstantDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+AbstractMethodDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ClassDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ClassDeclaration SEMICOL
+{
+ ELEMENTSTART(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+InterfaceDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+InterfaceDeclaration SEMICOL
+{
+ ELEMENTSTART(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ConstantDeclaration:
+FieldDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+AbstractMethodDeclaration:
+MethodHeader Semicols
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+Semicols:
+SEMICOL
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+Semicols SEMICOL
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ArrayInitializer:
+CURLYSTART VariableInitializersOptional CURLYEND
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+VariableInitializersOptional:
+{
+ ELEMENTSTART(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+VariableInitializers
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+VariableInitializers COMMA
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+VariableInitializers:
+VariableInitializer
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+VariableInitializers COMMA VariableInitializer
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+Block:
+CURLYSTART BlockStatementsopt CURLYEND
+{
+ ELEMENTSTART(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+BlockStatementsopt:
+{
+ ELEMENTSTART(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+BlockStatements
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+BlockStatements:
+BlockStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+BlockStatements BlockStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+BlockStatement:
+LocalVariableDeclarationStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+Statement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ClassDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+LocalVariableDeclarationStatement:
+LocalVariableDeclaration SEMICOL
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+LocalVariableDeclaration:
+Modifiers Type VariableDeclarators
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+Type VariableDeclarators
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+Statement:
+StatementWithoutTrailingSubstatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+LabeledStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+IfThenStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+IfThenElseStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+WhileStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ForStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+StatementNoShortIf:
+StatementWithoutTrailingSubstatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+LabeledStatementNoShortIf
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+IfThenElseStatementNoShortIf
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+WhileStatementNoShortIf
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ForStatementNoShortIf
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+StatementWithoutTrailingSubstatement:
+Block
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+EmptyStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ExpressionStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+SwitchStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+DoStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+BreakStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ContinueStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ReturnStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+SynchronizedStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ThrowStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+TryStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+AssertStatement
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+EmptyStatement:
+SEMICOL
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+LabeledStatement:
+Identifier COLON Statement
+{
+ ELEMENTSTART(3);
+ yyGetParser->DeallocateParserType(&($<str>1));
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+LabeledStatementNoShortIf:
+Identifier COLON StatementNoShortIf
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ExpressionStatement:
+StatementExpression SEMICOL
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+StatementExpression:
+Assignment
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+PreIncrementExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+PreDecrementExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+PostIncrementExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+PostDecrementExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+MethodInvocation
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ClassInstanceCreationExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+IfThenStatement:
+IF PARESTART Expression PAREEND Statement
+{
+ ELEMENTSTART(5);
+ CHECKEMPTY(5);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+IfThenElseStatement:
+IF PARESTART Expression PAREEND StatementNoShortIf ELSE Statement
+{
+ ELEMENTSTART(7);
+ CHECKEMPTY(7);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+IfThenElseStatementNoShortIf:
+IF PARESTART Expression PAREEND StatementNoShortIf ELSE StatementNoShortIf
+{
+ ELEMENTSTART(7);
+ CHECKEMPTY(7);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+SwitchStatement:
+SWITCH PARESTART Expression PAREEND SwitchBlock
+{
+ ELEMENTSTART(5);
+
+}
+
+SwitchBlock:
+CURLYSTART SwitchBlockStatementGroups SwitchLabelsopt CURLYEND
+{
+ ELEMENTSTART(4);
+
+}
+
+SwitchLabelsopt:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+SwitchLabels
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+SwitchBlockStatementGroups:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+SwitchBlockStatementGroups SwitchBlockStatementGroup
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+SwitchBlockStatementGroup:
+SwitchLabels BlockStatements
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+SwitchLabels:
+SwitchLabel
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+SwitchLabels SwitchLabel
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+SwitchLabel:
+CASE ConstantExpression COLON
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+DEFAULT COLON
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+WhileStatement:
+WHILE PARESTART Expression PAREEND Statement
+{
+ ELEMENTSTART(5);
+
+}
+
+WhileStatementNoShortIf:
+WHILE PARESTART Expression PAREEND StatementNoShortIf
+{
+ ELEMENTSTART(5);
+
+}
+
+DoStatement:
+DO Statement WHILE PARESTART Expression PAREEND SEMICOL
+{
+ ELEMENTSTART(7);
+
+}
+
+ForStatement:
+FOR PARESTART ForInitopt SEMICOL Expressionopt SEMICOL ForUpdateopt PAREEND
+Statement
+{
+ ELEMENTSTART(9);
+
+}
+
+ForUpdateopt:
+{
+ ELEMENTSTART(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ForUpdate
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ForInitopt:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ForInit
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ForStatementNoShortIf:
+FOR PARESTART ForInitopt SEMICOL Expressionopt SEMICOL ForUpdateopt PAREEND
+StatementNoShortIf
+{
+ ELEMENTSTART(9);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+Expressionopt:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+Expression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ForInit:
+StatementExpressionList
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+LocalVariableDeclaration
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ForUpdate:
+StatementExpressionList
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+StatementExpressionList:
+StatementExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+StatementExpressionList COMMA StatementExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+AssertStatement:
+ASSERT Expression SEMICOL
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ASSERT Expression COLON Expression SEMICOL
+{
+ ELEMENTSTART(5);
+ CHECKEMPTY(5);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+BreakStatement:
+BREAK Identifieropt SEMICOL
+{
+ ELEMENTSTART(3);
+ yyGetParser->DeallocateParserType(&($<str>2));
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+Identifieropt:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+Identifier
+{
+ ELEMENTSTART(1);
+
+}
+
+ContinueStatement:
+CONTINUE Identifieropt SEMICOL
+{
+ ELEMENTSTART(3);
+ yyGetParser->DeallocateParserType(&($<str>2));
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ReturnStatement:
+RETURN Expressionopt SEMICOL
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ThrowStatement:
+THROW Expression SEMICOL
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+SynchronizedStatement:
+SYNCHRONIZED PARESTART Expression PAREEND Block
+{
+ ELEMENTSTART(5);
+ CHECKEMPTY(5);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+TryStatement:
+TRY Block Catches
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+TRY Block Catchesopt Finally
+{
+ ELEMENTSTART(4);
+ CHECKEMPTY(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+Catchesopt:
+{
+ ELEMENTSTART(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+Catches
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+Catches:
+CatchClause
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+Catches CatchClause
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+CatchClause:
+CATCH PARESTART FormalParameter PAREEND Block
+{
+ ELEMENTSTART(5);
+
+}
+
+Finally:
+FINALLY Block
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+Primary:
+PrimaryNoNewArray
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ArrayCreationExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+PrimaryNoNewArray:
+Literal
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+THIS
+{
+ ELEMENTSTART(1);
+
+}
+|
+PARESTART Expression PAREEND
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ClassInstanceCreationExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+FieldAccess
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+MethodInvocation
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ArrayAccess
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ClassInstanceCreationExpression:
+New ClassType PARESTART ArgumentListopt PAREEND ClassBodyOpt
+{
+ ELEMENTSTART(6);
+ CHECKEMPTY(6);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ClassBodyOpt:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ClassBody
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ArgumentListopt:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ArgumentList
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ArgumentList:
+Expression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ArgumentList COMMA Expression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ArrayCreationExpression:
+New PrimitiveType DimExprs Dimsopt
+{
+ ELEMENTSTART(4);
+ CHECKEMPTY(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+New ClassOrInterfaceType DimExprs Dimsopt
+{
+ ELEMENTSTART(4);
+ CHECKEMPTY(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+New PrimitiveType Dims ArrayInitializer
+{
+ ELEMENTSTART(4);
+ CHECKEMPTY(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+New ClassOrInterfaceType Dims ArrayInitializer
+{
+ ELEMENTSTART(4);
+ CHECKEMPTY(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+Dimsopt:
+{
+ ELEMENTSTART(0);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+Dims
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+DimExprs:
+DimExpr
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+DimExprs DimExpr
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+DimExpr:
+BRACKETSTART Expression BRACKETEND
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+Dims:
+BRACKETSTART BRACKETEND
+{
+ ELEMENTSTART(2);
+
+}
+|
+Dims BRACKETSTART BRACKETEND
+{
+ ELEMENTSTART(3);
+
+}
+
+FieldAccess:
+Primary DOT Identifier
+{
+ ELEMENTSTART(3);
+ yyGetParser->DeallocateParserType(&($<str>3));
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+SUPER DOT Identifier
+{
+ ELEMENTSTART(3);
+ yyGetParser->DeallocateParserType(&($<str>3));
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+THIS DOT Identifier
+{
+ ELEMENTSTART(3);
+ yyGetParser->DeallocateParserType(&($<str>3));
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+Primary DOT THIS
+{
+ ELEMENTSTART(3);
+ yyGetParser->DeallocateParserType(&($<str>3));
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+MethodInvocation:
+Name PARESTART ArgumentListopt PAREEND
+{
+ ELEMENTSTART(4);
+ yyGetParser->DeallocateParserType(&($<str>1));
+ CHECKEMPTY(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+Primary DOT Identifier PARESTART ArgumentListopt PAREEND
+{
+ ELEMENTSTART(6);
+ yyGetParser->DeallocateParserType(&($<str>1));
+ yyGetParser->DeallocateParserType(&($<str>3));
+ CHECKEMPTY(6);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+SUPER DOT Identifier PARESTART ArgumentListopt PAREEND
+{
+ ELEMENTSTART(6);
+ yyGetParser->DeallocateParserType(&($<str>3));
+ CHECKEMPTY(6);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+THIS DOT Identifier PARESTART ArgumentListopt PAREEND
+{
+ ELEMENTSTART(6);
+ yyGetParser->DeallocateParserType(&($<str>3));
+ CHECKEMPTY(6);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ArrayAccess:
+Name BRACKETSTART Expression BRACKETEND
+{
+ ELEMENTSTART(4);
+ yyGetParser->DeallocateParserType(&($<str>1));
+ CHECKEMPTY(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+PrimaryNoNewArray BRACKETSTART Expression BRACKETEND
+{
+ ELEMENTSTART(4);
+ CHECKEMPTY(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+PostfixExpression:
+Primary
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+Name
+{
+ ELEMENTSTART(1);
+ yyGetParser->DeallocateParserType(&($<str>1));
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ArrayType DOT CLASS
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+PostIncrementExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+PostDecrementExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+PostIncrementExpression:
+PostfixExpression PLUSPLUS
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+PostDecrementExpression:
+PostfixExpression MINUSMINUS
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+UnaryExpression:
+PreIncrementExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+PreDecrementExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+PLUS UnaryExpression
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+MINUS UnaryExpression
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+UnaryExpressionNotPlusMinus
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+PreIncrementExpression:
+PLUSPLUS UnaryExpression
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+PreDecrementExpression:
+MINUSMINUS UnaryExpression
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+UnaryExpressionNotPlusMinus:
+PostfixExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+TILDE UnaryExpression
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+EXCLAMATION UnaryExpression
+{
+ ELEMENTSTART(2);
+ CHECKEMPTY(2);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+CastExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+CastExpression:
+PARESTART PrimitiveType Dimsopt PAREEND UnaryExpression
+{
+ ELEMENTSTART(5);
+ CHECKEMPTY(5);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+PARESTART Expression PAREEND UnaryExpressionNotPlusMinus
+{
+ ELEMENTSTART(4);
+ CHECKEMPTY(4);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+PARESTART Name Dims PAREEND UnaryExpressionNotPlusMinus
+{
+ ELEMENTSTART(5);
+
+}
+
+MultiplicativeExpression:
+UnaryExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+MultiplicativeExpression TIMES UnaryExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+MultiplicativeExpression DIVIDE UnaryExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+MultiplicativeExpression PERCENT UnaryExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+AdditiveExpression:
+MultiplicativeExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+AdditiveExpression PLUS MultiplicativeExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+AdditiveExpression MINUS MultiplicativeExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ShiftExpression:
+AdditiveExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ShiftExpression LTLT AdditiveExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ShiftExpression GTGT AdditiveExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ShiftExpression GTGTGT AdditiveExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+RelationalExpression:
+ShiftExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+RelationalExpression LESSTHAN ShiftExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+RelationalExpression GREATER ShiftExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+RelationalExpression LTEQUALS ShiftExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+RelationalExpression GTEQUALS ShiftExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+RelationalExpression INSTANCEOF ReferenceType
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+EqualityExpression:
+RelationalExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+EqualityExpression EQUALSEQUALS RelationalExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+EqualityExpression EXCLAMATIONEQUALS RelationalExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+AndExpression:
+EqualityExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+AndExpression AND EqualityExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ExclusiveOrExpression:
+AndExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ExclusiveOrExpression CARROT AndExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+InclusiveOrExpression:
+ExclusiveOrExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+InclusiveOrExpression PIPE ExclusiveOrExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ConditionalAndExpression:
+InclusiveOrExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ConditionalAndExpression ANDAND InclusiveOrExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ConditionalOrExpression:
+ConditionalAndExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ConditionalOrExpression PIPEPIPE ConditionalAndExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ConditionalExpression:
+ConditionalOrExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ConditionalOrExpression QUESTION Expression COLON ConditionalExpression
+{
+ ELEMENTSTART(5);
+ CHECKEMPTY(5);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+AssignmentExpression:
+ConditionalExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+Assignment
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+Assignment:
+LeftHandSide AssignmentOperator AssignmentExpression
+{
+ ELEMENTSTART(3);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+LeftHandSide:
+Name
+{
+ ELEMENTSTART(1);
+ yyGetParser->DeallocateParserType(&($<str>1));
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+FieldAccess
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ArrayAccess
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+AssignmentOperator:
+EQUALS
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+TIMESEQUALS
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+DIVIDEEQUALS
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+PERCENTEQUALS
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+PLUSEQUALS
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+MINUSEQUALS
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+LESLESEQUALS
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+GTGTEQUALS
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+GTGTGTEQUALS
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+ANDEQUALS
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+CARROTEQUALS
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+PIPEEQUALS
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+Expression:
+AssignmentExpression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+ConstantExpression:
+Expression
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+New:
+NEW
+{
+ ELEMENTSTART(1);
+ CHECKEMPTY(1);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+|
+Name DOT NEW
+{
+ ELEMENTSTART(3);
+ STORECLASS($<str>1);
+ CHECKEMPTY(3);
+ $<str>$ = 0;
+ yyGetParser->SetCurrentCombine("");
+
+}
+
+%%
+/* End of grammar */
+
+/*--------------------------------------------------------------------------*/
+void cmDependsJavaError(yyscan_t yyscanner, const char* message)
+{
+ yyGetParser->Error(message);
+}
+