Spec-Zone.ru › Java Language Specification 11

Глава 19. Синтаксис

В этой главе повторяется синтаксическая грамматика, приведённая в главах 4, 6-10, 14 и 15, а также ключевые части лексической грамматики из главы 3, используя обозначения из §2.4.

Производные из §3 (Лексическая структура)

Идентификатор:
IdentifierChars но не Ключевое слово или Булево значение или Null значение
IdentifierChars:
JavaБуква {JavaБукваИлиЦифра}
JavaБуква:
любой символ Юникода, являющийся "буква Java"
JavaБукваИлиЦифра:
любой символ Юникода, являющийся "буква или цифра Java"
ТипИдентификатор:
Идентификатор но не var
Литерал:
ЦелочисленныйЛитерал
Число с плавающей точкой
Булево значение
СимвольныйЛитерал
СтроковыйЛитерал
Null значение

Производные из §4 (Типы, значения и переменные)

Тип:
ПримитивныйТип
СсылкаТип
ПримитивныйТип:
{Аннотация} ЧисловойТип
{Аннотация} boolean
ЧисловойТип:
ЦелочисленныйТип
ТипСПлавующейТочкой
ЦелочисленныйТип:
(один из)
byte short int long char
ТипСПлавующейТочкой:
(один из)
float double
СсылкаТип:
ТипКлассаИлиИнтерфейса
ПеременнаяТип
МассивТип
ТипКлассаИлиИнтерфейса:
ТипКласса
ТипИнтерфейса
ТипКласса:
{Аннотация} ТипИдентификатор [АргументыТипов]
ИмяПакета . {Аннотация} ТипИдентификатор [АргументыТипов]
ТипКлассаИлиИнтерфейса . {Аннотация} ТипИдентификатор [АргументыТипов]
ТипИнтерфейса:
ТипКласса
ПеременнаяТип:
{Аннотация} ТипИдентификатор
МассивТип:
ПримитивныйТип Индексы
ТипКлассаИлиИнтерфейса Индексы
ПеременнаяТип Индексы
Индексы:
{Аннотация} [ ] {{Аннотация} [ ]}
ПараметрТип:
{МодификаторПараметраТип} ТипИдентификатор [ГраницаТип]
МодификаторПараметраТип:
Аннотация
ГраницаТип:
extends ПеременнаяТип
extends ТипКлассаИлиИнтерфейса {ДополнительнаяГраница}
ДополнительнаяГраница:
& ТипИнтерфейса
АргументыТипов:
< СписокАргументовТипов >
СписокАргументовТипов:
АргументТип {, АргументТип}
АргументТип:
СсылкаТип
Подстановка
Подстановка:
{Аннотация} ? [ГраницыПодстановки]
ГраницыПодстановки:
extends СсылкаТип
super СсылкаТип

Производные из §6 (Имена)

ModuleName:
Идентификатор
ModuleName . Идентификатор
PackageName:
Идентификатор
PackageName . Идентификатор
TypeName:
TypeIdentifier
PackageOrTypeName . TypeIdentifier
ExpressionName:
Идентификатор
AmbiguousName . Идентификатор
MethodName:
Идентификатор
PackageOrTypeName:
Идентификатор
PackageOrTypeName . Идентификатор
AmbiguousName:
Идентификатор
AmbiguousName . Идентификатор

Производные из §7 (Пакеты и модули)

CompilationUnit:
OrdinaryCompilationUnit
ModularCompilationUnit
OrdinaryCompilationUnit:
[PackageDeclaration] {ImportDeclaration} {TypeDeclaration}
ModularCompilationUnit:
{ImportDeclaration} ModuleDeclaration
PackageDeclaration:
{PackageModifier} package Идентификатор {. Идентификатор} ;
PackageModifier:
Annotation
ImportDeclaration:
SingleTypeImportDeclaration
TypeImportOnDemandDeclaration
SingleStaticImportDeclaration
StaticImportOnDemandDeclaration
SingleTypeImportDeclaration:
import TypeName ;
TypeImportOnDemandDeclaration:
import PackageOrTypeName . * ;
SingleStaticImportDeclaration:
import static TypeName . Идентификатор ;
StaticImportOnDemandDeclaration:
import static TypeName . * ;
TypeDeclaration:
ClassDeclaration
InterfaceDeclaration
;
ModuleDeclaration:
{Annotation} [open] module Идентификатор {. Идентификатор} { {ModuleDirective} }
ModuleDirective:
requires {RequiresModifier} ModuleName ;
exports PackageName [to ModuleName {, ModuleName}] ;
opens PackageName [to ModuleName {, ModuleName}] ;
uses TypeName ;
provides TypeName with TypeName {, TypeName} ;
RequiresModifier:
(one of)
transitive static

Производные из §8 (Классы)

ClassDeclaration:
NormalClassDeclaration
EnumDeclaration
NormalClassDeclaration:
{Изготовители класса} class Идентификатор типа [Параметры типа] [Суперкласс] [Суперинтерфейсы] Тело класса
ClassModifier:
(один из)
Аннотация public protected private
abstract static final strictfp
TypeParameters:
< Список параметров типа >
TypeParameterList:
Параметр типа {, Параметр типа}
Superclass:
extends Тип класса
Superinterfaces:
implements Список типов интерфейсов
InterfaceTypeList:
Тип интерфейса {, Тип интерфейса}
ClassBody:
{ {Объявление тела класса} }
ClassBodyDeclaration:
Объявление члена класса
Инициализатор экземпляра
Статический инициализатор
Объявление конструктора
ClassMemberDeclaration:
Объявление поля
Объявление метода
Объявление класса
Объявление интерфейса
;
FieldDeclaration:
{Модификатор поля} Тип без аннотаций Список инициализаторов переменных ;
FieldModifier:
(один из)
Аннотация public protected private
static final transient volatile
VariableDeclaratorList:
Инициализатор переменной {, Инициализатор переменной}
VariableDeclarator:
Идентификатор инициализатора переменной [= Инициализация переменной]
VariableDeclaratorId:
Идентификатор [Размеры]
VariableInitializer:
Выражение
Инициализатор массива
UnannType:
Примитивный тип без аннотаций
Ссылочный тип без аннотаций
UnannPrimitiveType:
Числовой тип
boolean
UnannReferenceType:
Тип класса или интерфейса без аннотаций
Переменная типа без аннотаций
Массив типов без аннотаций
UnannClassOrInterfaceType:
Тип класса без аннотаций
Тип интерфейса без аннотаций
UnannClassType:
Идентификатор типа [Аргументы типа]
Имя пакета . {Аннотация} Идентификатор типа [Аргументы типа]
Тип класса или интерфейса без аннотаций . {Аннотация} Идентификатор типа [Аргументы типа]
UnannInterfaceType:
Тип класса без аннотаций
UnannTypeVariable:
Идентификатор типа
UnannArrayType:
Примитивный тип без аннотаций Размеры
Тип класса или интерфейса без аннотаций Размеры
Переменная типа без аннотаций Размеры
MethodDeclaration:
{Модификатор метода} Заголовок метода Тело метода
MethodModifier:
(один из)
Аннотация public protected private
abstract static final synchronized native strictfp
MethodHeader:
Результат Декларатор метода [Исключения]
Параметры типа {Аннотация} Результат Декларатор метода [Исключения]
Result:
Тип без аннотаций
void
MethodDeclarator:
Идентификатор ( [Параметр получателя ,] [Список формальных параметров] ) [Размеры]
ReceiverParameter:
{Annotation} UnannType [Identifier .] this
FormalParameterList:
FormalParameter {, FormalParameter}
FormalParameter:
{VariableModifier} UnannType VariableDeclaratorId
VariableArityParameter
VariableArityParameter:
{VariableModifier} UnannType {Annotation} ... Identifier
VariableModifier:
Annotation
final
Throws:
throws ExceptionTypeList
ExceptionTypeList:
ExceptionType {, ExceptionType}
ExceptionType:
ClassType
TypeVariable
MethodBody:
Block
;
InstanceInitializer:
Block
StaticInitializer:
static Block
ConstructorDeclaration:
{ConstructorModifier} ConstructorDeclarator [Throws] ConstructorBody
ConstructorModifier:
(one of)
Annotation public protected private
ConstructorDeclarator:
[TypeParameters] SimpleTypeName ( [ReceiverParameter ,] [FormalParameterList] )
SimpleTypeName:
TypeIdentifier
ConstructorBody:
{ [ExplicitConstructorInvocation] [BlockStatements] }
ExplicitConstructorInvocation:
[TypeArguments] this ( [ArgumentList] ) ;
[TypeArguments] super ( [ArgumentList] ) ;
ExpressionName . [TypeArguments] super ( [ArgumentList] ) ;
Primary . [TypeArguments] super ( [ArgumentList] ) ;
EnumDeclaration:
{ClassModifier} enum TypeIdentifier [Superinterfaces] EnumBody
EnumBody:
{ [EnumConstantList] [,] [EnumBodyDeclarations] }
EnumConstantList:
EnumConstant {, EnumConstant}
EnumConstant:
{EnumConstantModifier} Identifier [( [ArgumentList] )] [ClassBody]
EnumConstantModifier:
Annotation
EnumBodyDeclarations:
; {ClassBodyDeclaration}

Производные из §9 (Интерфейсы)

InterfaceDeclaration:
NormalInterfaceDeclaration
AnnotationTypeDeclaration
NormalInterfaceDeclaration:
{МодификаторИнтерфейса} interface ИдентификаторТипа [ПараметрыТипа] [РасширяющиеИнтерфейсы] ТелоИнтерфейса
InterfaceModifier:
(один из)
Аннотация public protected private
abstract static strictfp
ExtendsInterfaces:
extends СписокИнтерфейсов
InterfaceBody:
{ {ОбъявлениеЧленаИнтерфейса} }
InterfaceMemberDeclaration:
ОбъявлениеКонстанты
ОбъявлениеМетодаИнтерфейса
ОбъявлениеКласса
ОбъявлениеИнтерфейса
;
ConstantDeclaration:
{МодификаторКонстанты} ТипБезАннотаций СписокОбъявленийПеременных ;
ConstantModifier:
(один из)
Аннотация public
static final
InterfaceMethodDeclaration:
{МодификаторМетодаИнтерфейса} ЗаголовокМетода ТелоМетода
InterfaceMethodModifier:
(один из)
Аннотация public private
abstract default static strictfp
AnnotationTypeDeclaration:
{МодификаторИнтерфейса} @ interface ИдентификаторТипа ТелоАннотации
AnnotationTypeBody:
{ {ОбъявлениеЧленаАннотации} }
AnnotationTypeMemberDeclaration:
ОбъявлениеЭлементаАннотации
ОбъявлениеКонстанты
ОбъявлениеКласса
ОбъявлениеИнтерфейса
;
AnnotationTypeElementDeclaration:
{МодификаторЭлементаАннотации} ТипБезАннотаций Идентификатор ( ) [Размеры] [ЗначениеПоУмолчанию] ;
AnnotationTypeElementModifier:
(один из)
Аннотация public
abstract
DefaultValue:
default ЗначениеЭлемента
Annotation:
НормальнаяАннотация
Аннотация-метка
АннотацияСОднимЭлементом
NormalAnnotation:
@ ИмяТипа ( [СписокПарЗначениеЭлемента] )
ElementValuePairList:
ПараЗначениеЭлемента {, ПараЗначениеЭлемента}
ElementValuePair:
Идентификатор = ЗначениеЭлемента
ElementValue:
УсловноеВыражение
ИнициализаторМассиваЗначенийЭлементов
Аннотация
ElementValueArrayInitializer:
{ [СписокЗначенийЭлементов] [,] }
ElementValueList:
ЗначениеЭлемента {, ЗначениеЭлемента}
MarkerAnnotation:
@ ИмяТипа
SingleElementAnnotation:
@ ИмяТипа ( ЗначениеЭлемента )

Производные из §10 (Массивы)

ArrayInitializer:
{ [СписокИнициализаторовПеременных] [,] }
VariableInitializerList:
ИнициализаторПеременной {, ИнициализаторПеременной}

Производства из §14 (Blocks and Statements)

Block:
{ [BlockStatements] }
BlockStatements:
BlockStatement {BlockStatement}
BlockStatement:
LocalVariableDeclarationStatement
ClassDeclaration
Statement
LocalVariableDeclarationStatement:
LocalVariableDeclaration ;
LocalVariableDeclaration:
{VariableModifier} LocalVariableType VariableDeclaratorList
LocalVariableType:
UnannType
var
Statement:
StatementWithoutTrailingSubstatement
LabeledStatement
IfThenStatement
IfThenElseStatement
WhileStatement
ForStatement
StatementNoShortIf:
StatementWithoutTrailingSubstatement
LabeledStatementNoShortIf
IfThenElseStatementNoShortIf
WhileStatementNoShortIf
ForStatementNoShortIf
StatementWithoutTrailingSubstatement:
Block
EmptyStatement
ExpressionStatement
AssertStatement
SwitchStatement
DoStatement
BreakStatement
ContinueStatement
ReturnStatement
SynchronizedStatement
ThrowStatement
TryStatement
EmptyStatement:
;
LabeledStatement:
Identifier : Statement
LabeledStatementNoShortIf:
Identifier : StatementNoShortIf
ExpressionStatement:
StatementExpression ;
StatementExpression:
Assignment
PreIncrementExpression
PreDecrementExpression
PostIncrementExpression
PostDecrementExpression
MethodInvocation
ClassInstanceCreationExpression
IfThenStatement:
if ( Expression ) Statement
IfThenElseStatement:
if ( Expression ) StatementNoShortIf else Statement
IfThenElseStatementNoShortIf:
if ( Expression ) StatementNoShortIf else StatementNoShortIf
AssertStatement:
assert Expression ;
assert Expression : Expression ;
SwitchStatement:
switch ( Expression ) SwitchBlock
SwitchBlock:
{ {SwitchBlockStatementGroup} {SwitchLabel} }
SwitchBlockStatementGroup:
SwitchLabels BlockStatements
SwitchLabels:
SwitchLabel {SwitchLabel}
SwitchLabel:
case ConstantExpression :
case EnumConstantName :
default :
EnumConstantName:
Identifier
WhileStatement:
while ( Expression ) Statement
WhileStatementNoShortIf:
while ( Expression ) StatementNoShortIf
DoStatement:
do Statement while ( Expression ) ;
ForStatement:
BasicForStatement
EnhancedForStatement
ForStatementNoShortIf:
BasicForStatementNoShortIf
EnhancedForStatementNoShortIf
BasicForStatement:
for ( [ForInit] ; [Выражение] ; [ForUpdate] ) Оператор
BasicForStatementNoShortIf:
for ( [ForInit] ; [Выражение] ; [ForUpdate] ) ОператорБезКороткогоIf
ForInit:
СписокВыраженийОператора
ОбъявлениеЛокальнойПеременной
ForUpdate:
СписокВыраженийОператора
StatementExpressionList:
ВыражениеОператора {, ВыражениеОператора}
EnhancedForStatement:
for ( {МодификаторПеременной} ТипЛокальнойПеременной ИдентификаторДекларатораПеременной : Выражение ) Оператор
EnhancedForStatementNoShortIf:
for ( {МодификаторПеременной} ТипЛокальнойПеременной ИдентификаторДекларатораПеременной : Выражение ) ОператорБезКороткогоIf
BreakStatement:
break [Идентификатор] ;
ContinueStatement:
continue [Идентификатор] ;
ReturnStatement:
return [Выражение] ;
ThrowStatement:
throw Выражение ;
SynchronizedStatement:
synchronized ( Выражение ) Блок
TryStatement:
try Блок БлокиCatch
try Блок [БлокиCatch] Finally
TryWithResourcesStatement
Catches:
БлокCatch {БлокCatch}
CatchClause:
catch ( ПараметрБлокаCatch ) Блок
CatchFormalParameter:
{МодификаторПеременной} ТипБлокаCatch ИдентификаторДекларатораПеременной
CatchType:
НеквалифицированныйТипКласса {| ТипКласса}
Finally:
finally Блок
TryWithResourcesStatement:
try ОписаниеРесурсов Блок [БлокиCatch] [Finally]
ResourceSpecification:
( СписокРесурсов [;] )
ResourceList:
Ресурс {; Ресурс}
Resource:
{МодификаторПеременной} ТипЛокальнойПеременной Идентификатор = Выражение
ДоступКПеременной

Производные из §15 (Выражения)

Primary:
PrimaryNoNewArray
ArrayCreationExpression
PrimaryNoNewArray:
Литтерал
ClassLiteral
this
ИмяТипа . this
( Выражение )
ВыражениеСозданиеЭкземпляраКласса
ОбращениеКПолю
ОбращениеКЭлементуМассива
ВызовМетода
СсылкаНаМетод
ClassLiteral:
ИмяТипа {[ ]} . class
ЧисловойТип {[ ]} . class
boolean {[ ]} . class
void . class
ClassInstanceCreationExpression:
НеквалифицированноеВыражениеСозданиеЭкземпляраКласса
ИмяВыражения . НеквалифицированноеВыражениеСозданиеЭкземпляраКласса
Primary . НеквалифицированноеВыражениеСозданиеЭкземпляраКласса
UnqualifiedClassInstanceCreationExpression:
new [АргументыТипов] КлассИлиИнтерфейсДляСозданияЭкземпляра ( [СписокАргументов] ) [ТелоКласса]
ClassOrInterfaceTypeToInstantiate:
{Аннотация} Идентификатор {. {Аннотация} Идентификатор} [АргументыТиповИлиАлмаз]
TypeArgumentsOrDiamond:
АргументыТипов
<>
FieldAccess:
Primary . Идентификатор
super . Идентификатор
ИмяТипа . super . Идентификатор
ArrayAccess:
ИмяВыражения [ Выражение ]
PrimaryNoNewArray [ Выражение ]
MethodInvocation:
ИмяМетода ( [СписокАргументов] )
ИмяТипа . [АргументыТипов] Идентификатор ( [СписокАргументов] )
ИмяВыражения . [АргументыТипов] Идентификатор ( [СписокАргументов] )
Primary . [АргументыТипов] Идентификатор ( [СписокАргументов] )
super . [АргументыТипов] Идентификатор ( [СписокАргументов] )
ИмяТипа . super . [АргументыТипов] Идентификатор ( [СписокАргументов] )
ArgumentList:
Выражение {, Выражение}
MethodReference:
ИмяВыражения :: [АргументыТипов] Идентификатор
Primary :: [АргументыТипов] Идентификатор
ТипСсылки :: [АргументыТипов] Идентификатор
super :: [АргументыТипов] Идентификатор
ИмяТипа . super :: [АргументыТипов] Идентификатор
ТипКласса :: [АргументыТипов] new
ТипМассива :: new
ArrayCreationExpression:
new ПримитивныйТип DimExprs [Размеры]
new ТипКлассаИлиИнтерфейса DimExprs [Размеры]
new ПримитивныйТип Размеры ИнициализаторМассива
new ТипКлассаИлиИнтерфейса Размеры ИнициализаторМассива
DimExprs:
DimExpr {DimExpr}
DimExpr:
{Аннотация} [ Выражение ]
Expression:
LambdaExpression
ВыражениеПрисваивания
LambdaExpression:
LambdaParameters -> LambdaBody
LambdaParameters:
( [LambdaParameterList] )
Identifier
LambdaParameterList:
LambdaParameter {, LambdaParameter}
Identifier {, Identifier}
LambdaParameter:
{VariableModifier} LambdaParameterType VariableDeclaratorId
VariableArityParameter
LambdaParameterType:
UnannType
var
LambdaBody:
Expression
Block
AssignmentExpression:
ConditionalExpression
Assignment
Assignment:
LeftHandSide AssignmentOperator Expression
LeftHandSide:
ExpressionName
FieldAccess
ArrayAccess
AssignmentOperator:
(one of)
=  *=  /=  %=  +=  -=  <<=  >>=  >>>=  &=  ^=  |=
ConditionalExpression:
ConditionalOrExpression
ConditionalOrExpression ? Expression : ConditionalExpression
ConditionalOrExpression ? Expression : LambdaExpression
ConditionalOrExpression:
ConditionalAndExpression
ConditionalOrExpression || ConditionalAndExpression
ConditionalAndExpression:
InclusiveOrExpression
ConditionalAndExpression && InclusiveOrExpression
InclusiveOrExpression:
ExclusiveOrExpression
InclusiveOrExpression | ExclusiveOrExpression
ExclusiveOrExpression:
AndExpression
ExclusiveOrExpression ^ AndExpression
AndExpression:
EqualityExpression
AndExpression & EqualityExpression
EqualityExpression:
RelationalExpression
EqualityExpression == RelationalExpression
EqualityExpression != RelationalExpression
RelationalExpression:
ShiftExpression
RelationalExpression < ShiftExpression
RelationalExpression > ShiftExpression
RelationalExpression <= ShiftExpression
RelationalExpression >= ShiftExpression
RelationalExpression instanceof ReferenceType
ShiftExpression:
AdditiveExpression
ShiftExpression << AdditiveExpression
ShiftExpression >> AdditiveExpression
ShiftExpression >>> AdditiveExpression
AdditiveExpression:
MultiplicativeExpression
AdditiveExpression + MultiplicativeExpression
AdditiveExpression - MultiplicativeExpression
MultiplicativeExpression:
UnaryExpression
MultiplicativeExpression * UnaryExpression
MultiplicativeExpression / UnaryExpression
MultiplicativeExpression % UnaryExpression
UnaryExpression:
PreIncrementExpression
PreDecrementExpression
+ UnaryExpression
- UnaryExpression
UnaryExpressionNotPlusMinus
PreIncrementExpression:
++ UnaryExpression
ВыражениеПрефиксногоУменьшения:
-- УнарноеВыражение
УнарноеВыражениеБезПлюсМинус:
ПостфиксноеВыражение
~ УнарноеВыражение
! УнарноеВыражение
ВыражениеПриведенияТипов
ПостфиксноеВыражение:
Основное
ИмяВыражения
ВыражениеПостИнкремента
ВыражениеПостДекремента
ВыражениеПостИнкремента:
ПостфиксноеВыражение ++
ВыражениеПостДекремента:
ПостфиксноеВыражение --
ВыражениеПриведенияТипов:
( ПримитивныйТип ) УнарноеВыражение
( ТипСсылка {ДополнительноеОграничение} ) УнарноеВыражениеБезПлюсМинус
( ТипСсылка {ДополнительноеОграничение} ) LambdaВыражение
ВыражениеКонстанты:
Выражение

© Oracle and/or its affiliates. All rights reserved.
Licensed under the Oracle Technology Network License Agreement.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API