Spec-Zone.ru › Java Language Specification 8

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

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

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

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

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

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

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

ИмяТипа:
Идентификатор
ИмяПакетаИлиТип . Идентификатор
ИмяПакетаИлиТип:
Идентификатор
ИмяПакетаИлиТип . Идентификатор
ИмяВыражения:
Идентификатор
НеоднозначноеИмя . Идентификатор
ИмяМетода:
Идентификатор
ИмяПакета:
Идентификатор
ИмяПакета . Идентификатор
НеоднозначноеИмя:
Идентификатор
НеоднозначноеИмя . Идентификатор

Производства из §7 (Пакеты)

CompilationUnit:
[Объявление пакета] {Объявление импорта} {Объявление типа}
PackageDeclaration:
{Модификатор пакета} package Идентификатор {. Идентификатор} ;
PackageModifier:
Аннотация
ImportDeclaration:
Объявление импорта одного типа
Объявление импорта типа по требованию
Объявление импорта одного статического элемента
Объявление импорта статических элементов по требованию
SingleTypeImportDeclaration:
import Имя типа ;
TypeImportOnDemandDeclaration:
import Имя пакета или типа . * ;
SingleStaticImportDeclaration:
import static Имя типа . Идентификатор ;
StaticImportOnDemandDeclaration:
import static Имя типа . * ;
TypeDeclaration:
Объявление класса
Объявление интерфейса
;

Производные из §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:
Идентификатор ( [Список формальных параметров] ) [Размеры]
FormalParameterList:
Параметр получателя
Формальные параметры , Последний формальный параметр
Последний формальный параметр
FormalParameters:
Формальный параметр {, Формальный параметр}
Параметр получателя {, Формальный параметр}
FormalParameter:
{Модификатор переменной} Тип без аннотаций Идентификатор объявления переменной
VariableModifier:
(один из)
Аннотация final
LastFormalParameter:
{Модификатор переменной} Тип без аннотаций {Аннотация} ... Идентификатор объявления переменной
Формальный параметр
ReceiverParameter:
{Аннотация} Тип без аннотаций [Идентификатор .] this
Throws:
throws Список типов исключений
ExceptionTypeList:
Тип исключения {, Тип исключения}
ExceptionType:
Тип класса
Переменная типа
MethodBody:
Блок
;
InstanceInitializer:
Блок
StaticInitializer:
static Блок
ConstructorDeclaration:
{Модификатор конструктора} Декларатор конструктора [Throws] Тело конструктора
ConstructorModifier:
(один из)
Аннотация public protected private
ConstructorDeclarator:
[Параметры типа] Простое имя типа ( [Список формальных параметров] )
SimpleTypeName:
Идентификатор
ConstructorBody:
{ [Явное обращение к конструктору] [Операторы блока] }
ExplicitConstructorInvocation:
[Аргументы типа] this ( [Список аргументов] ) ;
[Аргументы типа] super ( [Список аргументов] ) ;
Имя выражения . [Аргументы типа] super ( [Список аргументов] ) ;
Первичный . [Аргументы типа] super ( [Список аргументов] ) ;
EnumDeclaration:
{Модификатор класса} enum Идентификатор [Суперинтерфейсы] Тело перечисления
EnumBody:
{ [Список констант перечисления] [,] [Объявления тела перечисления] }
EnumConstantList:
Константа перечисления {, Константа перечисления}
EnumConstant:
{Модификатор константы перечисления} Идентификатор [( [Список аргументов] )] [Тело класса]
EnumConstantModifier:
Аннотация
EnumBodyDeclarations:
; {Объявление тела класса}

Производства из §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
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:
{ [Список инициализаторов переменных] [,] }
Список инициализаторов переменных:
Инициализатор переменной {, Инициализатор переменной}

Productions from §14 (Blocks and Statements)

Block:
{ [BlockStatements] }
BlockStatements:
BlockStatement {BlockStatement}
BlockStatement:
LocalVariableDeclarationStatement
ClassDeclaration
Statement
LocalVariableDeclarationStatement:
LocalVariableDeclaration ;
LocalVariableDeclaration:
{VariableModifier} UnannType VariableDeclaratorList
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 Блок БлокиОбработкиИсключений
try Блок [БлокиОбработкиИсключений] Finally
TryWithResourcesStatement
Catches:
БлокОбработкиИсключения {БлокОбработкиИсключения}
CatchClause:
catch ( ПараметрБлокаОбработкиИсключения ) Блок
CatchFormalParameter:
{МодификаторПеременной} ТипБлокаОбработкиИсключения ИдентификаторДескриптораПеременной
CatchType:
ТипБезАннотаций {| ТипКласса}
Finally:
finally Блок
TryWithResourcesStatement:
try ОписаниеРесурса Блок [БлокиОбработкиИсключений] [Finally]
ResourceSpecification:
( СписокРесурсов [;] )
ResourceList:
Ресурс {; Ресурс}
Resource:
{МодификаторПеременной} ТипБезАннотаций ИдентификаторДескриптораПеременной = Выражение

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

Primary:
PrimaryNoNewArray
ArrayCreationExpression
PrimaryNoNewArray:
Literal
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 ПримитивныйТип ВыраженияРазмеры [Размеры]
new ТипКлассаИлиИнтерфейса ВыраженияРазмеры [Размеры]
new ПримитивныйТип Размеры ИнициализаторМассива
new ТипКлассаИлиИнтерфейса Размеры ИнициализаторМассива
DimExprs:
ВыражениеРазмер {ВыражениеРазмер}
DimExpr:
{Аннотация} [ Выражение ]
Expression:
LambdaExpression
ВыражениеПрисваивания
LambdaExpression:
LambdaParameters -> LambdaBody
LambdaParameters:
Идентификатор
( [Список формальных параметров] )
( Список формальных параметров с выводом )
InferredFormalParameterList:
Идентификатор {, Идентификатор}
LambdaBody:
Выражение
Блок
AssignmentExpression:
Условное выражение
Присваивание
Assignment:
Левая часть Оператор присваивания Выражение
LeftHandSide:
Имя выражения
Доступ к полю
Доступ к элементу массива
AssignmentOperator:
(один из)
=  *=  /=  %=  +=  -=  <<=  >>=  >>>=  &=  ^=  |=
ConditionalExpression:
Условное ИЛИ выражение
Условное ИЛИ выражение ? Выражение : Условное выражение
Условное ИЛИ выражение ? Выражение : LambdaExpression
ConditionalOrExpression:
Условное И выражение
Условное ИЛИ выражение || ConditionalAndExpression
ConditionalAndExpression:
Исключающее ИЛИ выражение
Условное И выражение && Исключающее ИЛИ выражение
InclusiveOrExpression:
Исключающее ИЛИ выражение
Исключающее ИЛИ выражение | Исключающее ИЛИ выражение
ExclusiveOrExpression:
И выражение
Исключающее ИЛИ выражение ^ И выражение
AndExpression:
Выражение равенства
И выражение & Выражение равенства
EqualityExpression:
Выражение сравнения
Выражение равенства == Выражение сравнения
Выражение равенства != Выражение сравнения
RelationalExpression:
Выражение сдвига
Выражение сравнения < Выражение сдвига
Выражение сравнения > Выражение сдвига
Выражение сравнения <= Выражение сдвига
Выражение сравнения >= Выражение сдвига
Выражение сравнения instanceof Тип ссылки
ShiftExpression:
Выражение сложения
Выражение сдвига << Выражение сложения
Выражение сдвига >> Выражение сложения
Выражение сдвига >>> Выражение сложения
AdditiveExpression:
Выражение умножения
Выражение сложения + Выражение умножения
Выражение сложения - Выражение умножения
MultiplicativeExpression:
Унарное выражение
Выражение умножения * Унарное выражение
Выражение умножения / Унарное выражение
Выражение умножения % Унарное выражение
UnaryExpression:
Выражение прединкремента
Выражение преддекремента
+ Унарное выражение
- Унарное выражение
Унарное выражение без плюс/минус
PreIncrementExpression:
++ Унарное выражение
PreDecrementExpression:
-- Унарное выражение
UnaryExpressionNotPlusMinus:
Выражение постфикса
~ Унарное выражение
! Унарное выражение
Выражение приведения типов
PostfixExpression:
Primary
Имя выражения
Выражение с постфиксным инкрементом
Выражение с постфиксным декрементом
PostIncrementExpression:
PostfixExpression ++
PostDecrementExpression:
PostfixExpression --
CastExpression:
( Примитивный тип ) Унарное выражение
( Ссылочный тип {Дополнительное ограничение} ) Унарное выражение без "+" и "-"
( Ссылочный тип {Дополнительное ограничение} ) Lambda-выражение
ConstantExpression:
Выражение

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

Spec-Zone.ru

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