The Grammar of the Java Programming Language
Identifier:
IDENTIFIER
QualifiedIdentifier:
Identifier { . Identifier }
Literal:
IntegerLiteral
FloatingPointLiteral
CharacterLiteral
StringLiteral
BooleanLiteral
NullLiteral
Expression:
Expression1 [AssignmentOperator Expression1]]
AssignmentOperator: =
+=
-=
*=
/=
&=
|=
^=
%=
<<=
>>=
>>>=
Type:
Identifier [TypeArguments]{ . Identifier [TypeArguments]} {[]
}
BasicType
TypeArguments:
< TypeArgument {, TypeArgument} >
TypeArgument:
Type
? [( extends |
super ) Type]
StatementExpression:
Expression
ConstantExpression:
Expression
Expression1:
Expression2 [Expression1Rest]
Expression1Rest:
?
Expression :
Expression1
Expression2 :
Expression3 [Expression2Rest]
Expression2Rest:
{InfixOp Expression3}
Expression3 instanceof Type
InfixOp: ||
&&
|
^
&
==
!=
<
>
<=
>=
<<
>>
>>>
+
-
*
/
%
Expression3:
PrefixOp Expression3
(
Expression |
Type )
Expression3
Primary {Selector} {PostfixOp}
Primary:
ParExpression
NonWildcardTypeArguments (ExplicitGenericInvocationSuffix |
this
Arguments) this[Arguments] superSuperSuffix
Literal newCreator
Identifier { . Identifier }[ IdentifierSuffix]
BasicType {[]
} .class
void.class
IdentifierSuffix:
[
( ]
{[]
} .
class |
Expression ]
)
Arguments
. ( class |
ExplicitGenericInvocation |
this |
superArguments |
new[NonWildcardTypeArguments] InnerCreator )
ExplicitGenericInvocation:
NonWildcardTypeArguments ExplicitGenericInvocationSuffix
NonWildcardTypeArguments:
< TypeList >
ExplicitGenericInvocationSuffix:
super SuperSuffix
Identifier Arguments
PrefixOp: ++
--
!
~
+
-
PostfixOp: ++
--
Selector: Selector:
. Identifier [Arguments]
. ExplicitGenericInvocation
. this
.super SuperSuffix .
new [NonWildcardTypeArguments] InnerCreator
[ Expression ]
SuperSuffix:
Arguments
. Identifier [Arguments]
BasicType: byte short char int long float double boolean
Arguments:
( [Expression { , Expression }] )
Creator:
[NonWildcardTypeArguments] CreatedName ( ArrayCreatorRest |
ClassCreatorRest )
CreatedName:
Identifier [NonWildcardTypeArguments] {. Identifier
[NonWildcardTypeArguments]}
InnerCreator:
Identifier ClassCreatorRest
ArrayCreatorRest:
[
( ]
{[]
} ArrayInitializer |
Expression ]
{[
Expression ]
} {[]
} )
ClassCreatorRest:
Arguments [ClassBody]
ArrayInitializer:
{ [VariableInitializer {, VariableInitializer} [,]] }
VariableInitializer:
ArrayInitializer
Expression
ParExpression:
( Expression )
Block:
{ BlockStatements }
BlockStatements:
{ BlockStatement }
BlockStatement :
LocalVariableDeclarationStatement
ClassOrInterfaceDeclaration
[Identifier :] Statement
LocalVariableDeclarationStatement:
[final] Type VariableDeclarators ;
Statement:
Block
assert Expression [ :
Expression] ;
if ParExpression Statement [else Statement]
for ( ForControl ) Statement
while ParExpression Statement
do Statement while ParExpression ;
try Block ( Catches |
[Catches] finally Block )
switch ParExpression {
SwitchBlockStatementGroups }
synchronized ParExpression Block
return [Expression] ;
throw Expression ;
break [Identifier]
continue [Identifier]
;
StatementExpression ;
Identifier :
Statement
Catches:
CatchClause {CatchClause}
CatchClause:
catch ( FormalParameter ) Block
SwitchBlockStatementGroups:
{ SwitchBlockStatementGroup }
SwitchBlockStatementGroup:
SwitchLabel BlockStatements
SwitchLabel:
case ConstantExpression :
case
EnumConstantName :
default :
MoreStatementExpressions:
{ , StatementExpression }
ForControl:
ForVarControl
ForInit; [Expression] ; [ForUpdate]
ForVarControl
[final] [Annotations] Type Identifier ForVarControlRest
Annotations:
Annotation [Annotations]
Annotation:
@ TypeName [( [Identifier =] ElementValue)]
ElementValue:
ConditionalExpression
Annotation
ElementValueArrayInitializer
ConditionalExpression:
Expression2 Expression1Rest
ElementValueArrayInitializer:
{ [ElementValues] [,] }
ElementValues:
ElementValue [ElementValues]
ForVarControlRest:
VariableDeclaratorsRest; [Expression] ; [ForUpdate]
: Expression
ForInit:
StatementExpression Expressions
Modifier:
Annotation public protected private static abstract final native synchronized transient volatile
strictfp
VariableDeclarators:
VariableDeclarator { , VariableDeclarator }
VariableDeclaratorsRest:
VariableDeclaratorRest { , VariableDeclarator }
ConstantDeclaratorsRest:
ConstantDeclaratorRest { , ConstantDeclarator }
VariableDeclarator:
Identifier VariableDeclaratorRest
ConstantDeclarator:
Identifier ConstantDeclaratorRest
VariableDeclaratorRest:
{[]
} [ = VariableInitializer]
ConstantDeclaratorRest:
{[]
} = VariableInitializer
VariableDeclaratorId:
Identifier {[]
}
CompilationUnit:
[[Annotations] package QualifiedIdentifier ; ] {ImportDeclaration}
{TypeDeclaration}
ImportDeclaration:
import [ static
] Identifier { . Identifier } [ . * ] ;
TypeDeclaration:
ClassOrInterfaceDeclaration
;
ClassOrInterfaceDeclaration:
{Modifier} (ClassDeclaration |
InterfaceDeclaration)
ClassDeclaration:
NormalClassDeclaration
EnumDeclaration
NormalClassDeclaration:
class Identifier [TypeParameters] [extends Type] [implements TypeList]
ClassBody
TypeParameters:
< TypeParameter {, TypeParameter} >
TypeParameter:
Identifier [extends
Bound]
Bound:
Type {& Type}
EnumDeclaration:
enum
Identifier [implements TypeList] EnumBody
EnumBody:
{ [EnumConstants] [,] [EnumBodyDeclarations] }
EnumConstants:
EnumConstant
EnumConstants , EnumConstant
EnumConstant:
Annotations Identifier [Arguments] [ClassBody]
EnumBodyDeclarations:
; {ClassBodyDeclaration}
InterfaceDeclaration:
NormalInterfaceDeclaration
AnnotationTypeDeclaration
NormalInterfaceDeclaration:
interface Identifier [ TypeParameters] [extends TypeList] InterfaceBody
TypeList:
Type { , Type}
AnnotationTypeDeclaration:
@
interface Identifier AnnotationTypeBody
AnnotationTypeBody:
{ [AnnotationTypeElementDeclarations] }
AnnotationTypeElementDeclarations:
AnnotationTypeElementDeclaration
AnnotationTypeElementDeclarations AnnotationTypeElementDeclaration
AnnotationTypeElementDeclaration:
{Modifier} AnnotationTypeElementRest
AnnotationTypeElementRest:
Type Identifier AnnotationMethodOrConstantRest;
ClassDeclaration
InterfaceDeclaration
EnumDeclaration
AnnotationTypeDeclaration
AnnotationMethodOrConstantRest:
AnnotationMethodRest
AnnotationConstantRest
AnnotationMethodRest:
( ) [DefaultValue]
AnnotationConstantRest:
VariableDeclarators
DefaultValue:
default ElementValue
ClassBody:
{
{ClassBodyDeclaration} }
InterfaceBody:
{
{InterfaceBodyDeclaration} }
ClassBodyDeclaration:
;
[static] Block
{Modifier} MemberDecl
MemberDecl:
GenericMethodOrConstructorDecl
MethodOrFieldDecl
void Identifier VoidMethodDeclaratorRest
Identifier ConstructorDeclaratorRest
InterfaceDeclaration
ClassDeclaration
GenericMethodOrConstructorDecl:
TypeParameters GenericMethodOrConstructorRest
GenericMethodOrConstructorRest:
(Type |
void) Identifier MethodDeclaratorRest
Identifier ConstructorDeclaratorRest
MethodOrFieldDecl:
Type Identifier MethodOrFieldRest
MethodOrFieldRest:
VariableDeclaratorRest
MethodDeclaratorRest
InterfaceBodyDeclaration:
;
{Modifier} InterfaceMemberDecl
InterfaceMemberDecl:
InterfaceMethodOrFieldDecl
InterfaceGenericMethodDecl
void Identifier VoidInterfaceMethodDeclaratorRest
InterfaceDeclaration
ClassDeclaration
InterfaceMethodOrFieldDecl:
Type Identifier InterfaceMethodOrFieldRest
InterfaceMethodOrFieldRest:
ConstantDeclaratorsRest ;
InterfaceMethodDeclaratorRest
MethodDeclaratorRest:
FormalParameters {[]
} [throwsQualifiedIdentifierList] ( MethodBody | ;
)
VoidMethodDeclaratorRest:
FormalParameters [throws QualifiedIdentifierList] ( MethodBody | ;
)
InterfaceMethodDeclaratorRest:
FormalParameters {[]
} [throwsQualifiedIdentifierList] ;
InterfaceGenericMethodDecl:
TypeParameters (Type |
void) Identifier InterfaceMethodDeclaratorRest
VoidInterfaceMethodDeclaratorRest:
FormalParameters [throws QualifiedIdentifierList] ;
ConstructorDeclaratorRest:
FormalParameters [throws QualifiedIdentifierList] MethodBody
QualifiedIdentifierList:
QualifiedIdentifier { , QualifiedIdentifier}
FormalParameters:
( [FormalParameterDecls] )
FormalParameterDecls:
[final] [Annotations] Type FormalParameterDeclsRest]
FormalParameterDeclsRest:
VariableDeclaratorId [ , FormalParameterDecls]
... VariableDeclaratorId
MethodBody:
Block
EnumConstantName:
Identifier
posted on 2006-08-18 09:00
Lansing 阅读(378)
评论(0) 编辑 收藏