
Grammar extracted by Vadim Zaytsev, see the Grammar Zoo entry for details: java/java-5/habelitz/extracted
Source used for this grammar: Dieter Habelitz, Java.g, 2008 [ANTLR3]
javaSource, compilationUnit, annotationList, annotation, AT, qualifiedIdentifier, IDENT, JAVA_ID_START, JAVA_ID_PART, DOT, annotationInit, LPAREN, annotationInitializers, annotationInitializer, ASSIGN, annotationElementValue, annotationElementValueExpression, conditionalExpression, logicalOrExpression, logicalAndExpression, inclusiveOrExpression, exclusiveOrExpression, andExpression, equalityExpression, instanceOfExpression, relationalExpression, shiftExpression, additiveExpression, multiplicativeExpression, unaryExpression, PLUS, MINUS, INC, postfixedExpression, primaryExpression, parenthesizedExpression, expression, assignmentExpression, PLUS_ASSIGN, MINUS_ASSIGN, STAR_ASSIGN, DIV_ASSIGN, AND_ASSIGN, OR_ASSIGN, XOR_ASSIGN, MOD_ASSIGN, SHIFT_LEFT_ASSIGN, SHIFT_RIGHT_ASSIGN, BIT_SHIFT_RIGHT_ASSIGN, RPAREN, literal, HEX_LITERAL, HEX_DIGIT, INTEGER_TYPE_SUFFIX, OCTAL_LITERAL, DECIMAL_LITERAL, FLOATING_POINT_LITERAL, EXPONENT, FLOAT_TYPE_SUFFIX, CHARACTER_LITERAL, ESCAPE_SEQUENCE, UNICODE_ESCAPE, OCTAL_ESCAPE, STRING_LITERAL, TRUE, FALSE, NULL, newExpression, NEW, primitiveType, BOOLEAN, CHAR, BYTE, SHORT, INT, LONG, FLOAT, DOUBLE, newArrayConstruction, arrayDeclaratorList, arrayDeclarator, LBRACK, RBRACK, arrayInitializer, LCURLY, variableInitializer, COMMA, RCURLY, genericTypeArgumentListSimplified, LESS_THAN, genericTypeArgumentSimplified, type, simpleType, objectType, qualifiedTypeIdent, typeIdent, genericTypeArgumentList, genericTypeArgument, QUESTION, genericWildcardBoundType, EXTENDS, SUPER, genericTypeListClosing, GREATER_THAN, SHIFT_RIGHT, BIT_SHIFT_RIGHT, qualifiedTypeIdentSimplified, typeIdentSimplified, arguments, expressionList, classBody, classScopeDeclarations, block, blockStatement, localVariableDeclaration, localModifierList, localModifier, FINAL, classFieldDeclaratorList, classFieldDeclarator, variableDeclaratorId, SEMI, typeDeclaration, modifierList, modifier, PUBLIC, PROTECTED, PRIVATE, STATIC, ABSTRACT, NATIVE, SYNCHRONIZED, TRANSIENT, VOLATILE, STRICTFP, classTypeDeclaration, CLASS, genericTypeParameterList, genericTypeParameter, bound, AND, classExtendsClause, implementsClause, IMPLEMENTS, typeList, interfaceTypeDeclaration, INTERFACE, interfaceExtendsClause, interfaceBody, interfaceScopeDeclarations, formalParameterList, formalParameterStandardDecl, formalParameterVarArgDecl, ELLIPSIS, throwsClause, THROWS, qualifiedIdentList, VOID, interfaceFieldDeclaratorList, interfaceFieldDeclarator, enumTypeDeclaration, ENUM, enumBody, enumScopeDeclarations, enumConstants, enumConstant, enumClassScopeDeclarations, annotationTypeDeclaration, annotationBody, annotationScopeDeclarations, annotationDefaultValue, DEFAULT, statement, ASSERT, COLON, IF, ELSE, FOR, forInit, forCondition, forUpdater, WHILE, DO, TRY, catches, catchClause, CATCH, finallyClause, FINALLY, SWITCH, switchBlockLabels, switchCaseLabels, switchCaseLabel, CASE, switchDefaultLabel, RETURN, THROW, BREAK, CONTINUE, qualifiedIdentExpression, THIS, innerNewExpression, DEC, unaryExpressionNotPlusMinus, NOT, LOGICAL_NOT, STAR, DIV, MOD, SHIFT_LEFT, LESS_OR_EQUAL, GREATER_OR_EQUAL, INSTANCEOF, EQUAL, NOT_EQUAL, XOR, OR, LOGICAL_AND, LOGICAL_OR, annotationElementValueArrayInitializer, packageDeclaration, PACKAGE, importDeclaration, IMPORT, DOTSTAR, typeDecls), 1 root (javaSource), 0 top (—), 0 bottom (—).[ident] 2, [outerDot] 2, [Super] 3, [innerDot] 2, [expr1], [expr2], [ifStat], [elseStat].javaSource ::= compilationUnit
compilationUnit ::= annotationList packageDeclaration importDeclaration typeDecls
annotationList ::=
annotationannotation ::=
AT qualifiedIdentifier annotationInitAT ::=
"@"qualifiedIdentifier ::= IDENT DOT [ident]::IDENT
IDENT ::=
JAVA_ID_START JAVA_ID_PARTJAVA_ID_START ::= "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
JAVA_ID_PART ::= JAVA_ID_START "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
DOT ::=
"."annotationInit ::= LPAREN annotationInitializers RPAREN
LPAREN ::=
"("annotationInitializers ::= annotationInitializer COMMA annotationInitializer annotationElementValue
annotationInitializer ::= IDENT ASSIGN annotationElementValue
ASSIGN ::=
"="annotationElementValue ::= annotationElementValueExpression annotation annotationElementValueArrayInitializer
annotationElementValueExpression ::= conditionalExpression
conditionalExpression ::= logicalOrExpression QUESTION assignmentExpression COLON conditionalExpression
logicalOrExpression ::= logicalAndExpression LOGICAL_OR logicalAndExpression
logicalAndExpression ::= inclusiveOrExpression LOGICAL_AND inclusiveOrExpression
inclusiveOrExpression ::= exclusiveOrExpression OR exclusiveOrExpression
exclusiveOrExpression ::= andExpression XOR andExpression
andExpression ::= equalityExpression AND equalityExpression
equalityExpression ::= instanceOfExpression EQUALNOT_EQUAL instanceOfExpression
instanceOfExpression ::= relationalExpression INSTANCEOF type
relationalExpression ::= shiftExpression LESS_OR_EQUALGREATER_OR_EQUALLESS_THANGREATER_THAN shiftExpression
shiftExpression ::= additiveExpression BIT_SHIFT_RIGHTSHIFT_RIGHTSHIFT_LEFT additiveExpression
additiveExpression ::= multiplicativeExpression PLUSMINUS multiplicativeExpression
multiplicativeExpression ::= unaryExpression STARDIVMOD unaryExpression
unaryExpression ::= PLUS unaryExpression MINUS unaryExpression INC postfixedExpression DEC postfixedExpression unaryExpressionNotPlusMinus
PLUS ::=
"+"MINUS ::=
"-"INC ::=
"++"postfixedExpression ::= primaryExpression [outerDot]::DOT genericTypeArgumentListSimplified IDENT argumentsTHIS[Super]::SUPER argumentsSUPER [innerDot]::DOT IDENT argumentsinnerNewExpressionLBRACK expression RBRACK INCDEC
primaryExpression ::= parenthesizedExpression literal newExpression qualifiedIdentExpression genericTypeArgumentListSimplified SUPER argumentsDOT IDENT argumentsIDENT argumentsTHIS arguments THIS arguments SUPER arguments SUPER DOT IDENT argumentsε primitiveType arrayDeclarator DOT CLASS VOID DOT CLASS
parenthesizedExpression ::= LPAREN expression RPAREN
expression ::= assignmentExpression
assignmentExpression ::= conditionalExpression ASSIGNPLUS_ASSIGNMINUS_ASSIGNSTAR_ASSIGNDIV_ASSIGNAND_ASSIGNOR_ASSIGNXOR_ASSIGNMOD_ASSIGNSHIFT_LEFT_ASSIGNSHIFT_RIGHT_ASSIGNBIT_SHIFT_RIGHT_ASSIGN assignmentExpression
PLUS_ASSIGN ::=
"+="MINUS_ASSIGN ::=
"-="STAR_ASSIGN ::=
"*="DIV_ASSIGN ::=
"/="AND_ASSIGN ::=
"&="OR_ASSIGN ::=
"|="XOR_ASSIGN ::=
"^="MOD_ASSIGN ::=
"%="SHIFT_LEFT_ASSIGN ::=
"<<="SHIFT_RIGHT_ASSIGN ::=
">>="BIT_SHIFT_RIGHT_ASSIGN ::=
">>>="RPAREN ::=
")"literal ::= HEX_LITERAL OCTAL_LITERAL DECIMAL_LITERAL FLOATING_POINT_LITERAL CHARACTER_LITERAL STRING_LITERAL TRUE FALSE NULL
HEX_LITERAL ::= "0" "x""X" HEX_DIGIT INTEGER_TYPE_SUFFIX
HEX_DIGIT ::= "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "a" "b" "c" "d" "e" "f" "A" "B" "C" "D" "E" "F"
INTEGER_TYPE_SUFFIX ::= "l" "L"
OCTAL_LITERAL ::= "0" "0""1""2""3""4""5""6""7" INTEGER_TYPE_SUFFIX
DECIMAL_LITERAL ::= "0""1""2""3""4""5""6""7""8""9" "0""1""2""3""4""5""6""7""8""9" INTEGER_TYPE_SUFFIX
FLOATING_POINT_LITERAL ::= "0""1""2""3""4""5""6""7""8""9" DOT "0""1""2""3""4""5""6""7""8""9" EXPONENT FLOAT_TYPE_SUFFIXEXPONENT FLOAT_TYPE_SUFFIXFLOAT_TYPE_SUFFIX DOT "0""1""2""3""4""5""6""7""8""9" EXPONENT FLOAT_TYPE_SUFFIX
EXPONENT ::= "e""E" "+""-" "0""1""2""3""4""5""6""7""8""9"
FLOAT_TYPE_SUFFIX ::= "f" "F" "d" "D"
CHARACTER_LITERAL ::= "\'" ESCAPE_SEQUENCEstring "\'"
ESCAPE_SEQUENCE ::= "\\" "b""t""n""f""r""\"""\'""\\" UNICODE_ESCAPE OCTAL_ESCAPE
UNICODE_ESCAPE ::= "\\" "u" HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
OCTAL_ESCAPE ::= "0""1""2""3" "0""1""2""3""4""5""6""7" "0""1""2""3""4""5""6""7" "\\" "0""1""2""3""4""5""6""7" "0""1""2""3""4""5""6""7" "\\" "0""1""2""3""4""5""6""7"
STRING_LITERAL ::= """ ESCAPE_SEQUENCEstring """
TRUE ::=
"true"FALSE ::=
"false"NULL ::=
"null"newExpression ::= NEW primitiveType newArrayConstructiongenericTypeArgumentListSimplified qualifiedTypeIdentSimplified newArrayConstructionarguments classBody
NEW ::=
"new"primitiveType ::= BOOLEAN CHAR BYTE SHORT INT LONG FLOAT DOUBLE
BOOLEAN ::=
"boolean"CHAR ::=
"char"BYTE ::=
"byte"SHORT ::=
"short"INT ::=
"int"LONG ::=
"long"FLOAT ::=
"float"DOUBLE ::=
"double"newArrayConstruction ::= arrayDeclaratorList arrayInitializer LBRACK expression RBRACK LBRACK expression RBRACK arrayDeclaratorList
arrayDeclaratorList ::=
arrayDeclaratorarrayDeclarator ::= LBRACK RBRACK
LBRACK ::=
"["RBRACK ::=
"]"arrayInitializer ::= LCURLY variableInitializer COMMA variableInitializer COMMA RCURLY
LCURLY ::=
"{"variableInitializer ::= arrayInitializer expression
COMMA ::=
","RCURLY ::=
"}"genericTypeArgumentListSimplified ::= LESS_THAN genericTypeArgumentSimplified COMMA genericTypeArgumentSimplified genericTypeListClosing
LESS_THAN ::=
"<"genericTypeArgumentSimplified ::= type QUESTION
type ::= simpleType objectType
simpleType ::=
primitiveType arrayDeclaratorListobjectType ::=
qualifiedTypeIdent arrayDeclaratorListqualifiedTypeIdent ::= typeIdent DOT typeIdent
typeIdent ::=
IDENT genericTypeArgumentListgenericTypeArgumentList ::= LESS_THAN genericTypeArgument COMMA genericTypeArgument genericTypeListClosing
genericTypeArgument ::=
type
QUESTION genericWildcardBoundTypeQUESTION ::=
"?"genericWildcardBoundType ::= EXTENDSSUPER type
EXTENDS ::=
"extends"SUPER ::=
"super"genericTypeListClosing ::= GREATER_THAN SHIFT_RIGHT BIT_SHIFT_RIGHT ε
GREATER_THAN ::=
">"SHIFT_RIGHT ::=
">>"BIT_SHIFT_RIGHT ::=
">>>"qualifiedTypeIdentSimplified ::= typeIdentSimplified DOT typeIdentSimplified
typeIdentSimplified ::=
IDENT genericTypeArgumentListSimplifiedarguments ::=
LPAREN expressionList RPARENexpressionList ::= expression COMMA expression
classBody ::=
LCURLY classScopeDeclarations RCURLYclassScopeDeclarations ::= block STATIC block modifierList genericTypeParameterList type IDENT formalParameterList arrayDeclaratorList throwsClause blockSEMIVOID IDENT formalParameterList throwsClause blockSEMI[ident]::IDENT formalParameterList throwsClause blocktype classFieldDeclaratorList SEMI typeDeclaration SEMI
block ::=
LCURLY blockStatement RCURLYblockStatement ::= localVariableDeclaration SEMI typeDeclaration statement
localVariableDeclaration ::= localModifierList type classFieldDeclaratorList
localModifierList ::=
localModifierlocalModifier ::= FINAL annotation
FINAL ::=
"final"classFieldDeclaratorList ::= classFieldDeclarator COMMA classFieldDeclarator
classFieldDeclarator ::= variableDeclaratorId ASSIGN variableInitializer
variableDeclaratorId ::=
IDENT arrayDeclaratorListSEMI ::=
";"typeDeclaration ::= modifierList classTypeDeclarationinterfaceTypeDeclarationenumTypeDeclarationannotationTypeDeclaration
modifierList ::=
modifiermodifier ::= PUBLIC PROTECTED PRIVATE STATIC ABSTRACT NATIVE SYNCHRONIZED TRANSIENT VOLATILE STRICTFP localModifier
PUBLIC ::=
"public"PROTECTED ::=
"protected"PRIVATE ::=
"private"STATIC ::=
"static"ABSTRACT ::=
"abstract"NATIVE ::=
"native"SYNCHRONIZED ::=
"synchronized"TRANSIENT ::=
"transient"VOLATILE ::=
"volatile"STRICTFP ::=
"strictfp"classTypeDeclaration ::= CLASS IDENT genericTypeParameterList classExtendsClause implementsClause classBody
CLASS ::=
"class"genericTypeParameterList ::= LESS_THAN genericTypeParameter COMMA genericTypeParameter genericTypeListClosing
genericTypeParameter ::=
IDENT boundbound ::= EXTENDS type AND type
AND ::=
"&"classExtendsClause ::= EXTENDS type
implementsClause ::= IMPLEMENTS typeList
IMPLEMENTS ::=
"implements"typeList ::= type COMMA type
interfaceTypeDeclaration ::= INTERFACE IDENT genericTypeParameterList interfaceExtendsClause interfaceBody
INTERFACE ::=
"interface"interfaceExtendsClause ::= EXTENDS typeList
interfaceBody ::=
LCURLY interfaceScopeDeclarations RCURLYinterfaceScopeDeclarations ::= modifierList genericTypeParameterList type IDENT formalParameterList arrayDeclaratorList throwsClause SEMIVOID IDENT formalParameterList throwsClause SEMItype interfaceFieldDeclaratorList SEMI typeDeclaration SEMI
formalParameterList ::= LPAREN formalParameterStandardDecl COMMA formalParameterStandardDecl COMMA formalParameterVarArgDeclformalParameterVarArgDeclε RPAREN
formalParameterStandardDecl ::= localModifierList type variableDeclaratorId
formalParameterVarArgDecl ::= localModifierList type ELLIPSIS variableDeclaratorId
ELLIPSIS ::=
"..."throwsClause ::= THROWS qualifiedIdentList
THROWS ::=
"throws"qualifiedIdentList ::= qualifiedIdentifier COMMA qualifiedIdentifier
VOID ::=
"void"interfaceFieldDeclaratorList ::= interfaceFieldDeclarator COMMA interfaceFieldDeclarator
interfaceFieldDeclarator ::= variableDeclaratorId ASSIGN variableInitializer
enumTypeDeclaration ::=
ENUM IDENT implementsClause enumBodyENUM ::=
"enum"enumBody ::= LCURLY enumScopeDeclarations RCURLY
enumScopeDeclarations ::= enumConstants COMMA enumClassScopeDeclarations
enumConstants ::= enumConstant COMMA enumConstant
enumConstant ::= annotationList IDENT arguments classBody
enumClassScopeDeclarations ::=
SEMI classScopeDeclarationsannotationTypeDeclaration ::= AT INTERFACE IDENT annotationBody
annotationBody ::=
LCURLY annotationScopeDeclarations RCURLYannotationScopeDeclarations ::= modifierList type IDENT LPAREN RPAREN annotationDefaultValue SEMIclassFieldDeclaratorList SEMI typeDeclaration
annotationDefaultValue ::= DEFAULT annotationElementValue
DEFAULT ::=
"default"statement ::= block ASSERT [expr1]::expression COLON [expr2]::expression SEMISEMI IF parenthesizedExpression [ifStat]::statement ELSE [elseStat]::statementε FOR LPAREN forInit SEMI forCondition SEMI forUpdater RPAREN statementlocalModifierList type IDENT COLON expression RPAREN statement WHILE parenthesizedExpression statement DO statement WHILE parenthesizedExpression SEMI TRY block catches finallyClausefinallyClause SWITCH parenthesizedExpression LCURLY switchBlockLabels RCURLY SYNCHRONIZED parenthesizedExpression block RETURN expression SEMI THROW expression SEMI BREAK IDENT SEMI CONTINUE IDENT SEMI IDENT COLON statement expression SEMI SEMI
ASSERT ::=
"assert"COLON ::=
":"IF ::=
"if"ELSE ::=
"else"FOR ::=
"for"forInit ::= localVariableDeclaration expressionList ε
forCondition ::=
expressionforUpdater ::=
expressionListWHILE ::=
"while"DO ::=
"do"TRY ::=
"try"catches ::=
catchClausecatchClause ::= CATCH LPAREN formalParameterStandardDecl RPAREN block
CATCH ::=
"catch"finallyClause ::= FINALLY block
FINALLY ::=
"finally"SWITCH ::=
"switch"switchBlockLabels ::=
switchCaseLabels switchDefaultLabel switchCaseLabelsswitchCaseLabels ::=
switchCaseLabelswitchCaseLabel ::=
CASE expression COLON blockStatementCASE ::=
"case"switchDefaultLabel ::=
DEFAULT COLON blockStatementRETURN ::=
"return"THROW ::=
"throw"BREAK ::=
"break"CONTINUE ::=
"continue"qualifiedIdentExpression ::= qualifiedIdentifier arrayDeclarator DOT CLASSarguments[outerDot]::DOT CLASSgenericTypeArgumentListSimplified [Super]::SUPER argumentsSUPER [innerDot]::DOT IDENT argumentsIDENT argumentsTHIS[Super]::SUPER argumentsinnerNewExpression
THIS ::=
"this"innerNewExpression ::= NEW genericTypeArgumentListSimplified IDENT arguments classBody
DEC ::=
"--"unaryExpressionNotPlusMinus ::= NOT unaryExpression LOGICAL_NOT unaryExpression LPAREN type RPAREN unaryExpression postfixedExpression
NOT ::=
"~"LOGICAL_NOT ::=
"!"STAR ::=
"*"DIV ::=
"/"MOD ::=
"%"SHIFT_LEFT ::=
"<<"LESS_OR_EQUAL ::=
"<="GREATER_OR_EQUAL ::=
">="INSTANCEOF ::=
"instanceof"EQUAL ::=
"=="NOT_EQUAL ::=
"!="XOR ::=
"^"OR ::=
"|"LOGICAL_AND ::=
"&&"LOGICAL_OR ::=
"||"annotationElementValueArrayInitializer ::= LCURLY annotationElementValue COMMA annotationElementValue COMMA RCURLY
packageDeclaration ::= PACKAGE qualifiedIdentifier SEMI
PACKAGE ::=
"package"importDeclaration ::= IMPORT STATIC qualifiedIdentifier DOTSTAR SEMI
IMPORT ::=
"import"DOTSTAR ::=
".*"typeDecls ::= typeDeclaration SEMI