Files
the-swift-programming-langu…/source/chapter3/10_Summary_of_the_Grammar(from Statements -> Generic Parameters and Arguments).md
Chen Jia 37bcb2969a 更新10_Summary_of_the_Grammar(Satements) (#915)
* 第三章 10_Summary_of_the_Grammar(从 Declarations 到 Generic Parameters and Arguments)

* 10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments)的翻译 (#911)

* Update 10_Summary_of_the_Grammar(from Lexical Structure -> Types).md.

去掉"可选"前的空格

* 更新10_Summary_of_the_Grammar(Satements),按原文顺序,追加在原10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md 前面并更名为10_Summary_of_the_Grammar(from Statements -> Generic Parameters and Arguments).md
2019-04-01 15:21:40 -05:00

47 KiB
Raw Blame History

语句

语句语法

语句表达式 ;可选

语句声明 ;可选

语句循环语句 ;可选

语句分支语句 ;可选

语句标签语句 ;可选

语句控制转移语句 ;可选

语句延迟语句 ;可选

语句执行语句 ;可选

语句编译控制语句

语句集语句 语句集可选

循环语句语法

循环语句for-in 语句

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

循环语句repeat-while 语句

For-In 循环语法

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

While 循环语法

while 语句while 条件集 代码块

条件集条件 | 条件 , 条件集 条件表达式 | 可用性条件 | case 条件 | 可选绑定条件

case 条件case 模式 构造器

可选绑定条件let 模式 构造器 | var 模式 构造器

Repeat-While 语句语法

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

分支语句语法

分支语句if 语句

分支语句guard 语句

分支语句switch 语句

If 语句语法

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

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

Guard 语句语法

guard 语句guard 条件集 else 代码块

Switch 语句语法

switch 语句switch 表达式 { switch-case集可选 }

switch-case集switch-case switch-case集可选

switch-casecase 标签 语句集

switch-casedefault 标签 语句集

switch-case条件 switch-case

case 标签属性集可选 case case 项集 :

case 项集模式 where 子句可选 | 模式 where 子句可选 , case 项集

default 标签属性集可选 default :

where 子句where where 表达式

where 表达式表达式

条件 switch-caseswitch if 指令子句 switch elseif 指令子句集可选 switch else 指令子句可选 endif 指令

switch if 指令子句if 指令 编译条件 switch-case集可选

switch elseif 指令子句集elseif 指令子句 switch elseif 指令子句集可选

switch elseif 指令子句elseif 指令 编译条件 switch-case集可选

switch else 指令子句else 指令 switch-case集可选

标签语句语法

标签语句语句标签 循环语句

标签语句语句标签 if 语句

标签语句语句标签 switch 语句

标签语句语句标签 do 语句

语句标签标签名称 :

标签名称标识符

控制转移语句语法

控制转移语句break 语句

控制转移语句continue 语句

控制转移语句fallthrough 语句

控制转移语句return 语句

控制转移语句throw 语句

Break 语句语法

break 语句break 标签名称可选

Continue 语句语法

continue 语句continue 标签名称可选

Fallthrough 语句语法

fallthrough 语句fallthrough

Return 语句语法

return 语句return 表达式可选

Throw 语句语法

throw 语句throw 表达式

Defer 语句语法

defer 语句defer 代码块

Do 语句语法

do 语句do 代码块 catch 子句集可选

catch 子句集catch 子句 catch 子句集可选

catch 子句catch 模式可选 where 子句可选 代码块可选

编译控制语句

编译控制语句条件编译块

编译控制语句行控制语句

编译控制语句诊断语句

条件编译块语法

条件编译块if 指令子句 elseif 指令子句集可选 else 指令子句可选 endif 指令

if 指令子句if 指令 编译条件 语句集可选

elseif 指令子句集elseif 指令子句 elseif 指令子句集可选

elseif 指令子句elseif 指令 编译条件 语句集可选

else 指令子句else 指令 语句集可选

if 指令#if

elseif 指令#elseif

else 指令#else

endif 指令#endif

编译条件平台条件

编译条件标识符

编译条件布尔字面量

编译条件( 编译条件 )

编译条件! 编译条件

编译条件编译条件 && 编译条件

编译条件编译条件 || 编译条件

平台条件os ( 操作系统 )

平台条件arch ( 架构 )

平台条件swift ( >= swift 版本 ) | swift ( < swift 版本 )

平台条件compiler ( >= swift 版本 ) | compiler ( < swift 版本 )

平台条件canImport ( 模块名 )

平台条件targetEnvironment ( 环境 )

操作系统macOS | iOS | watchOS | tvOS

架构i386 | x86_64 | arm | arm64

swift 版本十进制数字集 swift 版本后缀可选

swift 版本后缀. 十进制数字集 swift 版本集可选

模块名标识符

环境simulator

行控制语句语法

行控制语句#sourceLocation ( file: 文件名 , line: 行号 )

行控制语句#sourceLocation ( )

行号 → 一个大于 0 的十进制数字

文件名静态字符串字面量

编译期诊断语句语法

诊断语句#error ( 诊断信息 )

诊断语句#warning ( 诊断信息 )

诊断信息静态字符串字面量

可用性条件语法

可用性条件#available ( 可用性参数集 )

可用性参数集可用性参数 | 可用性参数 , 可用性参数集)

可用性参数平台名 平台版本

可用性参数*

平台名iOS | iOSApplicationExtension

平台名macOS | macOSApplicationExtension

平台名watchOS

平台名tvOS

平台版本十进制数字集

平台版本十进制数字集 . 十进制数字集

平台版本十进制数字集 . 十进制数字集 . 十进制数字集

声明

声明语法

声明导入声明

声明常量声明

声明变量声明

声明类型别名声明

声明函数声明

声明枚举声明

声明结构体声明

声明类声明

声明协议声明

声明构造器声明

声明析构器声明

声明扩展声明

声明下标声明

声明运算符声明

声明优先级组声明

声明集声明 声明集可选

顶级声明语法

顶级声明多条语句可选

代码块语法

代码块{ 多条语句可选 }

导入声明语法

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

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

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

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

常数声明语法

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

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

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

构造器= 表达式

变量声明语法

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

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

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

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

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

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

变量声明头属性集可选 声明修饰符集可选 var

变量名称标识符

getter-setter 块代码块

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

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

getter 子句属性集可选 可变性修饰符可选 get 代码块

setter 子句属性集可选 可变性修饰符可选 set setter 名称可选 代码块

setter 名称( 标识符 )

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

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

getter 关键字Keyword子句属性集可选 可变性修饰符可选 get

setter 关键字Keyword子句属性集可选 可变性修饰符可选 set

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

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

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

didSet 子句属性集可选

didSet setter 名称可选 代码块

类型别名声明语法

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

类型别名名称标识符

类型别名赋值= 类型

函数声明语法

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

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

函数名标识符 | 运算符

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

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

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

函数体代码块

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

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

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

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

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

外部参数名标识符

本地参数名标识符

默认参数子句= 表达式

枚举声明语法

枚举声明属性集可选 访问级别修饰符可选 联合式枚举

枚举声明属性集可选 访问级别修饰符可选 原始值式枚举

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

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

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

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

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

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

枚举名标识符

枚举的 case 名标识符

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

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

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

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

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

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

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

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

结构体声明语法

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

结构体名称标识符

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

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

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

类声明语法

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

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

类名标识符

类主体{ 类成员集可选 }

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

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

协议声明语法

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

协议名标识符

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

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

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

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

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

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

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

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

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

协议属性声明语法

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

协议方法声明语法

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

协议构造器声明语法

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

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

协议下标声明语法

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

协议关联类型声明语法

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

构造器声明语法

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

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

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

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

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

构造器主体代码块

析构器声明语法

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

扩展声明语法

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

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

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

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

下标声明语法

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

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

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

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

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

运算符声明语法

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

前置运算符声明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

声明修饰符访问级别修饰符

声明修饰符可变性修饰符

声明修饰符集声明修饰符 声明修饰符集可选

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

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

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

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

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

可变性修饰符mutating | nonmutating

属性

属性语法

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

属性名标识符

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

属性Attributes属性 属性集可选

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

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

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

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

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

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

模式

模式语法

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

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

模式值绑定模式

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

模式枚举 case 模式

模式可选模式

模式类型转换模式

模式表达式模式

通配符模式语法

通配符模式_

标识符模式语法

标识符模式标识符

值绑定模式语法

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

元组模式语法

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

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

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

枚举 case 模式语法

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

可选模式语法

可选模式标识符模式 ?

类型转换模式语法

类型转换模式is 模式 | as 模式

is 模式is 类型

as 模式模式 as 类型

表达式模式语法

表达式模式表达式

泛型参数

泛型形参子句语法

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

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

泛形参数类型名称

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

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

泛型 where 子句where 约束集

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

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

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

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

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