Files
the-swift-programming-langu…/source/chapter3/10_Summary_of_the_Grammar.md
Chen Jia 4d6ef27d54 第三章 10_Summary_of_the_Grammar(从 Declarations 到 Generic Parameters and Arguments) (#910)
* 第三章 10_Summary_of_the_Grammar(从 Declarations 到 Generic Parameters and Arguments)

* 10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments)的翻译 (#911)
2019-03-30 17:32:56 -05:00

46 KiB
Executable File
Raw Blame History

语法总结Summary of the Grammar

语句

语句语法

语句表达式 ; 可选

语句声明 ; 可选

语句循环语句 ; 可选

语句分支语句 ; 可选

语句标记语句Labeled Statement

语句控制转移语句 ; 可选

语句延迟语句 ; 可选

语句执行语句 ; 可选

多条语句Statements语句 多条语句Statements 可选

循环语句语法

循环语句for 语句

循环语句for-in 语句

循环语句 → [while 语句](./05_Statements.md#wheetatype 类型 ile_statement)

循环语句repeat-while 语句

For 循环语法

for 语句for for 初始条件 可选 ; 表达式 可选 ; 表达式 可选 代码块

for 语句for ( for 初始条件 可选 ; 表达式 可选 ; 表达式 可选 ) 代码块

for 初始条件变量声明 | 表达式集

For-In 循环语法

for-in 语句for case 可选 模式 in 表达式 代码块 where 从句 可选

While 循环语法

while 语句while 条件子句 代码块

条件子句表达式

条件子句表达式 , 表达式集

条件子句表达式集

条件子句可用条件availability-condition | 表达式集

条件集条件 | 条件 , 条件集

条件可用条件availability-condition | 个例条件case-condition | 可选绑定条件optional-binding-condition

个例条件case-conditioncase 模式 构造器 where 从句可选

可选绑定条件optional-binding-condition可选绑定头optional-binding-head 可选绑定连续集optional-binding-continuation-list 可选 where 从句 可选

可选绑定头optional-binding-headlet 模式 构造器 | var 模式 构造器

可选绑定连续集optional-binding-contiuation-list可选绑定连续optional-binding-contiuation | 可选绑定连续optional-binding-contiuation 可选绑定连续集optional-binding-contiuation-list

可选绑定连续optional-binding-continuation模式 构造器 | 可选绑定头optional-binding-head

Repeat-While 语句语法

repeat-while-statementrepeat 代码块 while 表达式

分支语句语法

分支语句if 语句

分支语句guard 语句

分支语句switch 语句

If 语句语法

if 语句if 条件子句 代码块 else 子句Clause 可选

else 子句Clauseelse 代码块 | else if 语句

Guard 语句语法

guard 语句guard 条件子句 else 代码块

Switch 语句语法

switch 语句switch 表达式 { SwitchCase 可选 }

SwitchCase 集SwitchCase SwitchCase 集 可选

SwitchCasecase 标签 多条语句Statements | default 标签 多条语句Statements

SwitchCasecase 标签 ; | default 标签 ;

case 标签case case 项集 :

case 项集模式 where-clause 可选 | 模式 where-clause 可选 , case 项集

default 标签default :

where 子句where where 表达式

where 表达式表达式

标记语句语法

标记语句Labeled Statement语句标签 循环语句 | 语句标签 if 语句 | 语句标签 switch 语句

语句标签标签名称 :

标签名称标识符

控制传递语句Control Transfer Statement语法

控制传递语句break 语句

控制传递语句continue 语句

控制传递语句fallthrough 语句

控制传递语句return 语句

控制传递语句throw 语句

Break 语句语法

break 语句break 标签名称 可选

Continue 语句语法

continue 语句continue 标签名称 可选

Fallthrough 语句语法

fallthrough 语句fallthrough

Return 语句语法

return 语句return 表达式 可选

可用条件Availability Condition语法

可用条件availability-condition#available ( 多可用参数(availability-arguments) )

多可用参数availability- arguments可用参数availability-argument|可用参数availability-argument , 多可用参数availability-arguments

可用参数availability- argument平台名platform-name 平台版本platform-version

可用参数availability- argument → *

平台名iOS | iOSApplicationExtension

平台名OSX | macOSApplicationExtension

平台名watchOS

平台名tvOS

平台版本十进制数decimal-digits

平台版本十进制数decimal-digits . 十进制数decimal-digits

平台版本十进制数decimal-digits . 十进制数decimal-digits . 十进制数decimal-digits))

抛出语句Throw Statement语法

抛出语句throw-statementthrow 表达式expression

延迟语句defer-statement语法

延迟语句defer-statementdefer 代码块

执行语句do-statement语法

执行语句do-statementdo 代码块 catch-clauses 可选

catch-clausescatch-clause catch-clauses 可选

catch-clausescatch 模式pattern 可选 where-clause 可选 代码块code-block 可选

泛型参数

泛型形参子句Generic Parameter Clause语法

泛型参数子句< 泛型参数集 约束子句 可选 >

泛型参数集泛形参数 | 泛形参数 , 泛型参数集

泛形参数类型名称

泛形参数类型名称 : 类型标识

泛形参数类型名称 : 协议合成类型

约束子句where 约束集

约束集约束 | 约束 , 约束集

约束一致性约束 | 同类型约束

一致性约束类型标识 : 类型标识

一致性约束类型标识 : 协议合成类型

同类型约束类型标识 == 类型

泛型实参子句语法

(泛型参数子句 Generic Argument Clause)< 泛型参数集 >

泛型参数集泛型参数 | 泛型参数 , 泛型参数集

泛型参数类型

声明Declarations

声明语法

声明导入声明

声明常量声明

声明变量声明

声明类型别名声明

声明函数声明

声明枚举声明

声明结构体声明

声明类声明

声明协议声明

声明构造器声明

声明析构器声明

声明扩展声明

声明下标声明

声明运算符声明

声明优先级组声明

声明Declarations声明 声明Declarations 可选

顶级Top Level声明语法

顶级声明多条语句Statements 可选

代码块语法

代码块{ 多条语句Statements 可选 }

导入Import声明语法

导入声明属性Attributes 可选 import 导入类型 可选 导入路径

导入类型typealias | struct | class | enum | protocol | let | var | func

导入路径导入路径标识符 | 导入路径标识符 . 导入路径

导入路径标识符标识符 | 运算符

常数声明语法

常量声明属性Attributes 可选 声明修饰符Modifiers 可选 let 模式构造器集

模式构造器集模式构造器 | 模式构造器 , 模式构造器集

模式构造器模式 构造器 可选

构造器= 表达式

变量声明语法

变量声明变量声明头Head 模式构造器集

变量声明变量声明头Head 变量名 类型注解 代码块

变量声明变量声明头Head 变量名 类型注解 getter-setter 块

变量声明变量声明头Head 变量名 类型注解 getter-setter 关键字Keyword

变量声明变量声明头Head 变量名 构造器 可选 willSet-didSet 代码块

变量声明变量声明头Head 变量名 类型注解 构造器 可选 willSet-didSet 代码块

变量声明头Head属性Attributes 可选 声明修饰符Modifers 可选 var

变量名称标识符

getter-setter 块代码块

getter-setter 块{ getter 子句 setter 子句 可选 }

getter-setter 块{ setter 子句 getter 子句 }

getter 子句属性Attributes 可选 可变性修饰符mutation-modifier 可选 get 代码块

setter 子句属性Attributes 可选 可变性修饰符mutation-modifier 可选 set setter 名称 可选 代码块

setter 名称( 标识符 )

getter-setter 关键字Keyword{ getter 关键字Keyword子句 setter 关键字Keyword子句 可选 }

getter-setter 关键字Keyword{ setter 关键字Keyword子句 getter 关键字Keyword子句 }

getter 关键字Keyword子句属性Attributes 可选 可变性修饰符mutation-modifier 可选 get

setter 关键字Keyword子句属性Attributes 可选 可变性修饰符mutation-modifier 可选 set

willSet-didSet 代码块{ willSet 子句 didSet 子句 可选 }

willSet-didSet 代码块{ didSet 子句 willSet 子句 可选 }

willSet 子句属性Attributes 可选 willSet setter 名称 可选 代码块

didSet 子句属性Attributes 可选

didSet setter 名称 可选 代码块

类型别名声明语法

类型别名声明属性Attributes 可选 访问级别修饰符access-level-modifier typealias 类型别名名称 泛型参数子句 可选 类型别名赋值

类型别名名称标识符

类型别名赋值= 类型

函数声明语法

函数声明函数头 函数名 泛型参数子句 可选 函数签名Signature 泛型 where 子句 可选 函数体 可选

函数头属性Attributes 可选 声明描述符Specifiers 可选 func

函数名标识符 | 运算符

函数签名Signature参数子句 throws 可选 函数结果 可选

函数签名Signature参数子句 rethrows 函数结果 可选

函数结果-> 属性Attributes 可选 类型

函数体代码块

参数子句( ) | ( 参数集 )

参数集参数 | 参数 , 参数集

参数外部参数名 可选 本地参数名 类型注解 默认参数子句 可选

参数外部参数名 可选 本地参数名 类型注解

参数外部参数名 可选 本地参数名 类型注解 ...

外部参数名标识符

本地参数名标识符

默认参数子句= 表达式

枚举声明语法

枚举声明属性Attributes 可选 访问级别修饰符access-level-modifier 可选 联合式枚举union_style_enum

枚举声明属性Attributes 可选 访问级别修饰符access-level-modifier 可选 原始值式枚举raw-value-style-enum

联合式枚举indirect 可选 enum 枚举名 泛型参数子句 可选 类型继承子句type-inheritance-clause 可选 泛型 where 子句generic-where-clause 可选 { 联合样式枚举成员 可选 }

联合式枚举成员集联合式枚举成员 联合样式枚举成员集 可选

联合样式枚举成员声明 | 联合式Union Style枚举 case 子句 | 编译控制语句

联合式Union Style枚举 case 子句属性Attributes 可选 indirect 可选 case 联合式Union Style枚举 case 集

联合式Union Style枚举 case 集联合式Union Style枚举 case | 联合式Union Style枚举 case , 联合式Union Style枚举 case 集

联合式Union Style枚举 case枚举的 case 名 元组类型 可选

枚举名标识符

枚举的 case 名标识符

原始值式枚举enum 枚举名 泛型参数子句 可选 类型继承子句 泛型 where 子句 可选 { 原始值式枚举成员集 }

原始值式枚举成员集原始值式枚举成员 原始值式枚举成员集 可选

原始值式枚举成员声明 | 原始值式枚举 case 子句 | 编译控制语句

原始值式枚举 case 子句属性Attributes 可选 case 原始值式枚举 case 集

原始值式枚举 case 集原始值式枚举 case | 原始值式枚举 case , 原始值式枚举 case 集

原始值式枚举 case枚举的 case 名 原始值赋值 可选

原始值赋值= 原始值字面量

原始值字面量raw-value-literal数值字面量 | 静态字符串字面量 | 布尔字面量

结构体声明语法

结构体声明属性Attributes 可选 访问级别修饰符access-level-modifier 可选 struct 结构体名称 泛型参数子句 可选 类型继承子句 可选 泛型 where 子句 可选 结构体主体

结构体名称标识符

结构体主体{ 结构体成员集 可选 }

结构体成员集结构体成员 结构体成员集 可选

结构体成员声明集 | 编译控制语句

类声明语法

类声明属性Attributes 可选 访问级别修饰符access-level-modifier 可选 final 可选 class 类名 泛型参数子句 可选 类型继承子句 泛型 where 子句 可选 类主体

类声明属性Attributes 可选 final 访问级别修饰符access-level-modifier 可选 class 类名 泛型参数子句 可选 类型继承子句 泛型 where 子句 可选 类主体

类名标识符

类主体{ 类成员集 可选 }

类成员集类成员 类成员集 可选

类成员声明集 | 编译控制语句

协议Protocol声明语法

协议声明属性Attributes 可选 访问级别修饰符access-level-modifier 可选 protocol 协议名 类型继承子句 可选 泛型 where 子句 可选 协议主体

协议名标识符

协议主体{ 协议成员集 可选 }

协议成员集协议成员 协议成员集 可选

协议成员协议成员声明 | 编译控制语句

协议成员声明协议属性声明

协议成员声明协议方法声明

协议成员声明协议构造器声明

协议成员声明协议下标声明

协议成员声明协议关联类型声明

协议成员声明类型别名声明

协议属性声明语法

协议属性声明变量声明头Head 变量名 类型注解 getter-setter 关键字Keyword

协议方法声明语法

协议方法声明函数头 函数名 泛型参数子句 可选 函数签名Signature 泛型 where 子句 可选

协议构造器声明语法

协议构造器声明构造器头Head 泛型参数子句 可选 参数子句 throws 可选 泛型 where 子句 可选

协议构造器声明构造器头Head 泛型参数子句 可选 参数子句 rethrows 泛型 where 子句 可选

协议下标声明语法

协议下标声明下标头Head 下标结果Result 泛型 where 子句 可选 getter-setter 关键字Keyword

协议关联类型声明语法

协议关联类型声明属性Attributes 可选 访问级别修饰符access-level-modifier 可选 associatedtype 类型别名 类型继承子句 可选 类型别名赋值 可选 泛型 where 子句 可选

构造器声明语法

构造器声明构造器头Head 泛型参数子句 可选 参数子句 throws 可选 泛型 where 子句 可选 构造器主体

构造器声明构造器头Head 泛型参数子句 可选 参数子句 rethrows 泛型 where 子句 可选 构造器主体

构造器头Head属性Attributes 可选 声明修饰符集declaration-modifiers 可选 init

构造器头Head属性Attributes 可选 声明修饰符集declaration-modifiers 可选 init ?

构造器头Head属性Attributes 可选 声明修饰符集declaration-modifiers 可选 init !

构造器主体代码块

析构器声明语法

析构器声明属性Attributes 可选 deinit 代码块

扩展Extension声明语法

扩展声明属性Attributes 可选 访问级别修饰符access-level-modifier 可选 extension 类型标识 类型继承子句 可选 泛型 where 子句 可选 扩展主体

扩展主体{ 扩展成员集 可选 }

扩展成员集扩展成员 扩展成员集 可选

扩展成员声明集 | 编译控制语句

下标声明语法

下标声明下标头Head 下标结果Result 泛型 where 子句 可选 代码块

下标声明下标头Head 下标结果Result 泛型 where 子句 可选 getter-setter 块

下标声明下标头Head 下标结果Result 泛型 where 子句 可选 getter-setter 关键字Keyword

下标头Head属性Attributes 可选 声明修饰符集declaration-modifiers 可选 subscript 泛型参数子句 可选 参数子句

下标结果Result-> 属性Attributes 可选 类型

运算符声明语法

运算符声明前置运算符声明 | 后置运算符声明 | 中置运算符声明

前置运算符声明prefix operator 运算符

后置运算符声明postfix operator 运算符

中置运算符声明infix operator 运算符 中置运算符属性集 可选

中置运算符属性集优先级组名

优先级组声明语法

优先级组声明precedencegroup 优先级组名 { 优先级组属性集 可选 }

优先级组属性集优先级组属性 优先级组属性集 可选

优先级组属性优先级组关系

优先级组属性优先级组赋值

优先级组属性优先级组结合

优先级组关系higherThan : 优先级组名集

优先级组关系lowerThan : 优先级组名集

优先级组赋值assignment : 布尔字面量

优先级组结合associativity : left

优先级组结合associativity : right

优先级组结合associativity : none

优先级组名集优先级组名 | 优先级组名 , 优先级组名集

优先级组名标识符

声明修饰符语法

声明修饰符class | convenience | dynamic | final | infix | lazy | optional | override | postfix | prefix | required | static | unowned | unowned(safe) | unowned(unsafe) | weak

声明修饰符访问级别修饰符access-level-modifier

声明修饰符可变性修饰符mutation-modifier

声明修饰符集声明修饰符declaration-modifier 声明修饰符集declaration-modifiers 可选

访问级别修饰符private | private(set)

访问级别修饰符fileprivate | fileprivate(set)

访问级别修饰符internal | internal(set)

访问级别修饰符public | public(set)

访问级别修饰符open | open(set)

可变性修饰符mutating | nonmutating

属性

属性语法

属性@ 属性名 属性参数子句 可选

属性名标识符

属性参数子句{ 平衡令牌集 可选 }

属性Attributes属性 属性Attributes 可选

平衡令牌集平衡令牌 平衡令牌集 可选

平衡令牌( 平衡令牌集 可选 )

平衡令牌[ 平衡令牌集 可选 ]

平衡令牌{ 平衡令牌集 可选 }

平衡令牌 → 任意标识符、关键字、字面量或运算符

平衡令牌 → 除 ()[]{} 外的任意标点符号

模式

模式Patterns语法

模式通配符模式 类型注解 可选

模式标识符模式 [类型注解](./03_Types.md#type_annotati Value Bindingon ) 可选

模式值绑定模式

模式元组模式 类型注解 可选

模式枚举 case 模式

模式可选模式

模式类型转换模式

模式表达式模式

通配符模式语法

通配符模式_

标识符模式语法

标识符模式标识符

值绑定Value Binding模式语法

值绑定模式var 模式 | let 模式

元组模式语法

元组模式( 元组模式元素集 可选 )

元组模式元素集元组模式元素 | 元组模式元素 , 元组模式元素集

元组模式元素模式 | 标识符 : 模式

枚举 case 模式语法

enum-case-pattern类型标识 可选 . 枚举 case 名 元组模式 可选

可选模式语法

可选模式标识符模式 ?

类型转换模式语法

类型转换模式type-casting-patternis 模式 | as 模式

is 模式is 类型

as 模式模式 as 类型

表达式模式语法

表达式模式表达式

泛型参数

泛型形参子句Generic Parameter Clause语法

泛型参数子句< 泛型参数集 >

泛型参数集泛形参数 | 泛形参数 , 泛型参数集

泛形参数类型名称

泛形参数类型名称 : 类型标识

泛形参数类型名称 : 协议合成类型

泛型 where 子句where 约束集

约束集约束 | 约束 , 约束集

约束一致性约束 | 同类型约束

一致性约束类型标识 : 类型标识

一致性约束类型标识 : 协议合成类型

同类型约束类型标识 == 类型