语法总结(Summary of the Grammar)

    标识符语法

    标识符标识符头(Head) 可选

    标识符标识符头(Head) 可选

    标识符隐式参数名

    标识符

    标识符集标识符 | , 标识符集

    标识符头(Head) → 大写或者小写字母 A 到 Z

    标识符头(Head) → _

    标识符头(Head) → U+00A8, U+00AA, U+00AD, U+00AF, U+00B2–U+00B5, or U+00B7–U+00BA

    标识符头(Head) → U+00BC–U+00BE, U+00C0–U+00D6, U+00D8–U+00F6, or U+00F8–U+00FF

    标识符头(Head) → U+0100–U+02FF, U+0370–U+167F, U+1681–U+180D, or U+180F–U+1DBF

    标识符头(Head) → U+1E00–U+1FFF

    标识符头(Head) → U+200B–U+200D, U+202A–U+202E, U+203F–U+2040, U+2054, or U+2060–U+206F

    标识符头(Head) → U+2070–U+20CF, U+2100–U+218F, U+2460–U+24FF, or U+2776–U+2793

    标识符头(Head) → U+2C00–U+2DFF or U+2E80–U+2FFF

    标识符头(Head) → U+3004–U+3007, U+3021–U+302F, U+3031–U+303F, or U+3040–U+D7FF

    标识符头(Head) → U+F900–U+FD3D, U+FD40–U+FDCF, U+FDF0–U+FE1F, or U+FE30–U+FE44

    标识符头(Head) → U+FE47–U+FFFD

    标识符头(Head) → U+10000–U+1FFFD, U+20000–U+2FFFD, U+30000–U+3FFFD, or U+40000–U+4FFFD

    标识符头(Head) → U+50000–U+5FFFD, U+60000–U+6FFFD, U+70000–U+7FFFD, or U+80000–U+8FFFD

    标识符头(Head) → U+90000–U+9FFFD, U+A0000–U+AFFFD, U+B0000–U+BFFFD, or U+C0000–U+CFFFD

    标识符头(Head) → U+D0000–U+DFFFD or U+E0000–U+EFFFD

    标识符字符 → 数值 0 到 9

    标识符字符 → U+0300–U+036F, U+1DC0–U+1DFF, U+20D0–U+20FF, or U+FE20–U+FE2F

    标识符字符

    标识符字符集标识符字符 可选

    隐式参数名$ 十进制数字集

    属性包装器呈现值$

    字面量语法

    字面量数值型字面量 | | 布尔字面量 |

    数值型字面量-可选整形字面量 | -可选

    布尔字面量true | false

    空字面量nil

    整型字面量语法

    整型字面量二进制字面量

    整型字面量

    整型字面量十进制字面量

    整型字面量

    二进制字面量0b 二进制数字 可选

    二进制数字 → 数值 0 到 1

    二进制字面量字符二进制数字 | -

    二进制字面量字符集二进制字面量字符集可选

    八进制字面量0o 八进制字符集可选

    八进字数字 → 数值 0 到 7

    八进制字符 → | -

    八进制字符集八进制字符 可选

    十进制字面量十进制数字 可选

    十进制数字 → 数值 0 到 9

    十进制数字集十进制数字 可选

    十进制字面量字符十进制数字 | -

    十进制字面量字符集十进制字面量字符集可选

    十六进制字面量0x 十六进制字面量字符集可选

    十六进制数字 → 数值 0 到 9,a 到 f,或者 A 到 F

    十六进制字符 → | -

    十六进制字面量字符集十六进制字符 可选

    浮点型字面量语法

    浮点数字面量十进制字面量 可选十进制指数可选

    浮点数字面量十六进制分数可选

    十进制分数. 十进制字面量

    十进制指数正负号可选

    十六进制分数. 十六进制数

    十六进制指数正负号可选

    浮点数 ee | E

    浮点数 pp | P

    正负号+ | -

    字符串型字面量语法

    字符串字面量静态字符串字面量 |

    字符串开分隔定界符字符串扩展分隔符

    字符串闭分隔定界符 可选

    静态字符串字面量字符串开分隔定界符 可选 字符串闭分隔定界符

    静态字符串字面量多行引用文本可选

    多行字符串开分隔定界符字符串扩展分隔符 “””

    多行字符串闭分隔定界符“””

    字符串扩展分隔符# 字符串扩展分隔符可选

    引用文本引用文本可选

    引用文本项

    引用文本项 → 除了 \\、U+000A、U+000D 以外的所有 Unicode 字符

    多行引用文本多行引用文本项 可选

    多行引用文本项 转义字符可选

    多行引用文本 → 除了 \ 以外的任何 Unicode 标量值

    多行引用文本

    插值字符串字面量字符串开分隔定界符 可选 字符串闭分隔定界符

    插值字符串字面量插值文本可选

    插值文本插值文本项 可选

    插值文本项\(表达式) |

    多行插值文本多行插值文本项 可选

    多行插值文本项\( 表达式 ) |

    转义序列\ 字符串扩展分隔符

    转义字符0 | 转义序列 \ | t | 转义序列 n | r | 转义序列 \” |

    转义字符转义序列 u { }

    unicode 标量数字 → 一到八位的十六进制数字

    转义换行符转义序列 可选 换行符

    运算符语法语法

    运算符运算符字符集可选

    运算符点运算符字符集可选

    运算符字符/ | = | - | + | ! | * | % | < | > | & | | | ^ | ~ | ?

    运算符头 → U+00A1–U+00A7

    运算符头 → U+00A9 or U+00AB

    运算符头 → U+00AC or U+00AE

    运算符头 → U+00B0–U+00B1, U+00B6, U+00BB, U+00BF, U+00D7, or U+00F7

    运算符头 → U+2016–U+2017 or U+2020–U+2027

    运算符头 → U+2030–U+203E

    运算符头 → U+2041–U+2053

    运算符头 → U+2055–U+205E

    运算符头 → U+2190–U+23FF

    运算符头 → U+2500–U+2775

    运算符头 → U+2794–U+2BFF

    运算符头 → U+2E00–U+2E7F

    运算符头 → U+3001–U+3003

    运算符头 → U+3008–U+3030

    运算符字符

    运算符字符 → U+0300–U+036F

    运算符字符 → U+1DC0–U+1DFF

    运算符字符 → U+20D0–U+20FF

    运算符字符 → U+FE00–U+FE0F

    运算符字符 → U+FE20–U+FE2F

    运算符字符 → U+E0100–U+E01EF

    运算符字符集运算符字符 可选

    点运算符头..

    点运算符字符. | 运算符字符

    点运算符字符集点运算符字符集可选

    二元运算符

    前置运算符运算符

    后置运算符

    类型

    类型语法

    类型

    类型字典类型

    类型

    类型类型标识符

    类型

    类型可选类型

    类型

    类型协议合成类型

    类型Any

    类型Self

    类型

    类型注解语法

    类型注解: 属性(Attributes)集可选

    类型标识语法

    类型标识类型名称 可选| 类型名称 可选. 类型标识符

    类型名

    元组类型语法

    元组类型( ) | ( 元组类型元素 , )

    元组类型元素列表元组类型元素 | , 元组类型元素列表

    元组类型元素类型注解 |

    元素名标识符

    函数类型语法

    函数类型throws可选-> 类型

    函数类型rethrows -> 类型

    函数类型子句( )

    函数类型子句( ­可选 )

    函数类型参数列表函数类型参数 | , 函数类型参数列表

    函数类型参数可选 输入输出参数可选 类型 | 类型注解

    参数标签

    数组类型语法

    数组类型[ 类型 ]

    字典类型语法

    字典类型[ ]

    可选类型语法

    可选类型类型 ?

    隐式解析可选类型(Implicitly Unwrapped Optional Type)语法

    隐式解析可选类型!

    协议合成类型语法

    协议合成类型类型标识符 |

    协议持续延续类型标识符 |

    元(Metatype)类型语法

    元类型类型 . Type | . Protocol

    类型继承从句语法

    类型继承从句: 类型继承集

    类型继承集 → | 类型标识符 ,

    类条件class

    表达式语法

    表达式try 运算符可选 二元表达式列表

    表达式列表 → |表达式,

    前缀表达式语法

    前缀表达式前缀操作符可选

    前缀表达式输入输出表达式

    输入输出表达式&

    try 表达式语法

    try 操作符try | try ? | try !

    二元表达式语法

    二元表达式二元运算符

    二元表达式赋值操作符 可选 前缀表达式

    二元表达式try 运算符可选

    二元表达式类型转换运算符

    二元表达式二元表达式列表可选

    赋值操作符语法

    赋值运算符 → [=]

    条件运算符

    条件运算符 → [?] :

    类型转换运算符语法

    类型转换运算符 → [is] 类型

    类型转换运算符 → [as]

    类型转换运算符 → [as ?] 类型

    类型转换运算符 → [as !]

    基础表达式语法

    基础表达式标识符 可选

    基础表达式字面量表达式

    基础表达式

    基础级表达式父类表达式

    基础表达式

    基础表达式圆括号表达式

    基础表达式

    基础表达式隐式成员表达式

    基础表达式

    基础表达式key-path表达式

    基础表达式

    基础表达式key-path 字符串表达式

    字面量表达式语法

    字面量表达式

    字面量表达式#file | #filePath | #line | #column | #function | dsohandle

    数组字面量[ 数组字面量项列表可选 ] 数组字面量项列表可选 | 数组字面量项, 数组字面量项表达式

    字典字面量 → [ ] | [ : ]

    字典字面量项列表字典字面量项 ,**可选 | ,字典字面量项列表

    字典字面量项: 表达式

    palyground 字面量#colorLiteral ( red : , green :表达式, blue : , alpha : 表达式 )

    playground 字面量#fileLiteral ( resourceName : )

    playground 字面量 → **#imageLiteral ( resourceName : 表达式 )

    self 表达式语法

    self 表达式self | | self 下标表达式 |

    self 方法表达式self . 标识符

    self 下标表达式self [ ]

    self 构造器表达式self . init

    父类表达式语法

    父类表达式父类方法表达式 | | 父类构造器表达式

    父类方法表达式super .

    父类下标表达式super [函数调用参数表 ]

    父类构造器表达式super . init

    闭包表达式语法

    闭包表达式{ 可选 语句 }

    闭包签名函数结果可选 *in

    闭包签名函数结果可选 in

    闭包参数子句 ( ) | ( | 标识符列表 )

    闭包参数列表 | 闭包参数,

    闭包参数 闭包参数名 可选

    闭包参数 闭包参数名

    闭包参数名 标识符

    捕获列表[ 捕获列表项列表 ]

    捕获列表项列表 → | 捕获列表项 ,

    捕获列表项捕获说明符可选

    捕获说明符weak | unowned | unowned(safe) | unowned(unsafe)

    隐式成员表达式语法

    隐式成员表达式. 标识符

    圆括号表达式语法

    圆括号表达式( )

    元组表达式语法

    元组表达式( ) | (元组元素)

    元组元素列表元组元素 | , 元组元素列表 元组元素 → | 标识符 :

    通配符表达式语法

    通配符表达式_

    key-path表达式语法

    key-path 表达式\ 类型可选 . [多个 key-path 组件] 多个 key-path 组件 → | key-path 组件 . key-path 组件标识符 可选 | 多个 key-path 后缀 多个 key-path 后缀多个 key-path 后缀可选 key-path-postfixes {./04_Expressions.md#key-path-postfixes}

    key-path 后缀? | ! | self | [ ]

    key-path 字符串表达式语法 key-path 字符串表达式#keyPath ( 表达式 )

    后缀表达式表达式语法

    后缀表达式

    后缀表达式后缀表达式

    后缀表达式函数调用表达式

    后缀表达式

    后缀表达式显式成员表达式

    后缀表达式

    后缀表达式下标表达式

    后缀表达式

    后缀表达式可选链表达式

    函数调用表达式语法

    函数调用表达式函数调用参数子句

    函数调用表达式函数调用参数子句可选

    函数调用参数子句( ) | ( 函数调用参数表 )

    函数调用参数表 → | 函数调用参数 ,

    函数调用参数表达式 | : 表达式

    函数调用参数 → | 标识符 :

    尾随闭包闭包表达式 可选

    标签尾随闭包集标签尾随闭包

    标签尾随闭包标识符 :

    初始化表达式语法

    构造器表达式后缀表达式 . init

    构造器表达式. init ( 参数名称 )

    显式成员表达式语法

    显式成员表达式. [十进制数字] (02_Lexical_Structure.md#decimal-digit)

    显式成员表达式后缀表达式 . 泛型实参子句可选

    显式成员表达式. [标识符] (02_Lexical_Structure.md#identifier) ( 参数名称 )

    参数名称参数名称可选

    参数名:

    后缀 self 表达式语法

    后缀 self 表达式后缀表达式 . self

    下标表达式语法

    下标表达式[ 表达式列表 ]

    强制取值表达式语法 强制取值表达式!

    可选链式表达式语法 可选链表达式后缀表达式 ?

    语句

    语句语法

    语句表达式 ;可选

    语句;可选

    语句循环语句 ;可选

    语句;可选

    语句标签语句 ;可选

    语句;可选

    语句延迟语句 ;可选

    语句;可选

    语句编译控制语句

    语句集语句集可选

    循环语句语法

    循环语句

    循环语句while 语句

    循环语句

    For-In 循环语法

    for-in 语句for case可选 模式 in where 子句可选

    While 循环语法

    while 语句while 条件集

    条件集条件 | , 条件集 条件 → | 可用性条件 | | 可选绑定条件

    case 条件case 构造器

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

    Repeat-While 语句语法

    repeat-while-statementrepeat while 表达式

    分支语句语法

    分支语句

    分支语句guard 语句

    分支语句

    If 语句语法

    if 语句if 条件集 else 子句可选

    else 子句else | else if 语句

    Guard 语句语法

    guard 语句guard else 代码块

    Switch 语句语法

    switch 语句switch { switch-case集可选 }

    switch-case集switch-case集可选

    switch-case语句集

    switch-case语句集

    switch-case

    case 标签特性可选 case :

    case 项集模式 可选 | 模式 可选 , case 项集

    default 标签可选 default :

    where 子句where where 表达式

    where 表达式

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

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

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

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

    switch else 指令子句else 指令 可选

    标签语句语法

    标签语句语句标签

    标签语句语句标签

    标签语句语句标签

    标签语句语句标签

    语句标签标签名称 :

    标签名称

    控制转移语句语法

    控制转移语句break 语句

    控制转移语句

    控制转移语句fallthrough 语句

    控制转移语句

    控制转移语句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 模式列表catch 模式 | ,catch 模式列表

    catch 模式where 子句可选

    编译控制语句

    编译控制语句

    编译控制语句行控制语句

    编译控制语句

    条件编译块语法

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

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

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

    elseif 指令子句编译条件 可选

    else 指令子句else 指令 可选

    if 指令#if

    elseif 指令#elseif

    else 指令#else

    endif 指令#endif

    编译条件平台条件

    编译条件

    编译条件布尔字面量

    编译条件( )

    编译条件! 编译条件

    编译条件&& 编译条件

    编译条件|| 编译条件

    平台条件os ( )

    平台条件arch ( 架构 )

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

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

    平台条件canImport ( )

    平台条件targetEnvironment ( 环境 )

    操作系统macOS | iOS | watchOS | tvOS

    架构i386 | x86_64 | arm | arm64

    swift 版本swift 版本后缀可选

    swift 版本后缀. swift 版本集可选

    模块名

    环境模拟器macCatalyst

    行控制语句语法

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

    行控制语句#sourceLocation ( )

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

    文件名静态字符串字面量

    编译期诊断语句语法

    诊断语句#error ( )

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

    诊断信息

    可用性条件语法

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

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

    可用性参数平台名

    可用性参数*

    平台名iOS | iOSApplicationExtension

    平台名macOS | macOSApplicationExtension

    平台名watchOS

    平台名tvOS

    平台版本十进制数字集

    平台版本. 十进制数字集

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

    声明语法

    声明导入声明

    声明

    声明变量声明

    声明

    声明函数声明

    声明

    声明结构体声明

    声明

    声明构造器声明

    声明

    声明扩展声明

    声明

    声明运算符声明

    声明

    声明集声明 可选

    代码块语法

    代码块{ 多条语句可选 }

    导入声明语法

    导入声明可选 import 导入类型可选

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

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

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

    常数声明语法

    常量声明可选 声明修饰符集可选 let

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

    模式构造器构造器可选

    构造器=

    变量声明语法

    变量声明变量声明头

    变量声明变量声明头 类型注解

    变量声明变量声明头 类型注解

    变量声明变量声明头 类型注解

    变量声明变量声明头 构造器可选

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

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

    变量名称

    getter-setter 块代码块

    getter-setter 块{ setter 子句可选 }

    getter-setter 块{ getter 子句 }

    getter 子句可选 可变性修饰符可选 get

    setter 子句特性可选 可选 set setter 名称可选

    setter 名称( 标识符 )

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

    getter-setter 关键字(Keyword)块{ getter 关键字子句 }

    getter 关键字(Keyword)子句可选 可变性修饰符可选 get

    setter 关键字(Keyword)子句可选 可变性修饰符可选 set

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

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

    willSet 子句可选 willSet setter 名称可选

    didSet 子句特性可选

    didSet 可选 代码块

    类型别名声明语法

    类型别名声明可选 访问级别修饰符 typealias 泛型参数子句可选

    类型别名名称标识符

    类型别名赋值=

    函数声明语法

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

    函数头特性可选 可选 func

    函数名标识符 |

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

    函数签名参数子句 rethrows 可选

    函数结果-> 特性可选

    函数体代码块

    参数子句( ) | ( )

    参数集参数 | , 参数集

    参数可选 本地参数名 默认参数子句可选

    参数可选 本地参数名

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

    外部参数名

    本地参数名标识符

    默认参数子句=

    枚举声明语法

    枚举声明特性可选 可选 联合式枚举

    枚举声明可选 访问级别修饰符可选

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

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

    联合样式枚举成员 → | 联合式枚举 case 子句 |

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

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

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

    枚举名

    枚举的 case 名标识符

    原始值式枚举enum 泛型参数子句可选 泛型 where 子句可选 { }

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

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

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

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

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

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

    原始值字面量(raw-value-literal) → | 静态字符串字面量 |

    结构体声明语法

    结构体声明特性可选 可选 struct 结构体名称 可选 类型继承子句可选 可选 结构体主体

    结构体名称

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

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

    结构体成员 → | 编译控制语句

    类声明语法

    类声明可选 访问级别修饰符可选 final可选 class 泛型参数子句可选 泛型 where 子句可选

    类声明特性可选 final 可选 class 类名 可选 类型继承子句 可选 类主体

    类名

    类主体{ 类成员集可选 }

    类成员集类成员集可选

    类成员 → | 编译控制语句

    协议声明语法

    协议声明可选 访问级别修饰符可选 protocol 类型继承子句可选 可选 协议主体

    协议名

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

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

    协议成员 → | 编译控制语句

    协议成员声明

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

    协议成员声明

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

    协议成员声明

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

    协议属性声明语法

    协议属性声明变量名 getter-setter 关键字块

    协议方法声明语法

    协议方法声明函数名 可选 函数签名 可选

    协议构造器声明语法

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

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

    协议下标声明语法

    协议下标声明下标头 泛型 where 子句可选

    协议关联类型声明语法

    协议关联类型声明特性可选 可选 associatedtype 类型别名 可选 类型别名赋值可选 可选

    构造器声明语法

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

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

    构造器头(Head)特性可选 可选 init

    构造器头(Head)特性可选 可选 init ?

    构造器头(Head)特性可选 可选 init !

    构造器主体代码块

    析构器声明语法

    析构器声明可选 deinit 代码块

    扩展声明语法

    扩展声明可选 访问级别修饰符可选 extension 类型继承子句可选 可选 扩展主体

    扩展主体{ 可选 }

    扩展成员集扩展成员 可选

    扩展成员声明集 |

    下标声明语法

    下标声明下标头 泛型 where 子句可选

    下标声明下标头 泛型 where 子句可选

    下标声明下标头 泛型 where 子句可选

    下标头(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)集特性可选

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

    平衡令牌( 可选 )

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

    平衡令牌{ 可选 }

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

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

    模式语法

    模式通配符模式 可选

    模式标识符模式 可选

    模式值绑定模式

    模式类型注解可选

    模式

    模式可选模式

    模式

    模式表达式模式

    通配符模式语法

    通配符模式_

    标识符模式语法

    标识符模式

    值绑定模式语法

    值绑定模式var 模式 | let

    元组模式语法

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

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

    元组模式元素模式 | : 模式

    枚举 case 模式语法

    enum-case-pattern可选 . 枚举 case 名 可选

    可选模式语法

    可选模式标识符模式 ?

    类型转换模式语法

    类型转换模式 → | as 模式

    is 模式is

    as 模式模式 as

    表达式模式语法

    表达式模式表达式

    泛型参数

    泛型形参子句语法

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

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

    泛形参数类型名称

    泛形参数: 类型标识

    泛形参数: 协议合成类型

    泛型 where 子句where

    约束集约束 | , 约束集

    约束 → | 同类型约束

    一致性约束: 类型标识

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

    同类型约束== 类型

    泛型实参子句语法

    泛型实参子句< >

    泛型实参集泛型实参 | , 泛型实参集