diff --git a/pmd/etc/Java1.2-b.jjt b/pmd/etc/Java1.2-b.jjt new file mode 100644 index 0000000000..33efc1f41d --- /dev/null +++ b/pmd/etc/Java1.2-b.jjt @@ -0,0 +1,1147 @@ +/** + * This file is a modified version of one originally found in the + * VTransformer Examples directory of JavaCC1_1. It has been + * modified to accept Java source code for Java 1.2. Basically, + * this means a new key word was added, 'strictfp', and that keyword + * added to the appropriate productions and LOOKAHEADs (where other, + * similar keywords are listed as possible choices). This involved + * changing 11 lines. + * + * Some other minor changes were made, which can be found by doing + * a search on 'DW, 7/99'. + * + * The goal of this effort was for the grammar to be able to parse + * any legal Java 1.2 source code. It does not reject all illegal + * cases, but neither did the original. Plus, when it comes to + * the new 'strictfp' keyword, the Java Compiler from Sun (JDK1.2.1) + * also does not reject all illegal cases, as defined by the + * "Updates" document found at + * http://java.sun.com/docs/books/jls/strictfp-changes.pdf + * (see the testcases.txt file for details). + * + * David Williams, 7/99 + * =================================================================== + * + * + * Copyright (C) 1996, 1997 Sun Microsystems Inc. + * + * Use of this file and the system it is part of is constrained by the + * file COPYRIGHT in the root directory of this system. You may, however, + * make any modifications you wish to this file. + * + * Java files generated by running JavaCC on this file (or modified versions + * of this file) may be used in exactly the same manner as Java files + * generated from any grammar developed by you. + * + * Author: Sriram Sankar + * Date: 3/5/97 + * + * This file contains a Java grammar and actions that implement a front-end. + * + */ + +options { + JAVA_UNICODE_ESCAPE = true; + + STATIC=false; + MULTI=true; + VISITOR=true; + NODE_USES_PARSER=true; + NODE_PACKAGE="com.infoether.pmd.ast"; +} + +PARSER_BEGIN(JavaParser) + +public class JavaParser +{ +// added a main. DW, 7/99 + public static void main (String [] args) { + JavaParser parser; + String filename = null; + long initTime = 0; + long parseTime = 0; + long startTime = 0; + long stopTime = 0; + if (args.length == 0) + { + System.out.println("Java Parser Version 1.1 (for Java1.2 code): Reading from standard input . . ."); + parser = new JavaParser(System.in); + } else if (args.length == 1) + { + filename = args[0]; + System.out.println("Java Parser Version 1.1 (for Java1.2 code): Reading from file " + filename + " . . ."); + try + { + startTime = System.currentTimeMillis(); + parser = new JavaParser(new java.io.FileInputStream(filename)); + stopTime = System.currentTimeMillis(); + initTime = stopTime - startTime; + } catch (java.io.FileNotFoundException e) + { + System.out.println("Java Parser Version 1.1 (for Java1.2 code): File " + filename + " not found."); + return; + } + } else + { + System.out.println("Java Parser Version 1.1 (for Java1.2 code): Usage is one of:"); + System.out.println(" java JavaParser < inputfile"); + System.out.println("OR"); + System.out.println(" java JavaParser inputfile"); + return; + } + try + { + startTime = System.currentTimeMillis(); + parser.CompilationUnit(); + stopTime = System.currentTimeMillis(); + parseTime = stopTime - startTime; + System.out.println("Java Parser Version 1.1 (for Java1.2 code): "); + System.out.println(" Java program parsed " + filename + " successfully in " + (initTime + parseTime) + " ms."); + System.out.println(" parser initialization time was " + initTime + " ms."); + System.out.println(" parser parse time was " + parseTime + " ms."); + } catch (ParseException e) + { + System.out.println(e.getMessage()); + System.out.println("Java Parser Version 1.1 (for Java1.2 code): Encountered errors during parse."); + } + } + +} + + +PARSER_END(JavaParser) + + +/* WHITE SPACE */ + +SPECIAL_TOKEN : +{ + " " +| "\t" +| "\n" +| "\r" +| "\f" +} + +/* COMMENTS */ + +MORE : +{ + "//" : IN_SINGLE_LINE_COMMENT +| + <"/**" ~["/"]> { input_stream.backup(1); } : IN_FORMAL_COMMENT +| + "/*" : IN_MULTI_LINE_COMMENT +} + + +SPECIAL_TOKEN : +{ + : DEFAULT +} + + +SPECIAL_TOKEN : +{ + : DEFAULT +} + + +SPECIAL_TOKEN : +{ + : DEFAULT +} + + +MORE : +{ + < ~[] > +} + +/* RESERVED WORDS AND LITERALS */ + +TOKEN : +{ + < ABSTRACT: "abstract" > +| < BOOLEAN: "boolean" > +| < BREAK: "break" > +| < BYTE: "byte" > +| < CASE: "case" > +| < CATCH: "catch" > +| < CHAR: "char" > +| < CLASS: "class" > +| < CONST: "const" > +| < CONTINUE: "continue" > +| < _DEFAULT: "default" > +| < DO: "do" > +| < DOUBLE: "double" > +| < ELSE: "else" > +| < EXTENDS: "extends" > +| < FALSE: "false" > +| < FINAL: "final" > +| < FINALLY: "finally" > +| < FLOAT: "float" > +| < FOR: "for" > +| < GOTO: "goto" > +| < IF: "if" > +| < IMPLEMENTS: "implements" > +| < IMPORT: "import" > +| < INSTANCEOF: "instanceof" > +| < INT: "int" > +| < INTERFACE: "interface" > +| < LONG: "long" > +| < NATIVE: "native" > +| < NEW: "new" > +| < NULL: "null" > +| < PACKAGE: "package"> +| < PRIVATE: "private" > +| < PROTECTED: "protected" > +| < PUBLIC: "public" > +| < RETURN: "return" > +| < SHORT: "short" > +| < STATIC: "static" > +| < SUPER: "super" > +| < SWITCH: "switch" > +| < SYNCHRONIZED: "synchronized" > +| < THIS: "this" > +| < THROW: "throw" > +| < THROWS: "throws" > +| < TRANSIENT: "transient" > +| < TRUE: "true" > +| < TRY: "try" > +| < VOID: "void" > +| < VOLATILE: "volatile" > +| < WHILE: "while" > +| < STRICTFP: "strictfp" > +} + +/* LITERALS */ + +TOKEN : +{ + < INTEGER_LITERAL: + (["l","L"])? + | (["l","L"])? + | (["l","L"])? + > +| + < #DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])* > +| + < #HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+ > +| + < #OCTAL_LITERAL: "0" (["0"-"7"])* > +| + < FLOATING_POINT_LITERAL: + (["0"-"9"])+ "." (["0"-"9"])* ()? (["f","F","d","D"])? + | "." (["0"-"9"])+ ()? (["f","F","d","D"])? + | (["0"-"9"])+ (["f","F","d","D"])? + | (["0"-"9"])+ ()? ["f","F","d","D"] + > +| + < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ > +| + < CHARACTER_LITERAL: + "'" + ( (~["'","\\","\n","\r"]) + | ("\\" + ( ["n","t","b","r","f","\\","'","\""] + | ["0"-"7"] ( ["0"-"7"] )? + | ["0"-"3"] ["0"-"7"] ["0"-"7"] + ) + ) + ) + "'" + > +| + < STRING_LITERAL: + "\"" + ( (~["\"","\\","\n","\r"]) + | ("\\" + ( ["n","t","b","r","f","\\","'","\""] + | ["0"-"7"] ( ["0"-"7"] )? + | ["0"-"3"] ["0"-"7"] ["0"-"7"] + ) + ) + )* + "\"" + > +} + +/* IDENTIFIERS */ + +TOKEN : +{ + < IDENTIFIER: (|)* > +| + < #LETTER: + [ + "\u0024", + "\u0041"-"\u005a", + "\u005f", + "\u0061"-"\u007a", + "\u00c0"-"\u00d6", + "\u00d8"-"\u00f6", + "\u00f8"-"\u00ff", + "\u0100"-"\u1fff", + "\u3040"-"\u318f", + "\u3300"-"\u337f", + "\u3400"-"\u3d2d", + "\u4e00"-"\u9fff", + "\uf900"-"\ufaff" + ] + > +| + < #DIGIT: + [ + "\u0030"-"\u0039", + "\u0660"-"\u0669", + "\u06f0"-"\u06f9", + "\u0966"-"\u096f", + "\u09e6"-"\u09ef", + "\u0a66"-"\u0a6f", + "\u0ae6"-"\u0aef", + "\u0b66"-"\u0b6f", + "\u0be7"-"\u0bef", + "\u0c66"-"\u0c6f", + "\u0ce6"-"\u0cef", + "\u0d66"-"\u0d6f", + "\u0e50"-"\u0e59", + "\u0ed0"-"\u0ed9", + "\u1040"-"\u1049" + ] + > +} + +/* SEPARATORS */ + +TOKEN : +{ + < LPAREN: "(" > +| < RPAREN: ")" > +| < LBRACE: "{" > +| < RBRACE: "}" > +| < LBRACKET: "[" > +| < RBRACKET: "]" > +| < SEMICOLON: ";" > +| < COMMA: "," > +| < DOT: "." > +} + +/* OPERATORS */ + +TOKEN : +{ + < ASSIGN: "=" > +| < GT: ">" > +| < LT: "<" > +| < BANG: "!" > +| < TILDE: "~" > +| < HOOK: "?" > +| < COLON: ":" > +| < EQ: "==" > +| < LE: "<=" > +| < GE: ">=" > +| < NE: "!=" > +| < SC_OR: "||" > +| < SC_AND: "&&" > +| < INCR: "++" > +| < DECR: "--" > +| < PLUS: "+" > +| < MINUS: "-" > +| < STAR: "*" > +| < SLASH: "/" > +| < BIT_AND: "&" > +| < BIT_OR: "|" > +| < XOR: "^" > +| < REM: "%" > +| < LSHIFT: "<<" > +| < RSIGNEDSHIFT: ">>" > +| < RUNSIGNEDSHIFT: ">>>" > +| < PLUSASSIGN: "+=" > +| < MINUSASSIGN: "-=" > +| < STARASSIGN: "*=" > +| < SLASHASSIGN: "/=" > +| < ANDASSIGN: "&=" > +| < ORASSIGN: "|=" > +| < XORASSIGN: "^=" > +| < REMASSIGN: "%=" > +| < LSHIFTASSIGN: "<<=" > +| < RSIGNEDSHIFTASSIGN: ">>=" > +| < RUNSIGNEDSHIFTASSIGN: ">>>=" > +} + + +/***************************************** + * THE JAVA LANGUAGE GRAMMAR STARTS HERE * + *****************************************/ + +/* + * Program structuring syntax follows. + */ + +ASTCompilationUnit CompilationUnit() : +{} +{ + [ PackageDeclaration() ] + ( ImportDeclaration() )* + ( TypeDeclaration() )* + + { + return jjtThis; + } +} + +void PackageDeclaration() : +{} +{ + "package" Name() ";" +} + +void ImportDeclaration() : +{} +{ + "import" Name() [ "." "*" ] ";" +} + +void TypeDeclaration() : +{} +{ + LOOKAHEAD( ( "abstract" | "final" | "public" | "strictfp" )* "class" ) + ClassDeclaration() +| + InterfaceDeclaration() +| + ";" +} + + +/* + * Declaration syntax follows. + */ + +void ClassDeclaration() : +{} +{ + ( "abstract" | "final" | "public" | "strictfp")* + UnmodifiedClassDeclaration() +} + +void UnmodifiedClassDeclaration() : +{} +{ + "class" [ "extends" Name() ] [ "implements" NameList() ] + ClassBody() +} + +void ClassBody() : +{} +{ + "{" ( ClassBodyDeclaration() )* "}" +} + +void NestedClassDeclaration() : +{} +{ + ( "static" | "abstract" | "final" | "public" | "protected" | "private" | "strictfp")* + UnmodifiedClassDeclaration() +} + +void ClassBodyDeclaration() : +{} +{ + LOOKAHEAD(2) + Initializer() +| + LOOKAHEAD( ( "static" | "abstract" | "final" | "public" | "protected" | "private" | "strictfp")* "class" ) + NestedClassDeclaration() +| + LOOKAHEAD( ( "static" | "abstract" | "final" | "public" | "protected" | "private" | "strictfp")* "interface" ) + NestedInterfaceDeclaration() +| + LOOKAHEAD( [ "public" | "protected" | "private" ] Name() "(" ) + ConstructorDeclaration() +| + LOOKAHEAD( MethodDeclarationLookahead() ) + MethodDeclaration() +| + FieldDeclaration() +} + +// This production is to determine lookahead only. +void MethodDeclarationLookahead() : +{} +{ + ( "public" | "protected" | "private" | "static" | "abstract" | "final" | "native" | "synchronized" | "strictfp")* + ResultType() "(" +} + +void InterfaceDeclaration() : +{} +{ + ( "abstract" | "public" | "strictfp")* + UnmodifiedInterfaceDeclaration() +} + +void NestedInterfaceDeclaration() : +{} +{ + ( "static" | "abstract" | "final" | "public" | "protected" | "private" | "strictfp")* + UnmodifiedInterfaceDeclaration() +} + +void UnmodifiedInterfaceDeclaration() : +{} +{ + "interface" [ "extends" NameList() ] + "{" ( InterfaceMemberDeclaration() )* "}" +} + +void InterfaceMemberDeclaration() : +{} +{ + LOOKAHEAD( ( "static" | "abstract" | "final" | "public" | "protected" | "private" | "strictfp")* "class" ) + NestedClassDeclaration() +| + LOOKAHEAD( ( "static" | "abstract" | "final" | "public" | "protected" | "private" | "strictfp")* "interface" ) + NestedInterfaceDeclaration() +| + LOOKAHEAD( MethodDeclarationLookahead() ) + MethodDeclaration() +| + FieldDeclaration() +} + +void FieldDeclaration() : +{} +{ + ( "public" | "protected" | "private" | "static" | "final" | "transient" | "volatile" )* + Type() VariableDeclarator() ( "," VariableDeclarator() )* ";" +} + +void VariableDeclarator() : +{} +{ + VariableDeclaratorId() [ "=" VariableInitializer() ] +} + +void VariableDeclaratorId() : +{} +{ + ( "[" "]" )* +} + +void VariableInitializer() : +{} +{ + ArrayInitializer() +| + Expression() +} + +void ArrayInitializer() : +{} +{ + "{" [ VariableInitializer() ( LOOKAHEAD(2) "," VariableInitializer() )* ] [ "," ] "}" +} + +void MethodDeclaration() : +{} +{ + ( "public" | "protected" | "private" | "static" | "abstract" | "final" | "native" | "synchronized" | "strictfp")* + ResultType() MethodDeclarator() [ "throws" NameList() ] + ( Block() | ";" ) +} + +void MethodDeclarator() : +{} +{ + FormalParameters() ( "[" "]" )* +} + +void FormalParameters() : +{} +{ + "(" [ FormalParameter() ( "," FormalParameter() )* ] ")" +} + +void FormalParameter() : +{} +{ + [ "final" ] Type() VariableDeclaratorId() +} + +void ConstructorDeclaration() : +{} +{ + [ "public" | "protected" | "private" ] + FormalParameters() [ "throws" NameList() ] + "{" + [ LOOKAHEAD(ExplicitConstructorInvocation()) ExplicitConstructorInvocation() ] + ( BlockStatement() )* + "}" +} + +void ExplicitConstructorInvocation() : +{} +{ + LOOKAHEAD("this" Arguments() ";") + "this" Arguments() ";" +| + [ LOOKAHEAD(2) PrimaryExpression() "." ] "super" Arguments() ";" +} + +void Initializer() : +{} +{ + [ "static" ] Block() +} + + +/* + * Type, name and expression syntax follows. + */ + +void Type() : +{} +{ + ( PrimitiveType() | Name() ) ( "[" "]" )* +} + +void PrimitiveType() : +{} +{ + "boolean" +| + "char" +| + "byte" +| + "short" +| + "int" +| + "long" +| + "float" +| + "double" +} + +void ResultType() : +{} +{ + "void" +| + Type() +} + +void Name() : +/* + * A lookahead of 2 is required below since "Name" can be followed + * by a ".*" when used in the context of an "ImportDeclaration". + */ +{ + String s = ""; + Token t = null; +} +{ + t= { s += t.image; } + ( LOOKAHEAD(2) "." t= { s += "." + t.image; } + )* + { + jjtThis.setImage( s ); + } +} + +void NameList() : +{} +{ + Name() + ( "," Name() + )* +} + + +/* + * Expression syntax follows. + */ + +void Expression() : +/* + * This expansion has been written this way instead of: + * Assignment() | ConditionalExpression() + * for performance reasons. + * However, it is a weakening of the grammar for it allows the LHS of + * assignments to be any conditional expression whereas it can only be + * a primary expression. Consider adding a semantic predicate to work + * around this. + */ +{} +{ + ConditionalExpression() + [ + AssignmentOperator() Expression() + ] +} + +void AssignmentOperator() : +{} +{ + "=" | "*=" | "/=" | "%=" | "+=" | "-=" | "<<=" | ">>=" | ">>>=" | "&=" | "^=" | "|=" +} + +void ConditionalExpression() : +{} +{ + ConditionalOrExpression() [ "?" Expression() ":" ConditionalExpression() ] +} + +void ConditionalOrExpression() : +{} +{ + ConditionalAndExpression() ( "||" ConditionalAndExpression() )* +} + +void ConditionalAndExpression() : +{} +{ + InclusiveOrExpression() ( "&&" InclusiveOrExpression() )* +} + +void InclusiveOrExpression() : +{} +{ + ExclusiveOrExpression() ( "|" ExclusiveOrExpression() )* +} + +void ExclusiveOrExpression() : +{} +{ + AndExpression() ( "^" AndExpression() )* +} + +void AndExpression() : +{} +{ + EqualityExpression() ( "&" EqualityExpression() )* +} + +void EqualityExpression() : +{} +{ + InstanceOfExpression() ( ( "==" | "!=" ) InstanceOfExpression() )* +} + +void InstanceOfExpression() : +{} +{ + RelationalExpression() [ "instanceof" Type() ] +} + +void RelationalExpression() : +{} +{ + ShiftExpression() ( ( "<" | ">" | "<=" | ">=" ) ShiftExpression() )* +} + +void ShiftExpression() : +{} +{ + AdditiveExpression() ( ( "<<" | ">>" | ">>>" ) AdditiveExpression() )* +} + +void AdditiveExpression() : +{} +{ + MultiplicativeExpression() ( ( "+" | "-" ) MultiplicativeExpression() )* +} + +void MultiplicativeExpression() : +{} +{ + UnaryExpression() ( ( "*" | "/" | "%" ) UnaryExpression() )* +} + +void UnaryExpression() : +{} +{ + ( "+" | "-" ) UnaryExpression() +| + PreIncrementExpression() +| + PreDecrementExpression() +| + UnaryExpressionNotPlusMinus() +} + +void PreIncrementExpression() : +{} +{ + "++" PrimaryExpression() +} + +void PreDecrementExpression() : +{} +{ + "--" PrimaryExpression() +} + +void UnaryExpressionNotPlusMinus() : +{} +{ + ( "~" | "!" ) UnaryExpression() +| + LOOKAHEAD( CastLookahead() ) + CastExpression() +| + PostfixExpression() +} + +// This production is to determine lookahead only. The LOOKAHEAD specifications +// below are not used, but they are there just to indicate that we know about +// this. +void CastLookahead() : +{} +{ + LOOKAHEAD(2) + "(" PrimitiveType() +| + LOOKAHEAD("(" Name() "[") + "(" Name() "[" "]" +| + "(" Name() ")" ( "~" | "!" | "(" | | "this" | "super" | "new" | Literal() ) +} + +void PostfixExpression() : +{} +{ + PrimaryExpression() [ "++" | "--" ] +} + +void CastExpression() : +{} +{ + LOOKAHEAD("(" PrimitiveType()) + "(" Type() ")" UnaryExpression() +| +// removed a LOOKAHEAD which was not technically needed DW, 7/99 + "(" Type() ")" UnaryExpressionNotPlusMinus() +} + +void PrimaryExpression() : +{} +{ + PrimaryPrefix() ( LOOKAHEAD(2) PrimarySuffix() )* +} + +void PrimaryPrefix() : +{} +{ + Literal() +| + "this" +| + "super" "." +| + "(" Expression() ")" +| + AllocationExpression() +| + LOOKAHEAD( ResultType() "." "class" ) + ResultType() "." "class" +| + Name() +} + +void PrimarySuffix() : +{} +{ + LOOKAHEAD(2) + "." "this" +| + LOOKAHEAD(2) + "." AllocationExpression() +| + "[" Expression() "]" +| + "." +| + Arguments() +} + +void Literal() : +{} +{ + +| + +| + +| + +| + BooleanLiteral() +| + NullLiteral() +} + +void BooleanLiteral() : +{} +{ + "true" +| + "false" +} + +void NullLiteral() : +{} +{ + "null" +} + +void Arguments() : +{} +{ + "(" [ ArgumentList() ] ")" +} + +void ArgumentList() : +{} +{ + Expression() ( "," Expression() )* +} + +void AllocationExpression() : +{} +{ + LOOKAHEAD(2) + "new" PrimitiveType() ArrayDimsAndInits() +| + "new" Name() + ( + ArrayDimsAndInits() + | + Arguments() [ ClassBody() ] + ) +} + +/* + * The second LOOKAHEAD specification below is to parse to PrimarySuffix + * if there is an expression between the "[...]". + */ +void ArrayDimsAndInits() : +{} +{ + LOOKAHEAD(2) + ( LOOKAHEAD(2) "[" Expression() "]" )+ ( LOOKAHEAD(2) "[" "]" )* +| + ( "[" "]" )+ ArrayInitializer() +} + + +/* + * Statement syntax follows. + */ + +void Statement() : +{} +{ + LOOKAHEAD(2) + LabeledStatement() +| + Block() +| + EmptyStatement() +| + StatementExpression() ";" +| + SwitchStatement() +| + IfStatement() +| + WhileStatement() +| + DoStatement() +| + ForStatement() +| + BreakStatement() +| + ContinueStatement() +| + ReturnStatement() +| + ThrowStatement() +| + SynchronizedStatement() +| + TryStatement() +} + +void LabeledStatement() : +{} +{ + ":" Statement() +} + +void Block() : +{} +{ + "{" ( BlockStatement() )* "}" +} + +void BlockStatement() : +{} +{ + LOOKAHEAD([ "final" ] Type() ) + LocalVariableDeclaration() ";" +| + Statement() +| + UnmodifiedClassDeclaration() +| +// added this choice point to handle inner interfaces. DW, 7/99 + UnmodifiedInterfaceDeclaration() +} + +void LocalVariableDeclaration() : +{} +{ + [ "final" ] Type() VariableDeclarator() ( "," VariableDeclarator() )* +} + +void EmptyStatement() : +{} +{ + ";" +} + +void StatementExpression() : +/* + * The last expansion of this production accepts more than the legal + * Java expansions for StatementExpression. This expansion does not + * use PostfixExpression for performance reasons. + */ +{} +{ + PreIncrementExpression() +| + PreDecrementExpression() +| + PrimaryExpression() + [ + "++" + | + "--" + | + AssignmentOperator() Expression() + ] +} + +void SwitchStatement() : +{} +{ + "switch" "(" Expression() ")" "{" + ( SwitchLabel() ( BlockStatement() )* )* + "}" +} + +void SwitchLabel() : +{} +{ + "case" Expression() ":" +| + "default" ":" +} + +void IfStatement() : +/* + * The disambiguating algorithm of JavaCC automatically binds dangling + * else's to the innermost if statement. The LOOKAHEAD specification + * is to tell JavaCC that we know what we are doing. + */ +{} +{ + "if" "(" Expression() ")" Statement() [ LOOKAHEAD(1) "else" Statement() ] +} + +void WhileStatement() : +{} +{ + "while" "(" Expression() ")" Statement() +} + +void DoStatement() : +{} +{ + "do" Statement() "while" "(" Expression() ")" ";" +} + +void ForStatement() : +{} +{ + "for" "(" [ ForInit() ] ";" [ Expression() ] ";" [ ForUpdate() ] ")" Statement() +} + +void ForInit() : +{} +{ + LOOKAHEAD( [ "final" ] Type() ) + LocalVariableDeclaration() +| + StatementExpressionList() +} + +void StatementExpressionList() : +{} +{ + StatementExpression() ( "," StatementExpression() )* +} + +void ForUpdate() : +{} +{ + StatementExpressionList() +} + +void BreakStatement() : +{} +{ + "break" [ ] ";" +} + +void ContinueStatement() : +{} +{ + "continue" [ ] ";" +} + +void ReturnStatement() : +{} +{ + "return" [ Expression() ] ";" +} + +void ThrowStatement() : +{} +{ + "throw" Expression() ";" +} + +void SynchronizedStatement() : +{} +{ + "synchronized" "(" Expression() ")" Block() +} + +void TryStatement() : +/* + * Semantic check required here to make sure that at least one + * finally/catch is present. + */ +{} +{ + "try" Block() + ( "catch" "(" FormalParameter() ")" Block() )* + [ "finally" Block() ] +} diff --git a/pmd/etc/Java1.4-c.jjt b/pmd/etc/Java1.4-c.jjt new file mode 100644 index 0000000000..6c2cfe8e10 --- /dev/null +++ b/pmd/etc/Java1.4-c.jjt @@ -0,0 +1,1146 @@ +/** + * Copied over the changes made by Andrea Gini and Marco Savard to + * support JDK 1.4 language constructs, i.e., asserts. + * See the java1_4c.jj distributed in the javacc2.1/examples/JavaGrammers directory. + * + * Modified SINGLE_LINE_COMMENT to be a SPECIAL_TOKEN; see + * http://www.engr.mun.ca/~theo/JavaCC-FAQ/javacc-faq.htm#tth_sEc3.9 + * for more details. + * + * Modified the following non-terminals to accumulate their identifiers: + * Name, PrimarySuffix VariableDeclaratorId + * + * Added accumulation of field access modifiers + * + * Added a package declaration inside PARSER_BEGIN. + * + * Tom Copeland, 6/02 + * =================================================================== + * This file is a modified version of one originally found in the + * VTransformer Examples directory of JavaCC1_1. It has been + * modified to accept Java source code for Java 1.2. Basically, + * this means a new key word was added, 'strictfp', and that keyword + * added to the appropriate productions and LOOKAHEADs (where other, + * similar keywords are listed as possible choices). This involved + * changing 11 lines. + * + * Some other minor changes were made, which can be found by doing + * a search on 'DW, 7/99'. + * + * The goal of this effort was for the grammar to be able to parse + * any legal Java 1.2 source code. It does not reject all illegal + * cases, but neither did the original. Plus, when it comes to + * the new 'strictfp' keyword, the Java Compiler from Sun (JDK1.2.1) + * also does not reject all illegal cases, as defined by the + * "Updates" document found at + * http://java.sun.com/docs/books/jls/strictfp-changes.pdf + * (see the testcases.txt file for details). + * + * David Williams, 7/99 + * =================================================================== + * + * + * Copyright (C) 1996, 1997 Sun Microsystems Inc. + * + * Use of this file and the system it is part of is constrained by the + * file COPYRIGHT in the root directory of this system. You may, however, + * make any modifications you wish to this file. + * + * Java files generated by running JavaCC on this file (or modified versions + * of this file) may be used in exactly the same manner as Java files + * generated from any grammar developed by you. + * + * Author: Sriram Sankar + * Date: 3/5/97 + * + * This file contains a Java grammar and actions that implement a front-end. + * + */ + +options { + JAVA_UNICODE_ESCAPE = true; + STATIC=false; + MULTI=true; + VISITOR=true; + NODE_USES_PARSER=true; + NODE_PACKAGE="com.infoether.pmd.ast"; +} + +PARSER_BEGIN(JavaParser) +package com.infoether.pmd.ast; +public class JavaParser +{ +} +PARSER_END(JavaParser) + +/* WHITE SPACE */ + +SPECIAL_TOKEN : +{ + " " +| "\t" +| "\n" +| "\r" +| "\f" +} + +SPECIAL_TOKEN : +{ +< SINGLE_LINE_COMMENT: "//"(~["\n","\r"])* ("\n"|"\r"|"\r\n")? > +} + +/* COMMENTS */ + +MORE : +{ + <"/**" ~["/"]> { input_stream.backup(1); } : IN_FORMAL_COMMENT +| + "/*" : IN_MULTI_LINE_COMMENT +} + + +SPECIAL_TOKEN : +{ + : DEFAULT +} + + +SPECIAL_TOKEN : +{ + : DEFAULT +} + + +MORE : +{ + < ~[] > +} + +/* RESERVED WORDS AND LITERALS */ + +TOKEN : +{ + < ABSTRACT: "abstract" > +| < BOOLEAN: "boolean" > +| < BREAK: "break" > +| < BYTE: "byte" > +| < CASE: "case" > +| < CATCH: "catch" > +| < CHAR: "char" > +| < CLASS: "class" > +| < CONST: "const" > +| < CONTINUE: "continue" > +| < _DEFAULT: "default" > +| < DO: "do" > +| < DOUBLE: "double" > +| < ELSE: "else" > +| < EXTENDS: "extends" > +| < FALSE: "false" > +| < FINAL: "final" > +| < FINALLY: "finally" > +| < FLOAT: "float" > +| < FOR: "for" > +| < GOTO: "goto" > +| < IF: "if" > +| < IMPLEMENTS: "implements" > +| < IMPORT: "import" > +| < INSTANCEOF: "instanceof" > +| < INT: "int" > +| < INTERFACE: "interface" > +| < LONG: "long" > +| < NATIVE: "native" > +| < NEW: "new" > +| < NULL: "null" > +| < PACKAGE: "package"> +| < PRIVATE: "private" > +| < PROTECTED: "protected" > +| < PUBLIC: "public" > +| < RETURN: "return" > +| < SHORT: "short" > +| < STATIC: "static" > +| < SUPER: "super" > +| < SWITCH: "switch" > +| < SYNCHRONIZED: "synchronized" > +| < THIS: "this" > +| < THROW: "throw" > +| < THROWS: "throws" > +| < TRANSIENT: "transient" > +| < TRUE: "true" > +| < TRY: "try" > +| < VOID: "void" > +| < VOLATILE: "volatile" > +| < WHILE: "while" > +| < STRICTFP: "strictfp" > +| < ASSERT: "assert" > +} + +/* LITERALS */ + +TOKEN : +{ + < INTEGER_LITERAL: + (["l","L"])? + | (["l","L"])? + | (["l","L"])? + > +| + < #DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])* > +| + < #HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+ > +| + < #OCTAL_LITERAL: "0" (["0"-"7"])* > +| + < FLOATING_POINT_LITERAL: + (["0"-"9"])+ "." (["0"-"9"])* ()? (["f","F","d","D"])? + | "." (["0"-"9"])+ ()? (["f","F","d","D"])? + | (["0"-"9"])+ (["f","F","d","D"])? + | (["0"-"9"])+ ()? ["f","F","d","D"] + > +| + < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ > +| + < CHARACTER_LITERAL: + "'" + ( (~["'","\\","\n","\r"]) + | ("\\" + ( ["n","t","b","r","f","\\","'","\""] + | ["0"-"7"] ( ["0"-"7"] )? + | ["0"-"3"] ["0"-"7"] ["0"-"7"] + ) + ) + ) + "'" + > +| + < STRING_LITERAL: + "\"" + ( (~["\"","\\","\n","\r"]) + | ("\\" + ( ["n","t","b","r","f","\\","'","\""] + | ["0"-"7"] ( ["0"-"7"] )? + | ["0"-"3"] ["0"-"7"] ["0"-"7"] + ) + ) + )* + "\"" + > +} + +/* IDENTIFIERS */ + +TOKEN : +{ + < IDENTIFIER: (|)* > +| + < #LETTER: + [ + "\u0024", + "\u0041"-"\u005a", + "\u005f", + "\u0061"-"\u007a", + "\u00c0"-"\u00d6", + "\u00d8"-"\u00f6", + "\u00f8"-"\u00ff", + "\u0100"-"\u1fff", + "\u3040"-"\u318f", + "\u3300"-"\u337f", + "\u3400"-"\u3d2d", + "\u4e00"-"\u9fff", + "\uf900"-"\ufaff" + ] + > +| + < #DIGIT: + [ + "\u0030"-"\u0039", + "\u0660"-"\u0669", + "\u06f0"-"\u06f9", + "\u0966"-"\u096f", + "\u09e6"-"\u09ef", + "\u0a66"-"\u0a6f", + "\u0ae6"-"\u0aef", + "\u0b66"-"\u0b6f", + "\u0be7"-"\u0bef", + "\u0c66"-"\u0c6f", + "\u0ce6"-"\u0cef", + "\u0d66"-"\u0d6f", + "\u0e50"-"\u0e59", + "\u0ed0"-"\u0ed9", + "\u1040"-"\u1049" + ] + > +} + +/* SEPARATORS */ + +TOKEN : +{ + < LPAREN: "(" > +| < RPAREN: ")" > +| < LBRACE: "{" > +| < RBRACE: "}" > +| < LBRACKET: "[" > +| < RBRACKET: "]" > +| < SEMICOLON: ";" > +| < COMMA: "," > +| < DOT: "." > +} + +/* OPERATORS */ + +TOKEN : +{ + < ASSIGN: "=" > +| < GT: ">" > +| < LT: "<" > +| < BANG: "!" > +| < TILDE: "~" > +| < HOOK: "?" > +| < COLON: ":" > +| < EQ: "==" > +| < LE: "<=" > +| < GE: ">=" > +| < NE: "!=" > +| < SC_OR: "||" > +| < SC_AND: "&&" > +| < INCR: "++" > +| < DECR: "--" > +| < PLUS: "+" > +| < MINUS: "-" > +| < STAR: "*" > +| < SLASH: "/" > +| < BIT_AND: "&" > +| < BIT_OR: "|" > +| < XOR: "^" > +| < REM: "%" > +| < LSHIFT: "<<" > +| < RSIGNEDSHIFT: ">>" > +| < RUNSIGNEDSHIFT: ">>>" > +| < PLUSASSIGN: "+=" > +| < MINUSASSIGN: "-=" > +| < STARASSIGN: "*=" > +| < SLASHASSIGN: "/=" > +| < ANDASSIGN: "&=" > +| < ORASSIGN: "|=" > +| < XORASSIGN: "^=" > +| < REMASSIGN: "%=" > +| < LSHIFTASSIGN: "<<=" > +| < RSIGNEDSHIFTASSIGN: ">>=" > +| < RUNSIGNEDSHIFTASSIGN: ">>>=" > +} + + +/***************************************** + * THE JAVA LANGUAGE GRAMMAR STARTS HERE * + *****************************************/ + +/* + * Program structuring syntax follows. + */ + +ASTCompilationUnit CompilationUnit() : +{} +{ + [ PackageDeclaration() ] + ( ImportDeclaration() )* + ( TypeDeclaration() )* + + { + return jjtThis; + } +} + +void PackageDeclaration() : +{} +{ + "package" Name() ";" +} + +void ImportDeclaration() : +{} +{ + "import" Name() [ "." "*" ] ";" +} + +void TypeDeclaration() : +{} +{ + LOOKAHEAD( ( "abstract" | "final" | "public" | "strictfp" )* "class" ) + ClassDeclaration() +| + InterfaceDeclaration() +| + ";" +} + + +/* + * Declaration syntax follows. + */ + +void ClassDeclaration() : +{} +{ + ( "abstract" | "final" | "public" | "strictfp")* + UnmodifiedClassDeclaration() +} + +void UnmodifiedClassDeclaration() : +{} +{ + "class" [ "extends" Name() ] [ "implements" NameList() ] + ClassBody() +} + +void ClassBody() : +{} +{ + "{" ( ClassBodyDeclaration() )* "}" +} + +void NestedClassDeclaration() : +{} +{ + ( "static" | "abstract" | "final" | "public" | "protected" | "private" | "strictfp")* + UnmodifiedClassDeclaration() +} + +void ClassBodyDeclaration() : +{} +{ + LOOKAHEAD(2) + Initializer() +| + LOOKAHEAD( ( "static" | "abstract" | "final" | "public" | "protected" | "private" | "strictfp")* "class" ) + NestedClassDeclaration() +| + LOOKAHEAD( ( "static" | "abstract" | "final" | "public" | "protected" | "private" | "strictfp")* "interface" ) + NestedInterfaceDeclaration() +| + LOOKAHEAD( [ "public" | "protected" | "private" ] Name() "(" ) + ConstructorDeclaration() +| + LOOKAHEAD( MethodDeclarationLookahead() ) + MethodDeclaration() +| + FieldDeclaration() +| + ";" +} + +// This production is to determine lookahead only. +void MethodDeclarationLookahead() : +{} +{ + ( "public" | "protected" | "private" | "static" | "abstract" | "final" | "native" | "synchronized" | "strictfp")* + ResultType() "(" +} + +void InterfaceDeclaration() : +{} +{ + ( "abstract" | "public" | "strictfp")* + UnmodifiedInterfaceDeclaration() +} + +void NestedInterfaceDeclaration() : +{} +{ + ( "static" | "abstract" | "final" | "public" | "protected" | "private" | "strictfp")* + UnmodifiedInterfaceDeclaration() +} + +void UnmodifiedInterfaceDeclaration() : +{} +{ + "interface" [ "extends" NameList() ] + "{" ( InterfaceMemberDeclaration() )* "}" +} + +void InterfaceMemberDeclaration() : +{} +{ + LOOKAHEAD( ( "static" | "abstract" | "final" | "public" | "protected" | "private" | "strictfp")* "class" ) + NestedClassDeclaration() +| + LOOKAHEAD( ( "static" | "abstract" | "final" | "public" | "protected" | "private" | "strictfp")* "interface" ) + NestedInterfaceDeclaration() +| + LOOKAHEAD( MethodDeclarationLookahead() ) + MethodDeclaration() +| + FieldDeclaration() +| + ";" +} + +void FieldDeclaration() : +{ +StringBuffer modifiers = new StringBuffer(); +} +{ + ( "public" {modifiers.append("public,");} | "protected" {modifiers.append("protected,");} | "private" {modifiers.append("private,");} | "static" {modifiers.append("static,");} | "final" {modifiers.append("final,");} | "transient" {modifiers.append("transient,");} | "volatile" {modifiers.append("volatile,");})* + { + jjtThis.setImage(modifiers.toString()); + } + Type() VariableDeclarator() ( "," VariableDeclarator() )* ";" +} + +void VariableDeclarator() : +{} +{ + VariableDeclaratorId() [ "=" VariableInitializer() ] +} + +void VariableDeclaratorId() : +{ + String s = null; + Token t = null; +} +{ + t= + { + s = t.image; + } + ( "[" "]" )* + { + jjtThis.setImage( s ); + } +} + +void VariableInitializer() : +{} +{ + ArrayInitializer() +| + Expression() +} + +void ArrayInitializer() : +{} +{ + "{" [ VariableInitializer() ( LOOKAHEAD(2) "," VariableInitializer() )* ] [ "," ] "}" +} + +void MethodDeclaration() : +{} +{ + ( "public" | "protected" | "private" | "static" | "abstract" | "final" | "native" | "synchronized" | "strictfp")* + ResultType() MethodDeclarator() [ "throws" NameList() ] + ( Block() | ";" ) +} + +void MethodDeclarator() : +{} +{ + FormalParameters() ( "[" "]" )* +} + +void FormalParameters() : +{} +{ + "(" [ FormalParameter() ( "," FormalParameter() )* ] ")" +} + +void FormalParameter() : +{} +{ + [ "final" ] Type() VariableDeclaratorId() +} + +void ConstructorDeclaration() : +{} +{ + [ "public" | "protected" | "private" ] + FormalParameters() [ "throws" NameList() ] + "{" + [ LOOKAHEAD(ExplicitConstructorInvocation()) ExplicitConstructorInvocation() ] + ( BlockStatement() )* + "}" +} + +void ExplicitConstructorInvocation() : +{} +{ + LOOKAHEAD("this" Arguments() ";") + "this" Arguments() ";" +| + [ LOOKAHEAD(2) PrimaryExpression() "." ] "super" Arguments() ";" +} + +void Initializer() : +{} +{ + [ "static" ] Block() +} + + +/* + * Type, name and expression syntax follows. + */ + +void Type() : +{} +{ + ( PrimitiveType() | Name() ) ( "[" "]" )* +} + +void PrimitiveType() : +{} +{ + "boolean" +| + "char" +| + "byte" +| + "short" +| + "int" +| + "long" +| + "float" +| + "double" +} + +void ResultType() : +{} +{ + "void" +| + Type() +} + +void Name() : +/* + * A lookahead of 2 is required below since "Name" can be followed + * by a ".*" when used in the context of an "ImportDeclaration". + */ +{ + StringBuffer s = new StringBuffer(); + Token t = null; +} +{ + t= + { + s.append(t.image); + } + ( LOOKAHEAD(2) "." t= + { + s.append("."); + s.append(t.image); + } + )* + { + jjtThis.setImage( s.toString() ); + } +} + +void NameList() : +{} +{ + Name() + ( "," Name() + )* +} + + +/* + * Expression syntax follows. + */ + +void Expression() : +/* + * This expansion has been written this way instead of: + * Assignment() | ConditionalExpression() + * for performance reasons. + * However, it is a weakening of the grammar for it allows the LHS of + * assignments to be any conditional expression whereas it can only be + * a primary expression. Consider adding a semantic predicate to work + * around this. + */ +{} +{ + ConditionalExpression() + [ + AssignmentOperator() Expression() + ] +} + +void AssignmentOperator() : +{} +{ + "=" | "*=" | "/=" | "%=" | "+=" | "-=" | "<<=" | ">>=" | ">>>=" | "&=" | "^=" | "|=" +} + +void ConditionalExpression() : +{} +{ + ConditionalOrExpression() [ "?" Expression() ":" ConditionalExpression() ] +} + +void ConditionalOrExpression() : +{} +{ + ConditionalAndExpression() ( "||" ConditionalAndExpression() )* +} + +void ConditionalAndExpression() : +{} +{ + InclusiveOrExpression() ( "&&" InclusiveOrExpression() )* +} + +void InclusiveOrExpression() : +{} +{ + ExclusiveOrExpression() ( "|" ExclusiveOrExpression() )* +} + +void ExclusiveOrExpression() : +{} +{ + AndExpression() ( "^" AndExpression() )* +} + +void AndExpression() : +{} +{ + EqualityExpression() ( "&" EqualityExpression() )* +} + +void EqualityExpression() : +{} +{ + InstanceOfExpression() ( ( "==" | "!=" ) InstanceOfExpression() )* +} + +void InstanceOfExpression() : +{} +{ + RelationalExpression() [ "instanceof" Type() ] +} + +void RelationalExpression() : +{} +{ + ShiftExpression() ( ( "<" | ">" | "<=" | ">=" ) ShiftExpression() )* +} + +void ShiftExpression() : +{} +{ + AdditiveExpression() ( ( "<<" | ">>" | ">>>" ) AdditiveExpression() )* +} + +void AdditiveExpression() : +{} +{ + MultiplicativeExpression() ( ( "+" | "-" ) MultiplicativeExpression() )* +} + +void MultiplicativeExpression() : +{} +{ + UnaryExpression() ( ( "*" | "/" | "%" ) UnaryExpression() )* +} + +void UnaryExpression() : +{} +{ + ( "+" | "-" ) UnaryExpression() +| + PreIncrementExpression() +| + PreDecrementExpression() +| + UnaryExpressionNotPlusMinus() +} + +void PreIncrementExpression() : +{} +{ + "++" PrimaryExpression() +} + +void PreDecrementExpression() : +{} +{ + "--" PrimaryExpression() +} + +void UnaryExpressionNotPlusMinus() : +{} +{ + ( "~" | "!" ) UnaryExpression() +| + LOOKAHEAD( CastLookahead() ) + CastExpression() +| + PostfixExpression() +} + +// This production is to determine lookahead only. The LOOKAHEAD specifications +// below are not used, but they are there just to indicate that we know about +// this. +void CastLookahead() : +{} +{ + LOOKAHEAD(2) + "(" PrimitiveType() +| + LOOKAHEAD("(" Name() "[") + "(" Name() "[" "]" +| + "(" Name() ")" ( "~" | "!" | "(" | | "this" | "super" | "new" | Literal() ) +} + +void PostfixExpression() : +{} +{ + PrimaryExpression() [ "++" | "--" ] +} + +void CastExpression() : +{} +{ + LOOKAHEAD("(" PrimitiveType()) + "(" Type() ")" UnaryExpression() +| +// removed a LOOKAHEAD which was not technically needed DW, 7/99 + "(" Type() ")" UnaryExpressionNotPlusMinus() +} + +void PrimaryExpression() : +{} +{ + PrimaryPrefix() ( LOOKAHEAD(2) PrimarySuffix() )* +} + +void PrimaryPrefix() : +{} +{ + Literal() +| + "this" +| + "super" "." +| + "(" Expression() ")" +| + AllocationExpression() +| + LOOKAHEAD( ResultType() "." "class" ) + ResultType() "." "class" +| + Name() +} + +void PrimarySuffix() : +{ + String s = null; + Token t = null; +} +{ + LOOKAHEAD(2) + "." "this" +| + LOOKAHEAD(2) + "." "super" +| + LOOKAHEAD(2) + "." AllocationExpression() +| + "[" Expression() "]" +| + "." t= {s = t.image;} {jjtThis.setImage(s);} +| + Arguments() +} + +void Literal() : +{} +{ + +| + +| + +| + +| + BooleanLiteral() +| + NullLiteral() +} + +void BooleanLiteral() : +{} +{ + "true" +| + "false" +} + +void NullLiteral() : +{} +{ + "null" +} + +void Arguments() : +{} +{ + "(" [ ArgumentList() ] ")" +} + +void ArgumentList() : +{} +{ + Expression() ( "," Expression() )* +} + +void AllocationExpression() : +{} +{ + LOOKAHEAD(2) + "new" PrimitiveType() ArrayDimsAndInits() +| + "new" Name() + ( + ArrayDimsAndInits() + | + Arguments() [ ClassBody() ] + ) +} + +/* + * The second LOOKAHEAD specification below is to parse to PrimarySuffix + * if there is an expression between the "[...]". + */ +void ArrayDimsAndInits() : +{} +{ + LOOKAHEAD(2) + ( LOOKAHEAD(2) "[" Expression() "]" )+ ( LOOKAHEAD(2) "[" "]" )* +| + ( "[" "]" )+ ArrayInitializer() +} + + +/* + * Statement syntax follows. + */ + +void Statement() : +{} +{ + LOOKAHEAD(2) + LabeledStatement() +| + Block() +| + EmptyStatement() +| + StatementExpression() ";" +| + SwitchStatement() +| + IfStatement() +| + WhileStatement() +| + DoStatement() +| + ForStatement() +| + BreakStatement() +| + ContinueStatement() +| + ReturnStatement() +| + ThrowStatement() +| + SynchronizedStatement() +| + TryStatement() +| + AssertStatement() +} + +void LabeledStatement() : +{} +{ + ":" Statement() +} + +void Block() : +{} +{ + "{" ( BlockStatement() )* "}" +} + +void BlockStatement() : +{} +{ + LOOKAHEAD([ "final" ] Type() ) + LocalVariableDeclaration() ";" +| + Statement() +| + UnmodifiedClassDeclaration() +| +// added this choice point to handle inner interfaces. DW, 7/99 + UnmodifiedInterfaceDeclaration() +} + +void LocalVariableDeclaration() : +{} +{ + [ "final" ] Type() VariableDeclarator() ( "," VariableDeclarator() )* +} + +void EmptyStatement() : +{} +{ + ";" +} + +void StatementExpression() : +/* + * The last expansion of this production accepts more than the legal + * Java expansions for StatementExpression. This expansion does not + * use PostfixExpression for performance reasons. + */ +{} +{ + PreIncrementExpression() +| + PreDecrementExpression() +| + PrimaryExpression() + [ + "++" + | + "--" + | + AssignmentOperator() Expression() + ] +} + +void SwitchStatement() : +{} +{ + "switch" "(" Expression() ")" "{" + ( SwitchLabel() ( BlockStatement() )* )* + "}" +} + +void SwitchLabel() : +{} +{ + "case" Expression() ":" +| + "default" ":" +} + +void IfStatement() : +/* + * The disambiguating algorithm of JavaCC automatically binds dangling + * else's to the innermost if statement. The LOOKAHEAD specification + * is to tell JavaCC that we know what we are doing. + */ +{} +{ + "if" "(" Expression() ")" Statement() [ LOOKAHEAD(1) "else" Statement() ] +} + +void WhileStatement() : +{} +{ + "while" "(" Expression() ")" Statement() +} + +void DoStatement() : +{} +{ + "do" Statement() "while" "(" Expression() ")" ";" +} + +void ForStatement() : +{} +{ + "for" "(" [ ForInit() ] ";" [ Expression() ] ";" [ ForUpdate() ] ")" Statement() +} + +void ForInit() : +{} +{ + LOOKAHEAD( [ "final" ] Type() ) + LocalVariableDeclaration() +| + StatementExpressionList() +} + +void StatementExpressionList() : +{} +{ + StatementExpression() ( "," StatementExpression() )* +} + +void ForUpdate() : +{} +{ + StatementExpressionList() +} + +void BreakStatement() : +{} +{ + "break" [ ] ";" +} + +void ContinueStatement() : +{} +{ + "continue" [ ] ";" +} + +void ReturnStatement() : +{} +{ + "return" [ Expression() ] ";" +} + +void ThrowStatement() : +{} +{ + "throw" Expression() ";" +} + +void SynchronizedStatement() : +{} +{ + "synchronized" "(" Expression() ")" Block() +} + +void TryStatement() : +/* + * Semantic check required here to make sure that at least one + * finally/catch is present. + */ +{} +{ + "try" Block() + ( "catch" "(" FormalParameter() ")" Block() )* + [ "finally" Block() ] +} + +void AssertStatement() : +{} +{ + "assert" Expression() [ ":" Expression() ] ";" +} diff --git a/pmd/etc/build.xml b/pmd/etc/build.xml new file mode 100644 index 0000000000..67110ccd28 --- /dev/null +++ b/pmd/etc/build.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pmd/etc/go.bat b/pmd/etc/go.bat new file mode 100755 index 0000000000..0e4c00fe78 --- /dev/null +++ b/pmd/etc/go.bat @@ -0,0 +1,5 @@ +@echo off +set MAIN=com.infoether.pmd.PMD +set TEST_FILE=c:\\data\\pmd\\pmd\\test-data\\%1%.java + +java %MAIN% %TEST_FILE% diff --git a/pmd/etc/scp.bat b/pmd/etc/scp.bat new file mode 100755 index 0000000000..81fdcfe4a7 --- /dev/null +++ b/pmd/etc/scp.bat @@ -0,0 +1,5 @@ +set CVSROOT=:ext:tomcopeland@cvs.pmd.sourceforge.net:/cvsroot/pmd +set HOME=c: +set CVS_RSH=c:\bin\ssh\ssh +set CLASSPATH=../build/ +set CLASSPATH=%CLASSPATH%;c:\javacc2.1\bin\lib\JavaCC.zip diff --git a/pmd/etc/upload.bat b/pmd/etc/upload.bat new file mode 100755 index 0000000000..f34f2985f0 --- /dev/null +++ b/pmd/etc/upload.bat @@ -0,0 +1 @@ +pscp ..\lib\pmd.jar build@cvs.ultralog.net:/home/build \ No newline at end of file diff --git a/pmd/regress/test/com/infoether/pmd/FunctionalTest.java b/pmd/regress/test/com/infoether/pmd/FunctionalTest.java new file mode 100644 index 0000000000..50637a3137 --- /dev/null +++ b/pmd/regress/test/com/infoether/pmd/FunctionalTest.java @@ -0,0 +1,185 @@ +/* + * User: tom + * Date: Jun 17, 2002 + * Time: 3:19:33 PM + */ +package test.com.infoether.pmd; + +import junit.framework.TestCase; + +import com.infoether.pmd.*; + +import java.io.File; +import java.io.FileInputStream; +import java.util.Iterator; + +public class FunctionalTest extends TestCase{ + + public FunctionalTest(String name) { + super(name); + } + + public void testUnusedLocal1() { + Report report = process(new File(root() + "Unused1.java")); + assertEquals(1, report.getSize()); + assertEquals(new UnusedLocalVariableRule(), ((RuleViolation)report.iterator().next()).getRule()); + } + + public void testUnusedLocal2() { + Report report = process(new File(root() + "Unused2.java")); + assertEquals(1, report.getSize()); + assertEquals(new UnusedLocalVariableRule(), ((RuleViolation)report.iterator().next()).getRule()); + } + + public void testUnusedLocal3() { + Report report = process(new File(root() + "Unused3.java")); + assertEquals(1, report.getSize()); + assertEquals(new UnusedLocalVariableRule(), ((RuleViolation)report.iterator().next()).getRule()); + } + + public void testUnusedLocal4() { + Report report = process(new File(root() + "Unused4.java")); + assertTrue(report.empty()); + } + + public void testUnusedLocal5() { + Report report = process(new File(root() + "Unused5.java")); + assertEquals(1, report.getSize()); + assertEquals(new UnusedLocalVariableRule(), ((RuleViolation)report.iterator().next()).getRule()); + } + + public void testUnusedLocal6() { + Report report = process(new File(root() + "Unused6.java")); + assertTrue(report.empty()); + } + + public void testUnusedLocal7() { + Report report = process(new File(root() + "Unused7.java")); + assertTrue(report.empty()); + } + + public void testUnusedLocal8() { + Report report = process(new File(root() + "Unused8.java")); + assertEquals(1, report.getSize()); + assertEquals(new SystemPropsRule(), ((RuleViolation)report.iterator().next()).getRule()); + } + + public void testUnusedLocal9() { + Report report = process(new File(root() + "Unused9.java")); + assertEquals(2, report.getSize()); + Iterator i = report.iterator(); + assertEquals(new UnusedLocalVariableRule(), ((RuleViolation)i.next()).getRule()); + assertEquals(new UnusedLocalVariableRule(), ((RuleViolation)i.next()).getRule()); + } + + public void testUnusedLocal10() { + Report report = process(new File(root() + "Unused10.java")); + assertTrue(report.empty()); + } + + public void testEmptyCatchBlock() { + Report report = process(new File(root() + "EmptyCatchBlock.java")); + assertEquals(1, report.getSize()); + assertEquals(new EmptyCatchBlockRule(), ((RuleViolation)report.iterator().next()).getRule()); + } + + public void testUnnecessaryTemporaries() { + Report report = process(new File(root() + "UnnecessaryTemporary.java")); + assertEquals(6, report.getSize()); + assertEquals(new UnnecessaryConversionTemporaryRule(), ((RuleViolation)report.iterator().next()).getRule()); + } + + public void testProps() { + Report report = process(new File(root() + "ContainsSystemGetProps.java")); + assertEquals(3, report.getSize()); + assertEquals(new SystemPropsRule(), ((RuleViolation)report.iterator().next()).getRule()); + } + + public void testSystemIn() { + Report report = process(new File(root() + "ContainsSystemIn.java")); + assertEquals(3, report.getSize()); + assertEquals(new SystemOutRule(), ((RuleViolation)report.iterator().next()).getRule()); + } + + public void testSystemOut() { + Report report = process(new File(root() + "ContainsSystemOut.java")); + assertEquals(1, report.getSize()); + assertEquals(new SystemOutRule(), ((RuleViolation)report.iterator().next()).getRule()); + } + + public void testCreateAThread() { + Report report = process(new File(root() + "CreatesAThread.java")); + assertEquals(1, report.getSize()); + assertEquals(new DontCreateThreadsRule(), ((RuleViolation)report.iterator().next()).getRule()); + } + + public void testCreateATimer() { + Report report = process(new File(root() + "CreatesATimer.java")); + assertEquals(1, report.getSize()); + assertEquals(new DontCreateTimersRule(), ((RuleViolation)report.iterator().next()).getRule()); + } + + public void testEmptyIf() { + Report report = process(new File(root() + "EmptyIfStmtRule.java")); + assertEquals(1, report.getSize()); + assertEquals(new EmptyIfStmtRule(), ((RuleViolation)report.iterator().next()).getRule()); + } + +/* + public void testUnusedPrivateInstanceVar1() { + Report report = process(new File(root() + "UnusedPrivateInstanceVar1.java")); + assertEquals(1, report.getSize()); + Iterator i = report.iterator(); + assertEquals(new UnusedPrivateInstanceVariableRule(), ((RuleViolation)i.next()).getRule()); + } + + public void testUnusedPrivateInstanceVar2() { + Report report = process(new File(root() + "UnusedPrivateInstanceVar2.java")); + assertTrue(report.empty()); + } + + public void testUnusedPrivateInstanceVar3() { + Report report = process(new File(root() + "UnusedPrivateInstanceVar3.java")); + assertEquals(1, report.getSize()); + Iterator i = report.iterator(); + assertEquals(new UnusedPrivateInstanceVariableRule(), ((RuleViolation)i.next()).getRule()); + } + + public void testUnusedPrivateInstanceVar4() { + Report report = process(new File(root() + "UnusedPrivateInstanceVar4.java")); + assertTrue(report.empty()); + } + + public void testUnusedPrivateInstanceVar6() { + Report report = process(new File(root() + "UnusedPrivateInstanceVar6.java")); + assertTrue(report.empty()); + } + public void testUnusedPrivateInstanceVar7() { + Report report = process(new File(root() + "UnusedPrivateInstanceVar7.java")); + assertTrue(report.empty()); + } + public void testUnusedPrivateInstanceVar8() { + Report report = process(new File(root() + "UnusedPrivateInstanceVar8.java")); + assertTrue(report.empty()); + } +*/ + // TODO + // there's another test here that needs to work, see UnusedPrivateInstanceVar5.java + // 'foo' should be marked as an unused instance variable, but it isn't because the + // anonymous inner classes are broken for that rule because the "doingIDTraversal" is an + // instance variable + // TODO + + private Report process(File file) { + PMD p = new PMD(); + return p.processFile(file, RuleFactory.ALL); + } + + private String root() { + if (System.getProperty("os.name").indexOf("Linux") != -1) { + return "/home/build/hourly/working/pmd/test-data" + System.getProperty("file.separator"); + } + return "c:\\data\\pmd\\pmd\\test-data" + System.getProperty("file.separator"); + } + +} diff --git a/pmd/regress/test/com/infoether/pmd/NamespaceTest.java b/pmd/regress/test/com/infoether/pmd/NamespaceTest.java new file mode 100644 index 0000000000..ff671e29fb --- /dev/null +++ b/pmd/regress/test/com/infoether/pmd/NamespaceTest.java @@ -0,0 +1,32 @@ +/* + * User: tom + * Date: Jun 21, 2002 + * Time: 2:21:44 PM + */ +package test.com.infoether.pmd; + +import junit.framework.TestCase; +import com.infoether.pmd.Namespace; +import com.infoether.pmd.SymbolTable; + +public class NamespaceTest extends TestCase{ + public NamespaceTest(String name) { + super(name); + } + + public void testBasic() { + Namespace nameSpace = new Namespace(); + nameSpace.addTable(); + assertEquals(1, nameSpace.size()); + nameSpace.removeTable(); + assertEquals(0, nameSpace.size()); + } + + public void testParent() { + Namespace nameSpace = new Namespace(); + nameSpace.addTable(); + SymbolTable parent = nameSpace.peek(); + nameSpace.addTable(); + assertEquals(parent, nameSpace.peek().getParent()); + } +} diff --git a/pmd/regress/test/com/infoether/pmd/ReportTest.java b/pmd/regress/test/com/infoether/pmd/ReportTest.java new file mode 100644 index 0000000000..cb78695726 --- /dev/null +++ b/pmd/regress/test/com/infoether/pmd/ReportTest.java @@ -0,0 +1,47 @@ +/* + * User: tom + * Date: Jun 14, 2002 + * Time: 1:18:30 PM + */ +package test.com.infoether.pmd; + +import junit.framework.TestCase; +import com.infoether.pmd.Report; +import com.infoether.pmd.RuleViolation; +import com.infoether.pmd.Rule; + +import java.lang.reflect.Proxy; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; + +public class ReportTest extends TestCase { + + private static class MyInv implements InvocationHandler { + private String in; + public MyInv() {} + public MyInv(String in) { + this.in = in; + } + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + return in; + } + } + public ReportTest(String name) { + super(name); + } + + public void testBasic() { + Report r = new Report("foo"); + Rule rule = (Rule) Proxy.newProxyInstance(Rule.class.getClassLoader(), new Class[] {Rule.class }, new MyInv()); + r.addRuleViolation(new RuleViolation(rule, 5)); + assertTrue(!r.empty()); + } + + public void testRender() { + Report r = new Report("foo"); + InvocationHandler ih = new MyInv("foo"); + Rule rule = (Rule) Proxy.newProxyInstance(Rule.class.getClassLoader(), new Class[] {Rule.class }, ih); + r.addRuleViolation(new RuleViolation(rule, 5)); + assertTrue(r.renderToText().indexOf("foo") != -1); + } +} diff --git a/pmd/regress/test/com/infoether/pmd/RuleFactoryTest.java b/pmd/regress/test/com/infoether/pmd/RuleFactoryTest.java new file mode 100644 index 0000000000..1a93740970 --- /dev/null +++ b/pmd/regress/test/com/infoether/pmd/RuleFactoryTest.java @@ -0,0 +1,47 @@ +/* + * User: tom + * Date: Jun 20, 2002 + * Time: 8:43:20 AM + */ +package test.com.infoether.pmd; + +import junit.framework.TestCase; + +import java.util.List; + +import com.infoether.pmd.RuleFactory; +import com.infoether.pmd.Rule; +import com.infoether.pmd.DontCreateTimersRule; +import com.infoether.pmd.EmptyIfStmtRule; + +public class RuleFactoryTest extends TestCase { + public RuleFactoryTest(String name) { + super(name); + } + + public void testCougaar() { + List r = RuleFactory.createRules(RuleFactory.COUGAAR); + assertTrue(r.contains(new DontCreateTimersRule())); + } + + public void testAll() { + List r = RuleFactory.createRules(RuleFactory.ALL); + assertTrue(r.contains(new EmptyIfStmtRule())); + } + + public void testGeneral() { + List r = RuleFactory.createRules(RuleFactory.GENERAL); + assertTrue(r.contains(new EmptyIfStmtRule())); + assertTrue(!r.contains(new DontCreateTimersRule())); + } + + public void testException() { + try { + RuleFactory.createRules("blah"); + } catch (Exception e) { + return; // cool + } + throw new RuntimeException("Should have thrown RuntimeException"); + } + +} diff --git a/pmd/regress/test/com/infoether/pmd/RuleViolationTest.java b/pmd/regress/test/com/infoether/pmd/RuleViolationTest.java new file mode 100644 index 0000000000..f539491f89 --- /dev/null +++ b/pmd/regress/test/com/infoether/pmd/RuleViolationTest.java @@ -0,0 +1,27 @@ +package test.com.infoether.pmd; + +import junit.framework.*; +import com.infoether.pmd.*; +import java.util.*; + +public class RuleViolationTest extends TestCase { + public RuleViolationTest(String name) { + super(name); + } + + public void testBasic() { + RuleViolation r = new RuleViolation(new Rule() { + public String getName() {return "name";} + public String getDescription() {return "desc";} + }, 2); + assertTrue(r.getText().indexOf("name") != -1); + } + + public void testBasic2() { + RuleViolation r = new RuleViolation(new Rule() { + public String getName() {return "name";} + public String getDescription() {return "desc";} + }, 2, "foo"); + assertTrue(r.getText().indexOf("foo") != -1); + } +} diff --git a/pmd/regress/test/com/infoether/pmd/SymbolTableTest.java b/pmd/regress/test/com/infoether/pmd/SymbolTableTest.java new file mode 100644 index 0000000000..d03c0a2138 --- /dev/null +++ b/pmd/regress/test/com/infoether/pmd/SymbolTableTest.java @@ -0,0 +1,95 @@ +/* + * User: tom + * Date: Jun 19, 2002 + * Time: 11:09:06 AM + */ +package test.com.infoether.pmd; + +import junit.framework.TestCase; +import com.infoether.pmd.SymbolTable; +import com.infoether.pmd.Symbol; + +import java.util.HashMap; + +public class SymbolTableTest extends TestCase { + + private static final Symbol FOO = new Symbol("foo", 10); + + public SymbolTableTest(String name) { + super(name); + } + + public void testAdd() { + SymbolTable s = new SymbolTable(); + s.add(FOO); + try { + s.add(FOO); + } catch (RuntimeException e) { + return; // cool + } + throw new RuntimeException("Should have thrown RuntimeException"); + } + + public void testParent() { + SymbolTable parent = new SymbolTable(); + SymbolTable child = new SymbolTable(parent); + assertEquals(child.getParent(), parent); + } + + public void testAddSameSymbol() { + SymbolTable parent = new SymbolTable(); + parent.add(FOO); + SymbolTable child = new SymbolTable(parent); + try { + child.add(FOO); + } catch (RuntimeException e) { + return; // cool + } + throw new RuntimeException("Should have thrown RuntimeException"); + } + + public void testParentContains2() { + SymbolTable parent = new SymbolTable(); + SymbolTable child = new SymbolTable(parent); + child.add(new Symbol("bar", 12)); + child.add(new Symbol("baz", 12)); + assertTrue(!parent.getUnusedSymbols().hasNext()); + assertTrue(child.getUnusedSymbols().hasNext()); + } + + public void testRecordUsage() { + SymbolTable s = new SymbolTable(); + s.add(FOO); + assertTrue(s.getUnusedSymbols().hasNext()); + s.recordPossibleUsageOf(FOO); + assertTrue(!s.getUnusedSymbols().hasNext()); + } + + public void testRecordPossibleUsage() { + SymbolTable parent = new SymbolTable(); + SymbolTable child = new SymbolTable(parent); + child.recordPossibleUsageOf(new Symbol("bar", 10)); + assertTrue(!parent.getUnusedSymbols().hasNext()); + } + + public void testRecordPossibleUsage2() { + SymbolTable s = new SymbolTable(); + s.recordPossibleUsageOf(new Symbol("bar", 10)); + assertTrue(!s.getUnusedSymbols().hasNext()); + } + + public void testRecordUsageParent() { + SymbolTable parent = new SymbolTable(); + parent.add(FOO); + SymbolTable child = new SymbolTable(parent); + assertEquals(FOO, parent.getUnusedSymbols().next()); + } + + public void testRecordUsageParent2() { + SymbolTable parent = new SymbolTable(); + parent.add(FOO); + SymbolTable child = new SymbolTable(parent); + child.recordPossibleUsageOf(FOO); + assertTrue(!parent.getUnusedSymbols().hasNext()); + } +} diff --git a/pmd/regress/test/com/infoether/pmd/SymbolTest.java b/pmd/regress/test/com/infoether/pmd/SymbolTest.java new file mode 100644 index 0000000000..55fbfd97f3 --- /dev/null +++ b/pmd/regress/test/com/infoether/pmd/SymbolTest.java @@ -0,0 +1,24 @@ +/* + * User: tom + * Date: Jun 19, 2002 + * Time: 11:59:24 AM + */ +package test.com.infoether.pmd; + +import junit.framework.TestCase; +import com.infoether.pmd.Symbol; + +public class SymbolTest extends TestCase { + + public SymbolTest(String name) { + super(name); + } + + public void testBasic() { + Symbol s = new Symbol("foo", 10); + assertEquals(10, s.getLine()); + assertEquals("foo", s.getImage()); + assertEquals(s, new Symbol("foo", 5)); + assertEquals(s.hashCode(), new Symbol("foo", 6).hashCode()); + } +} diff --git a/pmd/src/com/infoether/pmd/AbstractRule.java b/pmd/src/com/infoether/pmd/AbstractRule.java new file mode 100644 index 0000000000..9db504434d --- /dev/null +++ b/pmd/src/com/infoether/pmd/AbstractRule.java @@ -0,0 +1,21 @@ +/* + * User: tom + * Date: Jun 17, 2002 + * Time: 5:44:22 PM + */ +package com.infoether.pmd; + +import com.infoether.pmd.ast.JavaParserVisitorAdapter; + +public abstract class AbstractRule extends JavaParserVisitorAdapter { + public String getName() {return getClass().getName();} + + public boolean equals(Object o) { + Rule r = (Rule)o; + return r.getName().equals(getName()); + } + + public int hashCode() { + return getName().hashCode(); + } +} diff --git a/pmd/src/com/infoether/pmd/DontCreateThreadsRule.java b/pmd/src/com/infoether/pmd/DontCreateThreadsRule.java new file mode 100644 index 0000000000..6e4e2f525a --- /dev/null +++ b/pmd/src/com/infoether/pmd/DontCreateThreadsRule.java @@ -0,0 +1,20 @@ +package com.infoether.pmd; + +import com.infoether.pmd.ast.JavaParserVisitorAdapter; +import com.infoether.pmd.ast.ASTAllocationExpression; +import com.infoether.pmd.ast.ASTName; + +import java.util.*; + +public class DontCreateThreadsRule extends AbstractRule implements Rule { + + public String getDescription() {return "Don't create threads, use the ThreadService instead";} + + public Object visit(ASTAllocationExpression node, Object data){ + if ((node.jjtGetChild(0) instanceof ASTName) // this avoids "new ", i.e., "new int[]" + && ((ASTName)node.jjtGetChild(0)).getImage().equals("Thread")) { + ((Report)data).addRuleViolation(new RuleViolation(this, node.getBeginLine())); + } + return super.visit(node, data); + } +} diff --git a/pmd/src/com/infoether/pmd/DontCreateTimersRule.java b/pmd/src/com/infoether/pmd/DontCreateTimersRule.java new file mode 100644 index 0000000000..88d56264b2 --- /dev/null +++ b/pmd/src/com/infoether/pmd/DontCreateTimersRule.java @@ -0,0 +1,20 @@ +package com.infoether.pmd; + +import com.infoether.pmd.ast.JavaParserVisitorAdapter; +import com.infoether.pmd.ast.ASTAllocationExpression; +import com.infoether.pmd.ast.ASTName; + +import java.util.*; + +public class DontCreateTimersRule extends AbstractRule implements Rule { + + public String getDescription() {return "Don't create java.util.Timers, use the Cougaar alarm service instead";} + + public Object visit(ASTAllocationExpression node, Object data){ + if ((node.jjtGetChild(0) instanceof ASTName) // this avoids "new ", i.e., "new int[]" + && ((ASTName)node.jjtGetChild(0)).getImage().equals("Timer")) { + ((Report)data).addRuleViolation(new RuleViolation(this, node.getBeginLine())); + } + return super.visit(node, data); + } +} diff --git a/pmd/src/com/infoether/pmd/EmptyCatchBlockRule.java b/pmd/src/com/infoether/pmd/EmptyCatchBlockRule.java new file mode 100644 index 0000000000..971bb99e7e --- /dev/null +++ b/pmd/src/com/infoether/pmd/EmptyCatchBlockRule.java @@ -0,0 +1,21 @@ +/* + * User: tom + * Date: Jun 14, 2002 + * Time: 12:13:55 PM + */ +package com.infoether.pmd; + +import com.infoether.pmd.ast.*; + +public class EmptyCatchBlockRule extends AbstractRule implements Rule { + + public String getDescription() {return "Avoid empty catch blocks";} + + public Object visit(ASTBlock node, Object data){ + if ((node.jjtGetParent() instanceof ASTTryStatement) && node.jjtGetNumChildren()==0) { + ((Report)data).addRuleViolation(new RuleViolation(this, node.getBeginLine())); + } + + return super.visit(node, data); + } +} diff --git a/pmd/src/com/infoether/pmd/EmptyIfStmtRule.java b/pmd/src/com/infoether/pmd/EmptyIfStmtRule.java new file mode 100644 index 0000000000..56821eb748 --- /dev/null +++ b/pmd/src/com/infoether/pmd/EmptyIfStmtRule.java @@ -0,0 +1,23 @@ +/* + * User: tom + * Date: Jun 17, 2002 + * Time: 4:23:30 PM + */ +package com.infoether.pmd; + +import com.infoether.pmd.ast.JavaParserVisitorAdapter; +import com.infoether.pmd.ast.ASTBlock; +import com.infoether.pmd.ast.ASTTryStatement; +import com.infoether.pmd.ast.ASTIfStatement; + +public class EmptyIfStmtRule extends AbstractRule implements Rule { + public String getDescription() {return "Avoid empty IF statements";} + + public Object visit(ASTBlock node, Object data){ + if ((node.jjtGetParent().jjtGetParent() instanceof ASTIfStatement) && node.jjtGetNumChildren()==0) { + ((Report)data).addRuleViolation(new RuleViolation(this, node.getBeginLine())); + } + + return super.visit(node, data); + } +} diff --git a/pmd/src/com/infoether/pmd/Namespace.java b/pmd/src/com/infoether/pmd/Namespace.java new file mode 100644 index 0000000000..1e7ec4c11b --- /dev/null +++ b/pmd/src/com/infoether/pmd/Namespace.java @@ -0,0 +1,63 @@ +/* + * User: tom + * Date: Jun 21, 2002 + * Time: 2:11:15 PM + */ +package com.infoether.pmd; + +import java.util.Stack; + + +/** + * + * Here's the problem: + * + * public class Outer + * { + * private String foo; + * public void foo() { + * bar(new Runnable() {public void run() {String foo;}}); + * } + * private void bar(Runnable r) {} + * } + * + * In this example, Outer.foo and the Runnable.foo are two different variables - even though + * Runnable.foo looks like its inside Outer, they don't conflict. + * + * So, a couple of SymbolTables are grouped into a Namespace. SymbolTables are grouped so that inner classes have their own + * "group" of symbol tables. So a class with an inner class would look like this: + * + * ST + * ST + * NS2 + * ST ST ST + * ST ST ST + * NS1 NS1 NS1 + * + * That way the scopes work out nicely and inner classes can be arbitrarily nested. + */ +public class Namespace { + + private Stack tables = new Stack(); + + public void addTable() { + if (tables.empty()) { + tables.push(new SymbolTable()); + } else { + tables.push(new SymbolTable((SymbolTable)tables.peek())); + } + } + + public void removeTable() { + tables.pop(); + } + + public SymbolTable peek() { + return (SymbolTable)tables.peek(); + } + + public int size() { + return tables.size(); + } + +} diff --git a/pmd/src/com/infoether/pmd/PMD.java b/pmd/src/com/infoether/pmd/PMD.java new file mode 100644 index 0000000000..3b5641698d --- /dev/null +++ b/pmd/src/com/infoether/pmd/PMD.java @@ -0,0 +1,65 @@ +/* + * User: tom + * Date: Jun 17, 2002 + * Time: 3:23:17 PM + */ +package com.infoether.pmd; + +import com.infoether.pmd.ast.JavaParser; +import com.infoether.pmd.ast.ASTCompilationUnit; +import com.infoether.pmd.ast.JavaParserVisitor; +import com.infoether.pmd.ast.ParseException; + +import java.io.*; +import java.util.List; +import java.util.Iterator; + +public class PMD { + + public Report processFile(InputStream is) { + return null; + } + + public Report processFile(FileReader fr) { + return null; } + + public Report processFile(File file, String ruleSetType) { + Report report = new Report(file.getAbsolutePath()); + List rules = RuleFactory.createRules(ruleSetType); + + try { + Reader reader = new BufferedReader(new FileReader(file)); + JavaParser parser = new JavaParser(reader); + ASTCompilationUnit c = parser.CompilationUnit(); + //c.dump(""); + for (Iterator iterator = rules.iterator(); iterator.hasNext();) { + JavaParserVisitor rule = (JavaParserVisitor)iterator.next(); + c.childrenAccept(rule, report); + } + reader.close(); + } catch (FileNotFoundException fnfe) { + fnfe.printStackTrace(); + } catch (ParseException pe) { + System.out.println("Error while parsing " + file.getAbsolutePath() + " at line " + pe.currentToken.beginLine + "; continuing..."); + } catch (IOException ioe) { + ioe.printStackTrace(); + } catch (Throwable t) { + System.out.println("Error while parsing " + file.getAbsolutePath() + "; "+ t.getMessage() + "; continuing..."); + //t.printStackTrace(); + } + return report; + } + + public static void main(String[] args) { + if (args.length == 0) { + throw new RuntimeException("Pass a filename in"); + } + File input = new File(args[0]); + if (!input.exists()) { + throw new RuntimeException("File " + args[0] + " doesn't exist"); + } + PMD pmd = new PMD(); + Report report = pmd.processFile(input, RuleFactory.ALL); + System.out.println(report.renderToText()); + } +} diff --git a/pmd/src/com/infoether/pmd/PMDTask.java b/pmd/src/com/infoether/pmd/PMDTask.java new file mode 100644 index 0000000000..cc38910969 --- /dev/null +++ b/pmd/src/com/infoether/pmd/PMDTask.java @@ -0,0 +1,68 @@ +package com.infoether.pmd; + +import org.apache.tools.ant.*; +import org.apache.tools.ant.types.*; +import java.util.*; +import java.io.*; + +import com.infoether.pmd.ast.JavaParser; +import com.infoether.pmd.ast.JavaParserVisitor; +import com.infoether.pmd.ast.ParseException; +import com.infoether.pmd.ast.ASTCompilationUnit; + +public class PMDTask extends Task { + + private List filesets = new ArrayList(); + private String reportFile; + private boolean verbose; + private String ruleSetType; + + public void setVerbose(boolean verbose) { + this.verbose = verbose; + } + + public void setRuleSetType(String ruleSetType) { + this.ruleSetType = ruleSetType; + } + + public void addFileset(FileSet set) { + filesets.add(set); + } + + public void setReportFile(String reportFile) { + this.reportFile = reportFile; + } + + public void execute() throws BuildException { + if (reportFile == null) { + throw new BuildException("No report file specified"); + } + if (ruleSetType == null) { + throw new BuildException("No rule set type specified"); + } + StringBuffer buf = new StringBuffer(); + for (Iterator i = filesets.iterator(); i.hasNext();) { + FileSet fs = (FileSet) i.next(); + DirectoryScanner ds = fs.getDirectoryScanner(project); + String[] srcFiles = ds.getIncludedFiles(); + for (int j=0; j mk) { + popNode(); + } + mk = ((Integer)marks.pop()).intValue(); + } + + + void openNodeScope(Node n) { + marks.push(new Integer(mk)); + mk = sp; + n.jjtOpen(); + } + + + /* A definite node is constructed from a specified number of + children. That number of nodes are popped from the stack and + made the children of the definite node. Then the definite node + is pushed on to the stack. */ + void closeNodeScope(Node n, int num) { + mk = ((Integer)marks.pop()).intValue(); + while (num-- > 0) { + Node c = popNode(); + c.jjtSetParent(n); + n.jjtAddChild(c, num); + } + n.jjtClose(); + pushNode(n); + node_created = true; + } + + + /* A conditional node is constructed if its condition is true. All + the nodes that have been pushed since the node was opened are + made children of the the conditional node, which is then pushed + on to the stack. If the condition is false the node is not + constructed and they are left on the stack. */ + void closeNodeScope(Node n, boolean condition) { + if (condition) { + int a = nodeArity(); + mk = ((Integer)marks.pop()).intValue(); + while (a-- > 0) { + Node c = popNode(); + c.jjtSetParent(n); + n.jjtAddChild(c, a); + } + n.jjtClose(); + pushNode(n); + node_created = true; + } else { + mk = ((Integer)marks.pop()).intValue(); + node_created = false; + } + } +} diff --git a/pmd/src/com/infoether/pmd/ast/JavaCharStream.java b/pmd/src/com/infoether/pmd/ast/JavaCharStream.java new file mode 100644 index 0000000000..ab464fdd15 --- /dev/null +++ b/pmd/src/com/infoether/pmd/ast/JavaCharStream.java @@ -0,0 +1,547 @@ +/* Generated By:JavaCC: Do not edit this line. JavaCharStream.java Version 2.1 */ +package com.infoether.pmd.ast; + +/** + * An implementation of interface CharStream, where the stream is assumed to + * contain only ASCII characters (with java-like unicode escape processing). + */ + +public final class JavaCharStream +{ + public static final boolean staticFlag = false; + static final int hexval(char c) throws java.io.IOException { + switch(c) + { + case '0' : + return 0; + case '1' : + return 1; + case '2' : + return 2; + case '3' : + return 3; + case '4' : + return 4; + case '5' : + return 5; + case '6' : + return 6; + case '7' : + return 7; + case '8' : + return 8; + case '9' : + return 9; + + case 'a' : + case 'A' : + return 10; + case 'b' : + case 'B' : + return 11; + case 'c' : + case 'C' : + return 12; + case 'd' : + case 'D' : + return 13; + case 'e' : + case 'E' : + return 14; + case 'f' : + case 'F' : + return 15; + } + + throw new java.io.IOException(); // Should never come here + } + + public int bufpos = -1; + int bufsize; + int available; + int tokenBegin; + private int bufline[]; + private int bufcolumn[]; + + private int column = 0; + private int line = 1; + + private boolean prevCharIsCR = false; + private boolean prevCharIsLF = false; + + private java.io.Reader inputStream; + + private char[] nextCharBuf; + private char[] buffer; + private int maxNextCharInd = 0; + private int nextCharInd = -1; + private int inBuf = 0; + + private final void ExpandBuff(boolean wrapAround) + { + char[] newbuffer = new char[bufsize + 2048]; + int newbufline[] = new int[bufsize + 2048]; + int newbufcolumn[] = new int[bufsize + 2048]; + + try + { + if (wrapAround) + { + System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin); + System.arraycopy(buffer, 0, newbuffer, + bufsize - tokenBegin, bufpos); + buffer = newbuffer; + + System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin); + System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos); + bufline = newbufline; + + System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin); + System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos); + bufcolumn = newbufcolumn; + + bufpos += (bufsize - tokenBegin); + } + else + { + System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin); + buffer = newbuffer; + + System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin); + bufline = newbufline; + + System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin); + bufcolumn = newbufcolumn; + + bufpos -= tokenBegin; + } + } + catch (Throwable t) + { + throw new Error(t.getMessage()); + } + + available = (bufsize += 2048); + tokenBegin = 0; + } + + private final void FillBuff() throws java.io.IOException + { + int i; + if (maxNextCharInd == 4096) + maxNextCharInd = nextCharInd = 0; + + try { + if ((i = inputStream.read(nextCharBuf, maxNextCharInd, + 4096 - maxNextCharInd)) == -1) + { + inputStream.close(); + throw new java.io.IOException(); + } + else + maxNextCharInd += i; + return; + } + catch(java.io.IOException e) { + if (bufpos != 0) + { + --bufpos; + backup(0); + } + else + { + bufline[bufpos] = line; + bufcolumn[bufpos] = column; + } + throw e; + } + } + + private final char ReadByte() throws java.io.IOException + { + if (++nextCharInd >= maxNextCharInd) + FillBuff(); + + return nextCharBuf[nextCharInd]; + } + + public final char BeginToken() throws java.io.IOException + { + if (inBuf > 0) + { + --inBuf; + + if (++bufpos == bufsize) + bufpos = 0; + + tokenBegin = bufpos; + return buffer[bufpos]; + } + + tokenBegin = 0; + bufpos = -1; + + return readChar(); + } + + private final void AdjustBuffSize() + { + if (available == bufsize) + { + if (tokenBegin > 2048) + { + bufpos = 0; + available = tokenBegin; + } + else + ExpandBuff(false); + } + else if (available > tokenBegin) + available = bufsize; + else if ((tokenBegin - available) < 2048) + ExpandBuff(true); + else + available = tokenBegin; + } + + private final void UpdateLineColumn(char c) + { + column++; + + if (prevCharIsLF) + { + prevCharIsLF = false; + line += (column = 1); + } + else if (prevCharIsCR) + { + prevCharIsCR = false; + if (c == '\n') + { + prevCharIsLF = true; + } + else + line += (column = 1); + } + + switch (c) + { + case '\r' : + prevCharIsCR = true; + break; + case '\n' : + prevCharIsLF = true; + break; + case '\t' : + column--; + column += (8 - (column & 07)); + break; + default : + break; + } + + bufline[bufpos] = line; + bufcolumn[bufpos] = column; + } + + public final char readChar() throws java.io.IOException + { + if (inBuf > 0) + { + --inBuf; + + if (++bufpos == bufsize) + bufpos = 0; + + return buffer[bufpos]; + } + + char c; + + if (++bufpos == available) + AdjustBuffSize(); + + if ((buffer[bufpos] = c = ReadByte()) == '\\') + { + UpdateLineColumn(c); + + int backSlashCnt = 1; + + for (;;) // Read all the backslashes + { + if (++bufpos == available) + AdjustBuffSize(); + + try + { + if ((buffer[bufpos] = c = ReadByte()) != '\\') + { + UpdateLineColumn(c); + // found a non-backslash char. + if ((c == 'u') && ((backSlashCnt & 1) == 1)) + { + if (--bufpos < 0) + bufpos = bufsize - 1; + + break; + } + + backup(backSlashCnt); + return '\\'; + } + } + catch(java.io.IOException e) + { + if (backSlashCnt > 1) + backup(backSlashCnt); + + return '\\'; + } + + UpdateLineColumn(c); + backSlashCnt++; + } + + // Here, we have seen an odd number of backslash's followed by a 'u' + try + { + while ((c = ReadByte()) == 'u') + ++column; + + buffer[bufpos] = c = (char)(hexval(c) << 12 | + hexval(ReadByte()) << 8 | + hexval(ReadByte()) << 4 | + hexval(ReadByte())); + + column += 4; + } + catch(java.io.IOException e) + { + throw new Error("Invalid escape character at line " + line + + " column " + column + "."); + } + + if (backSlashCnt == 1) + return c; + else + { + backup(backSlashCnt - 1); + return '\\'; + } + } + else + { + UpdateLineColumn(c); + return (c); + } + } + + /** + * @deprecated + * @see #getEndColumn + */ + + public final int getColumn() { + return bufcolumn[bufpos]; + } + + /** + * @deprecated + * @see #getEndLine + */ + + public final int getLine() { + return bufline[bufpos]; + } + + public final int getEndColumn() { + return bufcolumn[bufpos]; + } + + public final int getEndLine() { + return bufline[bufpos]; + } + + public final int getBeginColumn() { + return bufcolumn[tokenBegin]; + } + + public final int getBeginLine() { + return bufline[tokenBegin]; + } + + public final void backup(int amount) { + + inBuf += amount; + if ((bufpos -= amount) < 0) + bufpos += bufsize; + } + + public JavaCharStream(java.io.Reader dstream, + int startline, int startcolumn, int buffersize) + { + inputStream = dstream; + line = startline; + column = startcolumn - 1; + + available = bufsize = buffersize; + buffer = new char[buffersize]; + bufline = new int[buffersize]; + bufcolumn = new int[buffersize]; + nextCharBuf = new char[4096]; + } + + public JavaCharStream(java.io.Reader dstream, + int startline, int startcolumn) + { + this(dstream, startline, startcolumn, 4096); + } + + public JavaCharStream(java.io.Reader dstream) + { + this(dstream, 1, 1, 4096); + } + public void ReInit(java.io.Reader dstream, + int startline, int startcolumn, int buffersize) + { + inputStream = dstream; + line = startline; + column = startcolumn - 1; + + if (buffer == null || buffersize != buffer.length) + { + available = bufsize = buffersize; + buffer = new char[buffersize]; + bufline = new int[buffersize]; + bufcolumn = new int[buffersize]; + nextCharBuf = new char[4096]; + } + prevCharIsLF = prevCharIsCR = false; + tokenBegin = inBuf = maxNextCharInd = 0; + nextCharInd = bufpos = -1; + } + + public void ReInit(java.io.Reader dstream, + int startline, int startcolumn) + { + ReInit(dstream, startline, startcolumn, 4096); + } + + public void ReInit(java.io.Reader dstream) + { + ReInit(dstream, 1, 1, 4096); + } + public JavaCharStream(java.io.InputStream dstream, int startline, + int startcolumn, int buffersize) + { + this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096); + } + + public JavaCharStream(java.io.InputStream dstream, int startline, + int startcolumn) + { + this(dstream, startline, startcolumn, 4096); + } + + public JavaCharStream(java.io.InputStream dstream) + { + this(dstream, 1, 1, 4096); + } + + public void ReInit(java.io.InputStream dstream, int startline, + int startcolumn, int buffersize) + { + ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096); + } + public void ReInit(java.io.InputStream dstream, int startline, + int startcolumn) + { + ReInit(dstream, startline, startcolumn, 4096); + } + public void ReInit(java.io.InputStream dstream) + { + ReInit(dstream, 1, 1, 4096); + } + + public final String GetImage() + { + if (bufpos >= tokenBegin) + return new String(buffer, tokenBegin, bufpos - tokenBegin + 1); + else + return new String(buffer, tokenBegin, bufsize - tokenBegin) + + new String(buffer, 0, bufpos + 1); + } + + public final char[] GetSuffix(int len) + { + char[] ret = new char[len]; + + if ((bufpos + 1) >= len) + System.arraycopy(buffer, bufpos - len + 1, ret, 0, len); + else + { + System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0, + len - bufpos - 1); + System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1); + } + + return ret; + } + + public void Done() + { + nextCharBuf = null; + buffer = null; + bufline = null; + bufcolumn = null; + } + + /** + * Method to adjust line and column numbers for the start of a token.
+ */ + public void adjustBeginLineColumn(int newLine, int newCol) + { + int start = tokenBegin; + int len; + + if (bufpos >= tokenBegin) + { + len = bufpos - tokenBegin + inBuf + 1; + } + else + { + len = bufsize - tokenBegin + bufpos + 1 + inBuf; + } + + int i = 0, j = 0, k = 0; + int nextColDiff = 0, columnDiff = 0; + + while (i < len && + bufline[j = start % bufsize] == bufline[k = ++start % bufsize]) + { + bufline[j] = newLine; + nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j]; + bufcolumn[j] = newCol + columnDiff; + columnDiff = nextColDiff; + i++; + } + + if (i < len) + { + bufline[j] = newLine++; + bufcolumn[j] = newCol + columnDiff; + + while (i++ < len) + { + if (bufline[j = start % bufsize] != bufline[++start % bufsize]) + bufline[j] = newLine++; + else + bufline[j] = newLine; + } + } + + line = bufline[j]; + column = bufcolumn[j]; + } + +} diff --git a/pmd/src/com/infoether/pmd/ast/JavaParser.java b/pmd/src/com/infoether/pmd/ast/JavaParser.java new file mode 100644 index 0000000000..f08dde7094 --- /dev/null +++ b/pmd/src/com/infoether/pmd/ast/JavaParser.java @@ -0,0 +1,8790 @@ +/* Generated By:JJTree&JavaCC: Do not edit this line. JavaParser.java */ +package com.infoether.pmd.ast; +public class JavaParser/*@bgen(jjtree)*/implements JavaParserTreeConstants, JavaParserConstants {/*@bgen(jjtree)*/ + protected JJTJavaParserState jjtree = new JJTJavaParserState(); + +/***************************************** + * THE JAVA LANGUAGE GRAMMAR STARTS HERE * + *****************************************/ + +/* + * Program structuring syntax follows. + */ + final public ASTCompilationUnit CompilationUnit() throws ParseException { + /*@bgen(jjtree) CompilationUnit */ + ASTCompilationUnit jjtn000 = new ASTCompilationUnit(this, JJTCOMPILATIONUNIT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PACKAGE: + PackageDeclaration(); + break; + default: + jj_la1[0] = jj_gen; + ; + } + label_1: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IMPORT: + ; + break; + default: + jj_la1[1] = jj_gen; + break label_1; + } + ImportDeclaration(); + } + label_2: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ABSTRACT: + case CLASS: + case FINAL: + case INTERFACE: + case PUBLIC: + case STRICTFP: + case SEMICOLON: + ; + break; + default: + jj_la1[2] = jj_gen; + break label_2; + } + TypeDeclaration(); + } + jj_consume_token(0); + jjtree.closeNodeScope(jjtn000, true); + jjtc000 = false; + {if (true) return jjtn000;} + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + throw new Error("Missing return statement in function"); + } + + final public void PackageDeclaration() throws ParseException { + /*@bgen(jjtree) PackageDeclaration */ + ASTPackageDeclaration jjtn000 = new ASTPackageDeclaration(this, JJTPACKAGEDECLARATION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(PACKAGE); + Name(); + jj_consume_token(SEMICOLON); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ImportDeclaration() throws ParseException { + /*@bgen(jjtree) ImportDeclaration */ + ASTImportDeclaration jjtn000 = new ASTImportDeclaration(this, JJTIMPORTDECLARATION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(IMPORT); + Name(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case DOT: + jj_consume_token(DOT); + jj_consume_token(STAR); + break; + default: + jj_la1[3] = jj_gen; + ; + } + jj_consume_token(SEMICOLON); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void TypeDeclaration() throws ParseException { + /*@bgen(jjtree) TypeDeclaration */ + ASTTypeDeclaration jjtn000 = new ASTTypeDeclaration(this, JJTTYPEDECLARATION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + if (jj_2_1(2147483647)) { + ClassDeclaration(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ABSTRACT: + case INTERFACE: + case PUBLIC: + case STRICTFP: + InterfaceDeclaration(); + break; + case SEMICOLON: + jj_consume_token(SEMICOLON); + break; + default: + jj_la1[4] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + +/* + * Declaration syntax follows. + */ + final public void ClassDeclaration() throws ParseException { + /*@bgen(jjtree) ClassDeclaration */ + ASTClassDeclaration jjtn000 = new ASTClassDeclaration(this, JJTCLASSDECLARATION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + label_3: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ABSTRACT: + case FINAL: + case PUBLIC: + case STRICTFP: + ; + break; + default: + jj_la1[5] = jj_gen; + break label_3; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ABSTRACT: + jj_consume_token(ABSTRACT); + break; + case FINAL: + jj_consume_token(FINAL); + break; + case PUBLIC: + jj_consume_token(PUBLIC); + break; + case STRICTFP: + jj_consume_token(STRICTFP); + break; + default: + jj_la1[6] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + UnmodifiedClassDeclaration(); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void UnmodifiedClassDeclaration() throws ParseException { + /*@bgen(jjtree) UnmodifiedClassDeclaration */ + ASTUnmodifiedClassDeclaration jjtn000 = new ASTUnmodifiedClassDeclaration(this, JJTUNMODIFIEDCLASSDECLARATION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(CLASS); + jj_consume_token(IDENTIFIER); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case EXTENDS: + jj_consume_token(EXTENDS); + Name(); + break; + default: + jj_la1[7] = jj_gen; + ; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IMPLEMENTS: + jj_consume_token(IMPLEMENTS); + NameList(); + break; + default: + jj_la1[8] = jj_gen; + ; + } + ClassBody(); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ClassBody() throws ParseException { + /*@bgen(jjtree) ClassBody */ + ASTClassBody jjtn000 = new ASTClassBody(this, JJTCLASSBODY); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(LBRACE); + label_4: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ABSTRACT: + case BOOLEAN: + case BYTE: + case CHAR: + case CLASS: + case DOUBLE: + case FINAL: + case FLOAT: + case INT: + case INTERFACE: + case LONG: + case NATIVE: + case PRIVATE: + case PROTECTED: + case PUBLIC: + case SHORT: + case STATIC: + case SYNCHRONIZED: + case TRANSIENT: + case VOID: + case VOLATILE: + case STRICTFP: + case IDENTIFIER: + case LBRACE: + case SEMICOLON: + ; + break; + default: + jj_la1[9] = jj_gen; + break label_4; + } + ClassBodyDeclaration(); + } + jj_consume_token(RBRACE); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void NestedClassDeclaration() throws ParseException { + /*@bgen(jjtree) NestedClassDeclaration */ + ASTNestedClassDeclaration jjtn000 = new ASTNestedClassDeclaration(this, JJTNESTEDCLASSDECLARATION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + label_5: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ABSTRACT: + case FINAL: + case PRIVATE: + case PROTECTED: + case PUBLIC: + case STATIC: + case STRICTFP: + ; + break; + default: + jj_la1[10] = jj_gen; + break label_5; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case STATIC: + jj_consume_token(STATIC); + break; + case ABSTRACT: + jj_consume_token(ABSTRACT); + break; + case FINAL: + jj_consume_token(FINAL); + break; + case PUBLIC: + jj_consume_token(PUBLIC); + break; + case PROTECTED: + jj_consume_token(PROTECTED); + break; + case PRIVATE: + jj_consume_token(PRIVATE); + break; + case STRICTFP: + jj_consume_token(STRICTFP); + break; + default: + jj_la1[11] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + UnmodifiedClassDeclaration(); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ClassBodyDeclaration() throws ParseException { + /*@bgen(jjtree) ClassBodyDeclaration */ + ASTClassBodyDeclaration jjtn000 = new ASTClassBodyDeclaration(this, JJTCLASSBODYDECLARATION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + if (jj_2_2(2)) { + Initializer(); + } else if (jj_2_3(2147483647)) { + NestedClassDeclaration(); + } else if (jj_2_4(2147483647)) { + NestedInterfaceDeclaration(); + } else if (jj_2_5(2147483647)) { + ConstructorDeclaration(); + } else if (jj_2_6(2147483647)) { + MethodDeclaration(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FINAL: + case FLOAT: + case INT: + case LONG: + case PRIVATE: + case PROTECTED: + case PUBLIC: + case SHORT: + case STATIC: + case TRANSIENT: + case VOLATILE: + case IDENTIFIER: + FieldDeclaration(); + break; + case SEMICOLON: + jj_consume_token(SEMICOLON); + break; + default: + jj_la1[12] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + +// This production is to determine lookahead only. + final public void MethodDeclarationLookahead() throws ParseException { + /*@bgen(jjtree) MethodDeclarationLookahead */ + ASTMethodDeclarationLookahead jjtn000 = new ASTMethodDeclarationLookahead(this, JJTMETHODDECLARATIONLOOKAHEAD); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + label_6: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ABSTRACT: + case FINAL: + case NATIVE: + case PRIVATE: + case PROTECTED: + case PUBLIC: + case STATIC: + case SYNCHRONIZED: + case STRICTFP: + ; + break; + default: + jj_la1[13] = jj_gen; + break label_6; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PUBLIC: + jj_consume_token(PUBLIC); + break; + case PROTECTED: + jj_consume_token(PROTECTED); + break; + case PRIVATE: + jj_consume_token(PRIVATE); + break; + case STATIC: + jj_consume_token(STATIC); + break; + case ABSTRACT: + jj_consume_token(ABSTRACT); + break; + case FINAL: + jj_consume_token(FINAL); + break; + case NATIVE: + jj_consume_token(NATIVE); + break; + case SYNCHRONIZED: + jj_consume_token(SYNCHRONIZED); + break; + case STRICTFP: + jj_consume_token(STRICTFP); + break; + default: + jj_la1[14] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + ResultType(); + jj_consume_token(IDENTIFIER); + jj_consume_token(LPAREN); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void InterfaceDeclaration() throws ParseException { + /*@bgen(jjtree) InterfaceDeclaration */ + ASTInterfaceDeclaration jjtn000 = new ASTInterfaceDeclaration(this, JJTINTERFACEDECLARATION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + label_7: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ABSTRACT: + case PUBLIC: + case STRICTFP: + ; + break; + default: + jj_la1[15] = jj_gen; + break label_7; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ABSTRACT: + jj_consume_token(ABSTRACT); + break; + case PUBLIC: + jj_consume_token(PUBLIC); + break; + case STRICTFP: + jj_consume_token(STRICTFP); + break; + default: + jj_la1[16] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + UnmodifiedInterfaceDeclaration(); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void NestedInterfaceDeclaration() throws ParseException { + /*@bgen(jjtree) NestedInterfaceDeclaration */ + ASTNestedInterfaceDeclaration jjtn000 = new ASTNestedInterfaceDeclaration(this, JJTNESTEDINTERFACEDECLARATION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + label_8: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ABSTRACT: + case FINAL: + case PRIVATE: + case PROTECTED: + case PUBLIC: + case STATIC: + case STRICTFP: + ; + break; + default: + jj_la1[17] = jj_gen; + break label_8; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case STATIC: + jj_consume_token(STATIC); + break; + case ABSTRACT: + jj_consume_token(ABSTRACT); + break; + case FINAL: + jj_consume_token(FINAL); + break; + case PUBLIC: + jj_consume_token(PUBLIC); + break; + case PROTECTED: + jj_consume_token(PROTECTED); + break; + case PRIVATE: + jj_consume_token(PRIVATE); + break; + case STRICTFP: + jj_consume_token(STRICTFP); + break; + default: + jj_la1[18] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + UnmodifiedInterfaceDeclaration(); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void UnmodifiedInterfaceDeclaration() throws ParseException { + /*@bgen(jjtree) UnmodifiedInterfaceDeclaration */ + ASTUnmodifiedInterfaceDeclaration jjtn000 = new ASTUnmodifiedInterfaceDeclaration(this, JJTUNMODIFIEDINTERFACEDECLARATION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(INTERFACE); + jj_consume_token(IDENTIFIER); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case EXTENDS: + jj_consume_token(EXTENDS); + NameList(); + break; + default: + jj_la1[19] = jj_gen; + ; + } + jj_consume_token(LBRACE); + label_9: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ABSTRACT: + case BOOLEAN: + case BYTE: + case CHAR: + case CLASS: + case DOUBLE: + case FINAL: + case FLOAT: + case INT: + case INTERFACE: + case LONG: + case NATIVE: + case PRIVATE: + case PROTECTED: + case PUBLIC: + case SHORT: + case STATIC: + case SYNCHRONIZED: + case TRANSIENT: + case VOID: + case VOLATILE: + case STRICTFP: + case IDENTIFIER: + case SEMICOLON: + ; + break; + default: + jj_la1[20] = jj_gen; + break label_9; + } + InterfaceMemberDeclaration(); + } + jj_consume_token(RBRACE); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void InterfaceMemberDeclaration() throws ParseException { + /*@bgen(jjtree) InterfaceMemberDeclaration */ + ASTInterfaceMemberDeclaration jjtn000 = new ASTInterfaceMemberDeclaration(this, JJTINTERFACEMEMBERDECLARATION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + if (jj_2_7(2147483647)) { + NestedClassDeclaration(); + } else if (jj_2_8(2147483647)) { + NestedInterfaceDeclaration(); + } else if (jj_2_9(2147483647)) { + MethodDeclaration(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FINAL: + case FLOAT: + case INT: + case LONG: + case PRIVATE: + case PROTECTED: + case PUBLIC: + case SHORT: + case STATIC: + case TRANSIENT: + case VOLATILE: + case IDENTIFIER: + FieldDeclaration(); + break; + case SEMICOLON: + jj_consume_token(SEMICOLON); + break; + default: + jj_la1[21] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void FieldDeclaration() throws ParseException { + /*@bgen(jjtree) FieldDeclaration */ +ASTFieldDeclaration jjtn000 = new ASTFieldDeclaration(this, JJTFIELDDECLARATION); +boolean jjtc000 = true; +jjtree.openNodeScope(jjtn000);StringBuffer modifiers = new StringBuffer(); + try { + label_10: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case FINAL: + case PRIVATE: + case PROTECTED: + case PUBLIC: + case STATIC: + case TRANSIENT: + case VOLATILE: + ; + break; + default: + jj_la1[22] = jj_gen; + break label_10; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PUBLIC: + jj_consume_token(PUBLIC); + modifiers.append("public,"); + break; + case PROTECTED: + jj_consume_token(PROTECTED); + modifiers.append("protected,"); + break; + case PRIVATE: + jj_consume_token(PRIVATE); + modifiers.append("private,"); + break; + case STATIC: + jj_consume_token(STATIC); + modifiers.append("static,"); + break; + case FINAL: + jj_consume_token(FINAL); + modifiers.append("final,"); + break; + case TRANSIENT: + jj_consume_token(TRANSIENT); + modifiers.append("transient,"); + break; + case VOLATILE: + jj_consume_token(VOLATILE); + modifiers.append("volatile,"); + break; + default: + jj_la1[23] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + jjtn000.setImage(modifiers.toString()); + Type(); + VariableDeclarator(); + label_11: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[24] = jj_gen; + break label_11; + } + jj_consume_token(COMMA); + VariableDeclarator(); + } + jj_consume_token(SEMICOLON); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void VariableDeclarator() throws ParseException { + /*@bgen(jjtree) VariableDeclarator */ + ASTVariableDeclarator jjtn000 = new ASTVariableDeclarator(this, JJTVARIABLEDECLARATOR); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + VariableDeclaratorId(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ASSIGN: + jj_consume_token(ASSIGN); + VariableInitializer(); + break; + default: + jj_la1[25] = jj_gen; + ; + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void VariableDeclaratorId() throws ParseException { + /*@bgen(jjtree) VariableDeclaratorId */ + ASTVariableDeclaratorId jjtn000 = new ASTVariableDeclaratorId(this, JJTVARIABLEDECLARATORID); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000);String s = null; + Token t = null; + try { + t = jj_consume_token(IDENTIFIER); + s = t.image; + label_12: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + ; + break; + default: + jj_la1[26] = jj_gen; + break label_12; + } + jj_consume_token(LBRACKET); + jj_consume_token(RBRACKET); + } + jjtree.closeNodeScope(jjtn000, true); + jjtc000 = false; + jjtn000.setImage( s ); + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void VariableInitializer() throws ParseException { + /*@bgen(jjtree) VariableInitializer */ + ASTVariableInitializer jjtn000 = new ASTVariableInitializer(this, JJTVARIABLEINITIALIZER); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACE: + ArrayInitializer(); + break; + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FALSE: + case FLOAT: + case INT: + case LONG: + case NEW: + case NULL: + case SHORT: + case SUPER: + case THIS: + case TRUE: + case VOID: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case BANG: + case TILDE: + case INCR: + case DECR: + case PLUS: + case MINUS: + Expression(); + break; + default: + jj_la1[27] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ArrayInitializer() throws ParseException { + /*@bgen(jjtree) ArrayInitializer */ + ASTArrayInitializer jjtn000 = new ASTArrayInitializer(this, JJTARRAYINITIALIZER); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(LBRACE); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FALSE: + case FLOAT: + case INT: + case LONG: + case NEW: + case NULL: + case SHORT: + case SUPER: + case THIS: + case TRUE: + case VOID: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case BANG: + case TILDE: + case INCR: + case DECR: + case PLUS: + case MINUS: + VariableInitializer(); + label_13: + while (true) { + if (jj_2_10(2)) { + ; + } else { + break label_13; + } + jj_consume_token(COMMA); + VariableInitializer(); + } + break; + default: + jj_la1[28] = jj_gen; + ; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + jj_consume_token(COMMA); + break; + default: + jj_la1[29] = jj_gen; + ; + } + jj_consume_token(RBRACE); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void MethodDeclaration() throws ParseException { + /*@bgen(jjtree) MethodDeclaration */ + ASTMethodDeclaration jjtn000 = new ASTMethodDeclaration(this, JJTMETHODDECLARATION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + label_14: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ABSTRACT: + case FINAL: + case NATIVE: + case PRIVATE: + case PROTECTED: + case PUBLIC: + case STATIC: + case SYNCHRONIZED: + case STRICTFP: + ; + break; + default: + jj_la1[30] = jj_gen; + break label_14; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PUBLIC: + jj_consume_token(PUBLIC); + break; + case PROTECTED: + jj_consume_token(PROTECTED); + break; + case PRIVATE: + jj_consume_token(PRIVATE); + break; + case STATIC: + jj_consume_token(STATIC); + break; + case ABSTRACT: + jj_consume_token(ABSTRACT); + break; + case FINAL: + jj_consume_token(FINAL); + break; + case NATIVE: + jj_consume_token(NATIVE); + break; + case SYNCHRONIZED: + jj_consume_token(SYNCHRONIZED); + break; + case STRICTFP: + jj_consume_token(STRICTFP); + break; + default: + jj_la1[31] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + ResultType(); + MethodDeclarator(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case THROWS: + jj_consume_token(THROWS); + NameList(); + break; + default: + jj_la1[32] = jj_gen; + ; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACE: + Block(); + break; + case SEMICOLON: + jj_consume_token(SEMICOLON); + break; + default: + jj_la1[33] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void MethodDeclarator() throws ParseException { + /*@bgen(jjtree) MethodDeclarator */ + ASTMethodDeclarator jjtn000 = new ASTMethodDeclarator(this, JJTMETHODDECLARATOR); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(IDENTIFIER); + FormalParameters(); + label_15: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + ; + break; + default: + jj_la1[34] = jj_gen; + break label_15; + } + jj_consume_token(LBRACKET); + jj_consume_token(RBRACKET); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void FormalParameters() throws ParseException { + /*@bgen(jjtree) FormalParameters */ + ASTFormalParameters jjtn000 = new ASTFormalParameters(this, JJTFORMALPARAMETERS); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(LPAREN); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FINAL: + case FLOAT: + case INT: + case LONG: + case SHORT: + case IDENTIFIER: + FormalParameter(); + label_16: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[35] = jj_gen; + break label_16; + } + jj_consume_token(COMMA); + FormalParameter(); + } + break; + default: + jj_la1[36] = jj_gen; + ; + } + jj_consume_token(RPAREN); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void FormalParameter() throws ParseException { + /*@bgen(jjtree) FormalParameter */ + ASTFormalParameter jjtn000 = new ASTFormalParameter(this, JJTFORMALPARAMETER); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case FINAL: + jj_consume_token(FINAL); + break; + default: + jj_la1[37] = jj_gen; + ; + } + Type(); + VariableDeclaratorId(); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ConstructorDeclaration() throws ParseException { + /*@bgen(jjtree) ConstructorDeclaration */ + ASTConstructorDeclaration jjtn000 = new ASTConstructorDeclaration(this, JJTCONSTRUCTORDECLARATION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PRIVATE: + case PROTECTED: + case PUBLIC: + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PUBLIC: + jj_consume_token(PUBLIC); + break; + case PROTECTED: + jj_consume_token(PROTECTED); + break; + case PRIVATE: + jj_consume_token(PRIVATE); + break; + default: + jj_la1[38] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + break; + default: + jj_la1[39] = jj_gen; + ; + } + jj_consume_token(IDENTIFIER); + FormalParameters(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case THROWS: + jj_consume_token(THROWS); + NameList(); + break; + default: + jj_la1[40] = jj_gen; + ; + } + jj_consume_token(LBRACE); + if (jj_2_11(2147483647)) { + ExplicitConstructorInvocation(); + } else { + ; + } + label_17: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BREAK: + case BYTE: + case CHAR: + case CLASS: + case CONTINUE: + case DO: + case DOUBLE: + case FALSE: + case FINAL: + case FLOAT: + case FOR: + case IF: + case INT: + case INTERFACE: + case LONG: + case NEW: + case NULL: + case RETURN: + case SHORT: + case SUPER: + case SWITCH: + case SYNCHRONIZED: + case THIS: + case THROW: + case TRUE: + case TRY: + case VOID: + case WHILE: + case ASSERT: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: + case INCR: + case DECR: + ; + break; + default: + jj_la1[41] = jj_gen; + break label_17; + } + BlockStatement(); + } + jj_consume_token(RBRACE); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ExplicitConstructorInvocation() throws ParseException { + /*@bgen(jjtree) ExplicitConstructorInvocation */ + ASTExplicitConstructorInvocation jjtn000 = new ASTExplicitConstructorInvocation(this, JJTEXPLICITCONSTRUCTORINVOCATION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + if (jj_2_13(2147483647)) { + jj_consume_token(THIS); + Arguments(); + jj_consume_token(SEMICOLON); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FALSE: + case FLOAT: + case INT: + case LONG: + case NEW: + case NULL: + case SHORT: + case SUPER: + case THIS: + case TRUE: + case VOID: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + if (jj_2_12(2)) { + PrimaryExpression(); + jj_consume_token(DOT); + } else { + ; + } + jj_consume_token(SUPER); + Arguments(); + jj_consume_token(SEMICOLON); + break; + default: + jj_la1[42] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void Initializer() throws ParseException { + /*@bgen(jjtree) Initializer */ + ASTInitializer jjtn000 = new ASTInitializer(this, JJTINITIALIZER); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case STATIC: + jj_consume_token(STATIC); + break; + default: + jj_la1[43] = jj_gen; + ; + } + Block(); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + +/* + * Type, name and expression syntax follows. + */ + final public void Type() throws ParseException { + /*@bgen(jjtree) Type */ + ASTType jjtn000 = new ASTType(this, JJTTYPE); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case SHORT: + PrimitiveType(); + break; + case IDENTIFIER: + Name(); + break; + default: + jj_la1[44] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + label_18: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + ; + break; + default: + jj_la1[45] = jj_gen; + break label_18; + } + jj_consume_token(LBRACKET); + jj_consume_token(RBRACKET); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void PrimitiveType() throws ParseException { + /*@bgen(jjtree) PrimitiveType */ + ASTPrimitiveType jjtn000 = new ASTPrimitiveType(this, JJTPRIMITIVETYPE); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + jj_consume_token(BOOLEAN); + break; + case CHAR: + jj_consume_token(CHAR); + break; + case BYTE: + jj_consume_token(BYTE); + break; + case SHORT: + jj_consume_token(SHORT); + break; + case INT: + jj_consume_token(INT); + break; + case LONG: + jj_consume_token(LONG); + break; + case FLOAT: + jj_consume_token(FLOAT); + break; + case DOUBLE: + jj_consume_token(DOUBLE); + break; + default: + jj_la1[46] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ResultType() throws ParseException { + /*@bgen(jjtree) ResultType */ + ASTResultType jjtn000 = new ASTResultType(this, JJTRESULTTYPE); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case VOID: + jj_consume_token(VOID); + break; + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FLOAT: + case INT: + case LONG: + case SHORT: + case IDENTIFIER: + Type(); + break; + default: + jj_la1[47] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void Name() throws ParseException { + /*@bgen(jjtree) Name */ + ASTName jjtn000 = new ASTName(this, JJTNAME); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000);StringBuffer s = new StringBuffer(); + Token t = null; + try { + t = jj_consume_token(IDENTIFIER); + s.append(t.image); + label_19: + while (true) { + if (jj_2_14(2)) { + ; + } else { + break label_19; + } + jj_consume_token(DOT); + t = jj_consume_token(IDENTIFIER); + s.append("."); + s.append(t.image); + } + jjtree.closeNodeScope(jjtn000, true); + jjtc000 = false; + jjtn000.setImage( s.toString() ); + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void NameList() throws ParseException { + /*@bgen(jjtree) NameList */ + ASTNameList jjtn000 = new ASTNameList(this, JJTNAMELIST); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + Name(); + label_20: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[48] = jj_gen; + break label_20; + } + jj_consume_token(COMMA); + Name(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + +/* + * Expression syntax follows. + */ + final public void Expression() throws ParseException { + /*@bgen(jjtree) Expression */ + ASTExpression jjtn000 = new ASTExpression(this, JJTEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + ConditionalExpression(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ASSIGN: + case PLUSASSIGN: + case MINUSASSIGN: + case STARASSIGN: + case SLASHASSIGN: + case ANDASSIGN: + case ORASSIGN: + case XORASSIGN: + case REMASSIGN: + case LSHIFTASSIGN: + case RSIGNEDSHIFTASSIGN: + case RUNSIGNEDSHIFTASSIGN: + AssignmentOperator(); + Expression(); + break; + default: + jj_la1[49] = jj_gen; + ; + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void AssignmentOperator() throws ParseException { + /*@bgen(jjtree) AssignmentOperator */ + ASTAssignmentOperator jjtn000 = new ASTAssignmentOperator(this, JJTASSIGNMENTOPERATOR); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ASSIGN: + jj_consume_token(ASSIGN); + break; + case STARASSIGN: + jj_consume_token(STARASSIGN); + break; + case SLASHASSIGN: + jj_consume_token(SLASHASSIGN); + break; + case REMASSIGN: + jj_consume_token(REMASSIGN); + break; + case PLUSASSIGN: + jj_consume_token(PLUSASSIGN); + break; + case MINUSASSIGN: + jj_consume_token(MINUSASSIGN); + break; + case LSHIFTASSIGN: + jj_consume_token(LSHIFTASSIGN); + break; + case RSIGNEDSHIFTASSIGN: + jj_consume_token(RSIGNEDSHIFTASSIGN); + break; + case RUNSIGNEDSHIFTASSIGN: + jj_consume_token(RUNSIGNEDSHIFTASSIGN); + break; + case ANDASSIGN: + jj_consume_token(ANDASSIGN); + break; + case XORASSIGN: + jj_consume_token(XORASSIGN); + break; + case ORASSIGN: + jj_consume_token(ORASSIGN); + break; + default: + jj_la1[50] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ConditionalExpression() throws ParseException { + /*@bgen(jjtree) ConditionalExpression */ + ASTConditionalExpression jjtn000 = new ASTConditionalExpression(this, JJTCONDITIONALEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + ConditionalOrExpression(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case HOOK: + jj_consume_token(HOOK); + Expression(); + jj_consume_token(COLON); + ConditionalExpression(); + break; + default: + jj_la1[51] = jj_gen; + ; + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ConditionalOrExpression() throws ParseException { + /*@bgen(jjtree) ConditionalOrExpression */ + ASTConditionalOrExpression jjtn000 = new ASTConditionalOrExpression(this, JJTCONDITIONALOREXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + ConditionalAndExpression(); + label_21: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case SC_OR: + ; + break; + default: + jj_la1[52] = jj_gen; + break label_21; + } + jj_consume_token(SC_OR); + ConditionalAndExpression(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ConditionalAndExpression() throws ParseException { + /*@bgen(jjtree) ConditionalAndExpression */ + ASTConditionalAndExpression jjtn000 = new ASTConditionalAndExpression(this, JJTCONDITIONALANDEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + InclusiveOrExpression(); + label_22: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case SC_AND: + ; + break; + default: + jj_la1[53] = jj_gen; + break label_22; + } + jj_consume_token(SC_AND); + InclusiveOrExpression(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void InclusiveOrExpression() throws ParseException { + /*@bgen(jjtree) InclusiveOrExpression */ + ASTInclusiveOrExpression jjtn000 = new ASTInclusiveOrExpression(this, JJTINCLUSIVEOREXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + ExclusiveOrExpression(); + label_23: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BIT_OR: + ; + break; + default: + jj_la1[54] = jj_gen; + break label_23; + } + jj_consume_token(BIT_OR); + ExclusiveOrExpression(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ExclusiveOrExpression() throws ParseException { + /*@bgen(jjtree) ExclusiveOrExpression */ + ASTExclusiveOrExpression jjtn000 = new ASTExclusiveOrExpression(this, JJTEXCLUSIVEOREXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + AndExpression(); + label_24: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case XOR: + ; + break; + default: + jj_la1[55] = jj_gen; + break label_24; + } + jj_consume_token(XOR); + AndExpression(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void AndExpression() throws ParseException { + /*@bgen(jjtree) AndExpression */ + ASTAndExpression jjtn000 = new ASTAndExpression(this, JJTANDEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + EqualityExpression(); + label_25: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BIT_AND: + ; + break; + default: + jj_la1[56] = jj_gen; + break label_25; + } + jj_consume_token(BIT_AND); + EqualityExpression(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void EqualityExpression() throws ParseException { + /*@bgen(jjtree) EqualityExpression */ + ASTEqualityExpression jjtn000 = new ASTEqualityExpression(this, JJTEQUALITYEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + InstanceOfExpression(); + label_26: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case EQ: + case NE: + ; + break; + default: + jj_la1[57] = jj_gen; + break label_26; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case EQ: + jj_consume_token(EQ); + break; + case NE: + jj_consume_token(NE); + break; + default: + jj_la1[58] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + InstanceOfExpression(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void InstanceOfExpression() throws ParseException { + /*@bgen(jjtree) InstanceOfExpression */ + ASTInstanceOfExpression jjtn000 = new ASTInstanceOfExpression(this, JJTINSTANCEOFEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + RelationalExpression(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case INSTANCEOF: + jj_consume_token(INSTANCEOF); + Type(); + break; + default: + jj_la1[59] = jj_gen; + ; + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void RelationalExpression() throws ParseException { + /*@bgen(jjtree) RelationalExpression */ + ASTRelationalExpression jjtn000 = new ASTRelationalExpression(this, JJTRELATIONALEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + ShiftExpression(); + label_27: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case GT: + case LT: + case LE: + case GE: + ; + break; + default: + jj_la1[60] = jj_gen; + break label_27; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LT: + jj_consume_token(LT); + break; + case GT: + jj_consume_token(GT); + break; + case LE: + jj_consume_token(LE); + break; + case GE: + jj_consume_token(GE); + break; + default: + jj_la1[61] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + ShiftExpression(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ShiftExpression() throws ParseException { + /*@bgen(jjtree) ShiftExpression */ + ASTShiftExpression jjtn000 = new ASTShiftExpression(this, JJTSHIFTEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + AdditiveExpression(); + label_28: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LSHIFT: + case RSIGNEDSHIFT: + case RUNSIGNEDSHIFT: + ; + break; + default: + jj_la1[62] = jj_gen; + break label_28; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LSHIFT: + jj_consume_token(LSHIFT); + break; + case RSIGNEDSHIFT: + jj_consume_token(RSIGNEDSHIFT); + break; + case RUNSIGNEDSHIFT: + jj_consume_token(RUNSIGNEDSHIFT); + break; + default: + jj_la1[63] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + AdditiveExpression(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void AdditiveExpression() throws ParseException { + /*@bgen(jjtree) AdditiveExpression */ + ASTAdditiveExpression jjtn000 = new ASTAdditiveExpression(this, JJTADDITIVEEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + MultiplicativeExpression(); + label_29: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PLUS: + case MINUS: + ; + break; + default: + jj_la1[64] = jj_gen; + break label_29; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PLUS: + jj_consume_token(PLUS); + break; + case MINUS: + jj_consume_token(MINUS); + break; + default: + jj_la1[65] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + MultiplicativeExpression(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void MultiplicativeExpression() throws ParseException { + /*@bgen(jjtree) MultiplicativeExpression */ + ASTMultiplicativeExpression jjtn000 = new ASTMultiplicativeExpression(this, JJTMULTIPLICATIVEEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + UnaryExpression(); + label_30: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case STAR: + case SLASH: + case REM: + ; + break; + default: + jj_la1[66] = jj_gen; + break label_30; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case STAR: + jj_consume_token(STAR); + break; + case SLASH: + jj_consume_token(SLASH); + break; + case REM: + jj_consume_token(REM); + break; + default: + jj_la1[67] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + UnaryExpression(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void UnaryExpression() throws ParseException { + /*@bgen(jjtree) UnaryExpression */ + ASTUnaryExpression jjtn000 = new ASTUnaryExpression(this, JJTUNARYEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PLUS: + case MINUS: + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PLUS: + jj_consume_token(PLUS); + break; + case MINUS: + jj_consume_token(MINUS); + break; + default: + jj_la1[68] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + UnaryExpression(); + break; + case INCR: + PreIncrementExpression(); + break; + case DECR: + PreDecrementExpression(); + break; + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FALSE: + case FLOAT: + case INT: + case LONG: + case NEW: + case NULL: + case SHORT: + case SUPER: + case THIS: + case TRUE: + case VOID: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case BANG: + case TILDE: + UnaryExpressionNotPlusMinus(); + break; + default: + jj_la1[69] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void PreIncrementExpression() throws ParseException { + /*@bgen(jjtree) PreIncrementExpression */ + ASTPreIncrementExpression jjtn000 = new ASTPreIncrementExpression(this, JJTPREINCREMENTEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(INCR); + PrimaryExpression(); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void PreDecrementExpression() throws ParseException { + /*@bgen(jjtree) PreDecrementExpression */ + ASTPreDecrementExpression jjtn000 = new ASTPreDecrementExpression(this, JJTPREDECREMENTEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(DECR); + PrimaryExpression(); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void UnaryExpressionNotPlusMinus() throws ParseException { + /*@bgen(jjtree) UnaryExpressionNotPlusMinus */ + ASTUnaryExpressionNotPlusMinus jjtn000 = new ASTUnaryExpressionNotPlusMinus(this, JJTUNARYEXPRESSIONNOTPLUSMINUS); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BANG: + case TILDE: + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case TILDE: + jj_consume_token(TILDE); + break; + case BANG: + jj_consume_token(BANG); + break; + default: + jj_la1[70] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + UnaryExpression(); + break; + default: + jj_la1[71] = jj_gen; + if (jj_2_15(2147483647)) { + CastExpression(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FALSE: + case FLOAT: + case INT: + case LONG: + case NEW: + case NULL: + case SHORT: + case SUPER: + case THIS: + case TRUE: + case VOID: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + PostfixExpression(); + break; + default: + jj_la1[72] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + +// This production is to determine lookahead only. The LOOKAHEAD specifications +// below are not used, but they are there just to indicate that we know about +// this. + final public void CastLookahead() throws ParseException { + /*@bgen(jjtree) CastLookahead */ + ASTCastLookahead jjtn000 = new ASTCastLookahead(this, JJTCASTLOOKAHEAD); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + if (jj_2_16(2)) { + jj_consume_token(LPAREN); + PrimitiveType(); + } else if (jj_2_17(2147483647)) { + jj_consume_token(LPAREN); + Name(); + jj_consume_token(LBRACKET); + jj_consume_token(RBRACKET); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LPAREN: + jj_consume_token(LPAREN); + Name(); + jj_consume_token(RPAREN); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case TILDE: + jj_consume_token(TILDE); + break; + case BANG: + jj_consume_token(BANG); + break; + case LPAREN: + jj_consume_token(LPAREN); + break; + case IDENTIFIER: + jj_consume_token(IDENTIFIER); + break; + case THIS: + jj_consume_token(THIS); + break; + case SUPER: + jj_consume_token(SUPER); + break; + case NEW: + jj_consume_token(NEW); + break; + case FALSE: + case NULL: + case TRUE: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + Literal(); + break; + default: + jj_la1[73] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + break; + default: + jj_la1[74] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void PostfixExpression() throws ParseException { + /*@bgen(jjtree) PostfixExpression */ + ASTPostfixExpression jjtn000 = new ASTPostfixExpression(this, JJTPOSTFIXEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + PrimaryExpression(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case INCR: + case DECR: + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case INCR: + jj_consume_token(INCR); + break; + case DECR: + jj_consume_token(DECR); + break; + default: + jj_la1[75] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + break; + default: + jj_la1[76] = jj_gen; + ; + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void CastExpression() throws ParseException { + /*@bgen(jjtree) CastExpression */ + ASTCastExpression jjtn000 = new ASTCastExpression(this, JJTCASTEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + if (jj_2_18(2147483647)) { + jj_consume_token(LPAREN); + Type(); + jj_consume_token(RPAREN); + UnaryExpression(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LPAREN: + jj_consume_token(LPAREN); + Type(); + jj_consume_token(RPAREN); + UnaryExpressionNotPlusMinus(); + break; + default: + jj_la1[77] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void PrimaryExpression() throws ParseException { + /*@bgen(jjtree) PrimaryExpression */ + ASTPrimaryExpression jjtn000 = new ASTPrimaryExpression(this, JJTPRIMARYEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + PrimaryPrefix(); + label_31: + while (true) { + if (jj_2_19(2)) { + ; + } else { + break label_31; + } + PrimarySuffix(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void PrimaryPrefix() throws ParseException { + /*@bgen(jjtree) PrimaryPrefix */ + ASTPrimaryPrefix jjtn000 = new ASTPrimaryPrefix(this, JJTPRIMARYPREFIX); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case FALSE: + case NULL: + case TRUE: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + Literal(); + break; + case THIS: + jj_consume_token(THIS); + break; + case SUPER: + jj_consume_token(SUPER); + jj_consume_token(DOT); + jj_consume_token(IDENTIFIER); + break; + case LPAREN: + jj_consume_token(LPAREN); + Expression(); + jj_consume_token(RPAREN); + break; + case NEW: + AllocationExpression(); + break; + default: + jj_la1[78] = jj_gen; + if (jj_2_20(2147483647)) { + ResultType(); + jj_consume_token(DOT); + jj_consume_token(CLASS); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENTIFIER: + Name(); + break; + default: + jj_la1[79] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void PrimarySuffix() throws ParseException { + /*@bgen(jjtree) PrimarySuffix */ + ASTPrimarySuffix jjtn000 = new ASTPrimarySuffix(this, JJTPRIMARYSUFFIX); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000);String s = null; + Token t = null; + try { + if (jj_2_21(2)) { + jj_consume_token(DOT); + jj_consume_token(THIS); + } else if (jj_2_22(2)) { + jj_consume_token(DOT); + jj_consume_token(SUPER); + } else if (jj_2_23(2)) { + jj_consume_token(DOT); + AllocationExpression(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + jj_consume_token(LBRACKET); + Expression(); + jj_consume_token(RBRACKET); + break; + case DOT: + jj_consume_token(DOT); + t = jj_consume_token(IDENTIFIER); + s = t.image; + jjtree.closeNodeScope(jjtn000, true); + jjtc000 = false; + jjtn000.setImage(s); + break; + case LPAREN: + Arguments(); + break; + default: + jj_la1[80] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void Literal() throws ParseException { + /*@bgen(jjtree) Literal */ + ASTLiteral jjtn000 = new ASTLiteral(this, JJTLITERAL); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case INTEGER_LITERAL: + jj_consume_token(INTEGER_LITERAL); + break; + case FLOATING_POINT_LITERAL: + jj_consume_token(FLOATING_POINT_LITERAL); + break; + case CHARACTER_LITERAL: + jj_consume_token(CHARACTER_LITERAL); + break; + case STRING_LITERAL: + jj_consume_token(STRING_LITERAL); + break; + case FALSE: + case TRUE: + BooleanLiteral(); + break; + case NULL: + NullLiteral(); + break; + default: + jj_la1[81] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void BooleanLiteral() throws ParseException { + /*@bgen(jjtree) BooleanLiteral */ + ASTBooleanLiteral jjtn000 = new ASTBooleanLiteral(this, JJTBOOLEANLITERAL); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case TRUE: + jj_consume_token(TRUE); + break; + case FALSE: + jj_consume_token(FALSE); + break; + default: + jj_la1[82] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void NullLiteral() throws ParseException { + /*@bgen(jjtree) NullLiteral */ + ASTNullLiteral jjtn000 = new ASTNullLiteral(this, JJTNULLLITERAL); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(NULL); + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void Arguments() throws ParseException { + /*@bgen(jjtree) Arguments */ + ASTArguments jjtn000 = new ASTArguments(this, JJTARGUMENTS); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(LPAREN); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FALSE: + case FLOAT: + case INT: + case LONG: + case NEW: + case NULL: + case SHORT: + case SUPER: + case THIS: + case TRUE: + case VOID: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case BANG: + case TILDE: + case INCR: + case DECR: + case PLUS: + case MINUS: + ArgumentList(); + break; + default: + jj_la1[83] = jj_gen; + ; + } + jj_consume_token(RPAREN); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ArgumentList() throws ParseException { + /*@bgen(jjtree) ArgumentList */ + ASTArgumentList jjtn000 = new ASTArgumentList(this, JJTARGUMENTLIST); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + Expression(); + label_32: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[84] = jj_gen; + break label_32; + } + jj_consume_token(COMMA); + Expression(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void AllocationExpression() throws ParseException { + /*@bgen(jjtree) AllocationExpression */ + ASTAllocationExpression jjtn000 = new ASTAllocationExpression(this, JJTALLOCATIONEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + if (jj_2_24(2)) { + jj_consume_token(NEW); + PrimitiveType(); + ArrayDimsAndInits(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case NEW: + jj_consume_token(NEW); + Name(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + ArrayDimsAndInits(); + break; + case LPAREN: + Arguments(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACE: + ClassBody(); + break; + default: + jj_la1[85] = jj_gen; + ; + } + break; + default: + jj_la1[86] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + break; + default: + jj_la1[87] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + +/* + * The second LOOKAHEAD specification below is to parse to PrimarySuffix + * if there is an expression between the "[...]". + */ + final public void ArrayDimsAndInits() throws ParseException { + /*@bgen(jjtree) ArrayDimsAndInits */ + ASTArrayDimsAndInits jjtn000 = new ASTArrayDimsAndInits(this, JJTARRAYDIMSANDINITS); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + if (jj_2_27(2)) { + label_33: + while (true) { + jj_consume_token(LBRACKET); + Expression(); + jj_consume_token(RBRACKET); + if (jj_2_25(2)) { + ; + } else { + break label_33; + } + } + label_34: + while (true) { + if (jj_2_26(2)) { + ; + } else { + break label_34; + } + jj_consume_token(LBRACKET); + jj_consume_token(RBRACKET); + } + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + label_35: + while (true) { + jj_consume_token(LBRACKET); + jj_consume_token(RBRACKET); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + ; + break; + default: + jj_la1[88] = jj_gen; + break label_35; + } + } + ArrayInitializer(); + break; + default: + jj_la1[89] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + +/* + * Statement syntax follows. + */ + final public void Statement() throws ParseException { + /*@bgen(jjtree) Statement */ + ASTStatement jjtn000 = new ASTStatement(this, JJTSTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + if (jj_2_28(2)) { + LabeledStatement(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACE: + Block(); + break; + case SEMICOLON: + EmptyStatement(); + break; + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FALSE: + case FLOAT: + case INT: + case LONG: + case NEW: + case NULL: + case SHORT: + case SUPER: + case THIS: + case TRUE: + case VOID: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case INCR: + case DECR: + StatementExpression(); + jj_consume_token(SEMICOLON); + break; + case SWITCH: + SwitchStatement(); + break; + case IF: + IfStatement(); + break; + case WHILE: + WhileStatement(); + break; + case DO: + DoStatement(); + break; + case FOR: + ForStatement(); + break; + case BREAK: + BreakStatement(); + break; + case CONTINUE: + ContinueStatement(); + break; + case RETURN: + ReturnStatement(); + break; + case THROW: + ThrowStatement(); + break; + case SYNCHRONIZED: + SynchronizedStatement(); + break; + case TRY: + TryStatement(); + break; + case ASSERT: + AssertStatement(); + break; + default: + jj_la1[90] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void LabeledStatement() throws ParseException { + /*@bgen(jjtree) LabeledStatement */ + ASTLabeledStatement jjtn000 = new ASTLabeledStatement(this, JJTLABELEDSTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(IDENTIFIER); + jj_consume_token(COLON); + Statement(); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void Block() throws ParseException { + /*@bgen(jjtree) Block */ + ASTBlock jjtn000 = new ASTBlock(this, JJTBLOCK); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(LBRACE); + label_36: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BREAK: + case BYTE: + case CHAR: + case CLASS: + case CONTINUE: + case DO: + case DOUBLE: + case FALSE: + case FINAL: + case FLOAT: + case FOR: + case IF: + case INT: + case INTERFACE: + case LONG: + case NEW: + case NULL: + case RETURN: + case SHORT: + case SUPER: + case SWITCH: + case SYNCHRONIZED: + case THIS: + case THROW: + case TRUE: + case TRY: + case VOID: + case WHILE: + case ASSERT: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: + case INCR: + case DECR: + ; + break; + default: + jj_la1[91] = jj_gen; + break label_36; + } + BlockStatement(); + } + jj_consume_token(RBRACE); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void BlockStatement() throws ParseException { + /*@bgen(jjtree) BlockStatement */ + ASTBlockStatement jjtn000 = new ASTBlockStatement(this, JJTBLOCKSTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + if (jj_2_29(2147483647)) { + LocalVariableDeclaration(); + jj_consume_token(SEMICOLON); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BREAK: + case BYTE: + case CHAR: + case CONTINUE: + case DO: + case DOUBLE: + case FALSE: + case FLOAT: + case FOR: + case IF: + case INT: + case LONG: + case NEW: + case NULL: + case RETURN: + case SHORT: + case SUPER: + case SWITCH: + case SYNCHRONIZED: + case THIS: + case THROW: + case TRUE: + case TRY: + case VOID: + case WHILE: + case ASSERT: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: + case INCR: + case DECR: + Statement(); + break; + case CLASS: + UnmodifiedClassDeclaration(); + break; + case INTERFACE: + UnmodifiedInterfaceDeclaration(); + break; + default: + jj_la1[92] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void LocalVariableDeclaration() throws ParseException { + /*@bgen(jjtree) LocalVariableDeclaration */ + ASTLocalVariableDeclaration jjtn000 = new ASTLocalVariableDeclaration(this, JJTLOCALVARIABLEDECLARATION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case FINAL: + jj_consume_token(FINAL); + break; + default: + jj_la1[93] = jj_gen; + ; + } + Type(); + VariableDeclarator(); + label_37: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[94] = jj_gen; + break label_37; + } + jj_consume_token(COMMA); + VariableDeclarator(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void EmptyStatement() throws ParseException { + /*@bgen(jjtree) EmptyStatement */ + ASTEmptyStatement jjtn000 = new ASTEmptyStatement(this, JJTEMPTYSTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(SEMICOLON); + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void StatementExpression() throws ParseException { + /*@bgen(jjtree) StatementExpression */ + ASTStatementExpression jjtn000 = new ASTStatementExpression(this, JJTSTATEMENTEXPRESSION); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case INCR: + PreIncrementExpression(); + break; + case DECR: + PreDecrementExpression(); + break; + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FALSE: + case FLOAT: + case INT: + case LONG: + case NEW: + case NULL: + case SHORT: + case SUPER: + case THIS: + case TRUE: + case VOID: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + PrimaryExpression(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ASSIGN: + case INCR: + case DECR: + case PLUSASSIGN: + case MINUSASSIGN: + case STARASSIGN: + case SLASHASSIGN: + case ANDASSIGN: + case ORASSIGN: + case XORASSIGN: + case REMASSIGN: + case LSHIFTASSIGN: + case RSIGNEDSHIFTASSIGN: + case RUNSIGNEDSHIFTASSIGN: + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case INCR: + jj_consume_token(INCR); + break; + case DECR: + jj_consume_token(DECR); + break; + case ASSIGN: + case PLUSASSIGN: + case MINUSASSIGN: + case STARASSIGN: + case SLASHASSIGN: + case ANDASSIGN: + case ORASSIGN: + case XORASSIGN: + case REMASSIGN: + case LSHIFTASSIGN: + case RSIGNEDSHIFTASSIGN: + case RUNSIGNEDSHIFTASSIGN: + AssignmentOperator(); + Expression(); + break; + default: + jj_la1[95] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + break; + default: + jj_la1[96] = jj_gen; + ; + } + break; + default: + jj_la1[97] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void SwitchStatement() throws ParseException { + /*@bgen(jjtree) SwitchStatement */ + ASTSwitchStatement jjtn000 = new ASTSwitchStatement(this, JJTSWITCHSTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(SWITCH); + jj_consume_token(LPAREN); + Expression(); + jj_consume_token(RPAREN); + jj_consume_token(LBRACE); + label_38: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case CASE: + case _DEFAULT: + ; + break; + default: + jj_la1[98] = jj_gen; + break label_38; + } + SwitchLabel(); + label_39: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BREAK: + case BYTE: + case CHAR: + case CLASS: + case CONTINUE: + case DO: + case DOUBLE: + case FALSE: + case FINAL: + case FLOAT: + case FOR: + case IF: + case INT: + case INTERFACE: + case LONG: + case NEW: + case NULL: + case RETURN: + case SHORT: + case SUPER: + case SWITCH: + case SYNCHRONIZED: + case THIS: + case THROW: + case TRUE: + case TRY: + case VOID: + case WHILE: + case ASSERT: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: + case INCR: + case DECR: + ; + break; + default: + jj_la1[99] = jj_gen; + break label_39; + } + BlockStatement(); + } + } + jj_consume_token(RBRACE); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void SwitchLabel() throws ParseException { + /*@bgen(jjtree) SwitchLabel */ + ASTSwitchLabel jjtn000 = new ASTSwitchLabel(this, JJTSWITCHLABEL); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case CASE: + jj_consume_token(CASE); + Expression(); + jj_consume_token(COLON); + break; + case _DEFAULT: + jj_consume_token(_DEFAULT); + jj_consume_token(COLON); + break; + default: + jj_la1[100] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void IfStatement() throws ParseException { + /*@bgen(jjtree) IfStatement */ + ASTIfStatement jjtn000 = new ASTIfStatement(this, JJTIFSTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(IF); + jj_consume_token(LPAREN); + Expression(); + jj_consume_token(RPAREN); + Statement(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ELSE: + jj_consume_token(ELSE); + Statement(); + break; + default: + jj_la1[101] = jj_gen; + ; + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void WhileStatement() throws ParseException { + /*@bgen(jjtree) WhileStatement */ + ASTWhileStatement jjtn000 = new ASTWhileStatement(this, JJTWHILESTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(WHILE); + jj_consume_token(LPAREN); + Expression(); + jj_consume_token(RPAREN); + Statement(); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void DoStatement() throws ParseException { + /*@bgen(jjtree) DoStatement */ + ASTDoStatement jjtn000 = new ASTDoStatement(this, JJTDOSTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(DO); + Statement(); + jj_consume_token(WHILE); + jj_consume_token(LPAREN); + Expression(); + jj_consume_token(RPAREN); + jj_consume_token(SEMICOLON); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ForStatement() throws ParseException { + /*@bgen(jjtree) ForStatement */ + ASTForStatement jjtn000 = new ASTForStatement(this, JJTFORSTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(FOR); + jj_consume_token(LPAREN); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FALSE: + case FINAL: + case FLOAT: + case INT: + case LONG: + case NEW: + case NULL: + case SHORT: + case SUPER: + case THIS: + case TRUE: + case VOID: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case INCR: + case DECR: + ForInit(); + break; + default: + jj_la1[102] = jj_gen; + ; + } + jj_consume_token(SEMICOLON); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FALSE: + case FLOAT: + case INT: + case LONG: + case NEW: + case NULL: + case SHORT: + case SUPER: + case THIS: + case TRUE: + case VOID: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case BANG: + case TILDE: + case INCR: + case DECR: + case PLUS: + case MINUS: + Expression(); + break; + default: + jj_la1[103] = jj_gen; + ; + } + jj_consume_token(SEMICOLON); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FALSE: + case FLOAT: + case INT: + case LONG: + case NEW: + case NULL: + case SHORT: + case SUPER: + case THIS: + case TRUE: + case VOID: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case INCR: + case DECR: + ForUpdate(); + break; + default: + jj_la1[104] = jj_gen; + ; + } + jj_consume_token(RPAREN); + Statement(); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ForInit() throws ParseException { + /*@bgen(jjtree) ForInit */ + ASTForInit jjtn000 = new ASTForInit(this, JJTFORINIT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + if (jj_2_30(2147483647)) { + LocalVariableDeclaration(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FALSE: + case FLOAT: + case INT: + case LONG: + case NEW: + case NULL: + case SHORT: + case SUPER: + case THIS: + case TRUE: + case VOID: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case INCR: + case DECR: + StatementExpressionList(); + break; + default: + jj_la1[105] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void StatementExpressionList() throws ParseException { + /*@bgen(jjtree) StatementExpressionList */ + ASTStatementExpressionList jjtn000 = new ASTStatementExpressionList(this, JJTSTATEMENTEXPRESSIONLIST); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + StatementExpression(); + label_40: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[106] = jj_gen; + break label_40; + } + jj_consume_token(COMMA); + StatementExpression(); + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ForUpdate() throws ParseException { + /*@bgen(jjtree) ForUpdate */ + ASTForUpdate jjtn000 = new ASTForUpdate(this, JJTFORUPDATE); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + StatementExpressionList(); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void BreakStatement() throws ParseException { + /*@bgen(jjtree) BreakStatement */ + ASTBreakStatement jjtn000 = new ASTBreakStatement(this, JJTBREAKSTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(BREAK); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENTIFIER: + jj_consume_token(IDENTIFIER); + break; + default: + jj_la1[107] = jj_gen; + ; + } + jj_consume_token(SEMICOLON); + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ContinueStatement() throws ParseException { + /*@bgen(jjtree) ContinueStatement */ + ASTContinueStatement jjtn000 = new ASTContinueStatement(this, JJTCONTINUESTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(CONTINUE); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENTIFIER: + jj_consume_token(IDENTIFIER); + break; + default: + jj_la1[108] = jj_gen; + ; + } + jj_consume_token(SEMICOLON); + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ReturnStatement() throws ParseException { + /*@bgen(jjtree) ReturnStatement */ + ASTReturnStatement jjtn000 = new ASTReturnStatement(this, JJTRETURNSTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(RETURN); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case BOOLEAN: + case BYTE: + case CHAR: + case DOUBLE: + case FALSE: + case FLOAT: + case INT: + case LONG: + case NEW: + case NULL: + case SHORT: + case SUPER: + case THIS: + case TRUE: + case VOID: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case CHARACTER_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case BANG: + case TILDE: + case INCR: + case DECR: + case PLUS: + case MINUS: + Expression(); + break; + default: + jj_la1[109] = jj_gen; + ; + } + jj_consume_token(SEMICOLON); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ThrowStatement() throws ParseException { + /*@bgen(jjtree) ThrowStatement */ + ASTThrowStatement jjtn000 = new ASTThrowStatement(this, JJTTHROWSTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(THROW); + Expression(); + jj_consume_token(SEMICOLON); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void SynchronizedStatement() throws ParseException { + /*@bgen(jjtree) SynchronizedStatement */ + ASTSynchronizedStatement jjtn000 = new ASTSynchronizedStatement(this, JJTSYNCHRONIZEDSTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(SYNCHRONIZED); + jj_consume_token(LPAREN); + Expression(); + jj_consume_token(RPAREN); + Block(); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void TryStatement() throws ParseException { + /*@bgen(jjtree) TryStatement */ + ASTTryStatement jjtn000 = new ASTTryStatement(this, JJTTRYSTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(TRY); + Block(); + label_41: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case CATCH: + ; + break; + default: + jj_la1[110] = jj_gen; + break label_41; + } + jj_consume_token(CATCH); + jj_consume_token(LPAREN); + FormalParameter(); + jj_consume_token(RPAREN); + Block(); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case FINALLY: + jj_consume_token(FINALLY); + Block(); + break; + default: + jj_la1[111] = jj_gen; + ; + } + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void AssertStatement() throws ParseException { + /*@bgen(jjtree) AssertStatement */ + ASTAssertStatement jjtn000 = new ASTAssertStatement(this, JJTASSERTSTATEMENT); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(ASSERT); + Expression(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COLON: + jj_consume_token(COLON); + Expression(); + break; + default: + jj_la1[112] = jj_gen; + ; + } + jj_consume_token(SEMICOLON); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final private boolean jj_2_1(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_1(); + jj_save(0, xla); + return retval; + } + + final private boolean jj_2_2(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_2(); + jj_save(1, xla); + return retval; + } + + final private boolean jj_2_3(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_3(); + jj_save(2, xla); + return retval; + } + + final private boolean jj_2_4(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_4(); + jj_save(3, xla); + return retval; + } + + final private boolean jj_2_5(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_5(); + jj_save(4, xla); + return retval; + } + + final private boolean jj_2_6(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_6(); + jj_save(5, xla); + return retval; + } + + final private boolean jj_2_7(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_7(); + jj_save(6, xla); + return retval; + } + + final private boolean jj_2_8(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_8(); + jj_save(7, xla); + return retval; + } + + final private boolean jj_2_9(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_9(); + jj_save(8, xla); + return retval; + } + + final private boolean jj_2_10(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_10(); + jj_save(9, xla); + return retval; + } + + final private boolean jj_2_11(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_11(); + jj_save(10, xla); + return retval; + } + + final private boolean jj_2_12(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_12(); + jj_save(11, xla); + return retval; + } + + final private boolean jj_2_13(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_13(); + jj_save(12, xla); + return retval; + } + + final private boolean jj_2_14(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_14(); + jj_save(13, xla); + return retval; + } + + final private boolean jj_2_15(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_15(); + jj_save(14, xla); + return retval; + } + + final private boolean jj_2_16(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_16(); + jj_save(15, xla); + return retval; + } + + final private boolean jj_2_17(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_17(); + jj_save(16, xla); + return retval; + } + + final private boolean jj_2_18(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_18(); + jj_save(17, xla); + return retval; + } + + final private boolean jj_2_19(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_19(); + jj_save(18, xla); + return retval; + } + + final private boolean jj_2_20(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_20(); + jj_save(19, xla); + return retval; + } + + final private boolean jj_2_21(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_21(); + jj_save(20, xla); + return retval; + } + + final private boolean jj_2_22(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_22(); + jj_save(21, xla); + return retval; + } + + final private boolean jj_2_23(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_23(); + jj_save(22, xla); + return retval; + } + + final private boolean jj_2_24(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_24(); + jj_save(23, xla); + return retval; + } + + final private boolean jj_2_25(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_25(); + jj_save(24, xla); + return retval; + } + + final private boolean jj_2_26(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_26(); + jj_save(25, xla); + return retval; + } + + final private boolean jj_2_27(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_27(); + jj_save(26, xla); + return retval; + } + + final private boolean jj_2_28(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_28(); + jj_save(27, xla); + return retval; + } + + final private boolean jj_2_29(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_29(); + jj_save(28, xla); + return retval; + } + + final private boolean jj_2_30(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_30(); + jj_save(29, xla); + return retval; + } + + final private boolean jj_3R_355() { + if (jj_scan_token(STAR)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_344() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_355()) { + jj_scanpos = xsp; + if (jj_3R_356()) { + jj_scanpos = xsp; + if (jj_3R_357()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_265()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_297() { + if (jj_scan_token(RSIGNEDSHIFT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_238() { + if (jj_scan_token(INCR)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_53()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_274() { + if (jj_scan_token(LE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_300() { + if (jj_scan_token(MINUS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_296() { + if (jj_scan_token(LSHIFT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_279() { + if (jj_3R_301()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_271() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_296()) { + jj_scanpos = xsp; + if (jj_3R_297()) { + jj_scanpos = xsp; + if (jj_3R_298()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_252()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_273() { + if (jj_scan_token(GT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_278() { + if (jj_3R_239()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_299() { + if (jj_scan_token(PLUS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_212() { + if (jj_scan_token(ORASSIGN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_277() { + if (jj_3R_238()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_265() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_276()) { + jj_scanpos = xsp; + if (jj_3R_277()) { + jj_scanpos = xsp; + if (jj_3R_278()) { + jj_scanpos = xsp; + if (jj_3R_279()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_276() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_299()) { + jj_scanpos = xsp; + if (jj_3R_300()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_265()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_256() { + if (jj_scan_token(NE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_272() { + if (jj_scan_token(LT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_264() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_272()) { + jj_scanpos = xsp; + if (jj_3R_273()) { + jj_scanpos = xsp; + if (jj_3R_274()) { + jj_scanpos = xsp; + if (jj_3R_275()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_247()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_341() { + if (jj_scan_token(VOLATILE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_211() { + if (jj_scan_token(XORASSIGN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_254() { + if (jj_scan_token(INSTANCEOF)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_63()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_257() { + if (jj_3R_265()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_344()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_255() { + if (jj_scan_token(EQ)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_251() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_255()) { + jj_scanpos = xsp; + if (jj_3R_256()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_237()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_210() { + if (jj_scan_token(ANDASSIGN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_252() { + if (jj_3R_257()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_295()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_247() { + if (jj_3R_252()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_271()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_246() { + if (jj_scan_token(BIT_AND)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_229()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_209() { + if (jj_scan_token(RUNSIGNEDSHIFTASSIGN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_243() { + if (jj_3R_247()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_264()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_236() { + if (jj_scan_token(BIT_OR)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_181()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_208() { + if (jj_scan_token(RSIGNEDSHIFTASSIGN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_237() { + if (jj_3R_243()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_254()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_242() { + if (jj_scan_token(XOR)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_213()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_228() { + if (jj_scan_token(SC_AND)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_172()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_229() { + if (jj_3R_237()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_251()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_200() { + if (jj_scan_token(SC_OR)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_160()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_207() { + if (jj_scan_token(LSHIFTASSIGN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_213() { + if (jj_3R_229()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_246()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_179() { + if (jj_scan_token(HOOK)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(COLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_125()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_206() { + if (jj_scan_token(MINUSASSIGN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_181() { + if (jj_3R_213()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_242()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_205() { + if (jj_scan_token(PLUSASSIGN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_340() { + if (jj_scan_token(TRANSIENT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_172() { + if (jj_3R_181()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_236()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_204() { + if (jj_scan_token(REMASSIGN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_160() { + if (jj_3R_172()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_228()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_203() { + if (jj_scan_token(SLASHASSIGN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_156() { + if (jj_3R_160()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_200()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_125() { + if (jj_3R_156()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_179()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_202() { + if (jj_scan_token(STARASSIGN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_180() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_201()) { + jj_scanpos = xsp; + if (jj_3R_202()) { + jj_scanpos = xsp; + if (jj_3R_203()) { + jj_scanpos = xsp; + if (jj_3R_204()) { + jj_scanpos = xsp; + if (jj_3R_205()) { + jj_scanpos = xsp; + if (jj_3R_206()) { + jj_scanpos = xsp; + if (jj_3R_207()) { + jj_scanpos = xsp; + if (jj_3R_208()) { + jj_scanpos = xsp; + if (jj_3R_209()) { + jj_scanpos = xsp; + if (jj_3R_210()) { + jj_scanpos = xsp; + if (jj_3R_211()) { + jj_scanpos = xsp; + if (jj_3R_212()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_201() { + if (jj_scan_token(ASSIGN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_171() { + if (jj_3R_180()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_60() { + if (jj_3R_125()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_171()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_339() { + if (jj_scan_token(FINAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_353() { + if (jj_scan_token(COMMA)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_47()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_324() { + if (jj_3R_47()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_353()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3_14() { + if (jj_scan_token(DOT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_333() { + if (jj_scan_token(STRICTFP)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_47() { + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3_14()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_338() { + if (jj_scan_token(STATIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_128() { + if (jj_scan_token(LBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_123() { + if (jj_3R_63()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_332() { + if (jj_scan_token(SYNCHRONIZED)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_122() { + if (jj_scan_token(VOID)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_58() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_122()) { + jj_scanpos = xsp; + if (jj_3R_123()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_127() { + if (jj_3R_47()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_118() { + if (jj_scan_token(DOUBLE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_117() { + if (jj_scan_token(FLOAT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_331() { + if (jj_scan_token(NATIVE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_116() { + if (jj_scan_token(LONG)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_115() { + if (jj_scan_token(INT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_249() { + if (jj_scan_token(COMMA)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_114() { + if (jj_scan_token(SHORT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_113() { + if (jj_scan_token(BYTE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_112() { + if (jj_scan_token(CHAR)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_330() { + if (jj_scan_token(FINAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_111() { + if (jj_scan_token(BOOLEAN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_56() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_111()) { + jj_scanpos = xsp; + if (jj_3R_112()) { + jj_scanpos = xsp; + if (jj_3R_113()) { + jj_scanpos = xsp; + if (jj_3R_114()) { + jj_scanpos = xsp; + if (jj_3R_115()) { + jj_scanpos = xsp; + if (jj_3R_116()) { + jj_scanpos = xsp; + if (jj_3R_117()) { + jj_scanpos = xsp; + if (jj_3R_118()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_284() { + if (jj_scan_token(THROWS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_324()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_126() { + if (jj_3R_56()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_63() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_126()) { + jj_scanpos = xsp; + if (jj_3R_127()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + while (true) { + xsp = jj_scanpos; + if (jj_3R_128()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_322() { + if (jj_scan_token(PRIVATE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_329() { + if (jj_scan_token(ABSTRACT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_69() { + if (jj_scan_token(STATIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_13() { + if (jj_scan_token(THIS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_54()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_337() { + if (jj_scan_token(PRIVATE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_43() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_69()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_70()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_11() { + if (jj_3R_52()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_334() { + if (jj_scan_token(LBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_12() { + if (jj_3R_53()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(DOT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_352() { + if (jj_scan_token(COMMA)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_351()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_106() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_12()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(SUPER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_54()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_328() { + if (jj_scan_token(STATIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_321() { + if (jj_scan_token(PROTECTED)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_105() { + if (jj_scan_token(THIS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_54()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_52() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_105()) { + jj_scanpos = xsp; + if (jj_3R_106()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_289() { + if (jj_scan_token(THROWS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_324()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_286() { + if (jj_3R_157()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_285() { + if (jj_3R_52()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_320() { + if (jj_scan_token(PUBLIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_282() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_320()) { + jj_scanpos = xsp; + if (jj_3R_321()) { + jj_scanpos = xsp; + if (jj_3R_322()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_327() { + if (jj_scan_token(PRIVATE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_268() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_282()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_283()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + xsp = jj_scanpos; + if (jj_3R_284()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(LBRACE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + xsp = jj_scanpos; + if (jj_3R_285()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + while (true) { + xsp = jj_scanpos; + if (jj_3R_286()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_scan_token(RBRACE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_10() { + if (jj_scan_token(COMMA)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_51()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_367() { + if (jj_scan_token(FINAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_102() { + if (jj_scan_token(STRICTFP)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_351() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_367()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_63()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_342()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_323() { + if (jj_3R_351()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_352()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_95() { + if (jj_scan_token(STRICTFP)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_283() { + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_323()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_291() { + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_326() { + if (jj_scan_token(PROTECTED)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_101() { + if (jj_scan_token(PRIVATE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_138() { + if (jj_scan_token(STRICTFP)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_288() { + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_283()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_334()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_94() { + if (jj_scan_token(PRIVATE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_290() { + if (jj_3R_70()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_325() { + if (jj_scan_token(PUBLIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_287() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_325()) { + jj_scanpos = xsp; + if (jj_3R_326()) { + jj_scanpos = xsp; + if (jj_3R_327()) { + jj_scanpos = xsp; + if (jj_3R_328()) { + jj_scanpos = xsp; + if (jj_3R_329()) { + jj_scanpos = xsp; + if (jj_3R_330()) { + jj_scanpos = xsp; + if (jj_3R_331()) { + jj_scanpos = xsp; + if (jj_3R_332()) { + jj_scanpos = xsp; + if (jj_3R_333()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_248() { + if (jj_3R_51()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3_10()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_269() { + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_287()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_3R_58()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_288()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + xsp = jj_scanpos; + if (jj_3R_289()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + xsp = jj_scanpos; + if (jj_3R_290()) { + jj_scanpos = xsp; + if (jj_3R_291()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_336() { + if (jj_scan_token(PROTECTED)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_100() { + if (jj_scan_token(PROTECTED)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_317() { + if (jj_scan_token(STRICTFP)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_139() { + if (jj_scan_token(LBRACE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_248()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + xsp = jj_scanpos; + if (jj_3R_249()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RBRACE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_93() { + if (jj_scan_token(PROTECTED)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_137() { + if (jj_scan_token(SYNCHRONIZED)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_343() { + if (jj_scan_token(ASSIGN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_51()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_104() { + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_294() { + if (jj_scan_token(COMMA)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_293()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_103() { + if (jj_3R_139()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_51() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_103()) { + jj_scanpos = xsp; + if (jj_3R_104()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_99() { + if (jj_scan_token(PUBLIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_316() { + if (jj_scan_token(PRIVATE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_92() { + if (jj_scan_token(PUBLIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_136() { + if (jj_scan_token(NATIVE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_354() { + if (jj_scan_token(LBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_98() { + if (jj_scan_token(FINAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_342() { + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_354()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_84() { + if (jj_scan_token(STRICTFP)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_91() { + if (jj_scan_token(FINAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_135() { + if (jj_scan_token(FINAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_77() { + if (jj_scan_token(STRICTFP)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_315() { + if (jj_scan_token(PROTECTED)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_293() { + if (jj_3R_342()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_343()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_97() { + if (jj_scan_token(ABSTRACT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_83() { + if (jj_scan_token(PRIVATE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_90() { + if (jj_scan_token(ABSTRACT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_76() { + if (jj_scan_token(PRIVATE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_314() { + if (jj_scan_token(PUBLIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_134() { + if (jj_scan_token(ABSTRACT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_335() { + if (jj_scan_token(PUBLIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_292() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_335()) { + jj_scanpos = xsp; + if (jj_3R_336()) { + jj_scanpos = xsp; + if (jj_3R_337()) { + jj_scanpos = xsp; + if (jj_3R_338()) { + jj_scanpos = xsp; + if (jj_3R_339()) { + jj_scanpos = xsp; + if (jj_3R_340()) { + jj_scanpos = xsp; + if (jj_3R_341()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_318() { + if (jj_scan_token(EXTENDS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_324()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_270() { + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_292()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_3R_63()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_293()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + while (true) { + xsp = jj_scanpos; + if (jj_3R_294()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_9() { + if (jj_3R_48()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_96() { + if (jj_scan_token(STATIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_50() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_96()) { + jj_scanpos = xsp; + if (jj_3R_97()) { + jj_scanpos = xsp; + if (jj_3R_98()) { + jj_scanpos = xsp; + if (jj_3R_99()) { + jj_scanpos = xsp; + if (jj_3R_100()) { + jj_scanpos = xsp; + if (jj_3R_101()) { + jj_scanpos = xsp; + if (jj_3R_102()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_308() { + if (jj_scan_token(STRICTFP)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_8() { + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_50()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_scan_token(INTERFACE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_89() { + if (jj_scan_token(STATIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_49() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_89()) { + jj_scanpos = xsp; + if (jj_3R_90()) { + jj_scanpos = xsp; + if (jj_3R_91()) { + jj_scanpos = xsp; + if (jj_3R_92()) { + jj_scanpos = xsp; + if (jj_3R_93()) { + jj_scanpos = xsp; + if (jj_3R_94()) { + jj_scanpos = xsp; + if (jj_3R_95()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_313() { + if (jj_scan_token(FINAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_82() { + if (jj_scan_token(PROTECTED)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_366() { + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_133() { + if (jj_scan_token(STATIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_7() { + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_49()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_scan_token(CLASS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_365() { + if (jj_3R_270()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_75() { + if (jj_scan_token(PROTECTED)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_364() { + if (jj_3R_269()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_363() { + if (jj_3R_267()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_307() { + if (jj_scan_token(PRIVATE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_81() { + if (jj_scan_token(PUBLIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_362() { + if (jj_3R_266()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_350() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_362()) { + jj_scanpos = xsp; + if (jj_3R_363()) { + jj_scanpos = xsp; + if (jj_3R_364()) { + jj_scanpos = xsp; + if (jj_3R_365()) { + jj_scanpos = xsp; + if (jj_3R_366()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_319() { + if (jj_3R_350()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_312() { + if (jj_scan_token(ABSTRACT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_132() { + if (jj_scan_token(PRIVATE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_74() { + if (jj_scan_token(PUBLIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_87() { + if (jj_scan_token(PRIVATE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_176() { + if (jj_scan_token(INTERFACE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_318()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(LBRACE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + while (true) { + xsp = jj_scanpos; + if (jj_3R_319()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_scan_token(RBRACE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_80() { + if (jj_scan_token(FINAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_311() { + if (jj_scan_token(STATIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_306() { + if (jj_scan_token(PROTECTED)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_73() { + if (jj_scan_token(FINAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_281() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_311()) { + jj_scanpos = xsp; + if (jj_3R_312()) { + jj_scanpos = xsp; + if (jj_3R_313()) { + jj_scanpos = xsp; + if (jj_3R_314()) { + jj_scanpos = xsp; + if (jj_3R_315()) { + jj_scanpos = xsp; + if (jj_3R_316()) { + jj_scanpos = xsp; + if (jj_3R_317()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_267() { + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_281()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_3R_176()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_131() { + if (jj_scan_token(PROTECTED)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_86() { + if (jj_scan_token(PROTECTED)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_79() { + if (jj_scan_token(ABSTRACT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_305() { + if (jj_scan_token(PUBLIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_72() { + if (jj_scan_token(ABSTRACT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_130() { + if (jj_scan_token(PUBLIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_88() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_130()) { + jj_scanpos = xsp; + if (jj_3R_131()) { + jj_scanpos = xsp; + if (jj_3R_132()) { + jj_scanpos = xsp; + if (jj_3R_133()) { + jj_scanpos = xsp; + if (jj_3R_134()) { + jj_scanpos = xsp; + if (jj_3R_135()) { + jj_scanpos = xsp; + if (jj_3R_136()) { + jj_scanpos = xsp; + if (jj_3R_137()) { + jj_scanpos = xsp; + if (jj_3R_138()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_310() { + if (jj_scan_token(IMPLEMENTS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_324()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_48() { + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_88()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_3R_58()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_6() { + if (jj_3R_48()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_85() { + if (jj_scan_token(PUBLIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_46() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_85()) { + jj_scanpos = xsp; + if (jj_3R_86()) { + jj_scanpos = xsp; + if (jj_3R_87()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_5() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_46()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_47()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_304() { + if (jj_scan_token(FINAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_45() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_78()) { + jj_scanpos = xsp; + if (jj_3R_79()) { + jj_scanpos = xsp; + if (jj_3R_80()) { + jj_scanpos = xsp; + if (jj_3R_81()) { + jj_scanpos = xsp; + if (jj_3R_82()) { + jj_scanpos = xsp; + if (jj_3R_83()) { + jj_scanpos = xsp; + if (jj_3R_84()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_78() { + if (jj_scan_token(STATIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_4() { + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_45()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_scan_token(INTERFACE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_263() { + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_44() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_71()) { + jj_scanpos = xsp; + if (jj_3R_72()) { + jj_scanpos = xsp; + if (jj_3R_73()) { + jj_scanpos = xsp; + if (jj_3R_74()) { + jj_scanpos = xsp; + if (jj_3R_75()) { + jj_scanpos = xsp; + if (jj_3R_76()) { + jj_scanpos = xsp; + if (jj_3R_77()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_71() { + if (jj_scan_token(STATIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_262() { + if (jj_3R_270()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_3() { + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_44()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_scan_token(CLASS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_261() { + if (jj_3R_269()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_260() { + if (jj_3R_268()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_303() { + if (jj_scan_token(ABSTRACT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_259() { + if (jj_3R_267()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_68() { + if (jj_scan_token(STRICTFP)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_309() { + if (jj_scan_token(EXTENDS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_47()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_258() { + if (jj_3R_266()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_2() { + if (jj_3R_43()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_253() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_2()) { + jj_scanpos = xsp; + if (jj_3R_258()) { + jj_scanpos = xsp; + if (jj_3R_259()) { + jj_scanpos = xsp; + if (jj_3R_260()) { + jj_scanpos = xsp; + if (jj_3R_261()) { + jj_scanpos = xsp; + if (jj_3R_262()) { + jj_scanpos = xsp; + if (jj_3R_263()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_302() { + if (jj_scan_token(STATIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_280() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_302()) { + jj_scanpos = xsp; + if (jj_3R_303()) { + jj_scanpos = xsp; + if (jj_3R_304()) { + jj_scanpos = xsp; + if (jj_3R_305()) { + jj_scanpos = xsp; + if (jj_3R_306()) { + jj_scanpos = xsp; + if (jj_3R_307()) { + jj_scanpos = xsp; + if (jj_3R_308()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_67() { + if (jj_scan_token(PUBLIC)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_250() { + if (jj_3R_253()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_266() { + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_280()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_3R_175()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_381() { + if (jj_scan_token(COLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_245() { + if (jj_scan_token(LBRACE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_250()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_scan_token(RBRACE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_66() { + if (jj_scan_token(FINAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_175() { + if (jj_scan_token(CLASS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_309()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + xsp = jj_scanpos; + if (jj_3R_310()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_245()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_42() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_65()) { + jj_scanpos = xsp; + if (jj_3R_66()) { + jj_scanpos = xsp; + if (jj_3R_67()) { + jj_scanpos = xsp; + if (jj_3R_68()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_65() { + if (jj_scan_token(ABSTRACT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_1() { + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_42()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_scan_token(CLASS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_227() { + if (jj_scan_token(ASSERT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_381()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_380() { + if (jj_scan_token(FINALLY)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_70()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_379() { + if (jj_scan_token(CATCH)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_351()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_70()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_226() { + if (jj_scan_token(TRY)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_70()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_379()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + xsp = jj_scanpos; + if (jj_3R_380()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_375() { + if (jj_3R_387()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_225() { + if (jj_scan_token(SYNCHRONIZED)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_70()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_378() { + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_377() { + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_224() { + if (jj_scan_token(THROW)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_398() { + if (jj_scan_token(COMMA)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_215()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_223() { + if (jj_scan_token(RETURN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_378()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_376() { + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_222() { + if (jj_scan_token(CONTINUE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_377()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_374() { + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_221() { + if (jj_scan_token(BREAK)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_376()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_372() { + if (jj_scan_token(ELSE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_174()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_387() { + if (jj_3R_397()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_64() { + if (jj_scan_token(FINAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_30() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_64()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_63()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_397() { + if (jj_3R_215()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_398()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_373() { + if (jj_3R_386()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_396() { + if (jj_3R_397()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_395() { + if (jj_3R_173()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_386() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_395()) { + jj_scanpos = xsp; + if (jj_3R_396()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_220() { + if (jj_scan_token(FOR)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_373()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + xsp = jj_scanpos; + if (jj_3R_374()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + xsp = jj_scanpos; + if (jj_3R_375()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_174()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_219() { + if (jj_scan_token(DO)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_174()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(WHILE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_218() { + if (jj_scan_token(WHILE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_174()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_385() { + if (jj_3R_157()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_217() { + if (jj_scan_token(IF)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_174()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_372()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_394() { + if (jj_scan_token(_DEFAULT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(COLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_393() { + if (jj_scan_token(CASE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(COLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_384() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_393()) { + jj_scanpos = xsp; + if (jj_3R_394()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_370() { + if (jj_scan_token(COMMA)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_293()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_371() { + if (jj_3R_384()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_385()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_216() { + if (jj_scan_token(SWITCH)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(LBRACE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_371()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_scan_token(RBRACE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_392() { + if (jj_3R_180()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_391() { + if (jj_scan_token(DECR)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_390() { + if (jj_scan_token(INCR)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_383() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_390()) { + jj_scanpos = xsp; + if (jj_3R_391()) { + jj_scanpos = xsp; + if (jj_3R_392()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_232() { + if (jj_3R_53()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_383()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_231() { + if (jj_3R_239()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_215() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_230()) { + jj_scanpos = xsp; + if (jj_3R_231()) { + jj_scanpos = xsp; + if (jj_3R_232()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_230() { + if (jj_3R_238()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_214() { + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_182() { + if (jj_scan_token(FINAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_173() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_182()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_63()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_293()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + while (true) { + xsp = jj_scanpos; + if (jj_3R_370()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_62() { + if (jj_scan_token(FINAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_29() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_62()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_63()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_164() { + if (jj_3R_176()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_163() { + if (jj_3R_175()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_162() { + if (jj_3R_174()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_129() { + if (jj_3R_157()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_157() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_161()) { + jj_scanpos = xsp; + if (jj_3R_162()) { + jj_scanpos = xsp; + if (jj_3R_163()) { + jj_scanpos = xsp; + if (jj_3R_164()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_161() { + if (jj_3R_173()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_70() { + if (jj_scan_token(LBRACE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_129()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_scan_token(RBRACE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_61() { + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(COLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_174()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_197() { + if (jj_3R_227()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_196() { + if (jj_3R_226()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_26() { + if (jj_scan_token(LBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_195() { + if (jj_3R_225()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_194() { + if (jj_3R_224()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_193() { + if (jj_3R_223()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_192() { + if (jj_3R_222()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_191() { + if (jj_3R_221()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_190() { + if (jj_3R_220()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_189() { + if (jj_3R_219()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_188() { + if (jj_3R_218()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_187() { + if (jj_3R_217()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_186() { + if (jj_3R_216()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_185() { + if (jj_3R_215()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(SEMICOLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_184() { + if (jj_3R_214()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_183() { + if (jj_3R_70()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_28() { + if (jj_3R_61()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_174() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_28()) { + jj_scanpos = xsp; + if (jj_3R_183()) { + jj_scanpos = xsp; + if (jj_3R_184()) { + jj_scanpos = xsp; + if (jj_3R_185()) { + jj_scanpos = xsp; + if (jj_3R_186()) { + jj_scanpos = xsp; + if (jj_3R_187()) { + jj_scanpos = xsp; + if (jj_3R_188()) { + jj_scanpos = xsp; + if (jj_3R_189()) { + jj_scanpos = xsp; + if (jj_3R_190()) { + jj_scanpos = xsp; + if (jj_3R_191()) { + jj_scanpos = xsp; + if (jj_3R_192()) { + jj_scanpos = xsp; + if (jj_3R_193()) { + jj_scanpos = xsp; + if (jj_3R_194()) { + jj_scanpos = xsp; + if (jj_3R_195()) { + jj_scanpos = xsp; + if (jj_3R_196()) { + jj_scanpos = xsp; + if (jj_3R_197()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_241() { + if (jj_3R_245()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_244() { + if (jj_scan_token(LBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_25() { + if (jj_scan_token(LBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_240() { + Token xsp; + if (jj_3R_244()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + while (true) { + xsp = jj_scanpos; + if (jj_3R_244()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_3R_139()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_27() { + Token xsp; + if (jj_3_25()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + while (true) { + xsp = jj_scanpos; + if (jj_3_25()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + while (true) { + xsp = jj_scanpos; + if (jj_3_26()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_233() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_27()) { + jj_scanpos = xsp; + if (jj_3R_240()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_235() { + if (jj_3R_54()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_241()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_159() { + if (jj_scan_token(COMMA)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_234() { + if (jj_3R_233()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_124() { + if (jj_scan_token(NEW)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_47()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_234()) { + jj_scanpos = xsp; + if (jj_3R_235()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_24() { + if (jj_scan_token(NEW)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_56()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_233()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_59() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_24()) { + jj_scanpos = xsp; + if (jj_3R_124()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_147() { + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_159()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_108() { + if (jj_3R_147()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_54() { + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_108()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_178() { + if (jj_scan_token(NULL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_199() { + if (jj_scan_token(FALSE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_177() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_198()) { + jj_scanpos = xsp; + if (jj_3R_199()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_198() { + if (jj_scan_token(TRUE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_170() { + if (jj_3R_178()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_155() { + if (jj_3R_158()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_169() { + if (jj_3R_177()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_168() { + if (jj_scan_token(STRING_LITERAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_167() { + if (jj_scan_token(CHARACTER_LITERAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_166() { + if (jj_scan_token(FLOATING_POINT_LITERAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_154() { + if (jj_scan_token(NEW)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_158() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_165()) { + jj_scanpos = xsp; + if (jj_3R_166()) { + jj_scanpos = xsp; + if (jj_3R_167()) { + jj_scanpos = xsp; + if (jj_3R_168()) { + jj_scanpos = xsp; + if (jj_3R_169()) { + jj_scanpos = xsp; + if (jj_3R_170()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_165() { + if (jj_scan_token(INTEGER_LITERAL)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_121() { + if (jj_3R_54()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_120() { + if (jj_scan_token(DOT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_153() { + if (jj_scan_token(SUPER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_119() { + if (jj_scan_token(LBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_23() { + if (jj_scan_token(DOT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_59()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_22() { + if (jj_scan_token(DOT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(SUPER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_152() { + if (jj_scan_token(THIS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_21() { + if (jj_scan_token(DOT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(THIS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_57() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_21()) { + jj_scanpos = xsp; + if (jj_3_22()) { + jj_scanpos = xsp; + if (jj_3_23()) { + jj_scanpos = xsp; + if (jj_3R_119()) { + jj_scanpos = xsp; + if (jj_3R_120()) { + jj_scanpos = xsp; + if (jj_3R_121()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_20() { + if (jj_3R_58()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(DOT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(CLASS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_146() { + if (jj_3R_47()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_19() { + if (jj_3R_57()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_145() { + if (jj_3R_58()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(DOT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(CLASS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_144() { + if (jj_3R_59()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_389() { + if (jj_scan_token(DECR)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_151() { + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_143() { + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_60()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_142() { + if (jj_scan_token(SUPER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(DOT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_141() { + if (jj_scan_token(THIS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_150() { + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_388() { + if (jj_scan_token(INCR)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_382() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_388()) { + jj_scanpos = xsp; + if (jj_3R_389()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_140() { + if (jj_3R_158()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_107() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_140()) { + jj_scanpos = xsp; + if (jj_3R_141()) { + jj_scanpos = xsp; + if (jj_3R_142()) { + jj_scanpos = xsp; + if (jj_3R_143()) { + jj_scanpos = xsp; + if (jj_3R_144()) { + jj_scanpos = xsp; + if (jj_3R_145()) { + jj_scanpos = xsp; + if (jj_3R_146()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_149() { + if (jj_scan_token(BANG)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_18() { + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_56()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_53() { + if (jj_3R_107()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3_19()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + return false; + } + + final private boolean jj_3R_148() { + if (jj_scan_token(TILDE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_369() { + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_63()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_301()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_368() { + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_63()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_265()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_360() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_368()) { + jj_scanpos = xsp; + if (jj_3R_369()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_17() { + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_47()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(LBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_361() { + if (jj_3R_53()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_382()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_110() { + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_47()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_148()) { + jj_scanpos = xsp; + if (jj_3R_149()) { + jj_scanpos = xsp; + if (jj_3R_150()) { + jj_scanpos = xsp; + if (jj_3R_151()) { + jj_scanpos = xsp; + if (jj_3R_152()) { + jj_scanpos = xsp; + if (jj_3R_153()) { + jj_scanpos = xsp; + if (jj_3R_154()) { + jj_scanpos = xsp; + if (jj_3R_155()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_109() { + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_47()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(LBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_16() { + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_56()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_55() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_16()) { + jj_scanpos = xsp; + if (jj_3R_109()) { + jj_scanpos = xsp; + if (jj_3R_110()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3_15() { + if (jj_3R_55()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_359() { + if (jj_scan_token(BANG)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_349() { + if (jj_3R_361()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_357() { + if (jj_scan_token(REM)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_358() { + if (jj_scan_token(TILDE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_348() { + if (jj_3R_360()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_346() { + if (jj_scan_token(MINUS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_347() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_358()) { + jj_scanpos = xsp; + if (jj_3R_359()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_265()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_301() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_347()) { + jj_scanpos = xsp; + if (jj_3R_348()) { + jj_scanpos = xsp; + if (jj_3R_349()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_356() { + if (jj_scan_token(SLASH)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_298() { + if (jj_scan_token(RUNSIGNEDSHIFT)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_345() { + if (jj_scan_token(PLUS)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_239() { + if (jj_scan_token(DECR)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_53()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_275() { + if (jj_scan_token(GE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_295() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_345()) { + jj_scanpos = xsp; + if (jj_3R_346()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_257()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + public JavaParserTokenManager token_source; + JavaCharStream jj_input_stream; + public Token token, jj_nt; + private int jj_ntk; + private Token jj_scanpos, jj_lastpos; + private int jj_la; + public boolean lookingAhead = false; + private boolean jj_semLA; + private int jj_gen; + final private int[] jj_la1 = new int[113]; + final private int[] jj_la1_0 = {0x0,0x0,0x10081000,0x0,0x1000,0x10001000,0x10001000,0x4000000,0x0,0x510cb000,0x10001000,0x10001000,0x5104a000,0x10001000,0x10001000,0x1000,0x1000,0x10001000,0x10001000,0x4000000,0x510cb000,0x5104a000,0x10000000,0x10000000,0x0,0x0,0x0,0x4904a000,0x4904a000,0x0,0x10001000,0x10001000,0x0,0x0,0x0,0x0,0x5104a000,0x10000000,0x0,0x0,0x0,0xd9ace000,0x4904a000,0x0,0x4104a000,0x0,0x4104a000,0x4104a000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4904a000,0x0,0x0,0x4904a000,0x8000000,0x0,0x0,0x0,0x0,0x8000000,0x0,0x0,0x8000000,0x8000000,0x4904a000,0x0,0x0,0x0,0x0,0x0,0x0,0xc9a4e000,0xd9ace000,0xc9ace000,0x10000000,0x0,0x0,0x0,0x4904a000,0x410000,0xd9ace000,0x410000,0x2000000,0x5904a000,0x4904a000,0x4904a000,0x4904a000,0x0,0x0,0x0,0x4904a000,0x20000,0x20000000,0x0,}; + final private int[] jj_la1_1 = {0x800,0x8,0x40004040,0x0,0x40004040,0x40004000,0x40004000,0x0,0x4,0x591371e0,0x40027000,0x40027000,0x110370a0,0x40127100,0x40127100,0x40004000,0x40004000,0x40027000,0x40027000,0x0,0x591371e0,0x110370a0,0x11027000,0x11027000,0x0,0x0,0x0,0xa2506a0,0xa2506a0,0x0,0x40127100,0x40127100,0x800000,0x0,0x0,0x0,0x100a0,0x0,0x7000,0x7000,0x800000,0xae7d86e2,0xa2506a0,0x20000,0x100a0,0x0,0x100a0,0x80100a0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa2506a0,0x0,0x0,0xa2506a0,0x2240600,0x0,0x0,0x0,0x0,0x2240600,0x0,0x0,0x2000400,0x2000000,0xa2506a0,0x0,0x0,0x0,0x200,0x0,0x0,0xae7d86a2,0xae7d86e2,0xae7d86e2,0x0,0x0,0x0,0x0,0xa2506a0,0x0,0xae7d86e2,0x0,0x0,0xa2506a0,0xa2506a0,0xa2506a0,0xa2506a0,0x0,0x0,0x0,0xa2506a0,0x0,0x0,0x0,}; + final private int[] jj_la1_2 = {0x0,0x0,0x20000,0x80000,0x20000,0x0,0x0,0x0,0x0,0x22100,0x0,0x0,0x20100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20100,0x20100,0x0,0x0,0x40000,0x100000,0x8000,0x18029d1,0x18029d1,0x40000,0x0,0x0,0x0,0x22000,0x8000,0x40000,0x100,0x0,0x0,0x0,0x0,0x229d1,0x9d1,0x0,0x100,0x8000,0x0,0x100,0x40000,0x100000,0x100000,0x2000000,0x80000000,0x0,0x0,0x0,0x0,0x48000000,0x48000000,0x0,0x30600000,0x30600000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18009d1,0x1800000,0x1800000,0x9d1,0x18009d1,0x800,0x0,0x0,0x800,0x8d1,0x100,0x88800,0xd1,0x0,0x18009d1,0x40000,0x2000,0x8800,0x0,0x8000,0x8000,0x229d1,0x229d1,0x229d1,0x0,0x40000,0x100000,0x100000,0x9d1,0x0,0x229d1,0x0,0x0,0x9d1,0x18009d1,0x9d1,0x9d1,0x40000,0x100,0x100,0x18009d1,0x0,0x0,0x4000000,}; + final private int[] jj_la1_3 = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1ffc000,0x1ffc000,0x0,0x0,0x1,0x100,0x200,0x80,0x0,0x0,0x0,0x0,0x0,0x3800,0x3800,0x18,0x18,0x460,0x460,0x18,0x1e,0x0,0x0,0x0,0x0,0x0,0x6,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x6,0x6,0x0,0x0,0x1ffc006,0x1ffc006,0x6,0x0,0x6,0x0,0x0,0x6,0x1e,0x6,0x6,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,}; + final private JJCalls[] jj_2_rtns = new JJCalls[30]; + private boolean jj_rescan = false; + private int jj_gc = 0; + + public JavaParser(java.io.InputStream stream) { + jj_input_stream = new JavaCharStream(stream, 1, 1); + token_source = new JavaParserTokenManager(jj_input_stream); + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 113; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + public void ReInit(java.io.InputStream stream) { + jj_input_stream.ReInit(stream, 1, 1); + token_source.ReInit(jj_input_stream); + token = new Token(); + jj_ntk = -1; + jjtree.reset(); + jj_gen = 0; + for (int i = 0; i < 113; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + public JavaParser(java.io.Reader stream) { + jj_input_stream = new JavaCharStream(stream, 1, 1); + token_source = new JavaParserTokenManager(jj_input_stream); + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 113; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + public void ReInit(java.io.Reader stream) { + jj_input_stream.ReInit(stream, 1, 1); + token_source.ReInit(jj_input_stream); + token = new Token(); + jj_ntk = -1; + jjtree.reset(); + jj_gen = 0; + for (int i = 0; i < 113; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + public JavaParser(JavaParserTokenManager tm) { + token_source = tm; + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 113; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + public void ReInit(JavaParserTokenManager tm) { + token_source = tm; + token = new Token(); + jj_ntk = -1; + jjtree.reset(); + jj_gen = 0; + for (int i = 0; i < 113; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + final private Token jj_consume_token(int kind) throws ParseException { + Token oldToken; + if ((oldToken = token).next != null) token = token.next; + else token = token.next = token_source.getNextToken(); + jj_ntk = -1; + if (token.kind == kind) { + jj_gen++; + if (++jj_gc > 100) { + jj_gc = 0; + for (int i = 0; i < jj_2_rtns.length; i++) { + JJCalls c = jj_2_rtns[i]; + while (c != null) { + if (c.gen < jj_gen) c.first = null; + c = c.next; + } + } + } + return token; + } + token = oldToken; + jj_kind = kind; + throw generateParseException(); + } + + final private boolean jj_scan_token(int kind) { + if (jj_scanpos == jj_lastpos) { + jj_la--; + if (jj_scanpos.next == null) { + jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken(); + } else { + jj_lastpos = jj_scanpos = jj_scanpos.next; + } + } else { + jj_scanpos = jj_scanpos.next; + } + if (jj_rescan) { + int i = 0; Token tok = token; + while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; } + if (tok != null) jj_add_error_token(kind, i); + } + return (jj_scanpos.kind != kind); + } + + final public Token getNextToken() { + if (token.next != null) token = token.next; + else token = token.next = token_source.getNextToken(); + jj_ntk = -1; + jj_gen++; + return token; + } + + final public Token getToken(int index) { + Token t = lookingAhead ? jj_scanpos : token; + for (int i = 0; i < index; i++) { + if (t.next != null) t = t.next; + else t = t.next = token_source.getNextToken(); + } + return t; + } + + final private int jj_ntk() { + if ((jj_nt=token.next) == null) + return (jj_ntk = (token.next=token_source.getNextToken()).kind); + else + return (jj_ntk = jj_nt.kind); + } + + private java.util.Vector jj_expentries = new java.util.Vector(); + private int[] jj_expentry; + private int jj_kind = -1; + private int[] jj_lasttokens = new int[100]; + private int jj_endpos; + + private void jj_add_error_token(int kind, int pos) { + if (pos >= 100) return; + if (pos == jj_endpos + 1) { + jj_lasttokens[jj_endpos++] = kind; + } else if (jj_endpos != 0) { + jj_expentry = new int[jj_endpos]; + for (int i = 0; i < jj_endpos; i++) { + jj_expentry[i] = jj_lasttokens[i]; + } + boolean exists = false; + for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) { + int[] oldentry = (int[])(enum.nextElement()); + if (oldentry.length == jj_expentry.length) { + exists = true; + for (int i = 0; i < jj_expentry.length; i++) { + if (oldentry[i] != jj_expentry[i]) { + exists = false; + break; + } + } + if (exists) break; + } + } + if (!exists) jj_expentries.addElement(jj_expentry); + if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind; + } + } + + final public ParseException generateParseException() { + jj_expentries.removeAllElements(); + boolean[] la1tokens = new boolean[121]; + for (int i = 0; i < 121; i++) { + la1tokens[i] = false; + } + if (jj_kind >= 0) { + la1tokens[jj_kind] = true; + jj_kind = -1; + } + for (int i = 0; i < 113; i++) { + if (jj_la1[i] == jj_gen) { + for (int j = 0; j < 32; j++) { + if ((jj_la1_0[i] & (1< jj_gen) { + jj_la = p.arg; jj_lastpos = jj_scanpos = p.first; + switch (i) { + case 0: jj_3_1(); break; + case 1: jj_3_2(); break; + case 2: jj_3_3(); break; + case 3: jj_3_4(); break; + case 4: jj_3_5(); break; + case 5: jj_3_6(); break; + case 6: jj_3_7(); break; + case 7: jj_3_8(); break; + case 8: jj_3_9(); break; + case 9: jj_3_10(); break; + case 10: jj_3_11(); break; + case 11: jj_3_12(); break; + case 12: jj_3_13(); break; + case 13: jj_3_14(); break; + case 14: jj_3_15(); break; + case 15: jj_3_16(); break; + case 16: jj_3_17(); break; + case 17: jj_3_18(); break; + case 18: jj_3_19(); break; + case 19: jj_3_20(); break; + case 20: jj_3_21(); break; + case 21: jj_3_22(); break; + case 22: jj_3_23(); break; + case 23: jj_3_24(); break; + case 24: jj_3_25(); break; + case 25: jj_3_26(); break; + case 26: jj_3_27(); break; + case 27: jj_3_28(); break; + case 28: jj_3_29(); break; + case 29: jj_3_30(); break; + } + } + p = p.next; + } while (p != null); + } + jj_rescan = false; + } + + final private void jj_save(int index, int xla) { + JJCalls p = jj_2_rtns[index]; + while (p.gen > jj_gen) { + if (p.next == null) { p = p.next = new JJCalls(); break; } + p = p.next; + } + p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla; + } + + static final class JJCalls { + int gen; + Token first; + int arg; + JJCalls next; + } + +} diff --git a/pmd/src/com/infoether/pmd/ast/JavaParserConstants.java b/pmd/src/com/infoether/pmd/ast/JavaParserConstants.java new file mode 100644 index 0000000000..40f0c256ed --- /dev/null +++ b/pmd/src/com/infoether/pmd/ast/JavaParserConstants.java @@ -0,0 +1,248 @@ +/* Generated By:JJTree&JavaCC: Do not edit this line. JavaParserConstants.java */ +package com.infoether.pmd.ast; + +public interface JavaParserConstants { + + int EOF = 0; + int SINGLE_LINE_COMMENT = 6; + int FORMAL_COMMENT = 9; + int MULTI_LINE_COMMENT = 10; + int ABSTRACT = 12; + int BOOLEAN = 13; + int BREAK = 14; + int BYTE = 15; + int CASE = 16; + int CATCH = 17; + int CHAR = 18; + int CLASS = 19; + int CONST = 20; + int CONTINUE = 21; + int _DEFAULT = 22; + int DO = 23; + int DOUBLE = 24; + int ELSE = 25; + int EXTENDS = 26; + int FALSE = 27; + int FINAL = 28; + int FINALLY = 29; + int FLOAT = 30; + int FOR = 31; + int GOTO = 32; + int IF = 33; + int IMPLEMENTS = 34; + int IMPORT = 35; + int INSTANCEOF = 36; + int INT = 37; + int INTERFACE = 38; + int LONG = 39; + int NATIVE = 40; + int NEW = 41; + int NULL = 42; + int PACKAGE = 43; + int PRIVATE = 44; + int PROTECTED = 45; + int PUBLIC = 46; + int RETURN = 47; + int SHORT = 48; + int STATIC = 49; + int SUPER = 50; + int SWITCH = 51; + int SYNCHRONIZED = 52; + int THIS = 53; + int THROW = 54; + int THROWS = 55; + int TRANSIENT = 56; + int TRUE = 57; + int TRY = 58; + int VOID = 59; + int VOLATILE = 60; + int WHILE = 61; + int STRICTFP = 62; + int ASSERT = 63; + int INTEGER_LITERAL = 64; + int DECIMAL_LITERAL = 65; + int HEX_LITERAL = 66; + int OCTAL_LITERAL = 67; + int FLOATING_POINT_LITERAL = 68; + int EXPONENT = 69; + int CHARACTER_LITERAL = 70; + int STRING_LITERAL = 71; + int IDENTIFIER = 72; + int LETTER = 73; + int DIGIT = 74; + int LPAREN = 75; + int RPAREN = 76; + int LBRACE = 77; + int RBRACE = 78; + int LBRACKET = 79; + int RBRACKET = 80; + int SEMICOLON = 81; + int COMMA = 82; + int DOT = 83; + int ASSIGN = 84; + int GT = 85; + int LT = 86; + int BANG = 87; + int TILDE = 88; + int HOOK = 89; + int COLON = 90; + int EQ = 91; + int LE = 92; + int GE = 93; + int NE = 94; + int SC_OR = 95; + int SC_AND = 96; + int INCR = 97; + int DECR = 98; + int PLUS = 99; + int MINUS = 100; + int STAR = 101; + int SLASH = 102; + int BIT_AND = 103; + int BIT_OR = 104; + int XOR = 105; + int REM = 106; + int LSHIFT = 107; + int RSIGNEDSHIFT = 108; + int RUNSIGNEDSHIFT = 109; + int PLUSASSIGN = 110; + int MINUSASSIGN = 111; + int STARASSIGN = 112; + int SLASHASSIGN = 113; + int ANDASSIGN = 114; + int ORASSIGN = 115; + int XORASSIGN = 116; + int REMASSIGN = 117; + int LSHIFTASSIGN = 118; + int RSIGNEDSHIFTASSIGN = 119; + int RUNSIGNEDSHIFTASSIGN = 120; + + int DEFAULT = 0; + int IN_FORMAL_COMMENT = 1; + int IN_MULTI_LINE_COMMENT = 2; + + String[] tokenImage = { + "", + "\" \"", + "\"\\t\"", + "\"\\n\"", + "\"\\r\"", + "\"\\f\"", + "", + "", + "\"/*\"", + "\"*/\"", + "\"*/\"", + "", + "\"abstract\"", + "\"boolean\"", + "\"break\"", + "\"byte\"", + "\"case\"", + "\"catch\"", + "\"char\"", + "\"class\"", + "\"const\"", + "\"continue\"", + "\"default\"", + "\"do\"", + "\"double\"", + "\"else\"", + "\"extends\"", + "\"false\"", + "\"final\"", + "\"finally\"", + "\"float\"", + "\"for\"", + "\"goto\"", + "\"if\"", + "\"implements\"", + "\"import\"", + "\"instanceof\"", + "\"int\"", + "\"interface\"", + "\"long\"", + "\"native\"", + "\"new\"", + "\"null\"", + "\"package\"", + "\"private\"", + "\"protected\"", + "\"public\"", + "\"return\"", + "\"short\"", + "\"static\"", + "\"super\"", + "\"switch\"", + "\"synchronized\"", + "\"this\"", + "\"throw\"", + "\"throws\"", + "\"transient\"", + "\"true\"", + "\"try\"", + "\"void\"", + "\"volatile\"", + "\"while\"", + "\"strictfp\"", + "\"assert\"", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"(\"", + "\")\"", + "\"{\"", + "\"}\"", + "\"[\"", + "\"]\"", + "\";\"", + "\",\"", + "\".\"", + "\"=\"", + "\">\"", + "\"<\"", + "\"!\"", + "\"~\"", + "\"?\"", + "\":\"", + "\"==\"", + "\"<=\"", + "\">=\"", + "\"!=\"", + "\"||\"", + "\"&&\"", + "\"++\"", + "\"--\"", + "\"+\"", + "\"-\"", + "\"*\"", + "\"/\"", + "\"&\"", + "\"|\"", + "\"^\"", + "\"%\"", + "\"<<\"", + "\">>\"", + "\">>>\"", + "\"+=\"", + "\"-=\"", + "\"*=\"", + "\"/=\"", + "\"&=\"", + "\"|=\"", + "\"^=\"", + "\"%=\"", + "\"<<=\"", + "\">>=\"", + "\">>>=\"", + }; + +} diff --git a/pmd/src/com/infoether/pmd/ast/JavaParserTokenManager.java b/pmd/src/com/infoether/pmd/ast/JavaParserTokenManager.java new file mode 100644 index 0000000000..0ffae2fcf6 --- /dev/null +++ b/pmd/src/com/infoether/pmd/ast/JavaParserTokenManager.java @@ -0,0 +1,1666 @@ +/* Generated By:JJTree&JavaCC: Do not edit this line. JavaParserTokenManager.java */ +package com.infoether.pmd.ast; + +public class JavaParserTokenManager implements JavaParserConstants +{ + public java.io.PrintStream debugStream = System.out; + public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; } +private final int jjStopStringLiteralDfa_0(int pos, long active0, long active1) +{ + switch (pos) + { + case 0: + if ((active1 & 0x80000L) != 0L) + return 4; + if ((active0 & 0xfffffffffffff000L) != 0L) + { + jjmatchedKind = 72; + return 28; + } + if ((active0 & 0x100L) != 0L || (active1 & 0x2004000000000L) != 0L) + return 49; + return -1; + case 1: + if ((active0 & 0x201800000L) != 0L) + return 28; + if ((active0 & 0xfffffffdfe7ff000L) != 0L) + { + if (jjmatchedPos != 1) + { + jjmatchedKind = 72; + jjmatchedPos = 1; + } + return 28; + } + if ((active0 & 0x100L) != 0L) + return 54; + return -1; + case 2: + if ((active0 & 0x400026080000000L) != 0L) + return 28; + if ((active0 & 0xfbfffd9d7f7ff000L) != 0L) + { + if (jjmatchedPos != 2) + { + jjmatchedKind = 72; + jjmatchedPos = 2; + } + return 28; + } + return -1; + case 3: + if ((active0 & 0xf1dff95c7d7a7000L) != 0L) + { + jjmatchedKind = 72; + jjmatchedPos = 3; + return 28; + } + if ((active0 & 0xa20048102058000L) != 0L) + return 28; + return -1; + case 4: + if ((active0 & 0x20c50000781a4000L) != 0L) + return 28; + if ((active0 & 0xd11af95c05603000L) != 0L) + { + if (jjmatchedPos != 4) + { + jjmatchedKind = 72; + jjmatchedPos = 4; + } + return 28; + } + return -1; + case 5: + if ((active0 & 0x808ac10801000000L) != 0L) + return 28; + if ((active0 & 0x5110385424603000L) != 0L) + { + jjmatchedKind = 72; + jjmatchedPos = 5; + return 28; + } + return -1; + case 6: + if ((active0 & 0x5110205400201000L) != 0L) + { + jjmatchedKind = 72; + jjmatchedPos = 6; + return 28; + } + if ((active0 & 0x180024402000L) != 0L) + return 28; + return -1; + case 7: + if ((active0 & 0x5000000000201000L) != 0L) + return 28; + if ((active0 & 0x110205400000000L) != 0L) + { + jjmatchedKind = 72; + jjmatchedPos = 7; + return 28; + } + return -1; + case 8: + if ((active0 & 0x100204000000000L) != 0L) + return 28; + if ((active0 & 0x10001400000000L) != 0L) + { + jjmatchedKind = 72; + jjmatchedPos = 8; + return 28; + } + return -1; + case 9: + if ((active0 & 0x1400000000L) != 0L) + return 28; + if ((active0 & 0x10000000000000L) != 0L) + { + jjmatchedKind = 72; + jjmatchedPos = 9; + return 28; + } + return -1; + case 10: + if ((active0 & 0x10000000000000L) != 0L) + { + jjmatchedKind = 72; + jjmatchedPos = 10; + return 28; + } + return -1; + default : + return -1; + } +} +private final int jjStartNfa_0(int pos, long active0, long active1) +{ + return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0, active1), pos + 1); +} +private final int jjStopAtPos(int pos, int kind) +{ + jjmatchedKind = kind; + jjmatchedPos = pos; + return pos + 1; +} +private final int jjStartNfaWithStates_0(int pos, int kind, int state) +{ + jjmatchedKind = kind; + jjmatchedPos = pos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return pos + 1; } + return jjMoveNfa_0(state, pos + 1); +} +private final int jjMoveStringLiteralDfa0_0() +{ + switch(curChar) + { + case 9: + return jjStopAtPos(0, 2); + case 10: + return jjStopAtPos(0, 3); + case 12: + return jjStopAtPos(0, 5); + case 13: + return jjStopAtPos(0, 4); + case 32: + return jjStopAtPos(0, 1); + case 33: + jjmatchedKind = 87; + return jjMoveStringLiteralDfa1_0(0x0L, 0x40000000L); + case 37: + jjmatchedKind = 106; + return jjMoveStringLiteralDfa1_0(0x0L, 0x20000000000000L); + case 38: + jjmatchedKind = 103; + return jjMoveStringLiteralDfa1_0(0x0L, 0x4000100000000L); + case 40: + return jjStopAtPos(0, 75); + case 41: + return jjStopAtPos(0, 76); + case 42: + jjmatchedKind = 101; + return jjMoveStringLiteralDfa1_0(0x0L, 0x1000000000000L); + case 43: + jjmatchedKind = 99; + return jjMoveStringLiteralDfa1_0(0x0L, 0x400200000000L); + case 44: + return jjStopAtPos(0, 82); + case 45: + jjmatchedKind = 100; + return jjMoveStringLiteralDfa1_0(0x0L, 0x800400000000L); + case 46: + return jjStartNfaWithStates_0(0, 83, 4); + case 47: + jjmatchedKind = 102; + return jjMoveStringLiteralDfa1_0(0x100L, 0x2000000000000L); + case 58: + return jjStopAtPos(0, 90); + case 59: + return jjStopAtPos(0, 81); + case 60: + jjmatchedKind = 86; + return jjMoveStringLiteralDfa1_0(0x0L, 0x40080010000000L); + case 61: + jjmatchedKind = 84; + return jjMoveStringLiteralDfa1_0(0x0L, 0x8000000L); + case 62: + jjmatchedKind = 85; + return jjMoveStringLiteralDfa1_0(0x0L, 0x180300020000000L); + case 63: + return jjStopAtPos(0, 89); + case 91: + return jjStopAtPos(0, 79); + case 93: + return jjStopAtPos(0, 80); + case 94: + jjmatchedKind = 105; + return jjMoveStringLiteralDfa1_0(0x0L, 0x10000000000000L); + case 97: + return jjMoveStringLiteralDfa1_0(0x8000000000001000L, 0x0L); + case 98: + return jjMoveStringLiteralDfa1_0(0xe000L, 0x0L); + case 99: + return jjMoveStringLiteralDfa1_0(0x3f0000L, 0x0L); + case 100: + return jjMoveStringLiteralDfa1_0(0x1c00000L, 0x0L); + case 101: + return jjMoveStringLiteralDfa1_0(0x6000000L, 0x0L); + case 102: + return jjMoveStringLiteralDfa1_0(0xf8000000L, 0x0L); + case 103: + return jjMoveStringLiteralDfa1_0(0x100000000L, 0x0L); + case 105: + return jjMoveStringLiteralDfa1_0(0x7e00000000L, 0x0L); + case 108: + return jjMoveStringLiteralDfa1_0(0x8000000000L, 0x0L); + case 110: + return jjMoveStringLiteralDfa1_0(0x70000000000L, 0x0L); + case 112: + return jjMoveStringLiteralDfa1_0(0x780000000000L, 0x0L); + case 114: + return jjMoveStringLiteralDfa1_0(0x800000000000L, 0x0L); + case 115: + return jjMoveStringLiteralDfa1_0(0x401f000000000000L, 0x0L); + case 116: + return jjMoveStringLiteralDfa1_0(0x7e0000000000000L, 0x0L); + case 118: + return jjMoveStringLiteralDfa1_0(0x1800000000000000L, 0x0L); + case 119: + return jjMoveStringLiteralDfa1_0(0x2000000000000000L, 0x0L); + case 123: + return jjStopAtPos(0, 77); + case 124: + jjmatchedKind = 104; + return jjMoveStringLiteralDfa1_0(0x0L, 0x8000080000000L); + case 125: + return jjStopAtPos(0, 78); + case 126: + return jjStopAtPos(0, 88); + default : + return jjMoveNfa_0(0, 0); + } +} +private final int jjMoveStringLiteralDfa1_0(long active0, long active1) +{ + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(0, active0, active1); + return 1; + } + switch(curChar) + { + case 38: + if ((active1 & 0x100000000L) != 0L) + return jjStopAtPos(1, 96); + break; + case 42: + if ((active0 & 0x100L) != 0L) + return jjStartNfaWithStates_0(1, 8, 54); + break; + case 43: + if ((active1 & 0x200000000L) != 0L) + return jjStopAtPos(1, 97); + break; + case 45: + if ((active1 & 0x400000000L) != 0L) + return jjStopAtPos(1, 98); + break; + case 60: + if ((active1 & 0x80000000000L) != 0L) + { + jjmatchedKind = 107; + jjmatchedPos = 1; + } + return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x40000000000000L); + case 61: + if ((active1 & 0x8000000L) != 0L) + return jjStopAtPos(1, 91); + else if ((active1 & 0x10000000L) != 0L) + return jjStopAtPos(1, 92); + else if ((active1 & 0x20000000L) != 0L) + return jjStopAtPos(1, 93); + else if ((active1 & 0x40000000L) != 0L) + return jjStopAtPos(1, 94); + else if ((active1 & 0x400000000000L) != 0L) + return jjStopAtPos(1, 110); + else if ((active1 & 0x800000000000L) != 0L) + return jjStopAtPos(1, 111); + else if ((active1 & 0x1000000000000L) != 0L) + return jjStopAtPos(1, 112); + else if ((active1 & 0x2000000000000L) != 0L) + return jjStopAtPos(1, 113); + else if ((active1 & 0x4000000000000L) != 0L) + return jjStopAtPos(1, 114); + else if ((active1 & 0x8000000000000L) != 0L) + return jjStopAtPos(1, 115); + else if ((active1 & 0x10000000000000L) != 0L) + return jjStopAtPos(1, 116); + else if ((active1 & 0x20000000000000L) != 0L) + return jjStopAtPos(1, 117); + break; + case 62: + if ((active1 & 0x100000000000L) != 0L) + { + jjmatchedKind = 108; + jjmatchedPos = 1; + } + return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x180200000000000L); + case 97: + return jjMoveStringLiteralDfa2_0(active0, 0x90008030000L, active1, 0L); + case 98: + return jjMoveStringLiteralDfa2_0(active0, 0x1000L, active1, 0L); + case 101: + return jjMoveStringLiteralDfa2_0(active0, 0x820000400000L, active1, 0L); + case 102: + if ((active0 & 0x200000000L) != 0L) + return jjStartNfaWithStates_0(1, 33, 28); + break; + case 104: + return jjMoveStringLiteralDfa2_0(active0, 0x20e1000000040000L, active1, 0L); + case 105: + return jjMoveStringLiteralDfa2_0(active0, 0x30000000L, active1, 0L); + case 108: + return jjMoveStringLiteralDfa2_0(active0, 0x42080000L, active1, 0L); + case 109: + return jjMoveStringLiteralDfa2_0(active0, 0xc00000000L, active1, 0L); + case 110: + return jjMoveStringLiteralDfa2_0(active0, 0x7000000000L, active1, 0L); + case 111: + if ((active0 & 0x800000L) != 0L) + { + jjmatchedKind = 23; + jjmatchedPos = 1; + } + return jjMoveStringLiteralDfa2_0(active0, 0x1800008181302000L, active1, 0L); + case 114: + return jjMoveStringLiteralDfa2_0(active0, 0x700300000004000L, active1, 0L); + case 115: + return jjMoveStringLiteralDfa2_0(active0, 0x8000000000000000L, active1, 0L); + case 116: + return jjMoveStringLiteralDfa2_0(active0, 0x4002000000000000L, active1, 0L); + case 117: + return jjMoveStringLiteralDfa2_0(active0, 0x4440000000000L, active1, 0L); + case 119: + return jjMoveStringLiteralDfa2_0(active0, 0x8000000000000L, active1, 0L); + case 120: + return jjMoveStringLiteralDfa2_0(active0, 0x4000000L, active1, 0L); + case 121: + return jjMoveStringLiteralDfa2_0(active0, 0x10000000008000L, active1, 0L); + case 124: + if ((active1 & 0x80000000L) != 0L) + return jjStopAtPos(1, 95); + break; + default : + break; + } + return jjStartNfa_0(0, active0, active1); +} +private final int jjMoveStringLiteralDfa2_0(long old0, long active0, long old1, long active1) +{ + if (((active0 &= old0) | (active1 &= old1)) == 0L) + return jjStartNfa_0(0, old0, old1); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(1, active0, active1); + return 2; + } + switch(curChar) + { + case 61: + if ((active1 & 0x40000000000000L) != 0L) + return jjStopAtPos(2, 118); + else if ((active1 & 0x80000000000000L) != 0L) + return jjStopAtPos(2, 119); + break; + case 62: + if ((active1 & 0x200000000000L) != 0L) + { + jjmatchedKind = 109; + jjmatchedPos = 2; + } + return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x100000000000000L); + case 97: + return jjMoveStringLiteralDfa3_0(active0, 0x1020000000c0000L, active1, 0L); + case 98: + return jjMoveStringLiteralDfa3_0(active0, 0x400000000000L, active1, 0L); + case 99: + return jjMoveStringLiteralDfa3_0(active0, 0x80000000000L, active1, 0L); + case 101: + return jjMoveStringLiteralDfa3_0(active0, 0x4000L, active1, 0L); + case 102: + return jjMoveStringLiteralDfa3_0(active0, 0x400000L, active1, 0L); + case 105: + return jjMoveStringLiteralDfa3_0(active0, 0x2828100000000000L, active1, 0L); + case 108: + return jjMoveStringLiteralDfa3_0(active0, 0x1000040008000000L, active1, 0L); + case 110: + return jjMoveStringLiteralDfa3_0(active0, 0x10008030300000L, active1, 0L); + case 111: + return jjMoveStringLiteralDfa3_0(active0, 0x1200040002000L, active1, 0L); + case 112: + return jjMoveStringLiteralDfa3_0(active0, 0x4000c00000000L, active1, 0L); + case 114: + if ((active0 & 0x80000000L) != 0L) + return jjStartNfaWithStates_0(2, 31, 28); + return jjMoveStringLiteralDfa3_0(active0, 0x40c0000000000000L, active1, 0L); + case 115: + return jjMoveStringLiteralDfa3_0(active0, 0x8000001002011000L, active1, 0L); + case 116: + if ((active0 & 0x2000000000L) != 0L) + { + jjmatchedKind = 37; + jjmatchedPos = 2; + } + return jjMoveStringLiteralDfa3_0(active0, 0x814104028000L, active1, 0L); + case 117: + return jjMoveStringLiteralDfa3_0(active0, 0x200000001000000L, active1, 0L); + case 119: + if ((active0 & 0x20000000000L) != 0L) + return jjStartNfaWithStates_0(2, 41, 28); + break; + case 121: + if ((active0 & 0x400000000000000L) != 0L) + return jjStartNfaWithStates_0(2, 58, 28); + break; + default : + break; + } + return jjStartNfa_0(1, active0, active1); +} +private final int jjMoveStringLiteralDfa3_0(long old0, long active0, long old1, long active1) +{ + if (((active0 &= old0) | (active1 &= old1)) == 0L) + return jjStartNfa_0(1, old0, old1); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(2, active0, active1); + return 3; + } + switch(curChar) + { + case 61: + if ((active1 & 0x100000000000000L) != 0L) + return jjStopAtPos(3, 120); + break; + case 97: + return jjMoveStringLiteralDfa4_0(active0, 0x1000000070404000L, active1, 0L); + case 98: + return jjMoveStringLiteralDfa4_0(active0, 0x1000000L, active1, 0L); + case 99: + return jjMoveStringLiteralDfa4_0(active0, 0x10000000020000L, active1, 0L); + case 100: + if ((active0 & 0x800000000000000L) != 0L) + return jjStartNfaWithStates_0(3, 59, 28); + break; + case 101: + if ((active0 & 0x8000L) != 0L) + return jjStartNfaWithStates_0(3, 15, 28); + else if ((active0 & 0x10000L) != 0L) + return jjStartNfaWithStates_0(3, 16, 28); + else if ((active0 & 0x2000000L) != 0L) + return jjStartNfaWithStates_0(3, 25, 28); + else if ((active0 & 0x200000000000000L) != 0L) + return jjStartNfaWithStates_0(3, 57, 28); + return jjMoveStringLiteralDfa4_0(active0, 0x8004004004000000L, active1, 0L); + case 103: + if ((active0 & 0x8000000000L) != 0L) + return jjStartNfaWithStates_0(3, 39, 28); + break; + case 105: + return jjMoveStringLiteralDfa4_0(active0, 0x4000010000000000L, active1, 0L); + case 107: + return jjMoveStringLiteralDfa4_0(active0, 0x80000000000L, active1, 0L); + case 108: + if ((active0 & 0x40000000000L) != 0L) + return jjStartNfaWithStates_0(3, 42, 28); + return jjMoveStringLiteralDfa4_0(active0, 0x2000400400002000L, active1, 0L); + case 110: + return jjMoveStringLiteralDfa4_0(active0, 0x100000000000000L, active1, 0L); + case 111: + if ((active0 & 0x100000000L) != 0L) + return jjStartNfaWithStates_0(3, 32, 28); + return jjMoveStringLiteralDfa4_0(active0, 0xc0000800000000L, active1, 0L); + case 114: + if ((active0 & 0x40000L) != 0L) + return jjStartNfaWithStates_0(3, 18, 28); + return jjMoveStringLiteralDfa4_0(active0, 0x1000000000000L, active1, 0L); + case 115: + if ((active0 & 0x20000000000000L) != 0L) + return jjStartNfaWithStates_0(3, 53, 28); + return jjMoveStringLiteralDfa4_0(active0, 0x8180000L, active1, 0L); + case 116: + return jjMoveStringLiteralDfa4_0(active0, 0xa201000201000L, active1, 0L); + case 117: + return jjMoveStringLiteralDfa4_0(active0, 0x800000000000L, active1, 0L); + case 118: + return jjMoveStringLiteralDfa4_0(active0, 0x100000000000L, active1, 0L); + default : + break; + } + return jjStartNfa_0(2, active0, active1); +} +private final int jjMoveStringLiteralDfa4_0(long old0, long active0, long old1, long active1) +{ + if (((active0 &= old0) | (active1 &= old1)) == 0L) + return jjStartNfa_0(2, old0, old1); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(3, active0, 0L); + return 4; + } + switch(curChar) + { + case 97: + return jjMoveStringLiteralDfa5_0(active0, 0x181000000000L); + case 99: + return jjMoveStringLiteralDfa5_0(active0, 0x4008000000000000L); + case 101: + if ((active0 & 0x8000000L) != 0L) + return jjStartNfaWithStates_0(4, 27, 28); + else if ((active0 & 0x2000000000000000L) != 0L) + return jjStartNfaWithStates_0(4, 61, 28); + return jjMoveStringLiteralDfa5_0(active0, 0x200400002000L); + case 104: + if ((active0 & 0x20000L) != 0L) + return jjStartNfaWithStates_0(4, 17, 28); + return jjMoveStringLiteralDfa5_0(active0, 0x10000000000000L); + case 105: + return jjMoveStringLiteralDfa5_0(active0, 0x2400000200000L); + case 107: + if ((active0 & 0x4000L) != 0L) + return jjStartNfaWithStates_0(4, 14, 28); + break; + case 108: + if ((active0 & 0x10000000L) != 0L) + { + jjmatchedKind = 28; + jjmatchedPos = 4; + } + return jjMoveStringLiteralDfa5_0(active0, 0x21000000L); + case 110: + return jjMoveStringLiteralDfa5_0(active0, 0x4000000L); + case 114: + if ((active0 & 0x4000000000000L) != 0L) + return jjStartNfaWithStates_0(4, 50, 28); + return jjMoveStringLiteralDfa5_0(active0, 0x8000804800001000L); + case 115: + if ((active0 & 0x80000L) != 0L) + return jjStartNfaWithStates_0(4, 19, 28); + return jjMoveStringLiteralDfa5_0(active0, 0x100000000000000L); + case 116: + if ((active0 & 0x100000L) != 0L) + return jjStartNfaWithStates_0(4, 20, 28); + else if ((active0 & 0x40000000L) != 0L) + return jjStartNfaWithStates_0(4, 30, 28); + else if ((active0 & 0x1000000000000L) != 0L) + return jjStartNfaWithStates_0(4, 48, 28); + return jjMoveStringLiteralDfa5_0(active0, 0x1000000000000000L); + case 117: + return jjMoveStringLiteralDfa5_0(active0, 0x400000L); + case 118: + return jjMoveStringLiteralDfa5_0(active0, 0x10000000000L); + case 119: + if ((active0 & 0x40000000000000L) != 0L) + { + jjmatchedKind = 54; + jjmatchedPos = 4; + } + return jjMoveStringLiteralDfa5_0(active0, 0x80000000000000L); + default : + break; + } + return jjStartNfa_0(3, active0, 0L); +} +private final int jjMoveStringLiteralDfa5_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(3, old0, 0L); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(4, active0, 0L); + return 5; + } + switch(curChar) + { + case 97: + return jjMoveStringLiteralDfa6_0(active0, 0x3000L); + case 99: + if ((active0 & 0x400000000000L) != 0L) + return jjStartNfaWithStates_0(5, 46, 28); + else if ((active0 & 0x2000000000000L) != 0L) + return jjStartNfaWithStates_0(5, 49, 28); + return jjMoveStringLiteralDfa6_0(active0, 0x200000000000L); + case 100: + return jjMoveStringLiteralDfa6_0(active0, 0x4000000L); + case 101: + if ((active0 & 0x1000000L) != 0L) + return jjStartNfaWithStates_0(5, 24, 28); + else if ((active0 & 0x10000000000L) != 0L) + return jjStartNfaWithStates_0(5, 40, 28); + break; + case 102: + return jjMoveStringLiteralDfa6_0(active0, 0x4000000000L); + case 103: + return jjMoveStringLiteralDfa6_0(active0, 0x80000000000L); + case 104: + if ((active0 & 0x8000000000000L) != 0L) + return jjStartNfaWithStates_0(5, 51, 28); + break; + case 105: + return jjMoveStringLiteralDfa6_0(active0, 0x1100000000000000L); + case 108: + return jjMoveStringLiteralDfa6_0(active0, 0x20400000L); + case 109: + return jjMoveStringLiteralDfa6_0(active0, 0x400000000L); + case 110: + if ((active0 & 0x800000000000L) != 0L) + return jjStartNfaWithStates_0(5, 47, 28); + return jjMoveStringLiteralDfa6_0(active0, 0x1000200000L); + case 114: + return jjMoveStringLiteralDfa6_0(active0, 0x10000000000000L); + case 115: + if ((active0 & 0x80000000000000L) != 0L) + return jjStartNfaWithStates_0(5, 55, 28); + break; + case 116: + if ((active0 & 0x800000000L) != 0L) + return jjStartNfaWithStates_0(5, 35, 28); + else if ((active0 & 0x8000000000000000L) != 0L) + return jjStartNfaWithStates_0(5, 63, 28); + return jjMoveStringLiteralDfa6_0(active0, 0x4000100000000000L); + default : + break; + } + return jjStartNfa_0(4, active0, 0L); +} +private final int jjMoveStringLiteralDfa6_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(4, old0, 0L); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(5, active0, 0L); + return 6; + } + switch(curChar) + { + case 97: + return jjMoveStringLiteralDfa7_0(active0, 0x4000000000L); + case 99: + return jjMoveStringLiteralDfa7_0(active0, 0x1000001000L); + case 101: + if ((active0 & 0x80000000000L) != 0L) + return jjStartNfaWithStates_0(6, 43, 28); + else if ((active0 & 0x100000000000L) != 0L) + return jjStartNfaWithStates_0(6, 44, 28); + return jjMoveStringLiteralDfa7_0(active0, 0x100000400000000L); + case 102: + return jjMoveStringLiteralDfa7_0(active0, 0x4000000000000000L); + case 108: + return jjMoveStringLiteralDfa7_0(active0, 0x1000000000000000L); + case 110: + if ((active0 & 0x2000L) != 0L) + return jjStartNfaWithStates_0(6, 13, 28); + break; + case 111: + return jjMoveStringLiteralDfa7_0(active0, 0x10000000000000L); + case 115: + if ((active0 & 0x4000000L) != 0L) + return jjStartNfaWithStates_0(6, 26, 28); + break; + case 116: + if ((active0 & 0x400000L) != 0L) + return jjStartNfaWithStates_0(6, 22, 28); + return jjMoveStringLiteralDfa7_0(active0, 0x200000000000L); + case 117: + return jjMoveStringLiteralDfa7_0(active0, 0x200000L); + case 121: + if ((active0 & 0x20000000L) != 0L) + return jjStartNfaWithStates_0(6, 29, 28); + break; + default : + break; + } + return jjStartNfa_0(5, active0, 0L); +} +private final int jjMoveStringLiteralDfa7_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(5, old0, 0L); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(6, active0, 0L); + return 7; + } + switch(curChar) + { + case 99: + return jjMoveStringLiteralDfa8_0(active0, 0x4000000000L); + case 101: + if ((active0 & 0x200000L) != 0L) + return jjStartNfaWithStates_0(7, 21, 28); + else if ((active0 & 0x1000000000000000L) != 0L) + return jjStartNfaWithStates_0(7, 60, 28); + return jjMoveStringLiteralDfa8_0(active0, 0x201000000000L); + case 110: + return jjMoveStringLiteralDfa8_0(active0, 0x110000400000000L); + case 112: + if ((active0 & 0x4000000000000000L) != 0L) + return jjStartNfaWithStates_0(7, 62, 28); + break; + case 116: + if ((active0 & 0x1000L) != 0L) + return jjStartNfaWithStates_0(7, 12, 28); + break; + default : + break; + } + return jjStartNfa_0(6, active0, 0L); +} +private final int jjMoveStringLiteralDfa8_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(6, old0, 0L); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(7, active0, 0L); + return 8; + } + switch(curChar) + { + case 100: + if ((active0 & 0x200000000000L) != 0L) + return jjStartNfaWithStates_0(8, 45, 28); + break; + case 101: + if ((active0 & 0x4000000000L) != 0L) + return jjStartNfaWithStates_0(8, 38, 28); + break; + case 105: + return jjMoveStringLiteralDfa9_0(active0, 0x10000000000000L); + case 111: + return jjMoveStringLiteralDfa9_0(active0, 0x1000000000L); + case 116: + if ((active0 & 0x100000000000000L) != 0L) + return jjStartNfaWithStates_0(8, 56, 28); + return jjMoveStringLiteralDfa9_0(active0, 0x400000000L); + default : + break; + } + return jjStartNfa_0(7, active0, 0L); +} +private final int jjMoveStringLiteralDfa9_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(7, old0, 0L); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(8, active0, 0L); + return 9; + } + switch(curChar) + { + case 102: + if ((active0 & 0x1000000000L) != 0L) + return jjStartNfaWithStates_0(9, 36, 28); + break; + case 115: + if ((active0 & 0x400000000L) != 0L) + return jjStartNfaWithStates_0(9, 34, 28); + break; + case 122: + return jjMoveStringLiteralDfa10_0(active0, 0x10000000000000L); + default : + break; + } + return jjStartNfa_0(8, active0, 0L); +} +private final int jjMoveStringLiteralDfa10_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(8, old0, 0L); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(9, active0, 0L); + return 10; + } + switch(curChar) + { + case 101: + return jjMoveStringLiteralDfa11_0(active0, 0x10000000000000L); + default : + break; + } + return jjStartNfa_0(9, active0, 0L); +} +private final int jjMoveStringLiteralDfa11_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(9, old0, 0L); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(10, active0, 0L); + return 11; + } + switch(curChar) + { + case 100: + if ((active0 & 0x10000000000000L) != 0L) + return jjStartNfaWithStates_0(11, 52, 28); + break; + default : + break; + } + return jjStartNfa_0(10, active0, 0L); +} +private final void jjCheckNAdd(int state) +{ + if (jjrounds[state] != jjround) + { + jjstateSet[jjnewStateCnt++] = state; + jjrounds[state] = jjround; + } +} +private final void jjAddStates(int start, int end) +{ + do { + jjstateSet[jjnewStateCnt++] = jjnextStates[start]; + } while (start++ != end); +} +private final void jjCheckNAddTwoStates(int state1, int state2) +{ + jjCheckNAdd(state1); + jjCheckNAdd(state2); +} +private final void jjCheckNAddStates(int start, int end) +{ + do { + jjCheckNAdd(jjnextStates[start]); + } while (start++ != end); +} +private final void jjCheckNAddStates(int start) +{ + jjCheckNAdd(jjnextStates[start]); + jjCheckNAdd(jjnextStates[start + 1]); +} +static final long[] jjbitVec0 = { + 0xfffffffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL +}; +static final long[] jjbitVec2 = { + 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL +}; +static final long[] jjbitVec3 = { + 0x1ff00000fffffffeL, 0xffffffffffffc000L, 0xffffffffL, 0x600000000000000L +}; +static final long[] jjbitVec4 = { + 0x0L, 0x0L, 0x0L, 0xff7fffffff7fffffL +}; +static final long[] jjbitVec5 = { + 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL +}; +static final long[] jjbitVec6 = { + 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffL, 0x0L +}; +static final long[] jjbitVec7 = { + 0xffffffffffffffffL, 0xffffffffffffffffL, 0x0L, 0x0L +}; +static final long[] jjbitVec8 = { + 0x3fffffffffffL, 0x0L, 0x0L, 0x0L +}; +private final int jjMoveNfa_0(int startState, int curPos) +{ + int[] nextStates; + int startsAt = 0; + jjnewStateCnt = 57; + int i = 1; + jjstateSet[0] = startState; + int j, kind = 0x7fffffff; + for (;;) + { + if (++jjround == 0x7fffffff) + ReInitRounds(); + if (curChar < 64) + { + long l = 1L << curChar; + MatchLoop: do + { + switch(jjstateSet[--i]) + { + case 49: + if (curChar == 42) + jjstateSet[jjnewStateCnt++] = 54; + else if (curChar == 47) + { + if (kind > 6) + kind = 6; + jjCheckNAddStates(0, 2); + } + break; + case 0: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(3, 9); + else if (curChar == 47) + jjAddStates(10, 11); + else if (curChar == 36) + { + if (kind > 72) + kind = 72; + jjCheckNAdd(28); + } + else if (curChar == 34) + jjCheckNAddStates(12, 14); + else if (curChar == 39) + jjAddStates(15, 16); + else if (curChar == 46) + jjCheckNAdd(4); + if ((0x3fe000000000000L & l) != 0L) + { + if (kind > 64) + kind = 64; + jjCheckNAddTwoStates(1, 2); + } + else if (curChar == 48) + { + if (kind > 64) + kind = 64; + jjCheckNAddStates(17, 19); + } + break; + case 1: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 64) + kind = 64; + jjCheckNAddTwoStates(1, 2); + break; + case 3: + if (curChar == 46) + jjCheckNAdd(4); + break; + case 4: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 68) + kind = 68; + jjCheckNAddStates(20, 22); + break; + case 6: + if ((0x280000000000L & l) != 0L) + jjCheckNAdd(7); + break; + case 7: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 68) + kind = 68; + jjCheckNAddTwoStates(7, 8); + break; + case 9: + if (curChar == 39) + jjAddStates(15, 16); + break; + case 10: + if ((0xffffff7fffffdbffL & l) != 0L) + jjCheckNAdd(11); + break; + case 11: + if (curChar == 39 && kind > 70) + kind = 70; + break; + case 13: + if ((0x8400000000L & l) != 0L) + jjCheckNAdd(11); + break; + case 14: + if ((0xff000000000000L & l) != 0L) + jjCheckNAddTwoStates(15, 11); + break; + case 15: + if ((0xff000000000000L & l) != 0L) + jjCheckNAdd(11); + break; + case 16: + if ((0xf000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 17; + break; + case 17: + if ((0xff000000000000L & l) != 0L) + jjCheckNAdd(15); + break; + case 18: + if (curChar == 34) + jjCheckNAddStates(12, 14); + break; + case 19: + if ((0xfffffffbffffdbffL & l) != 0L) + jjCheckNAddStates(12, 14); + break; + case 21: + if ((0x8400000000L & l) != 0L) + jjCheckNAddStates(12, 14); + break; + case 22: + if (curChar == 34 && kind > 71) + kind = 71; + break; + case 23: + if ((0xff000000000000L & l) != 0L) + jjCheckNAddStates(23, 26); + break; + case 24: + if ((0xff000000000000L & l) != 0L) + jjCheckNAddStates(12, 14); + break; + case 25: + if ((0xf000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 26; + break; + case 26: + if ((0xff000000000000L & l) != 0L) + jjCheckNAdd(24); + break; + case 27: + if (curChar != 36) + break; + if (kind > 72) + kind = 72; + jjCheckNAdd(28); + break; + case 28: + if ((0x3ff001000000000L & l) == 0L) + break; + if (kind > 72) + kind = 72; + jjCheckNAdd(28); + break; + case 29: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(3, 9); + break; + case 30: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(30, 31); + break; + case 31: + if (curChar != 46) + break; + if (kind > 68) + kind = 68; + jjCheckNAddStates(27, 29); + break; + case 32: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 68) + kind = 68; + jjCheckNAddStates(27, 29); + break; + case 34: + if ((0x280000000000L & l) != 0L) + jjCheckNAdd(35); + break; + case 35: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 68) + kind = 68; + jjCheckNAddTwoStates(35, 8); + break; + case 36: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(36, 37); + break; + case 38: + if ((0x280000000000L & l) != 0L) + jjCheckNAdd(39); + break; + case 39: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 68) + kind = 68; + jjCheckNAddTwoStates(39, 8); + break; + case 40: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(30, 32); + break; + case 42: + if ((0x280000000000L & l) != 0L) + jjCheckNAdd(43); + break; + case 43: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(43, 8); + break; + case 44: + if (curChar != 48) + break; + if (kind > 64) + kind = 64; + jjCheckNAddStates(17, 19); + break; + case 46: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 64) + kind = 64; + jjCheckNAddTwoStates(46, 2); + break; + case 47: + if ((0xff000000000000L & l) == 0L) + break; + if (kind > 64) + kind = 64; + jjCheckNAddTwoStates(47, 2); + break; + case 48: + if (curChar == 47) + jjAddStates(10, 11); + break; + case 50: + if ((0xffffffffffffdbffL & l) == 0L) + break; + if (kind > 6) + kind = 6; + jjCheckNAddStates(0, 2); + break; + case 51: + if ((0x2400L & l) != 0L && kind > 6) + kind = 6; + break; + case 52: + if (curChar == 10 && kind > 6) + kind = 6; + break; + case 53: + if (curChar == 13) + jjstateSet[jjnewStateCnt++] = 52; + break; + case 54: + if (curChar == 42) + jjstateSet[jjnewStateCnt++] = 55; + break; + case 55: + if ((0xffff7fffffffffffL & l) != 0L && kind > 7) + kind = 7; + break; + case 56: + if (curChar == 42) + jjstateSet[jjnewStateCnt++] = 54; + break; + default : break; + } + } while(i != startsAt); + } + else if (curChar < 128) + { + long l = 1L << (curChar & 077); + MatchLoop: do + { + switch(jjstateSet[--i]) + { + case 0: + case 28: + if ((0x7fffffe87fffffeL & l) == 0L) + break; + if (kind > 72) + kind = 72; + jjCheckNAdd(28); + break; + case 2: + if ((0x100000001000L & l) != 0L && kind > 64) + kind = 64; + break; + case 5: + if ((0x2000000020L & l) != 0L) + jjAddStates(33, 34); + break; + case 8: + if ((0x5000000050L & l) != 0L && kind > 68) + kind = 68; + break; + case 10: + if ((0xffffffffefffffffL & l) != 0L) + jjCheckNAdd(11); + break; + case 12: + if (curChar == 92) + jjAddStates(35, 37); + break; + case 13: + if ((0x14404410000000L & l) != 0L) + jjCheckNAdd(11); + break; + case 19: + if ((0xffffffffefffffffL & l) != 0L) + jjCheckNAddStates(12, 14); + break; + case 20: + if (curChar == 92) + jjAddStates(38, 40); + break; + case 21: + if ((0x14404410000000L & l) != 0L) + jjCheckNAddStates(12, 14); + break; + case 33: + if ((0x2000000020L & l) != 0L) + jjAddStates(41, 42); + break; + case 37: + if ((0x2000000020L & l) != 0L) + jjAddStates(43, 44); + break; + case 41: + if ((0x2000000020L & l) != 0L) + jjAddStates(45, 46); + break; + case 45: + if ((0x100000001000000L & l) != 0L) + jjCheckNAdd(46); + break; + case 46: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 64) + kind = 64; + jjCheckNAddTwoStates(46, 2); + break; + case 50: + if (kind > 6) + kind = 6; + jjAddStates(0, 2); + break; + case 55: + if (kind > 7) + kind = 7; + break; + default : break; + } + } while(i != startsAt); + } + else + { + int hiByte = (int)(curChar >> 8); + int i1 = hiByte >> 6; + long l1 = 1L << (hiByte & 077); + int i2 = (curChar & 0xff) >> 6; + long l2 = 1L << (curChar & 077); + MatchLoop: do + { + switch(jjstateSet[--i]) + { + case 0: + case 28: + if (!jjCanMove_1(hiByte, i1, i2, l1, l2)) + break; + if (kind > 72) + kind = 72; + jjCheckNAdd(28); + break; + case 10: + if (jjCanMove_0(hiByte, i1, i2, l1, l2)) + jjstateSet[jjnewStateCnt++] = 11; + break; + case 19: + if (jjCanMove_0(hiByte, i1, i2, l1, l2)) + jjAddStates(12, 14); + break; + case 50: + if (!jjCanMove_0(hiByte, i1, i2, l1, l2)) + break; + if (kind > 6) + kind = 6; + jjAddStates(0, 2); + break; + case 55: + if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 7) + kind = 7; + break; + default : break; + } + } while(i != startsAt); + } + if (kind != 0x7fffffff) + { + jjmatchedKind = kind; + jjmatchedPos = curPos; + kind = 0x7fffffff; + } + ++curPos; + if ((i = jjnewStateCnt) == (startsAt = 57 - (jjnewStateCnt = startsAt))) + return curPos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return curPos; } + } +} +private final int jjMoveStringLiteralDfa0_2() +{ + switch(curChar) + { + case 42: + return jjMoveStringLiteralDfa1_2(0x400L); + default : + return 1; + } +} +private final int jjMoveStringLiteralDfa1_2(long active0) +{ + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + return 1; + } + switch(curChar) + { + case 47: + if ((active0 & 0x400L) != 0L) + return jjStopAtPos(1, 10); + break; + default : + return 2; + } + return 2; +} +private final int jjMoveStringLiteralDfa0_1() +{ + switch(curChar) + { + case 42: + return jjMoveStringLiteralDfa1_1(0x200L); + default : + return 1; + } +} +private final int jjMoveStringLiteralDfa1_1(long active0) +{ + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + return 1; + } + switch(curChar) + { + case 47: + if ((active0 & 0x200L) != 0L) + return jjStopAtPos(1, 9); + break; + default : + return 2; + } + return 2; +} +static final int[] jjnextStates = { + 50, 51, 53, 30, 31, 36, 37, 40, 41, 8, 49, 56, 19, 20, 22, 10, + 12, 45, 47, 2, 4, 5, 8, 19, 20, 24, 22, 32, 33, 8, 40, 41, + 8, 6, 7, 13, 14, 16, 21, 23, 25, 34, 35, 38, 39, 42, 43, +}; +private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2) +{ + switch(hiByte) + { + case 0: + return ((jjbitVec2[i2] & l2) != 0L); + default : + if ((jjbitVec0[i1] & l1) != 0L) + return true; + return false; + } +} +private static final boolean jjCanMove_1(int hiByte, int i1, int i2, long l1, long l2) +{ + switch(hiByte) + { + case 0: + return ((jjbitVec4[i2] & l2) != 0L); + case 48: + return ((jjbitVec5[i2] & l2) != 0L); + case 49: + return ((jjbitVec6[i2] & l2) != 0L); + case 51: + return ((jjbitVec7[i2] & l2) != 0L); + case 61: + return ((jjbitVec8[i2] & l2) != 0L); + default : + if ((jjbitVec3[i1] & l1) != 0L) + return true; + return false; + } +} +public static final String[] jjstrLiteralImages = { +"", null, null, null, null, null, null, null, null, null, null, null, +"\141\142\163\164\162\141\143\164", "\142\157\157\154\145\141\156", "\142\162\145\141\153", "\142\171\164\145", +"\143\141\163\145", "\143\141\164\143\150", "\143\150\141\162", "\143\154\141\163\163", +"\143\157\156\163\164", "\143\157\156\164\151\156\165\145", "\144\145\146\141\165\154\164", +"\144\157", "\144\157\165\142\154\145", "\145\154\163\145", +"\145\170\164\145\156\144\163", "\146\141\154\163\145", "\146\151\156\141\154", +"\146\151\156\141\154\154\171", "\146\154\157\141\164", "\146\157\162", "\147\157\164\157", "\151\146", +"\151\155\160\154\145\155\145\156\164\163", "\151\155\160\157\162\164", "\151\156\163\164\141\156\143\145\157\146", +"\151\156\164", "\151\156\164\145\162\146\141\143\145", "\154\157\156\147", +"\156\141\164\151\166\145", "\156\145\167", "\156\165\154\154", "\160\141\143\153\141\147\145", +"\160\162\151\166\141\164\145", "\160\162\157\164\145\143\164\145\144", "\160\165\142\154\151\143", +"\162\145\164\165\162\156", "\163\150\157\162\164", "\163\164\141\164\151\143", "\163\165\160\145\162", +"\163\167\151\164\143\150", "\163\171\156\143\150\162\157\156\151\172\145\144", "\164\150\151\163", +"\164\150\162\157\167", "\164\150\162\157\167\163", "\164\162\141\156\163\151\145\156\164", +"\164\162\165\145", "\164\162\171", "\166\157\151\144", "\166\157\154\141\164\151\154\145", +"\167\150\151\154\145", "\163\164\162\151\143\164\146\160", "\141\163\163\145\162\164", null, null, +null, null, null, null, null, null, null, null, null, "\50", "\51", "\173", "\175", +"\133", "\135", "\73", "\54", "\56", "\75", "\76", "\74", "\41", "\176", "\77", "\72", +"\75\75", "\74\75", "\76\75", "\41\75", "\174\174", "\46\46", "\53\53", "\55\55", "\53", +"\55", "\52", "\57", "\46", "\174", "\136", "\45", "\74\74", "\76\76", "\76\76\76", +"\53\75", "\55\75", "\52\75", "\57\75", "\46\75", "\174\75", "\136\75", "\45\75", +"\74\74\75", "\76\76\75", "\76\76\76\75", }; +public static final String[] lexStateNames = { + "DEFAULT", + "IN_FORMAL_COMMENT", + "IN_MULTI_LINE_COMMENT", +}; +public static final int[] jjnewLexState = { + -1, -1, -1, -1, -1, -1, -1, 1, 2, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, +}; +static final long[] jjtoToken = { + 0xfffffffffffff001L, 0x1fffffffffff9d1L, +}; +static final long[] jjtoSkip = { + 0x67eL, 0x0L, +}; +static final long[] jjtoSpecial = { + 0x67eL, 0x0L, +}; +static final long[] jjtoMore = { + 0x980L, 0x0L, +}; +private JavaCharStream input_stream; +private final int[] jjrounds = new int[57]; +private final int[] jjstateSet = new int[114]; +StringBuffer image; +int jjimageLen; +int lengthOfMatch; +protected char curChar; +public JavaParserTokenManager(JavaCharStream stream) +{ + if (JavaCharStream.staticFlag) + throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer."); + input_stream = stream; +} +public JavaParserTokenManager(JavaCharStream stream, int lexState) +{ + this(stream); + SwitchTo(lexState); +} +public void ReInit(JavaCharStream stream) +{ + jjmatchedPos = jjnewStateCnt = 0; + curLexState = defaultLexState; + input_stream = stream; + ReInitRounds(); +} +private final void ReInitRounds() +{ + int i; + jjround = 0x80000001; + for (i = 57; i-- > 0;) + jjrounds[i] = 0x80000000; +} +public void ReInit(JavaCharStream stream, int lexState) +{ + ReInit(stream); + SwitchTo(lexState); +} +public void SwitchTo(int lexState) +{ + if (lexState >= 3 || lexState < 0) + throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); + else + curLexState = lexState; +} + +private final Token jjFillToken() +{ + Token t = Token.newToken(jjmatchedKind); + t.kind = jjmatchedKind; + String im = jjstrLiteralImages[jjmatchedKind]; + t.image = (im == null) ? input_stream.GetImage() : im; + t.beginLine = input_stream.getBeginLine(); + t.beginColumn = input_stream.getBeginColumn(); + t.endLine = input_stream.getEndLine(); + t.endColumn = input_stream.getEndColumn(); + return t; +} + +int curLexState = 0; +int defaultLexState = 0; +int jjnewStateCnt; +int jjround; +int jjmatchedPos; +int jjmatchedKind; + +public final Token getNextToken() +{ + int kind; + Token specialToken = null; + Token matchedToken; + int curPos = 0; + + EOFLoop : + for (;;) + { + try + { + curChar = input_stream.BeginToken(); + } + catch(java.io.IOException e) + { + jjmatchedKind = 0; + matchedToken = jjFillToken(); + matchedToken.specialToken = specialToken; + return matchedToken; + } + image = null; + jjimageLen = 0; + + for (;;) + { + switch(curLexState) + { + case 0: + jjmatchedKind = 0x7fffffff; + jjmatchedPos = 0; + curPos = jjMoveStringLiteralDfa0_0(); + break; + case 1: + jjmatchedKind = 0x7fffffff; + jjmatchedPos = 0; + curPos = jjMoveStringLiteralDfa0_1(); + if (jjmatchedPos == 0 && jjmatchedKind > 11) + { + jjmatchedKind = 11; + } + break; + case 2: + jjmatchedKind = 0x7fffffff; + jjmatchedPos = 0; + curPos = jjMoveStringLiteralDfa0_2(); + if (jjmatchedPos == 0 && jjmatchedKind > 11) + { + jjmatchedKind = 11; + } + break; + } + if (jjmatchedKind != 0x7fffffff) + { + if (jjmatchedPos + 1 < curPos) + input_stream.backup(curPos - jjmatchedPos - 1); + if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) + { + matchedToken = jjFillToken(); + matchedToken.specialToken = specialToken; + if (jjnewLexState[jjmatchedKind] != -1) + curLexState = jjnewLexState[jjmatchedKind]; + return matchedToken; + } + else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) + { + if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) + { + matchedToken = jjFillToken(); + if (specialToken == null) + specialToken = matchedToken; + else + { + matchedToken.specialToken = specialToken; + specialToken = (specialToken.next = matchedToken); + } + SkipLexicalActions(matchedToken); + } + else + SkipLexicalActions(null); + if (jjnewLexState[jjmatchedKind] != -1) + curLexState = jjnewLexState[jjmatchedKind]; + continue EOFLoop; + } + MoreLexicalActions(); + if (jjnewLexState[jjmatchedKind] != -1) + curLexState = jjnewLexState[jjmatchedKind]; + curPos = 0; + jjmatchedKind = 0x7fffffff; + try { + curChar = input_stream.readChar(); + continue; + } + catch (java.io.IOException e1) { } + } + int error_line = input_stream.getEndLine(); + int error_column = input_stream.getEndColumn(); + String error_after = null; + boolean EOFSeen = false; + try { input_stream.readChar(); input_stream.backup(1); } + catch (java.io.IOException e1) { + EOFSeen = true; + error_after = curPos <= 1 ? "" : input_stream.GetImage(); + if (curChar == '\n' || curChar == '\r') { + error_line++; + error_column = 0; + } + else + error_column++; + } + if (!EOFSeen) { + input_stream.backup(1); + error_after = curPos <= 1 ? "" : input_stream.GetImage(); + } + throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR); + } + } +} + +final void SkipLexicalActions(Token matchedToken) +{ + switch(jjmatchedKind) + { + default : + break; + } +} +final void MoreLexicalActions() +{ + jjimageLen += (lengthOfMatch = jjmatchedPos + 1); + switch(jjmatchedKind) + { + case 7 : + if (image == null) + image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen))); + else + image.append(input_stream.GetSuffix(jjimageLen)); + jjimageLen = 0; + input_stream.backup(1); + break; + default : + break; + } +} +} diff --git a/pmd/src/com/infoether/pmd/ast/JavaParserTreeConstants.java b/pmd/src/com/infoether/pmd/ast/JavaParserTreeConstants.java new file mode 100644 index 0000000000..cd06c0aedb --- /dev/null +++ b/pmd/src/com/infoether/pmd/ast/JavaParserTreeConstants.java @@ -0,0 +1,181 @@ +/* Generated By:JJTree: Do not edit this line. C:/data/pmd/pmd/src/com/infoether/pmd/ast\JavaParserTreeConstants.java */ + +package com.infoether.pmd.ast; + +public interface JavaParserTreeConstants +{ + public int JJTCOMPILATIONUNIT = 0; + public int JJTPACKAGEDECLARATION = 1; + public int JJTIMPORTDECLARATION = 2; + public int JJTTYPEDECLARATION = 3; + public int JJTCLASSDECLARATION = 4; + public int JJTUNMODIFIEDCLASSDECLARATION = 5; + public int JJTCLASSBODY = 6; + public int JJTNESTEDCLASSDECLARATION = 7; + public int JJTCLASSBODYDECLARATION = 8; + public int JJTMETHODDECLARATIONLOOKAHEAD = 9; + public int JJTINTERFACEDECLARATION = 10; + public int JJTNESTEDINTERFACEDECLARATION = 11; + public int JJTUNMODIFIEDINTERFACEDECLARATION = 12; + public int JJTINTERFACEMEMBERDECLARATION = 13; + public int JJTFIELDDECLARATION = 14; + public int JJTVARIABLEDECLARATOR = 15; + public int JJTVARIABLEDECLARATORID = 16; + public int JJTVARIABLEINITIALIZER = 17; + public int JJTARRAYINITIALIZER = 18; + public int JJTMETHODDECLARATION = 19; + public int JJTMETHODDECLARATOR = 20; + public int JJTFORMALPARAMETERS = 21; + public int JJTFORMALPARAMETER = 22; + public int JJTCONSTRUCTORDECLARATION = 23; + public int JJTEXPLICITCONSTRUCTORINVOCATION = 24; + public int JJTINITIALIZER = 25; + public int JJTTYPE = 26; + public int JJTPRIMITIVETYPE = 27; + public int JJTRESULTTYPE = 28; + public int JJTNAME = 29; + public int JJTNAMELIST = 30; + public int JJTEXPRESSION = 31; + public int JJTASSIGNMENTOPERATOR = 32; + public int JJTCONDITIONALEXPRESSION = 33; + public int JJTCONDITIONALOREXPRESSION = 34; + public int JJTCONDITIONALANDEXPRESSION = 35; + public int JJTINCLUSIVEOREXPRESSION = 36; + public int JJTEXCLUSIVEOREXPRESSION = 37; + public int JJTANDEXPRESSION = 38; + public int JJTEQUALITYEXPRESSION = 39; + public int JJTINSTANCEOFEXPRESSION = 40; + public int JJTRELATIONALEXPRESSION = 41; + public int JJTSHIFTEXPRESSION = 42; + public int JJTADDITIVEEXPRESSION = 43; + public int JJTMULTIPLICATIVEEXPRESSION = 44; + public int JJTUNARYEXPRESSION = 45; + public int JJTPREINCREMENTEXPRESSION = 46; + public int JJTPREDECREMENTEXPRESSION = 47; + public int JJTUNARYEXPRESSIONNOTPLUSMINUS = 48; + public int JJTCASTLOOKAHEAD = 49; + public int JJTPOSTFIXEXPRESSION = 50; + public int JJTCASTEXPRESSION = 51; + public int JJTPRIMARYEXPRESSION = 52; + public int JJTPRIMARYPREFIX = 53; + public int JJTPRIMARYSUFFIX = 54; + public int JJTLITERAL = 55; + public int JJTBOOLEANLITERAL = 56; + public int JJTNULLLITERAL = 57; + public int JJTARGUMENTS = 58; + public int JJTARGUMENTLIST = 59; + public int JJTALLOCATIONEXPRESSION = 60; + public int JJTARRAYDIMSANDINITS = 61; + public int JJTSTATEMENT = 62; + public int JJTLABELEDSTATEMENT = 63; + public int JJTBLOCK = 64; + public int JJTBLOCKSTATEMENT = 65; + public int JJTLOCALVARIABLEDECLARATION = 66; + public int JJTEMPTYSTATEMENT = 67; + public int JJTSTATEMENTEXPRESSION = 68; + public int JJTSWITCHSTATEMENT = 69; + public int JJTSWITCHLABEL = 70; + public int JJTIFSTATEMENT = 71; + public int JJTWHILESTATEMENT = 72; + public int JJTDOSTATEMENT = 73; + public int JJTFORSTATEMENT = 74; + public int JJTFORINIT = 75; + public int JJTSTATEMENTEXPRESSIONLIST = 76; + public int JJTFORUPDATE = 77; + public int JJTBREAKSTATEMENT = 78; + public int JJTCONTINUESTATEMENT = 79; + public int JJTRETURNSTATEMENT = 80; + public int JJTTHROWSTATEMENT = 81; + public int JJTSYNCHRONIZEDSTATEMENT = 82; + public int JJTTRYSTATEMENT = 83; + public int JJTASSERTSTATEMENT = 84; + + + public String[] jjtNodeName = { + "CompilationUnit", + "PackageDeclaration", + "ImportDeclaration", + "TypeDeclaration", + "ClassDeclaration", + "UnmodifiedClassDeclaration", + "ClassBody", + "NestedClassDeclaration", + "ClassBodyDeclaration", + "MethodDeclarationLookahead", + "InterfaceDeclaration", + "NestedInterfaceDeclaration", + "UnmodifiedInterfaceDeclaration", + "InterfaceMemberDeclaration", + "FieldDeclaration", + "VariableDeclarator", + "VariableDeclaratorId", + "VariableInitializer", + "ArrayInitializer", + "MethodDeclaration", + "MethodDeclarator", + "FormalParameters", + "FormalParameter", + "ConstructorDeclaration", + "ExplicitConstructorInvocation", + "Initializer", + "Type", + "PrimitiveType", + "ResultType", + "Name", + "NameList", + "Expression", + "AssignmentOperator", + "ConditionalExpression", + "ConditionalOrExpression", + "ConditionalAndExpression", + "InclusiveOrExpression", + "ExclusiveOrExpression", + "AndExpression", + "EqualityExpression", + "InstanceOfExpression", + "RelationalExpression", + "ShiftExpression", + "AdditiveExpression", + "MultiplicativeExpression", + "UnaryExpression", + "PreIncrementExpression", + "PreDecrementExpression", + "UnaryExpressionNotPlusMinus", + "CastLookahead", + "PostfixExpression", + "CastExpression", + "PrimaryExpression", + "PrimaryPrefix", + "PrimarySuffix", + "Literal", + "BooleanLiteral", + "NullLiteral", + "Arguments", + "ArgumentList", + "AllocationExpression", + "ArrayDimsAndInits", + "Statement", + "LabeledStatement", + "Block", + "BlockStatement", + "LocalVariableDeclaration", + "EmptyStatement", + "StatementExpression", + "SwitchStatement", + "SwitchLabel", + "IfStatement", + "WhileStatement", + "DoStatement", + "ForStatement", + "ForInit", + "StatementExpressionList", + "ForUpdate", + "BreakStatement", + "ContinueStatement", + "ReturnStatement", + "ThrowStatement", + "SynchronizedStatement", + "TryStatement", + "AssertStatement", + }; +} diff --git a/pmd/src/com/infoether/pmd/ast/JavaParserVisitor.java b/pmd/src/com/infoether/pmd/ast/JavaParserVisitor.java new file mode 100644 index 0000000000..f9b1037f13 --- /dev/null +++ b/pmd/src/com/infoether/pmd/ast/JavaParserVisitor.java @@ -0,0 +1,93 @@ +/* Generated By:JJTree: Do not edit this line. C:/data/pmd/pmd/src/com/infoether/pmd/ast\JavaParserVisitor.java */ + +package com.infoether.pmd.ast; + +public interface JavaParserVisitor +{ + public Object visit(SimpleNode node, Object data); + public Object visit(ASTCompilationUnit node, Object data); + public Object visit(ASTPackageDeclaration node, Object data); + public Object visit(ASTImportDeclaration node, Object data); + public Object visit(ASTTypeDeclaration node, Object data); + public Object visit(ASTClassDeclaration node, Object data); + public Object visit(ASTUnmodifiedClassDeclaration node, Object data); + public Object visit(ASTClassBody node, Object data); + public Object visit(ASTNestedClassDeclaration node, Object data); + public Object visit(ASTClassBodyDeclaration node, Object data); + public Object visit(ASTMethodDeclarationLookahead node, Object data); + public Object visit(ASTInterfaceDeclaration node, Object data); + public Object visit(ASTNestedInterfaceDeclaration node, Object data); + public Object visit(ASTUnmodifiedInterfaceDeclaration node, Object data); + public Object visit(ASTInterfaceMemberDeclaration node, Object data); + public Object visit(ASTFieldDeclaration node, Object data); + public Object visit(ASTVariableDeclarator node, Object data); + public Object visit(ASTVariableDeclaratorId node, Object data); + public Object visit(ASTVariableInitializer node, Object data); + public Object visit(ASTArrayInitializer node, Object data); + public Object visit(ASTMethodDeclaration node, Object data); + public Object visit(ASTMethodDeclarator node, Object data); + public Object visit(ASTFormalParameters node, Object data); + public Object visit(ASTFormalParameter node, Object data); + public Object visit(ASTConstructorDeclaration node, Object data); + public Object visit(ASTExplicitConstructorInvocation node, Object data); + public Object visit(ASTInitializer node, Object data); + public Object visit(ASTType node, Object data); + public Object visit(ASTPrimitiveType node, Object data); + public Object visit(ASTResultType node, Object data); + public Object visit(ASTName node, Object data); + public Object visit(ASTNameList node, Object data); + public Object visit(ASTExpression node, Object data); + public Object visit(ASTAssignmentOperator node, Object data); + public Object visit(ASTConditionalExpression node, Object data); + public Object visit(ASTConditionalOrExpression node, Object data); + public Object visit(ASTConditionalAndExpression node, Object data); + public Object visit(ASTInclusiveOrExpression node, Object data); + public Object visit(ASTExclusiveOrExpression node, Object data); + public Object visit(ASTAndExpression node, Object data); + public Object visit(ASTEqualityExpression node, Object data); + public Object visit(ASTInstanceOfExpression node, Object data); + public Object visit(ASTRelationalExpression node, Object data); + public Object visit(ASTShiftExpression node, Object data); + public Object visit(ASTAdditiveExpression node, Object data); + public Object visit(ASTMultiplicativeExpression node, Object data); + public Object visit(ASTUnaryExpression node, Object data); + public Object visit(ASTPreIncrementExpression node, Object data); + public Object visit(ASTPreDecrementExpression node, Object data); + public Object visit(ASTUnaryExpressionNotPlusMinus node, Object data); + public Object visit(ASTCastLookahead node, Object data); + public Object visit(ASTPostfixExpression node, Object data); + public Object visit(ASTCastExpression node, Object data); + public Object visit(ASTPrimaryExpression node, Object data); + public Object visit(ASTPrimaryPrefix node, Object data); + public Object visit(ASTPrimarySuffix node, Object data); + public Object visit(ASTLiteral node, Object data); + public Object visit(ASTBooleanLiteral node, Object data); + public Object visit(ASTNullLiteral node, Object data); + public Object visit(ASTArguments node, Object data); + public Object visit(ASTArgumentList node, Object data); + public Object visit(ASTAllocationExpression node, Object data); + public Object visit(ASTArrayDimsAndInits node, Object data); + public Object visit(ASTStatement node, Object data); + public Object visit(ASTLabeledStatement node, Object data); + public Object visit(ASTBlock node, Object data); + public Object visit(ASTBlockStatement node, Object data); + public Object visit(ASTLocalVariableDeclaration node, Object data); + public Object visit(ASTEmptyStatement node, Object data); + public Object visit(ASTStatementExpression node, Object data); + public Object visit(ASTSwitchStatement node, Object data); + public Object visit(ASTSwitchLabel node, Object data); + public Object visit(ASTIfStatement node, Object data); + public Object visit(ASTWhileStatement node, Object data); + public Object visit(ASTDoStatement node, Object data); + public Object visit(ASTForStatement node, Object data); + public Object visit(ASTForInit node, Object data); + public Object visit(ASTStatementExpressionList node, Object data); + public Object visit(ASTForUpdate node, Object data); + public Object visit(ASTBreakStatement node, Object data); + public Object visit(ASTContinueStatement node, Object data); + public Object visit(ASTReturnStatement node, Object data); + public Object visit(ASTThrowStatement node, Object data); + public Object visit(ASTSynchronizedStatement node, Object data); + public Object visit(ASTTryStatement node, Object data); + public Object visit(ASTAssertStatement node, Object data); +} diff --git a/pmd/src/com/infoether/pmd/ast/JavaParserVisitorAdapter.java b/pmd/src/com/infoether/pmd/ast/JavaParserVisitorAdapter.java new file mode 100644 index 0000000000..8df7c5d239 --- /dev/null +++ b/pmd/src/com/infoether/pmd/ast/JavaParserVisitorAdapter.java @@ -0,0 +1,352 @@ +/* + * User: tom + * Date: Jun 13, 2002 + * Time: 4:57:15 PM + */ +package com.infoether.pmd.ast; + +public class JavaParserVisitorAdapter implements JavaParserVisitor { + public Object visit(SimpleNode node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTCompilationUnit node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTAssertStatement node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTPackageDeclaration node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTImportDeclaration node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTTypeDeclaration node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTClassDeclaration node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTUnmodifiedClassDeclaration node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTClassBody node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTNestedClassDeclaration node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTClassBodyDeclaration node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTMethodDeclarationLookahead node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTInterfaceDeclaration node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTNestedInterfaceDeclaration node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTUnmodifiedInterfaceDeclaration node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTInterfaceMemberDeclaration node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTFieldDeclaration node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTVariableDeclarator node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTVariableDeclaratorId node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTVariableInitializer node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTArrayInitializer node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTMethodDeclaration node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTMethodDeclarator node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTFormalParameters node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTFormalParameter node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTConstructorDeclaration node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTExplicitConstructorInvocation node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTInitializer node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTType node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTPrimitiveType node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTResultType node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTName node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTNameList node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTAssignmentOperator node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTConditionalExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTConditionalOrExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTConditionalAndExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTInclusiveOrExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTExclusiveOrExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTAndExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTEqualityExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTInstanceOfExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTRelationalExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTShiftExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTAdditiveExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTMultiplicativeExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTUnaryExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTPreIncrementExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTPreDecrementExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTUnaryExpressionNotPlusMinus node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTCastLookahead node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTPostfixExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTCastExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTPrimaryExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTPrimaryPrefix node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTPrimarySuffix node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTLiteral node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTBooleanLiteral node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTNullLiteral node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTArguments node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTArgumentList node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTAllocationExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTArrayDimsAndInits node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTStatement node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTLabeledStatement node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTBlock node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTBlockStatement node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTLocalVariableDeclaration node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTEmptyStatement node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTStatementExpression node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTSwitchStatement node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTSwitchLabel node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTIfStatement node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTWhileStatement node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTDoStatement node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTForStatement node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTForInit node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTStatementExpressionList node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTForUpdate node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTBreakStatement node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTContinueStatement node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTReturnStatement node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTThrowStatement node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTSynchronizedStatement node, Object data) { + node.childrenAccept(this, data);return null; + } + + public Object visit(ASTTryStatement node, Object data) { + node.childrenAccept(this, data);return null; + } +} diff --git a/pmd/src/com/infoether/pmd/ast/Node.java b/pmd/src/com/infoether/pmd/ast/Node.java new file mode 100644 index 0000000000..b51986caaa --- /dev/null +++ b/pmd/src/com/infoether/pmd/ast/Node.java @@ -0,0 +1,37 @@ +/* Generated By:JJTree: Do not edit this line. Node.java */ + +package com.infoether.pmd.ast; + +/* All AST nodes must implement this interface. It provides basic + machinery for constructing the parent and child relationships + between nodes. */ + +public interface Node { + + /** This method is called after the node has been made the current + node. It indicates that child nodes can now be added to it. */ + public void jjtOpen(); + + /** This method is called after all the child nodes have been + added. */ + public void jjtClose(); + + /** This pair of methods are used to inform the node of its + parent. */ + public void jjtSetParent(Node n); + public Node jjtGetParent(); + + /** This method tells the node to add its argument to the node's + list of children. */ + public void jjtAddChild(Node n, int i); + + /** This method returns a child node. The children are numbered + from zero, left to right. */ + public Node jjtGetChild(int i); + + /** Return the number of children the node has. */ + public int jjtGetNumChildren(); + + /** Accept the visitor. **/ + public Object jjtAccept(JavaParserVisitor visitor, Object data); +} diff --git a/pmd/src/com/infoether/pmd/ast/ParseException.java b/pmd/src/com/infoether/pmd/ast/ParseException.java new file mode 100644 index 0000000000..6e3e8c3eb4 --- /dev/null +++ b/pmd/src/com/infoether/pmd/ast/ParseException.java @@ -0,0 +1,192 @@ +/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 2.1 */ +package com.infoether.pmd.ast; + +/** + * This exception is thrown when parse errors are encountered. + * You can explicitly create objects of this exception type by + * calling the method generateParseException in the generated + * parser. + * + * You can modify this class to customize your error reporting + * mechanisms so long as you retain the public fields. + */ +public class ParseException extends Exception { + + /** + * This constructor is used by the method "generateParseException" + * in the generated parser. Calling this constructor generates + * a new object of this type with the fields "currentToken", + * "expectedTokenSequences", and "tokenImage" set. The boolean + * flag "specialConstructor" is also set to true to indicate that + * this constructor was used to create this object. + * This constructor calls its super class with the empty string + * to force the "toString" method of parent class "Throwable" to + * print the error message in the form: + * ParseException: + */ + public ParseException(Token currentTokenVal, + int[][] expectedTokenSequencesVal, + String[] tokenImageVal + ) + { + super(""); + specialConstructor = true; + currentToken = currentTokenVal; + expectedTokenSequences = expectedTokenSequencesVal; + tokenImage = tokenImageVal; + } + + /** + * The following constructors are for use by you for whatever + * purpose you can think of. Constructing the exception in this + * manner makes the exception behave in the normal way - i.e., as + * documented in the class "Throwable". The fields "errorToken", + * "expectedTokenSequences", and "tokenImage" do not contain + * relevant information. The JavaCC generated code does not use + * these constructors. + */ + + public ParseException() { + super(); + specialConstructor = false; + } + + public ParseException(String message) { + super(message); + specialConstructor = false; + } + + /** + * This variable determines which constructor was used to create + * this object and thereby affects the semantics of the + * "getMessage" method (see below). + */ + protected boolean specialConstructor; + + /** + * This is the last token that has been consumed successfully. If + * this object has been created due to a parse error, the token + * followng this token will (therefore) be the first error token. + */ + public Token currentToken; + + /** + * Each entry in this array is an array of integers. Each array + * of integers represents a sequence of tokens (by their ordinal + * values) that is expected at this point of the parse. + */ + public int[][] expectedTokenSequences; + + /** + * This is a reference to the "tokenImage" array of the generated + * parser within which the parse error occurred. This array is + * defined in the generated ...Constants interface. + */ + public String[] tokenImage; + + /** + * This method has the standard behavior when this object has been + * created using the standard constructors. Otherwise, it uses + * "currentToken" and "expectedTokenSequences" to generate a parse + * error message and returns it. If this object has been created + * due to a parse error, and you do not catch it (it gets thrown + * from the parser), then this method is called during the printing + * of the final stack trace, and hence the correct error message + * gets displayed. + */ + public String getMessage() { + if (!specialConstructor) { + return super.getMessage(); + } + String expected = ""; + int maxSize = 0; + for (int i = 0; i < expectedTokenSequences.length; i++) { + if (maxSize < expectedTokenSequences[i].length) { + maxSize = expectedTokenSequences[i].length; + } + for (int j = 0; j < expectedTokenSequences[i].length; j++) { + expected += tokenImage[expectedTokenSequences[i][j]] + " "; + } + if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) { + expected += "..."; + } + expected += eol + " "; + } + String retval = "Encountered \""; + Token tok = currentToken.next; + for (int i = 0; i < maxSize; i++) { + if (i != 0) retval += " "; + if (tok.kind == 0) { + retval += tokenImage[0]; + break; + } + retval += add_escapes(tok.image); + tok = tok.next; + } + retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn; + retval += "." + eol; + if (expectedTokenSequences.length == 1) { + retval += "Was expecting:" + eol + " "; + } else { + retval += "Was expecting one of:" + eol + " "; + } + retval += expected; + return retval; + } + + /** + * The end of line string for this machine. + */ + protected String eol = System.getProperty("line.separator", "\n"); + + /** + * Used to convert raw characters to their escaped version + * when these raw version cannot be used as part of an ASCII + * string literal. + */ + protected String add_escapes(String str) { + StringBuffer retval = new StringBuffer(); + char ch; + for (int i = 0; i < str.length(); i++) { + switch (str.charAt(i)) + { + case 0 : + continue; + case '\b': + retval.append("\\b"); + continue; + case '\t': + retval.append("\\t"); + continue; + case '\n': + retval.append("\\n"); + continue; + case '\f': + retval.append("\\f"); + continue; + case '\r': + retval.append("\\r"); + continue; + case '\"': + retval.append("\\\""); + continue; + case '\'': + retval.append("\\\'"); + continue; + case '\\': + retval.append("\\\\"); + continue; + default: + if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) { + String s = "0000" + Integer.toString(ch, 16); + retval.append("\\u" + s.substring(s.length() - 4, s.length())); + } else { + retval.append(ch); + } + continue; + } + } + return retval.toString(); + } + +} diff --git a/pmd/src/com/infoether/pmd/ast/SimpleNode.java b/pmd/src/com/infoether/pmd/ast/SimpleNode.java new file mode 100644 index 0000000000..a342783da9 --- /dev/null +++ b/pmd/src/com/infoether/pmd/ast/SimpleNode.java @@ -0,0 +1,96 @@ +/* Generated By:JJTree: Do not edit this line. SimpleNode.java */ +package com.infoether.pmd.ast; + +public class SimpleNode implements Node { + protected Node parent; + protected Node[] children; + protected int id; + protected JavaParser parser; + + public SimpleNode(int i) { + id = i; + } + + public SimpleNode(JavaParser p, int i) { + this(i); + parser = p; + } + + public void jjtOpen() {} + + // NEW STUFF + private String image; + public String getImage() { return image; } + public void setImage(String image) { this.image = image;} + + private int beginLine; + public void jjtClose() { + beginLine = parser.token.beginLine; + } + public int getBeginLine() { + return beginLine; + } + // NEW STUFF + + public void jjtSetParent(Node n) { parent = n; } + public Node jjtGetParent() { return parent; } + + public void jjtAddChild(Node n, int i) { + if (children == null) { + children = new Node[i + 1]; + } else if (i >= children.length) { + Node c[] = new Node[i + 1]; + System.arraycopy(children, 0, c, 0, children.length); + children = c; + } + children[i] = n; + } + + public Node jjtGetChild(int i) { + return children[i]; + } + + public int jjtGetNumChildren() { + return (children == null) ? 0 : children.length; + } + + /** Accept the visitor. **/ + public Object jjtAccept(JavaParserVisitor visitor, Object data) { + return visitor.visit(this, data); + } + + /** Accept the visitor. **/ + public Object childrenAccept(JavaParserVisitor visitor, Object data) { + if (children != null) { + for (int i = 0; i < children.length; ++i) { + children[i].jjtAccept(visitor, data); + } + } + return data; + } + + /* You can override these two methods in subclasses of SimpleNode to + customize the way the node appears when the tree is dumped. If + your output uses more than one line you should override + toString(String), otherwise overriding toString() is probably all + you need to do. */ + + public String toString() { return JavaParserTreeConstants.jjtNodeName[id]; } + public String toString(String prefix) { return prefix + toString(); } + + /* Override this method if you want to customize how the node dumps + out its children. */ + + public void dump(String prefix) { + System.out.println(toString(prefix)); + if (children != null) { + for (int i = 0; i < children.length; ++i) { + SimpleNode n = (SimpleNode)children[i]; + if (n != null) { + n.dump(prefix + " "); + } + } + } + } +} + diff --git a/pmd/src/com/infoether/pmd/ast/Test.java b/pmd/src/com/infoether/pmd/ast/Test.java new file mode 100644 index 0000000000..448f48f428 --- /dev/null +++ b/pmd/src/com/infoether/pmd/ast/Test.java @@ -0,0 +1,106 @@ +package com.infoether.pmd.ast; +import java.io.*; + +public class Test implements JavaParserVisitor +{ + public static void main(String[] args) { + try { + FileReader fr = new FileReader(new File("c:\\data\\pmd\\pmd\\test-data\\ContainsSystemGetProps.java")); + JavaParser parser = new JavaParser(fr); + Test test = new Test(); + ASTCompilationUnit c = parser.CompilationUnit(); + c.dump(""); + c.childrenAccept(test, null); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public Object visit(ASTAssertStatement node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTName node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTLocalVariableDeclaration node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTPrimitiveType node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTImportDeclaration node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTLiteral node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(SimpleNode node, Object data) {node.childrenAccept(this, data);return null;} + public Object visit(ASTCompilationUnit node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTPackageDeclaration node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTTypeDeclaration node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTClassDeclaration node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTUnmodifiedClassDeclaration node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTClassBody node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTNestedClassDeclaration node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTClassBodyDeclaration node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTMethodDeclarationLookahead node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTInterfaceDeclaration node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTNestedInterfaceDeclaration node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTUnmodifiedInterfaceDeclaration node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTInterfaceMemberDeclaration node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTFieldDeclaration node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTVariableDeclarator node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTVariableDeclaratorId node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTVariableInitializer node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTArrayInitializer node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTMethodDeclaration node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTMethodDeclarator node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTFormalParameters node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTFormalParameter node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTConstructorDeclaration node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTExplicitConstructorInvocation node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTInitializer node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTType node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTResultType node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTNameList node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTAssignmentOperator node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTConditionalExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTConditionalOrExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTConditionalAndExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTInclusiveOrExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTExclusiveOrExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTAndExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTEqualityExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTInstanceOfExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTRelationalExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTShiftExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTAdditiveExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTMultiplicativeExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTUnaryExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTPreIncrementExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTPreDecrementExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTUnaryExpressionNotPlusMinus node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTCastLookahead node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTPostfixExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTCastExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTPrimaryExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTPrimaryPrefix node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTPrimarySuffix node, Object data){node.childrenAccept(this, data);return null;} + + public Object visit(ASTBooleanLiteral node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTNullLiteral node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTArguments node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTArgumentList node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTAllocationExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTArrayDimsAndInits node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTStatement node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTLabeledStatement node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTBlock node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTBlockStatement node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTEmptyStatement node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTStatementExpression node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTSwitchStatement node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTSwitchLabel node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTIfStatement node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTWhileStatement node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTDoStatement node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTForStatement node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTForInit node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTStatementExpressionList node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTForUpdate node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTBreakStatement node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTContinueStatement node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTReturnStatement node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTThrowStatement node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTSynchronizedStatement node, Object data){node.childrenAccept(this, data);return null;} + public Object visit(ASTTryStatement node, Object data){node.childrenAccept(this, data);return null;} +} diff --git a/pmd/src/com/infoether/pmd/ast/Token.java b/pmd/src/com/infoether/pmd/ast/Token.java new file mode 100644 index 0000000000..866b843ebb --- /dev/null +++ b/pmd/src/com/infoether/pmd/ast/Token.java @@ -0,0 +1,81 @@ +/* Generated By:JavaCC: Do not edit this line. Token.java Version 2.1 */ +package com.infoether.pmd.ast; + +/** + * Describes the input token stream. + */ + +public class Token { + + /** + * An integer that describes the kind of this token. This numbering + * system is determined by JavaCCParser, and a table of these numbers is + * stored in the file ...Constants.java. + */ + public int kind; + + /** + * beginLine and beginColumn describe the position of the first character + * of this token; endLine and endColumn describe the position of the + * last character of this token. + */ + public int beginLine, beginColumn, endLine, endColumn; + + /** + * The string image of the token. + */ + public String image; + + /** + * A reference to the next regular (non-special) token from the input + * stream. If this is the last token from the input stream, or if the + * token manager has not read tokens beyond this one, this field is + * set to null. This is true only if this token is also a regular + * token. Otherwise, see below for a description of the contents of + * this field. + */ + public Token next; + + /** + * This field is used to access special tokens that occur prior to this + * token, but after the immediately preceding regular (non-special) token. + * If there are no such special tokens, this field is set to null. + * When there are more than one such special token, this field refers + * to the last of these special tokens, which in turn refers to the next + * previous special token through its specialToken field, and so on + * until the first special token (whose specialToken field is null). + * The next fields of special tokens refer to other special tokens that + * immediately follow it (without an intervening regular token). If there + * is no such token, this field is null. + */ + public Token specialToken; + + /** + * Returns the image. + */ + public final String toString() + { + return image; + } + + /** + * Returns a new Token object, by default. However, if you want, you + * can create and return subclass objects based on the value of ofKind. + * Simply add the cases to the switch for all those special cases. + * For example, if you have a subclass of Token called IDToken that + * you want to create if ofKind is ID, simlpy add something like : + * + * case MyParserConstants.ID : return new IDToken(); + * + * to the following switch statement. Then you can cast matchedToken + * variable to the appropriate type and use it in your lexical actions. + */ + public static final Token newToken(int ofKind) + { + switch(ofKind) + { + default : return new Token(); + } + } + +} diff --git a/pmd/src/com/infoether/pmd/ast/TokenMgrError.java b/pmd/src/com/infoether/pmd/ast/TokenMgrError.java new file mode 100644 index 0000000000..46c965f433 --- /dev/null +++ b/pmd/src/com/infoether/pmd/ast/TokenMgrError.java @@ -0,0 +1,133 @@ +/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 2.1 */ +package com.infoether.pmd.ast; + +public class TokenMgrError extends Error +{ + /* + * Ordinals for various reasons why an Error of this type can be thrown. + */ + + /** + * Lexical error occured. + */ + static final int LEXICAL_ERROR = 0; + + /** + * An attempt wass made to create a second instance of a static token manager. + */ + static final int STATIC_LEXER_ERROR = 1; + + /** + * Tried to change to an invalid lexical state. + */ + static final int INVALID_LEXICAL_STATE = 2; + + /** + * Detected (and bailed out of) an infinite loop in the token manager. + */ + static final int LOOP_DETECTED = 3; + + /** + * Indicates the reason why the exception is thrown. It will have + * one of the above 4 values. + */ + int errorCode; + + /** + * Replaces unprintable characters by their espaced (or unicode escaped) + * equivalents in the given string + */ + protected static final String addEscapes(String str) { + StringBuffer retval = new StringBuffer(); + char ch; + for (int i = 0; i < str.length(); i++) { + switch (str.charAt(i)) + { + case 0 : + continue; + case '\b': + retval.append("\\b"); + continue; + case '\t': + retval.append("\\t"); + continue; + case '\n': + retval.append("\\n"); + continue; + case '\f': + retval.append("\\f"); + continue; + case '\r': + retval.append("\\r"); + continue; + case '\"': + retval.append("\\\""); + continue; + case '\'': + retval.append("\\\'"); + continue; + case '\\': + retval.append("\\\\"); + continue; + default: + if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) { + String s = "0000" + Integer.toString(ch, 16); + retval.append("\\u" + s.substring(s.length() - 4, s.length())); + } else { + retval.append(ch); + } + continue; + } + } + return retval.toString(); + } + + /** + * Returns a detailed message for the Error when it is thrown by the + * token manager to indicate a lexical error. + * Parameters : + * EOFSeen : indicates if EOF caused the lexicl error + * curLexState : lexical state in which this error occured + * errorLine : line number when the error occured + * errorColumn : column number when the error occured + * errorAfter : prefix that was seen before this error occured + * curchar : the offending character + * Note: You can customize the lexical error message by modifying this method. + */ + private static final String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) { + return("Lexical error at line " + + errorLine + ", column " + + errorColumn + ". Encountered: " + + (EOFSeen ? " " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") + + "after : \"" + addEscapes(errorAfter) + "\""); + } + + /** + * You can also modify the body of this method to customize your error messages. + * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not + * of end-users concern, so you can return something like : + * + * "Internal Error : Please file a bug report .... " + * + * from this method for such cases in the release version of your parser. + */ + public String getMessage() { + return super.getMessage(); + } + + /* + * Constructors of various flavors follow. + */ + + public TokenMgrError() { + } + + public TokenMgrError(String message, int reason) { + super(message); + errorCode = reason; + } + + public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) { + this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason); + } +} diff --git a/pmd/test-data/ContainsSystemGetProps.java b/pmd/test-data/ContainsSystemGetProps.java new file mode 100644 index 0000000000..2da21ee899 --- /dev/null +++ b/pmd/test-data/ContainsSystemGetProps.java @@ -0,0 +1,7 @@ +public class ContainsSystemGetProps { + public ContainsSystemGetProps() { + System.getProperty("Rule violation"); + System.getProperties(); + System.setProperty("Another rule violation", "foo"); + } +} diff --git a/pmd/test-data/ContainsSystemIn.java b/pmd/test-data/ContainsSystemIn.java new file mode 100644 index 0000000000..ae304834ad --- /dev/null +++ b/pmd/test-data/ContainsSystemIn.java @@ -0,0 +1,10 @@ +import java.io.*; + +public class ContainsSystemIn { + public ContainsSystemIn() { + try { + System.in.read(); + System.err.println(); + } catch (IOException ioe) {} + } +} diff --git a/pmd/test-data/ContainsSystemOut.java b/pmd/test-data/ContainsSystemOut.java new file mode 100644 index 0000000000..7e5fe9485a --- /dev/null +++ b/pmd/test-data/ContainsSystemOut.java @@ -0,0 +1,5 @@ +public class ContainsSystemOut { + public ContainsSystemOut() { + System.out.println("Rule violation"); + } +} diff --git a/pmd/test-data/CreatesAThread.java b/pmd/test-data/CreatesAThread.java new file mode 100644 index 0000000000..062a479273 --- /dev/null +++ b/pmd/test-data/CreatesAThread.java @@ -0,0 +1,6 @@ +public class CreatesAThread { + public CreatesAThread() { + Thread t = new Thread(); + t= null; + } +} diff --git a/pmd/test-data/CreatesATimer.java b/pmd/test-data/CreatesATimer.java new file mode 100644 index 0000000000..5fccb97c5a --- /dev/null +++ b/pmd/test-data/CreatesATimer.java @@ -0,0 +1,7 @@ +import java.util.Timer; +public class CreatesATimer { + public CreatesATimer() { + Timer t = new Timer(); + t = null; + } +} diff --git a/pmd/test-data/EmptyCatchBlock.java b/pmd/test-data/EmptyCatchBlock.java new file mode 100644 index 0000000000..43efaa615b --- /dev/null +++ b/pmd/test-data/EmptyCatchBlock.java @@ -0,0 +1,18 @@ +import java.io.*; +public class EmptyCatchBlock { + public EmptyCatchBlock() { + try { + FileReader fr = new FileReader("/dev/null"); + fr=null; + // howdy + } catch (Exception e) { + } + try { + FileReader fr = new FileReader("/dev/null"); + fr=null; + } catch (Exception e) { + e.printStackTrace(); + // this shouldn't show up on the report + } + } +} diff --git a/pmd/test-data/EmptyIfStmtRule.java b/pmd/test-data/EmptyIfStmtRule.java new file mode 100644 index 0000000000..cc6bc35414 --- /dev/null +++ b/pmd/test-data/EmptyIfStmtRule.java @@ -0,0 +1,9 @@ +public class EmptyIfStmtRule { + public EmptyIfStmtRule() { + if (null == null) { + } + if (null != null) { + this.toString(); + } + } +} diff --git a/pmd/test-data/UnnecessaryTemporary.java b/pmd/test-data/UnnecessaryTemporary.java new file mode 100644 index 0000000000..6704528036 --- /dev/null +++ b/pmd/test-data/UnnecessaryTemporary.java @@ -0,0 +1,10 @@ + public class UnnecessaryTemporary { + void method (int x) { + new Integer(x).toString(); + new Long(x).toString(); + new Float(x).toString(); + new Byte((byte)x).toString(); + new Double(x).toString(); + new Short((short)x).toString(); + } + } \ No newline at end of file diff --git a/pmd/test-data/Unused1.java b/pmd/test-data/Unused1.java new file mode 100644 index 0000000000..849fbcec12 --- /dev/null +++ b/pmd/test-data/Unused1.java @@ -0,0 +1,9 @@ +import java.io.*; +public class Unused1 { + public Unused1() { + try { + FileReader fr = new FileReader("/dev/null"); + // howdy + } catch (Exception e) {e=null;} + } +} diff --git a/pmd/test-data/Unused10.java b/pmd/test-data/Unused10.java new file mode 100644 index 0000000000..8703c23f0b --- /dev/null +++ b/pmd/test-data/Unused10.java @@ -0,0 +1,4 @@ +public interface Unused10 { + public void foo(); + public String bar(); +} diff --git a/pmd/test-data/Unused2.java b/pmd/test-data/Unused2.java new file mode 100644 index 0000000000..ef65627d47 --- /dev/null +++ b/pmd/test-data/Unused2.java @@ -0,0 +1,6 @@ +public class Unused2 { + public void method() { + int x; + } +} + diff --git a/pmd/test-data/Unused3.java b/pmd/test-data/Unused3.java new file mode 100644 index 0000000000..e2b6fa02cb --- /dev/null +++ b/pmd/test-data/Unused3.java @@ -0,0 +1,7 @@ +import java.util.*; +public class Unused3 { + public Unused3() { + List a = new ArrayList(); + } +} + diff --git a/pmd/test-data/Unused4.java b/pmd/test-data/Unused4.java new file mode 100644 index 0000000000..390586e7ea --- /dev/null +++ b/pmd/test-data/Unused4.java @@ -0,0 +1,10 @@ +import java.util.*; +public class Unused4 { + public Unused4() { + List a = new ArrayList(); + if (true == true) { + a.size(); + } + } +} + diff --git a/pmd/test-data/Unused5.java b/pmd/test-data/Unused5.java new file mode 100644 index 0000000000..e78ca8941b --- /dev/null +++ b/pmd/test-data/Unused5.java @@ -0,0 +1,7 @@ +import java.util.*; +public class Unused5 { +static { + String x; +} +} + diff --git a/pmd/test-data/Unused6.java b/pmd/test-data/Unused6.java new file mode 100644 index 0000000000..3e53d09394 --- /dev/null +++ b/pmd/test-data/Unused6.java @@ -0,0 +1,3 @@ +public class Unused6 { +public int x; +} \ No newline at end of file diff --git a/pmd/test-data/Unused7.java b/pmd/test-data/Unused7.java new file mode 100644 index 0000000000..abb024e20b --- /dev/null +++ b/pmd/test-data/Unused7.java @@ -0,0 +1,8 @@ +public class Unused7 { +public void foo() +{ + for (int i=0;i<10; i++); + for (int i=0;i<10; i++); +} + +} \ No newline at end of file diff --git a/pmd/test-data/Unused8.java b/pmd/test-data/Unused8.java new file mode 100644 index 0000000000..bb3628f48c --- /dev/null +++ b/pmd/test-data/Unused8.java @@ -0,0 +1,3 @@ +public class Unused8 { + String foo = System.getProperty("line.separator", "\n"); +} diff --git a/pmd/test-data/Unused9.java b/pmd/test-data/Unused9.java new file mode 100644 index 0000000000..6e229631a5 --- /dev/null +++ b/pmd/test-data/Unused9.java @@ -0,0 +1,10 @@ +public class Unused9 { +public void foo() { + String x = "baf"; + bar(new Runnable() { + public void run() {String x = "buz";} +}); +} +public void bar(Runnable r) { +} +} diff --git a/pmd/test-data/UnusedPrivateInstanceVar1.java b/pmd/test-data/UnusedPrivateInstanceVar1.java new file mode 100644 index 0000000000..67a1c25272 --- /dev/null +++ b/pmd/test-data/UnusedPrivateInstanceVar1.java @@ -0,0 +1,3 @@ +public class UnusedPrivateInstanceVar1 { +private String foo; +} diff --git a/pmd/test-data/UnusedPrivateInstanceVar2.java b/pmd/test-data/UnusedPrivateInstanceVar2.java new file mode 100644 index 0000000000..8d1dfda50a --- /dev/null +++ b/pmd/test-data/UnusedPrivateInstanceVar2.java @@ -0,0 +1,7 @@ +public class UnusedPrivateInstanceVar2 { +private String foo; +private String bar = foo; +public void buz() { +bar = null; +} +} diff --git a/pmd/test-data/UnusedPrivateInstanceVar3.java b/pmd/test-data/UnusedPrivateInstanceVar3.java new file mode 100644 index 0000000000..f107b4219d --- /dev/null +++ b/pmd/test-data/UnusedPrivateInstanceVar3.java @@ -0,0 +1,10 @@ +public class UnusedPrivateInstanceVar3 { +private String foo; +public void baz() { + bar(new Runnable() { + public void run() {String foo = "buz";foo=null;} +}); +} +public void bar(Runnable r) { +} +} diff --git a/pmd/test-data/UnusedPrivateInstanceVar4.java b/pmd/test-data/UnusedPrivateInstanceVar4.java new file mode 100644 index 0000000000..e4128a0604 --- /dev/null +++ b/pmd/test-data/UnusedPrivateInstanceVar4.java @@ -0,0 +1,8 @@ +// this catches the case where the variable is used semantically before it's declared syntactically +public class UnusedPrivateInstanceVar4 { +public void bar() { + foo[0] = 0; +} +private int[] foo; + +} diff --git a/pmd/test-data/UnusedPrivateInstanceVar5.java b/pmd/test-data/UnusedPrivateInstanceVar5.java new file mode 100644 index 0000000000..8ecf6f53ef --- /dev/null +++ b/pmd/test-data/UnusedPrivateInstanceVar5.java @@ -0,0 +1,11 @@ +public class UnusedPrivateInstanceVar5 { + public void bar() { + Runnable r = new Runnable() { + public void run() { + String foo = ""; + } + }; + r = null; + } + private String foo; +} diff --git a/pmd/test-data/UnusedPrivateInstanceVar6.java b/pmd/test-data/UnusedPrivateInstanceVar6.java new file mode 100644 index 0000000000..da1fcdffb8 --- /dev/null +++ b/pmd/test-data/UnusedPrivateInstanceVar6.java @@ -0,0 +1,7 @@ +public class UnusedPrivateInstanceVar6 { + private String foo; + public void bar() { + this.foo = null; + } + +} diff --git a/pmd/test-data/UnusedPrivateInstanceVar7.java b/pmd/test-data/UnusedPrivateInstanceVar7.java new file mode 100644 index 0000000000..dbac9666f0 --- /dev/null +++ b/pmd/test-data/UnusedPrivateInstanceVar7.java @@ -0,0 +1,11 @@ +public class UnusedPrivateInstanceVar7 { + private static final String FOO = "foo"; + public Runnable bar() { + return new Runnable() { + public void run() { + FOO.toString(); + } + }; + } + +} diff --git a/pmd/test-data/UnusedPrivateInstanceVar8.java b/pmd/test-data/UnusedPrivateInstanceVar8.java new file mode 100644 index 0000000000..5c4d153de7 --- /dev/null +++ b/pmd/test-data/UnusedPrivateInstanceVar8.java @@ -0,0 +1,6 @@ +public interface UnusedPrivateInstanceVar8 { + public static final String FOO = "FOO"; + public boolean equals(Object another); + public int hashCode(); + public String toString(); +} diff --git a/pmd/test-data/UnusedPrivateInstanceVar9.java b/pmd/test-data/UnusedPrivateInstanceVar9.java new file mode 100644 index 0000000000..2ab64a55d3 --- /dev/null +++ b/pmd/test-data/UnusedPrivateInstanceVar9.java @@ -0,0 +1,6 @@ +public class UnusedPrivateInstanceVar9 { + public static class Services { + private String x; + } +} +