
Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: java/java-2/jls/read/extracted
Source used for this grammar: James Gosling, Bill Joy, Guy Steele, Gilad Bracha, Java Language Specification, 2nd edition, 1998 [HTML] [PDF]
ClassBodyDeclarations, PostDecrementExpression, ExpressionStatement, PrimitiveType, InterfaceTypeList, InterfaceDeclaration, Statement, AndExpression, ConstructorBody, ArgumentList, MethodName, ClassMemberDeclaration, Assignment, Interfaces, CatchClause, AbstractMethodModifiers, PostIncrementExpression, TypeName, InterfaceType, BlockStatement, IfThenStatement, SwitchBlockStatementGroups, ClassModifier, SingleTypeImportDeclaration, ConstantDeclaration, PreIncrementExpression, ExplicitConstructorInvocation, UnaryExpression, VariableInitializers, DimExpr, Throws, BlockStatements, InterfaceModifiers, ClassTypeList, PrimaryNoNewArray, AssignmentOperator, Literal, FieldDeclaration, ReturnStatement, VariableDeclarator, PostfixExpression, SwitchLabel, ConstantModifier, FormalParameter, PackageName, ConditionalAndExpression, MethodModifiers, Type, EqualityExpression, InterfaceMemberDeclaration, MultiplicativeExpression, BreakStatement, ConstructorModifier, SynchronizedStatement, ClassInstanceCreationExpression, Super, ArrayCreationExpression, ArrayInitializer, InterfaceModifier, UnaryExpressionNotPlusMinus, SwitchBlock, EmptyStatement, StatementNoShortIf, MethodInvocation, AbstractMethodDeclaration, IfThenElseStatement, ArrayAccess, Block, ForUpdate, ForInit, VariableDeclarators, ThrowStatement, ExclusiveOrExpression, Primary, PackageDeclaration, RelationalExpression, WhileStatementNoShortIf, ExtendsInterfaces, AbstractMethodModifier, ConstantExpression, VariableInitializer, StaticInitializer, Finally, ConstructorDeclaration, TypeImportOnDemandDeclaration, PreDecrementExpression, InterfaceMemberDeclarations, ForStatement, PackageOrTypeName, AmbiguousName, ContinueStatement, ImportDeclaration, CompilationUnit, SwitchStatement, Dims, ClassBody, ConditionalOrExpression, ClassBodyDeclaration, SwitchBlockStatementGroup, MethodDeclaration, MethodModifier, DoStatement, ConditionalExpression, ClassOrInterfaceType, InstanceInitializer, TryStatement, SwitchLabels, FormalParameterList, Expression, StatementExpressionList, AdditiveExpression, FloatingPointType, LocalVariableDeclaration, ConstructorDeclarator, InclusiveOrExpression, ClassType, WhileStatement, ClassDeclaration, AssignmentExpression, CastExpression, ImportDeclarations, TypeDeclaration, LabeledStatement, ExpressionName, ArrayType, StatementExpression, MethodDeclarator, VariableDeclaratorId, IntegralType, NumericType, LeftHandSide, IfThenElseStatementNoShortIf, LocalVariableDeclarationStatement, ShiftExpression, FieldModifiers, MethodBody, Catches, ResultType, ConstructorModifiers, ReferenceType, ClassModifiers, ForStatementNoShortIf, MethodHeader, LabeledStatementNoShortIf, InterfaceBody, ConstantModifiers, FieldAccess, TypeDeclarations, FieldModifier, StatementWithoutTrailingSubstatement, DimExprs), 0 root (—), 1 top (CompilationUnit), 11 bottom (StringLiteral, Identifer, SimpleTypeName, IntegerLiteral, Identifier 26, NullLiteral, ConstantModifer, BooleanLiteral, CharacterLiteral, FloatingPointLiteral, ClassName 2).ClassBodyDeclarations ::= ClassBodyDeclaration
ClassBodyDeclarations ::= ClassBodyDeclarations ClassBodyDeclaration
PostDecrementExpression ::=
PostfixExpression "--"ExpressionStatement ::=
StatementExpression ";"PrimitiveType ::= NumericType
PrimitiveType ::=
"boolean"InterfaceTypeList ::= InterfaceType
InterfaceTypeList ::=
InterfaceTypeList "," InterfaceTypeInterfaceDeclaration ::= InterfaceModifiers "interface" Identifier ExtendsInterfaces InterfaceBody
Statement ::= StatementWithoutTrailingSubstatement
Statement ::= LabeledStatement
Statement ::= IfThenStatement
Statement ::= IfThenElseStatement
Statement ::= WhileStatement
Statement ::= ForStatement
AndExpression ::= EqualityExpression
AndExpression ::=
AndExpression "&" EqualityExpressionConstructorBody ::= ExplicitConstructorInvocation BlockStatements
ArgumentList ::= 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
PostIncrementExpression ::=
PostfixExpression "++"TypeName ::= Identifier
TypeName ::=
PackageOrTypeName "." IdentifierInterfaceType ::= TypeName
BlockStatement ::= LocalVariableDeclarationStatement
BlockStatement ::= ClassDeclaration
BlockStatement ::= Statement
IfThenStatement ::= "if" "(" Expression ")" Statement
SwitchBlockStatementGroups ::= SwitchBlockStatementGroup
SwitchBlockStatementGroups ::= SwitchBlockStatementGroups SwitchBlockStatementGroup
ClassModifier ::=
"public"ClassModifier ::=
"protected"ClassModifier ::=
"private"ClassModifier ::=
"abstract"ClassModifier ::=
"static"ClassModifier ::=
"final"ClassModifier ::=
"strictfp"SingleTypeImportDeclaration ::= "import" TypeName ";"
ConstantDeclaration ::=
ConstantModifiers Type VariableDeclaratorsPreIncrementExpression ::=
"++" UnaryExpressionExplicitConstructorInvocation ::= "this" "(" ArgumentList ")" ";"
ExplicitConstructorInvocation ::= "super" "(" ArgumentList ")" ";"
ExplicitConstructorInvocation ::= Primary "." "super" "(" ArgumentList ")" ";"
UnaryExpression ::= PreIncrementExpression
UnaryExpression ::= PreDecrementExpression
UnaryExpression ::=
"+" UnaryExpressionUnaryExpression ::=
"-" UnaryExpressionUnaryExpression ::= UnaryExpressionNotPlusMinus
VariableInitializers ::= VariableInitializer
VariableInitializers ::=
VariableInitializers "," VariableInitializerDimExpr ::= "[" Expression "]"
Throws ::=
"throws" ClassTypeListBlockStatements ::= BlockStatement
BlockStatements ::= BlockStatements BlockStatement
InterfaceModifiers ::= InterfaceModifier
InterfaceModifiers ::= InterfaceModifiers InterfaceModifier
ClassTypeList ::= ClassType
ClassTypeList ::=
ClassTypeList "," ClassTypePrimaryNoNewArray ::= 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 ::=
"|="Literal ::= IntegerLiteral
Literal ::= FloatingPointLiteral
Literal ::= BooleanLiteral
Literal ::= CharacterLiteral
Literal ::= StringLiteral
Literal ::= NullLiteral
FieldDeclaration ::= FieldModifiers Type VariableDeclarators ";"
ReturnStatement ::= "return" Expression ";"
VariableDeclarator ::= VariableDeclaratorId
VariableDeclarator ::=
VariableDeclaratorId "=" VariableInitializerPostfixExpression ::= Primary
PostfixExpression ::= ExpressionName
PostfixExpression ::= PostIncrementExpression
PostfixExpression ::= PostDecrementExpression
SwitchLabel ::= "case" ConstantExpression ":"
SwitchLabel ::= "default" ":"
ConstantModifier ::=
"public"ConstantModifier ::=
"static"ConstantModifier ::=
"final"FormalParameter ::= "final" Type VariableDeclaratorId
PackageName ::= Identifier
PackageName ::=
PackageName "." IdentifierConditionalAndExpression ::= 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 "%" UnaryExpressionBreakStatement ::= "break" Identifier ";"
ConstructorModifier ::=
"public"ConstructorModifier ::=
"protected"ConstructorModifier ::=
"private"SynchronizedStatement ::= "synchronized" "(" Expression ")" Block
ClassInstanceCreationExpression ::= "new" ClassOrInterfaceType "(" ArgumentList ")" ClassBody
ClassInstanceCreationExpression ::= Primary "." "new" Identifier "(" ArgumentList ")" ClassBody
Super ::=
"extends" ClassTypeArrayCreationExpression ::= "new" PrimitiveType DimExprs Dims
ArrayCreationExpression ::= "new" TypeName DimExprs Dims
ArrayCreationExpression ::=
"new" PrimitiveType Dims ArrayInitializerArrayCreationExpression ::=
"new" TypeName Dims ArrayInitializerArrayInitializer ::= "{" VariableInitializers "," "}"
InterfaceModifier ::=
"public"InterfaceModifier ::=
"protected"InterfaceModifier ::=
"private"InterfaceModifier ::=
"abstract"InterfaceModifier ::=
"static"InterfaceModifier ::=
"strictfp"UnaryExpressionNotPlusMinus ::= PostfixExpression
UnaryExpressionNotPlusMinus ::=
"~" UnaryExpressionUnaryExpressionNotPlusMinus ::=
"!" UnaryExpressionUnaryExpressionNotPlusMinus ::= CastExpression
SwitchBlock ::= SwitchBlockStatementGroups SwitchLabels
EmptyStatement ::=
";"StatementNoShortIf ::= StatementWithoutTrailingSubstatement
StatementNoShortIf ::= LabeledStatementNoShortIf
StatementNoShortIf ::= IfThenElseStatementNoShortIf
StatementNoShortIf ::= WhileStatementNoShortIf
StatementNoShortIf ::= ForStatementNoShortIf
MethodInvocation ::= MethodName "(" ArgumentList ")"
MethodInvocation ::= Primary "." Identifier "(" ArgumentList ")"
MethodInvocation ::= "super" "." Identifier "(" ArgumentList ")"
MethodInvocation ::= ClassName "." "super" "." Identifier "(" ArgumentList ")"
AbstractMethodDeclaration ::= AbstractMethodModifiers ResultType MethodDeclarator Throws ";"
IfThenElseStatement ::= "if" "(" Expression ")" StatementNoShortIf "else" Statement
ArrayAccess ::= ExpressionName "[" Expression "]"
ArrayAccess ::= PrimaryNoNewArray "[" Expression "]"
Block ::= BlockStatements
ForUpdate ::= StatementExpressionList
ForInit ::= StatementExpressionList
ForInit ::= LocalVariableDeclaration
VariableDeclarators ::= VariableDeclarator
VariableDeclarators ::=
VariableDeclarators "," VariableDeclaratorThrowStatement ::= "throw" Expression ";"
ExclusiveOrExpression ::= AndExpression
ExclusiveOrExpression ::=
ExclusiveOrExpression "^" AndExpressionPrimary ::= PrimaryNoNewArray
Primary ::= ArrayCreationExpression
PackageDeclaration ::= "package" PackageName ";"
RelationalExpression ::= ShiftExpression
RelationalExpression ::=
RelationalExpression "<" ShiftExpressionRelationalExpression ::=
RelationalExpression ">" ShiftExpressionRelationalExpression ::=
RelationalExpression "<=" ShiftExpressionRelationalExpression ::=
RelationalExpression ">=" ShiftExpressionRelationalExpression ::=
RelationalExpression "instanceof" ReferenceTypeWhileStatementNoShortIf ::= "while" "(" Expression ")" StatementNoShortIf
ExtendsInterfaces ::=
"extends" InterfaceTypeExtendsInterfaces ::=
ExtendsInterfaces "," InterfaceTypeAbstractMethodModifier ::=
"public"AbstractMethodModifier ::=
"abstract"ConstantExpression ::= Expression
VariableInitializer ::= Expression
VariableInitializer ::= ArrayInitializer
StaticInitializer ::=
"static" BlockFinally ::=
"finally" BlockConstructorDeclaration ::= ConstructorModifiers ConstructorDeclarator Throws ConstructorBody
TypeImportOnDemandDeclaration ::= "import" PackageOrTypeName "." "*" ";"
PreDecrementExpression ::=
"--" UnaryExpressionInterfaceMemberDeclarations ::= InterfaceMemberDeclaration
InterfaceMemberDeclarations ::= InterfaceMemberDeclarations InterfaceMemberDeclaration
ForStatement ::= "for" "(" ForInit ";" Expression ";" ForUpdate ")" Statement
PackageOrTypeName ::= Identifier
PackageOrTypeName ::=
PackageOrTypeName "." IdentifierAmbiguousName ::= Identifier
AmbiguousName ::=
AmbiguousName "." IdentifierContinueStatement ::= "continue" Identifier ";"
ImportDeclaration ::= SingleTypeImportDeclaration
ImportDeclaration ::= TypeImportOnDemandDeclaration
CompilationUnit ::= PackageDeclaration ImportDeclarations TypeDeclarations
SwitchStatement ::= "switch" "(" Expression ")" SwitchBlock
Dims ::= "[" "]"
Dims ::= Dims "[" "]"
ClassBody ::= ClassBodyDeclarations
ConditionalOrExpression ::= ConditionalAndExpression
ConditionalOrExpression ::=
ConditionalOrExpression "||" ConditionalAndExpressionClassBodyDeclaration ::= ClassMemberDeclaration
ClassBodyDeclaration ::= InstanceInitializer
ClassBodyDeclaration ::= StaticInitializer
ClassBodyDeclaration ::= ConstructorDeclaration
SwitchBlockStatementGroup ::= SwitchLabels BlockStatements
MethodDeclaration ::= MethodHeader MethodBody
MethodModifier ::=
"public"MethodModifier ::=
"protected"MethodModifier ::=
"private"MethodModifier ::=
"abstract"MethodModifier ::=
"static"MethodModifier ::=
"final"MethodModifier ::=
"synchronized"MethodModifier ::=
"native"MethodModifier ::=
"strictfp"DoStatement ::= "do" Statement "while" "(" Expression ")" ";"
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
FormalParameterList ::= FormalParameter
FormalParameterList ::=
FormalParameterList "," FormalParameterExpression ::= AssignmentExpression
StatementExpressionList ::= StatementExpression
StatementExpressionList ::=
StatementExpressionList "," StatementExpressionAdditiveExpression ::= MultiplicativeExpression
AdditiveExpression ::=
AdditiveExpression "+" MultiplicativeExpressionAdditiveExpression ::=
AdditiveExpression "-" MultiplicativeExpressionFloatingPointType ::=
"float"FloatingPointType ::=
"double"LocalVariableDeclaration ::= "final" Type VariableDeclarators
ConstructorDeclarator ::= SimpleTypeName "(" FormalParameterList ")"
InclusiveOrExpression ::= ExclusiveOrExpression
InclusiveOrExpression ::=
InclusiveOrExpression "|" ExclusiveOrExpressionClassType ::= TypeName
WhileStatement ::= "while" "(" Expression ")" Statement
ClassDeclaration ::= ClassModifiers "class" Identifier Super Interfaces ClassBody
AssignmentExpression ::= ConditionalExpression
AssignmentExpression ::= Assignment
CastExpression ::= "(" PrimitiveType ")" UnaryExpression
CastExpression ::= "(" ReferenceType ")" UnaryExpressionNotPlusMinus
CastExpression ::= "(" PrimitiveType Dims ")" UnaryExpression
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
MethodDeclarator ::= Identifer "(" FormalParameterList ")"
MethodDeclarator ::= MethodDeclarator "[" "]"
VariableDeclaratorId ::= Identifier
VariableDeclaratorId ::= VariableDeclaratorId "[" "]"
IntegralType ::=
"byte"IntegralType ::=
"short"IntegralType ::=
"int"IntegralType ::=
"long"IntegralType ::=
"char"NumericType ::= IntegralType
NumericType ::= FloatingPointType
LeftHandSide ::= ExpressionName
LeftHandSide ::= FieldAccess
LeftHandSide ::= ArrayAccess
IfThenElseStatementNoShortIf ::= "if" "(" Expression ")" StatementNoShortIf "else" StatementNoShortIf
LocalVariableDeclarationStatement ::=
LocalVariableDeclaration ";"ShiftExpression ::= AdditiveExpression
ShiftExpression ::=
ShiftExpression "<<" AdditiveExpressionShiftExpression ::=
ShiftExpression ">>" AdditiveExpressionShiftExpression ::=
ShiftExpression ">>>" AdditiveExpressionFieldModifiers ::= FieldModifier
FieldModifiers ::= FieldModifiers FieldModifier
MethodBody ::= Block
MethodBody ::=
";"Catches ::= CatchClause
Catches ::= Catches CatchClause
ResultType ::= Type
ResultType ::=
"void"ConstructorModifiers ::= ConstructorModifier
ConstructorModifiers ::= ConstructorModifiers ConstructorModifier
ReferenceType ::= ClassOrInterfaceType
ReferenceType ::= ArrayType
ClassModifiers ::= ClassModifier
ClassModifiers ::= ClassModifiers ClassModifier
ForStatementNoShortIf ::= "for" "(" ForInit ";" Expression ";" ForUpdate ")" StatementNoShortIf
MethodHeader ::= MethodModifiers ResultType MethodDeclarator Throws
LabeledStatementNoShortIf ::=
Identifier ":" StatementNoShortIfInterfaceBody ::= InterfaceMemberDeclarations
ConstantModifiers ::= ConstantModifier
ConstantModifiers ::= ConstantModifiers ConstantModifer
FieldAccess ::=
Primary "." IdentifierFieldAccess ::= "super" "." Identifier
FieldAccess ::= ClassName "." "super" "." Identifier
TypeDeclarations ::= TypeDeclaration
TypeDeclarations ::= TypeDeclarations TypeDeclaration
FieldModifier ::=
"public"FieldModifier ::=
"protected"FieldModifier ::=
"private"FieldModifier ::=
"static"FieldModifier ::=
"final"FieldModifier ::=
"transient"FieldModifier ::=
"volatile"StatementWithoutTrailingSubstatement ::= Block
StatementWithoutTrailingSubstatement ::= EmptyStatement
StatementWithoutTrailingSubstatement ::= ExpressionStatement
StatementWithoutTrailingSubstatement ::= SwitchStatement
StatementWithoutTrailingSubstatement ::= DoStatement
StatementWithoutTrailingSubstatement ::= BreakStatement
StatementWithoutTrailingSubstatement ::= ContinueStatement
StatementWithoutTrailingSubstatement ::= ReturnStatement
StatementWithoutTrailingSubstatement ::= SynchronizedStatement
StatementWithoutTrailingSubstatement ::= ThrowStatement
StatementWithoutTrailingSubstatement ::= TryStatement
DimExprs ::= DimExpr
DimExprs ::= DimExprs DimExpr