f0 -> [ PackageDeclaration() ] f1 -> ( ImportDeclaration() )* f2 -> ( TypeDeclaration() )* f3 -> <EOF>
f0 -> "package" f1 -> Name() f2 -> ";"
f0 -> "import" f1 -> Name() f2 -> [ "." "*" ] f3 -> ";"
f0 -> ClassDeclaration() | InterfaceDeclaration() | ";"
f0 -> ( "abstract" | "final" | "public" | "strictfp" )* f1 -> UnmodifiedClassDeclaration()
f0 -> "class" f1 -> <IDENTIFIER> f2 -> [ "extends" Name() ] f3 -> [ "implements" NameList() ] f4 -> ClassBody()
f0 -> "{" f1 -> ( ClassBodyDeclaration() )* f2 -> "}"
f0 -> ( "static" | "abstract" | "final" | "public" | "protected" | "private" | "strictfp" )* f1 -> UnmodifiedClassDeclaration()
f0 -> Initializer() | NestedClassDeclaration() | NestedInterfaceDeclaration() | ConstructorDeclaration() | MethodDeclaration() | FieldDeclaration() | ";"
f0 -> ( "public" | "protected" | "private" | "static" | "abstract" | "final" | "native" | "synchronized" | "strictfp" )* f1 -> ResultType() f2 -> <IDENTIFIER> f3 -> "("
f0 -> ( "abstract" | "public" | "strictfp" )* f1 -> UnmodifiedInterfaceDeclaration()
f0 -> ( "static" | "abstract" | "final" | "public" | "protected" | "private" | "strictfp" )* f1 -> UnmodifiedInterfaceDeclaration()
f0 -> "interface" f1 -> <IDENTIFIER> f2 -> [ "extends" NameList() ] f3 -> "{" f4 -> ( InterfaceMemberDeclaration() )* f5 -> "}"
f0 -> NestedClassDeclaration() | NestedInterfaceDeclaration() | MethodDeclaration() | FieldDeclaration() | ";"
f0 -> ( "public" | "protected" | "private" | "static" | "final" | "transient" | "volatile" )* f1 -> Type() f2 -> VariableDeclarator() f3 -> ( "," VariableDeclarator() )* f4 -> ";"
f0 -> VariableDeclaratorId() f1 -> [ "=" VariableInitializer() ]
f0 -> <IDENTIFIER> f1 -> ( "[" "]" )*
f0 -> ArrayInitializer() | Expression()
f0 -> "{" f1 -> [ VariableInitializer() ( "," VariableInitializer() )* ] f2 -> [ "," ] f3 -> "}"
f0 -> ( "public" | "protected" | "private" | "static" | "abstract" | "final" | "native" | "synchronized" | "strictfp" )* f1 -> ResultType() f2 -> MethodDeclarator() f3 -> [ "throws" NameList() ] f4 -> ( Block() | ";" )
f0 -> <IDENTIFIER> f1 -> FormalParameters() f2 -> ( "[" "]" )*
f0 -> "(" f1 -> [ FormalParameter() ( "," FormalParameter() )* ] f2 -> ")"
f0 -> [ "final" ] f1 -> Type() f2 -> VariableDeclaratorId()
f0 -> [ "public" | "protected" | "private" ] f1 -> <IDENTIFIER> f2 -> FormalParameters() f3 -> [ "throws" NameList() ] f4 -> "{" f5 -> [ ExplicitConstructorInvocation() ] f6 -> ( BlockStatement() )* f7 -> "}"
f0 -> "this" Arguments() ";" | [ PrimaryExpression() "." ] "super" Arguments() ";"
f0 -> [ "static" ] f1 -> Block()
f0 -> ( PrimitiveType() | Name() ) f1 -> ( "[" "]" )*
f0 -> "boolean" | "char" | "byte" | "short" | "int" | "long" | "float" | "double"
f0 -> "void" | Type()
f0 -> <IDENTIFIER> f1 -> ( "." <IDENTIFIER> )*
f0 -> Name() f1 -> ( "," Name() )*
f0 -> ConditionalExpression() f1 -> [ AssignmentOperator() Expression() ]
f0 -> "=" | "*=" | "/=" | "%=" | "+=" | "-=" | "<<=" | ">>=" | ">>>=" | "&=" | "^=" | "|="
f0 -> ConditionalOrExpression() f1 -> [ "?" Expression() ":" ConditionalExpression() ]
f0 -> ConditionalAndExpression() f1 -> ( "||" ConditionalAndExpression() )*
f0 -> InclusiveOrExpression() f1 -> ( "&&" InclusiveOrExpression() )*
f0 -> ExclusiveOrExpression() f1 -> ( "|" ExclusiveOrExpression() )*
f0 -> AndExpression() f1 -> ( "^" AndExpression() )*
f0 -> EqualityExpression() f1 -> ( "&" EqualityExpression() )*
f0 -> InstanceOfExpression() f1 -> ( ( "==" | "!=" ) InstanceOfExpression() )*
f0 -> RelationalExpression() f1 -> [ "instanceof" Type() ]
f0 -> ShiftExpression() f1 -> ( ( "<" | ">" | "<=" | ">=" ) ShiftExpression() )*
f0 -> AdditiveExpression() f1 -> ( ( "<<" | ">>" | ">>>" ) AdditiveExpression() )*
f0 -> MultiplicativeExpression() f1 -> ( ( "+" | "-" ) MultiplicativeExpression() )*
f0 -> UnaryExpression() f1 -> ( ( "*" | "/" | "%" ) UnaryExpression() )*
f0 -> ( "+" | "-" ) UnaryExpression() | PreIncrementExpression() | PreDecrementExpression() | UnaryExpressionNotPlusMinus()
f0 -> "++" f1 -> PrimaryExpression()
f0 -> "--" f1 -> PrimaryExpression()
f0 -> ( "~" | "!" ) UnaryExpression() | CastExpression() | PostfixExpression()
f0 -> "(" PrimitiveType() | "(" Name() "[" "]" | "(" Name() ")" ( "~" | "!" | "(" | <IDENTIFIER> | "this" | "super" | "new" | Literal() )
f0 -> PrimaryExpression() f1 -> [ "++" | "--" ]
f0 -> "(" Type() ")" UnaryExpression() | "(" Type() ")" UnaryExpressionNotPlusMinus()
f0 -> PrimaryPrefix() f1 -> ( PrimarySuffix() )*
f0 -> Literal() | "this" | "super" "." <IDENTIFIER> | "(" Expression() ")" | AllocationExpression() | ResultType() "." "class" | Name()
f0 -> "." "this" | "." "super" | "." AllocationExpression() | "[" Expression() "]" | "." <IDENTIFIER> | Arguments()
f0 -> <INTEGER_LITERAL> | <FLOATING_POINT_LITERAL> | <CHARACTER_LITERAL> | <STRING_LITERAL> | BooleanLiteral() | NullLiteral()
f0 -> "true" | "false"
f0 -> "null"
f0 -> "(" f1 -> [ ArgumentList() ] f2 -> ")"
f0 -> Expression() f1 -> ( "," Expression() )*
f0 -> "new" PrimitiveType() ArrayDimsAndInits() | "new" Name() ( ArrayDimsAndInits() | Arguments() [ ClassBody() ] )
f0 -> ( "[" Expression() "]" )+ ( "[" "]" )* | ( "[" "]" )+ ArrayInitializer()
f0 -> LabeledStatement() | Block() | EmptyStatement() | StatementExpression() ";" | SwitchStatement() | IfStatement() | WhileStatement() | DoStatement() | ForStatement() | BreakStatement() | ContinueStatement() | ReturnStatement() | ThrowStatement() | SynchronizedStatement() | TryStatement() | AssertStatement()
f0 -> <IDENTIFIER> f1 -> ":" f2 -> Statement()
f0 -> "{" f1 -> ( BlockStatement() )* f2 -> "}"
f0 -> LocalVariableDeclaration() ";" | Statement() | UnmodifiedClassDeclaration() | UnmodifiedInterfaceDeclaration()
f0 -> [ "final" ] f1 -> Type() f2 -> VariableDeclarator() f3 -> ( "," VariableDeclarator() )*
f0 -> ";"
f0 -> PreIncrementExpression() | PreDecrementExpression() | PrimaryExpression() [ "++" | "--" | AssignmentOperator() Expression() ]
f0 -> "switch" f1 -> "(" f2 -> Expression() f3 -> ")" f4 -> "{" f5 -> ( SwitchLabel() ( BlockStatement() )* )* f6 -> "}"
f0 -> "case" Expression() ":" | "default" ":"
f0 -> "if" f1 -> "(" f2 -> Expression() f3 -> ")" f4 -> Statement() f5 -> [ "else" Statement() ]
f0 -> "while" f1 -> "(" f2 -> Expression() f3 -> ")" f4 -> Statement()
f0 -> "do" f1 -> Statement() f2 -> "while" f3 -> "(" f4 -> Expression() f5 -> ")" f6 -> ";"
f0 -> "for" f1 -> "(" f2 -> [ ForInit() ] f3 -> ";" f4 -> [ Expression() ] f5 -> ";" f6 -> [ ForUpdate() ] f7 -> ")" f8 -> Statement()
f0 -> LocalVariableDeclaration() | StatementExpressionList()
f0 -> StatementExpression() f1 -> ( "," StatementExpression() )*
f0 -> StatementExpressionList()
f0 -> "break" f1 -> [ <IDENTIFIER> ] f2 -> ";"
f0 -> "continue" f1 -> [ <IDENTIFIER> ] f2 -> ";"
f0 -> "return" f1 -> [ Expression() ] f2 -> ";"
f0 -> "throw" f1 -> Expression() f2 -> ";"
f0 -> "synchronized" f1 -> "(" f2 -> Expression() f3 -> ")" f4 -> Block()
f0 -> "try" f1 -> Block() f2 -> ( "catch" "(" FormalParameter() ")" Block() )* f3 -> [ "finally" Block() ]
f0 -> "assert" f1 -> Expression() f2 -> [ ":" Expression() ] f3 -> ";"