
Grammar connected by Vadim Zaytsev, see the Grammar Zoo entry for details: java/java-5/jls/read/connected
Source used for this grammar: James Gosling, Bill Joy, Guy Steele, Gilad Bracha, Java Language Specification, 3rd edition, 2004 [HTML] [PDF]
ClassBodyDeclarations, NormalClassDeclaration, PostDecrementExpression, ReferenceTypeList, PrimitiveType, InterfaceTypeList, Statement, AndExpression, Annotations, ConstructorBody, TypeParameter, ArgumentList, MethodName, ClassMemberDeclaration, Assignment, Interfaces, CatchClause, AbstractMethodModifiers, ClassInstanceCreationExpression, TypeName, InterfaceType, BlockStatement, IfThenStatement, Annotation, SwitchBlockStatementGroups, EnumConstant, ClassModifier, EnumBodyDeclarations, SingleTypeImportDeclaration, AnnotationTypeDeclaration, ConstantDeclaration, PreIncrementExpression, ExplicitConstructorInvocation, ActualTypeArgumentList, VariableInitializers, DimExpr, Throws, BlockStatements, InterfaceModifiers, PrimaryNoNewArray, AssignmentOperator, AnnotationTypeElementDeclarations, StatementWithoutTrailingSubstatement, AdditionalBound, FieldDeclaration, TypeBound, AdditionalBoundList, VariableDeclarator, PostfixExpression, SwitchLabel, ConstantModifier, FormalParameter, PackageName, VariableModifiers, ConditionalAndExpression, MethodModifiers, Type, EqualityExpression, InterfaceMemberDeclaration, MultiplicativeExpression, ActualTypeArgument, ExceptionType, BreakStatement, ConstructorModifier, ElementValuePairs, SynchronizedStatement, Literal, ElementValue, Super, ArrayCreationExpression, ArrayInitializer, InterfaceModifier, UnaryExpressionNotPlusMinus, NonWildTypeArguments, SwitchBlock, EmptyStatement, EnumConstants, LastFormalParameter, AbstractMethodDeclaration, IfThenElseStatement, EnhancedForStatement, ReturnStatement, Block, ForUpdate, ForInit, EnumDeclaration, VariableDeclarators, ThrowStatement, ExclusiveOrExpression, Primary, PackageDeclaration, RelationalExpression, StatementNoShortIf, WhileStatementNoShortIf, ExtendsInterfaces, WildcardBounds, AbstractMethodModifier, MethodInvocation, ConstantExpression, TypeDeclSpecifier, ExceptionTypeList, VariableInitializer, StaticInitializer, Finally, MarkerAnnotation, ConstructorDeclaration, ElementValuePair, TypeImportOnDemandDeclaration, ArrayAccess, InterfaceMemberDeclarations, ForStatement, PostIncrementExpression, PackageOrTypeName, AmbiguousName, ContinueStatement, ImportDeclaration, CompilationUnit, ElementValues, SwitchStatement, Dims, ClassBody, AssertStatement, ClassBodyDeclaration, SwitchBlockStatementGroup, MethodDeclaration, PreDecrementExpression, MethodModifier, DoStatement, TypeArguments, ConditionalExpression, ClassOrInterfaceType, InstanceInitializer, TryStatement, SwitchLabels, Wildcard, FormalParameterList, Expression, StatementExpressionList, AdditiveExpression, FloatingPointType, ExpressionStatement, LocalVariableDeclaration, ConstructorDeclarator, InclusiveOrExpression, ClassType, WhileStatement, FormalParameters, VariableModifier, ClassDeclaration, FieldAccess, AssignmentExpression, BasicForStatement, ConditionalOrExpression, NormalAnnotation, ImportDeclarations, TypeDeclaration, LabeledStatement, ExpressionName, ArrayType, StatementExpression, Arguments, MethodDeclarator, VariableDeclaratorId, IntegralType, UnaryExpression, NumericType, AnnotationTypeBody, LeftHandSide, IfThenElseStatementNoShortIf, LocalVariableDeclarationStatement, CastExpression, ShiftExpression, FieldModifiers, MethodBody, TypeVariable, DefaultValue, Catches, ResultType, ConstructorModifiers, StaticImportOnDemandDeclaration, EnumBody, ReferenceType, ClassModifiers, ForStatementNoShortIf, MethodHeader, LabeledStatementNoShortIf, InterfaceBody, ConstantModifiers, SingleElementAnnotation, EnumConstantName, TypeDeclarations, FieldModifier, AnnotationTypeElementDeclaration, DimExprs, SingleStaticImportDeclaration, InterfaceDeclaration, NormalInterfaceDeclaration, ElementValueArrayInitializer, TypeParameters, TypeParameterList, ClassName), 1 root (CompilationUnit), 0 top (—), 7 bottom (StringLiteral, IntegerLiteral, Identifier 41, NullLiteral, BooleanLiteral, CharacterLiteral, FloatingPointLiteral).ClassBodyDeclarations ::= ClassBodyDeclaration
ClassBodyDeclarations ::= ClassBodyDeclarations ClassBodyDeclaration
NormalClassDeclaration ::= ClassModifiers "class" Identifier TypeParameters Super Interfaces ClassBody
PostDecrementExpression ::=
PostfixExpression "--"ReferenceTypeList ::= ReferenceType
ReferenceTypeList ::=
ReferenceTypeList "," ReferenceTypePrimitiveType ::= NumericType
PrimitiveType ::=
"boolean"InterfaceTypeList ::= InterfaceType
InterfaceTypeList ::=
InterfaceTypeList "," InterfaceTypeStatement ::= StatementWithoutTrailingSubstatement
Statement ::= LabeledStatement
Statement ::= IfThenStatement
Statement ::= IfThenElseStatement
Statement ::= WhileStatement
Statement ::= ForStatement
AndExpression ::= EqualityExpression
AndExpression ::=
AndExpression "&" EqualityExpressionAnnotations ::= Annotation
Annotations ::= Annotations Annotation
ConstructorBody ::= "{" ExplicitConstructorInvocation BlockStatements "}"
TypeParameter ::=
TypeVariable TypeBoundArgumentList ::= Expression
ArgumentList ::=
ArgumentList "," ExpressionMethodName ::= Identifier
MethodName ::=
AmbiguousName "." IdentifierClassMemberDeclaration ::= FieldDeclaration
ClassMemberDeclaration ::= MethodDeclaration
ClassMemberDeclaration ::= ClassDeclaration
ClassMemberDeclaration ::= InterfaceDeclaration
ClassMemberDeclaration ::=
";"Assignment ::= LeftHandSide AssignmentOperator AssignmentExpression
Interfaces ::=
"implements" InterfaceTypeListCatchClause ::= "catch" "(" FormalParameter ")" Block
AbstractMethodModifiers ::= AbstractMethodModifier
AbstractMethodModifiers ::= AbstractMethodModifiers AbstractMethodModifier
ClassInstanceCreationExpression ::= "new" TypeArguments ClassOrInterfaceType "(" ArgumentList ")" ClassBody
ClassInstanceCreationExpression ::= Primary "." "new" TypeArguments Identifier TypeArguments "(" ArgumentList ")" ClassBody
TypeName ::= Identifier
TypeName ::=
PackageOrTypeName "." IdentifierInterfaceType ::=
TypeDeclSpecifier TypeArgumentsBlockStatement ::= LocalVariableDeclarationStatement
BlockStatement ::= ClassDeclaration
BlockStatement ::= Statement
IfThenStatement ::= "if" "(" Expression ")" Statement
Annotation ::= NormalAnnotation
Annotation ::= MarkerAnnotation
Annotation ::= SingleElementAnnotation
SwitchBlockStatementGroups ::= SwitchBlockStatementGroup
SwitchBlockStatementGroups ::= SwitchBlockStatementGroups SwitchBlockStatementGroup
EnumConstant ::= Annotations Identifier Arguments ClassBody
ClassModifier ::= Annotation
ClassModifier ::=
"public"ClassModifier ::=
"protected"ClassModifier ::=
"private"ClassModifier ::=
"abstract"ClassModifier ::=
"static"ClassModifier ::=
"final"ClassModifier ::=
"strictfp"EnumBodyDeclarations ::= ";" ClassBodyDeclarations
SingleTypeImportDeclaration ::= "import" TypeName ";"
AnnotationTypeDeclaration ::= InterfaceModifiers "@" "interface" Identifier AnnotationTypeBody
ConstantDeclaration ::= ConstantModifiers Type VariableDeclarators ";"
PreIncrementExpression ::=
"++" UnaryExpressionExplicitConstructorInvocation ::= NonWildTypeArguments "this" "(" ArgumentList ")" ";"
ExplicitConstructorInvocation ::= NonWildTypeArguments "super" "(" ArgumentList ")" ";"
ExplicitConstructorInvocation ::= Primary "." NonWildTypeArguments "super" "(" ArgumentList ")" ";"
ActualTypeArgumentList ::= ActualTypeArgument
ActualTypeArgumentList ::=
ActualTypeArgumentList "," ActualTypeArgumentVariableInitializers ::= VariableInitializer
VariableInitializers ::=
VariableInitializers "," VariableInitializerDimExpr ::= "[" Expression "]"
Throws ::=
"throws" ExceptionTypeListBlockStatements ::= BlockStatement
BlockStatements ::= BlockStatements BlockStatement
InterfaceModifiers ::= InterfaceModifier
InterfaceModifiers ::= InterfaceModifiers InterfaceModifier
PrimaryNoNewArray ::= Literal
PrimaryNoNewArray ::= Type "." "class"
PrimaryNoNewArray ::= "void" "." "class"
PrimaryNoNewArray ::=
"this"PrimaryNoNewArray ::= ClassName "." "this"
PrimaryNoNewArray ::= "(" Expression ")"
PrimaryNoNewArray ::= ClassInstanceCreationExpression
PrimaryNoNewArray ::= FieldAccess
PrimaryNoNewArray ::= MethodInvocation
PrimaryNoNewArray ::= ArrayAccess
AssignmentOperator ::=
"="AssignmentOperator ::=
"*="AssignmentOperator ::=
"/="AssignmentOperator ::=
"%="AssignmentOperator ::=
"+="AssignmentOperator ::=
"-="AssignmentOperator ::=
"<<="AssignmentOperator ::=
">>="AssignmentOperator ::=
">>>="AssignmentOperator ::=
"&="AssignmentOperator ::=
"^="AssignmentOperator ::=
"|="AnnotationTypeElementDeclarations ::= AnnotationTypeElementDeclaration
AnnotationTypeElementDeclarations ::= AnnotationTypeElementDeclarations AnnotationTypeElementDeclaration
StatementWithoutTrailingSubstatement ::= Block
StatementWithoutTrailingSubstatement ::= EmptyStatement
StatementWithoutTrailingSubstatement ::= ExpressionStatement
StatementWithoutTrailingSubstatement ::= AssertStatement
StatementWithoutTrailingSubstatement ::= SwitchStatement
StatementWithoutTrailingSubstatement ::= DoStatement
StatementWithoutTrailingSubstatement ::= BreakStatement
StatementWithoutTrailingSubstatement ::= ContinueStatement
StatementWithoutTrailingSubstatement ::= ReturnStatement
StatementWithoutTrailingSubstatement ::= SynchronizedStatement
StatementWithoutTrailingSubstatement ::= ThrowStatement
StatementWithoutTrailingSubstatement ::= TryStatement
AdditionalBound ::=
"&" InterfaceTypeFieldDeclaration ::= FieldModifiers Type VariableDeclarators ";"
TypeBound ::= "extends" ClassOrInterfaceType AdditionalBoundList
AdditionalBoundList ::= AdditionalBound AdditionalBoundList
AdditionalBoundList ::= AdditionalBound
VariableDeclarator ::= VariableDeclaratorId
VariableDeclarator ::=
VariableDeclaratorId "=" VariableInitializerPostfixExpression ::= Primary
PostfixExpression ::= ExpressionName
PostfixExpression ::= PostIncrementExpression
PostfixExpression ::= PostDecrementExpression
SwitchLabel ::= "case" ConstantExpression ":"
SwitchLabel ::= "case" EnumConstantName ":"
SwitchLabel ::= "default" ":"
ConstantModifier ::= Annotation
ConstantModifier ::=
"public"ConstantModifier ::=
"static"ConstantModifier ::=
"final"FormalParameter ::=
VariableModifiers Type VariableDeclaratorIdPackageName ::= Identifier
PackageName ::=
PackageName "." IdentifierVariableModifiers ::= VariableModifier
VariableModifiers ::= VariableModifiers VariableModifier
ConditionalAndExpression ::= InclusiveOrExpression
ConditionalAndExpression ::=
ConditionalAndExpression "&&" InclusiveOrExpressionMethodModifiers ::= MethodModifier
MethodModifiers ::= MethodModifiers MethodModifier
Type ::= PrimitiveType
Type ::= ReferenceType
EqualityExpression ::= RelationalExpression
EqualityExpression ::=
EqualityExpression "==" RelationalExpressionEqualityExpression ::=
EqualityExpression "!=" RelationalExpressionInterfaceMemberDeclaration ::= ConstantDeclaration
InterfaceMemberDeclaration ::= AbstractMethodDeclaration
InterfaceMemberDeclaration ::= ClassDeclaration
InterfaceMemberDeclaration ::= InterfaceDeclaration
InterfaceMemberDeclaration ::=
";"MultiplicativeExpression ::= UnaryExpression
MultiplicativeExpression ::=
MultiplicativeExpression "*" UnaryExpressionMultiplicativeExpression ::=
MultiplicativeExpression "/" UnaryExpressionMultiplicativeExpression ::=
MultiplicativeExpression "%" UnaryExpressionActualTypeArgument ::= ReferenceType
ActualTypeArgument ::= Wildcard
ExceptionType ::= ClassType
ExceptionType ::= TypeVariable
BreakStatement ::= "break" Identifier ";"
ConstructorModifier ::= Annotation
ConstructorModifier ::=
"public"ConstructorModifier ::=
"protected"ConstructorModifier ::=
"private"ElementValuePairs ::= ElementValuePair
ElementValuePairs ::=
ElementValuePairs "," ElementValuePairSynchronizedStatement ::= "synchronized" "(" Expression ")" Block
Literal ::= IntegerLiteral
Literal ::= FloatingPointLiteral
Literal ::= BooleanLiteral
Literal ::= CharacterLiteral
Literal ::= StringLiteral
Literal ::= NullLiteral
ElementValue ::= ConditionalExpression
ElementValue ::= Annotation
ElementValue ::= ElementValueArrayInitializer
Super ::=
"extends" ClassTypeArrayCreationExpression ::= "new" PrimitiveType DimExprs Dims
ArrayCreationExpression ::= "new" ClassOrInterfaceType DimExprs Dims
ArrayCreationExpression ::=
"new" PrimitiveType Dims ArrayInitializerArrayCreationExpression ::=
"new" ClassOrInterfaceType Dims ArrayInitializerArrayInitializer ::= "{" VariableInitializers "," "}"
InterfaceModifier ::= Annotation
InterfaceModifier ::=
"public"InterfaceModifier ::=
"protected"InterfaceModifier ::=
"private"InterfaceModifier ::=
"abstract"InterfaceModifier ::=
"static"InterfaceModifier ::=
"strictfp"UnaryExpressionNotPlusMinus ::= PostfixExpression
UnaryExpressionNotPlusMinus ::=
"~" UnaryExpressionUnaryExpressionNotPlusMinus ::=
"!" UnaryExpressionUnaryExpressionNotPlusMinus ::= CastExpression
NonWildTypeArguments ::= "<" ReferenceTypeList ">"
SwitchBlock ::= "{" SwitchBlockStatementGroups SwitchLabels "}"
EmptyStatement ::=
";"EnumConstants ::= EnumConstant
EnumConstants ::=
EnumConstants "," EnumConstantLastFormalParameter ::= VariableModifiers Type "..." VariableDeclaratorId
LastFormalParameter ::= FormalParameter
AbstractMethodDeclaration ::= AbstractMethodModifiers TypeParameters ResultType MethodDeclarator Throws ";"
IfThenElseStatement ::= "if" "(" Expression ")" StatementNoShortIf "else" Statement
EnhancedForStatement ::= "for" "(" VariableModifiers Type Identifier ":" Expression ")" Statement
ReturnStatement ::= "return" Expression ";"
Block ::= "{" BlockStatements "}"
ForUpdate ::= StatementExpressionList
ForInit ::= StatementExpressionList
ForInit ::= LocalVariableDeclaration
EnumDeclaration ::= ClassModifiers "enum" Identifier Interfaces EnumBody
VariableDeclarators ::= VariableDeclarator
VariableDeclarators ::=
VariableDeclarators "," VariableDeclaratorThrowStatement ::= "throw" Expression ";"
ExclusiveOrExpression ::= AndExpression
ExclusiveOrExpression ::=
ExclusiveOrExpression "^" AndExpressionPrimary ::= PrimaryNoNewArray
Primary ::= ArrayCreationExpression
PackageDeclaration ::= Annotations "package" PackageName ";"
RelationalExpression ::= ShiftExpression
RelationalExpression ::=
RelationalExpression "<" ShiftExpressionRelationalExpression ::=
RelationalExpression ">" ShiftExpressionRelationalExpression ::=
RelationalExpression "<=" ShiftExpressionRelationalExpression ::=
RelationalExpression ">=" ShiftExpressionRelationalExpression ::=
RelationalExpression "instanceof" ReferenceTypeStatementNoShortIf ::= StatementWithoutTrailingSubstatement
StatementNoShortIf ::= LabeledStatementNoShortIf
StatementNoShortIf ::= IfThenElseStatementNoShortIf
StatementNoShortIf ::= WhileStatementNoShortIf
StatementNoShortIf ::= ForStatementNoShortIf
WhileStatementNoShortIf ::= "while" "(" Expression ")" StatementNoShortIf
ExtendsInterfaces ::=
"extends" InterfaceTypeExtendsInterfaces ::=
ExtendsInterfaces "," InterfaceTypeWildcardBounds ::=
"extends" ReferenceTypeWildcardBounds ::=
"super" ReferenceTypeAbstractMethodModifier ::= Annotation
AbstractMethodModifier ::=
"public"AbstractMethodModifier ::=
"abstract"MethodInvocation ::= MethodName "(" ArgumentList ")"
MethodInvocation ::= Primary "." NonWildTypeArguments Identifier "(" ArgumentList ")"
MethodInvocation ::= "super" "." NonWildTypeArguments Identifier "(" ArgumentList ")"
MethodInvocation ::= ClassName "." "super" "." NonWildTypeArguments Identifier "(" ArgumentList ")"
MethodInvocation ::= TypeName "." NonWildTypeArguments Identifier "(" ArgumentList ")"
ConstantExpression ::= Expression
TypeDeclSpecifier ::= TypeName
TypeDeclSpecifier ::=
ClassOrInterfaceType "." IdentifierExceptionTypeList ::= ExceptionType
ExceptionTypeList ::=
ExceptionTypeList "," ExceptionTypeVariableInitializer ::= Expression
VariableInitializer ::= ArrayInitializer
StaticInitializer ::=
"static" BlockFinally ::=
"finally" BlockMarkerAnnotation ::=
"@" TypeNameConstructorDeclaration ::= ConstructorModifiers ConstructorDeclarator Throws ConstructorBody
ElementValuePair ::=
Identifier "=" ElementValueTypeImportOnDemandDeclaration ::= "import" PackageOrTypeName "." "*" ";"
ArrayAccess ::= ExpressionName "[" Expression "]"
ArrayAccess ::= PrimaryNoNewArray "[" Expression "]"
InterfaceMemberDeclarations ::= InterfaceMemberDeclaration
InterfaceMemberDeclarations ::= InterfaceMemberDeclarations InterfaceMemberDeclaration
ForStatement ::= BasicForStatement
ForStatement ::= EnhancedForStatement
PostIncrementExpression ::=
PostfixExpression "++"PackageOrTypeName ::= Identifier
PackageOrTypeName ::=
PackageOrTypeName "." IdentifierAmbiguousName ::= Identifier
AmbiguousName ::=
AmbiguousName "." IdentifierContinueStatement ::= "continue" Identifier ";"
ImportDeclaration ::= SingleTypeImportDeclaration
ImportDeclaration ::= TypeImportOnDemandDeclaration
ImportDeclaration ::= SingleStaticImportDeclaration
ImportDeclaration ::= StaticImportOnDemandDeclaration
CompilationUnit ::= PackageDeclaration ImportDeclarations TypeDeclarations
ElementValues ::= ElementValue
ElementValues ::=
ElementValues "," ElementValueSwitchStatement ::= "switch" "(" Expression ")" SwitchBlock
Dims ::= "[" "]"
Dims ::= Dims "[" "]"
ClassBody ::= "{" ClassBodyDeclarations "}"
AssertStatement ::= "assert" Expression ";"
AssertStatement ::= "assert" Expression ":" Expression ";"
ClassBodyDeclaration ::= ClassMemberDeclaration
ClassBodyDeclaration ::= InstanceInitializer
ClassBodyDeclaration ::= StaticInitializer
ClassBodyDeclaration ::= ConstructorDeclaration
SwitchBlockStatementGroup ::= SwitchLabels BlockStatements
MethodDeclaration ::= MethodHeader MethodBody
PreDecrementExpression ::=
"--" UnaryExpressionMethodModifier ::= Annotation
MethodModifier ::=
"public"MethodModifier ::=
"protected"MethodModifier ::=
"private"MethodModifier ::=
"abstract"MethodModifier ::=
"static"MethodModifier ::=
"final"MethodModifier ::=
"synchronized"MethodModifier ::=
"native"MethodModifier ::=
"strictfp"DoStatement ::= "do" Statement "while" "(" Expression ")" ";"
TypeArguments ::= "<" ActualTypeArgumentList ">"
ConditionalExpression ::= ConditionalOrExpression
ConditionalExpression ::= ConditionalOrExpression "?" Expression ":" ConditionalExpression
ClassOrInterfaceType ::= ClassType
ClassOrInterfaceType ::= InterfaceType
InstanceInitializer ::= Block
TryStatement ::=
"try" Block CatchesTryStatement ::= "try" Block Catches Finally
SwitchLabels ::= SwitchLabel
SwitchLabels ::= SwitchLabels SwitchLabel
Wildcard ::= "?" WildcardBounds
FormalParameterList ::= LastFormalParameter
FormalParameterList ::=
FormalParameters "," LastFormalParameterExpression ::= AssignmentExpression
StatementExpressionList ::= StatementExpression
StatementExpressionList ::=
StatementExpressionList "," StatementExpressionAdditiveExpression ::= MultiplicativeExpression
AdditiveExpression ::=
AdditiveExpression "+" MultiplicativeExpressionAdditiveExpression ::=
AdditiveExpression "-" MultiplicativeExpressionFloatingPointType ::=
"float"FloatingPointType ::=
"double"ExpressionStatement ::=
StatementExpression ";"LocalVariableDeclaration ::=
VariableModifiers Type VariableDeclaratorsConstructorDeclarator ::= TypeParameters Identifier "(" FormalParameterList ")"
InclusiveOrExpression ::= ExclusiveOrExpression
InclusiveOrExpression ::=
InclusiveOrExpression "|" ExclusiveOrExpressionClassType ::=
TypeDeclSpecifier TypeArgumentsWhileStatement ::= "while" "(" Expression ")" Statement
FormalParameters ::= FormalParameter
FormalParameters ::=
FormalParameters "," FormalParameterVariableModifier ::=
"final"VariableModifier ::= Annotation
ClassDeclaration ::= NormalClassDeclaration
ClassDeclaration ::= EnumDeclaration
FieldAccess ::=
Primary "." IdentifierFieldAccess ::= "super" "." Identifier
FieldAccess ::= ClassName "." "super" "." Identifier
AssignmentExpression ::= ConditionalExpression
AssignmentExpression ::= Assignment
BasicForStatement ::= "for" "(" ForInit ";" Expression ";" ForUpdate ")" Statement
ConditionalOrExpression ::= ConditionalAndExpression
ConditionalOrExpression ::=
ConditionalOrExpression "||" ConditionalAndExpressionNormalAnnotation ::= "@" TypeName "(" ElementValuePairs ")"
ImportDeclarations ::= ImportDeclaration
ImportDeclarations ::= ImportDeclarations ImportDeclaration
TypeDeclaration ::= ClassDeclaration
TypeDeclaration ::= InterfaceDeclaration
TypeDeclaration ::=
";"LabeledStatement ::=
Identifier ":" StatementExpressionName ::= Identifier
ExpressionName ::=
AmbiguousName "." IdentifierArrayType ::= Type "[" "]"
StatementExpression ::= Assignment
StatementExpression ::= PreIncrementExpression
StatementExpression ::= PreDecrementExpression
StatementExpression ::= PostIncrementExpression
StatementExpression ::= PostDecrementExpression
StatementExpression ::= MethodInvocation
StatementExpression ::= ClassInstanceCreationExpression
Arguments ::= "(" ArgumentList ")"
MethodDeclarator ::= Identifier "(" FormalParameterList ")"
MethodDeclarator ::= MethodDeclarator "[" "]"
VariableDeclaratorId ::= Identifier
VariableDeclaratorId ::= VariableDeclaratorId "[" "]"
IntegralType ::=
"byte"IntegralType ::=
"short"IntegralType ::=
"int"IntegralType ::=
"long"IntegralType ::=
"char"UnaryExpression ::= PreIncrementExpression
UnaryExpression ::= PreDecrementExpression
UnaryExpression ::=
"+" UnaryExpressionUnaryExpression ::=
"-" UnaryExpressionUnaryExpression ::= UnaryExpressionNotPlusMinus
NumericType ::= IntegralType
NumericType ::= FloatingPointType
AnnotationTypeBody ::= "{" AnnotationTypeElementDeclarations "}"
LeftHandSide ::= ExpressionName
LeftHandSide ::= FieldAccess
LeftHandSide ::= ArrayAccess
IfThenElseStatementNoShortIf ::= "if" "(" Expression ")" StatementNoShortIf "else" StatementNoShortIf
LocalVariableDeclarationStatement ::=
LocalVariableDeclaration ";"CastExpression ::= "(" PrimitiveType Dims ")" UnaryExpression
CastExpression ::= "(" ReferenceType ")" UnaryExpressionNotPlusMinus
ShiftExpression ::= AdditiveExpression
ShiftExpression ::=
ShiftExpression "<<" AdditiveExpressionShiftExpression ::=
ShiftExpression ">>" AdditiveExpressionShiftExpression ::=
ShiftExpression ">>>" AdditiveExpressionFieldModifiers ::= FieldModifier
FieldModifiers ::= FieldModifiers FieldModifier
MethodBody ::= Block
MethodBody ::=
";"TypeVariable ::= Identifier
DefaultValue ::=
"default" ElementValueCatches ::= CatchClause
Catches ::= Catches CatchClause
ResultType ::= Type
ResultType ::=
"void"ConstructorModifiers ::= ConstructorModifier
ConstructorModifiers ::= ConstructorModifiers ConstructorModifier
StaticImportOnDemandDeclaration ::= "import" "static" TypeName "." "*" ";"
EnumBody ::= EnumConstants "," EnumBodyDeclarations
ReferenceType ::= ClassOrInterfaceType
ReferenceType ::= TypeVariable
ReferenceType ::= ArrayType
ClassModifiers ::= ClassModifier
ClassModifiers ::= ClassModifiers ClassModifier
ForStatementNoShortIf ::= "for" "(" ForInit ";" Expression ";" ForUpdate ")" StatementNoShortIf
MethodHeader ::= MethodModifiers TypeParameters ResultType MethodDeclarator Throws
LabeledStatementNoShortIf ::=
Identifier ":" StatementNoShortIfInterfaceBody ::= "{" InterfaceMemberDeclarations "}"
ConstantModifiers ::= ConstantModifier
ConstantModifiers ::= ConstantModifier ConstantModifiers
SingleElementAnnotation ::= "@" TypeName "(" ElementValue ")"
EnumConstantName ::= Identifier
TypeDeclarations ::= TypeDeclaration
TypeDeclarations ::= TypeDeclarations TypeDeclaration
FieldModifier ::= Annotation
FieldModifier ::=
"public"FieldModifier ::=
"protected"FieldModifier ::=
"private"FieldModifier ::=
"static"FieldModifier ::=
"final"FieldModifier ::=
"transient"FieldModifier ::=
"volatile"AnnotationTypeElementDeclaration ::= AbstractMethodModifiers Type Identifier "(" ")" Dims DefaultValue ";"
AnnotationTypeElementDeclaration ::= ConstantDeclaration
AnnotationTypeElementDeclaration ::= ClassDeclaration
AnnotationTypeElementDeclaration ::= InterfaceDeclaration
AnnotationTypeElementDeclaration ::= EnumDeclaration
AnnotationTypeElementDeclaration ::= AnnotationTypeDeclaration
AnnotationTypeElementDeclaration ::=
";"DimExprs ::= DimExpr
DimExprs ::= DimExprs DimExpr
SingleStaticImportDeclaration ::= "import" "static" TypeName "." Identifier ";"
InterfaceDeclaration ::= NormalInterfaceDeclaration
InterfaceDeclaration ::= AnnotationTypeDeclaration
NormalInterfaceDeclaration ::= InterfaceModifiers "interface" Identifier ExtendsInterfaces InterfaceBody
ElementValueArrayInitializer ::= "{" ElementValues "," "}"
TypeParameters ::= "<" TypeParameterList ">"
TypeParameterList ::=
TypeParameterList "," TypeParameterTypeParameterList ::= TypeParameter
ClassName ::= Identifier
ClassName ::=
AmbiguousName "." Identifier