diff --git a/source/chapter3/10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md b/source/chapter3/10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md
new file mode 100644
index 00000000..529ba6bc
--- /dev/null
+++ b/source/chapter3/10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md
@@ -0,0 +1,569 @@
+## 声明 {#declarations}
+
+> 声明语法
+>
+> *声明* → [导入声明](./06_Declarations.md#import_declaration)
+>
+> *声明* → [常量声明](./06_Declarations.md#constant_declaration)
+>
+> *声明* → [变量声明](./06_Declarations.md#variable_declaration)
+>
+> *声明* → [类型别名声明](./06_Declarations.md#typealias_declaration)
+>
+> *声明* → [函数声明](./06_Declarations.md#function_declaration)
+>
+> *声明* → [枚举声明](./06_Declarations.md#enum_declaration)
+>
+> *声明* → [结构体声明](./06_Declarations.md#struct_declaration)
+>
+> *声明* → [类声明](./06_Declarations.md#class_declaration)
+>
+> *声明* → [协议声明](./06_Declarations.md#protocol_declaration)
+>
+> *声明* → [构造器声明](./06_Declarations.md#initializer_declaration)
+>
+> *声明* → [析构器声明](./06_Declarations.md#deinitializer_declaration)
+>
+> *声明* → [扩展声明](./06_Declarations.md#extension_declaration)
+>
+> *声明* → [下标声明](./06_Declarations.md#subscript_declaration)
+>
+> *声明* → [运算符声明](./06_Declarations.md#operator_declaration)
+>
+> *声明* → [优先级组声明](./06_Declarations.md#precedence_group_declaration)
+>
+> *声明集* → [声明](./06_Declarations.md#declaration) [声明集](./06_Declarations.md#declarations) 可选
+>
+
+
+
+
+> 顶级声明语法
+>
+> *顶级声明* → [多条语句](./05_Statements.md#statements) 可选
+>
+
+
+
+> 代码块语法
+>
+> *代码块* → **{** [多条语句](./05_Statements.md#statements) 可选 **}**
+>
+
+
+
+> 导入声明语法
+>
+> *导入声明* → [属性集](./07_Attributes.md#attributes) 可选 **import** [导入类型](./06_Declarations.md#import_kind) 可选 [导入路径](./06_Declarations.md#import_path)
+>
+> *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **let** | **var** | **func**
+>
+> *导入路径* → [导入路径标识符](./06_Declarations.md#import_path_identifier) | [导入路径标识符](./06_Declarations.md#import_path_identifier) **.** [导入路径](./06_Declarations.md#import_path)
+>
+> *导入路径标识符* → [标识符](./02_Lexical_Structure.md#identifier) | [运算符](./02_Lexical_Structure.md#operator)
+>
+
+
+
+> 常数声明语法
+>
+> *常量声明* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_specifiers) 可选 **let** [模式构造器集](./06_Declarations.md#pattern_initializer_list)
+>
+> *模式构造器集* → [模式构造器](./06_Declarations.md#pattern_initializer) | [模式构造器](./06_Declarations.md#pattern_initializer) **,** [模式构造器集](./06_Declarations.md#pattern_initializer_list)
+>
+> *模式构造器* → [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer) 可选
+>
+> *构造器* → **=** [表达式](./04_Expressions.md#expression)
+>
+
+
+
+> 变量声明语法
+>
+> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [模式构造器集](./06_Declarations.md#pattern_initializer_list)
+>
+> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [代码块](./06_Declarations.md#code_block)
+>
+> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [getter-setter 块](./06_Declarations.md#getter_setter_block)
+>
+> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block)
+>
+> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [构造器](./06_Declarations.md#initializer) 可选 [willSet-didSet 代码块](./06_Declarations.md#willSet_didSet_block)
+>
+> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [构造器](./06_Declarations.md#initializer) 可选 [willSet-didSet 代码块](./06_Declarations.md#willSet_didSet_block)
+>
+> *变量声明头* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_specifiers) 可选 **var**
+>
+> *变量名称* → [标识符](./02_Lexical_Structure.md#identifier)
+>
+> *getter-setter 块* → [代码块](./06_Declarations.md#code_block)
+>
+> *getter-setter 块* → **{** [getter 子句](./06_Declarations.md#getter_clause) [setter 子句](./06_Declarations.md#setter_clause) 可选 **}**
+>
+> *getter-setter 块* → **{** [setter 子句](./06_Declarations.md#setter_clause) [getter 子句](./06_Declarations.md#getter_clause) **}**
+>
+> *getter 子句* → [属性集](./07_Attributes.md#attributes) 可选 [可变性修饰符](./06_Declarations.md#mutation-modifier) 可选 **get** [代码块](./06_Declarations.md#code_block)
+>
+> *setter 子句* → [属性集](./07_Attributes.md#attributes) 可选 [可变性修饰符](./06_Declarations.md#mutation-modifier) 可选 **set** [setter 名称](./06_Declarations.md#setter_name) 可选 [代码块](./06_Declarations.md#code_block)
+>
+> *setter 名称* → **(** [标识符](./02_Lexical_Structure.md#identifier) **)**
+>
+> *getter-setter 关键字(Keyword)块* → **{** [getter 关键字子句](./06_Declarations.md#getter_keyword_clause) [setter 关键字子句](./06_Declarations.md#setter_keyword_clause) 可选 **}**
+>
+> *getter-setter 关键字(Keyword)块* → **{** [setter 关键字子句](./06_Declarations.md#setter_keyword_clause) [getter 关键字子句](./06_Declarations.md#getter_keyword_clause) **}**
+>
+> *getter 关键字(Keyword)子句* → [属性集](./07_Attributes.md#attributes) 可选 [可变性修饰符](./06_Declarations.md#mutation-modifier) 可选 **get**
+>
+> *setter 关键字(Keyword)子句* → [属性集](./07_Attributes.md#attributes) 可选 [可变性修饰符](./06_Declarations.md#mutation-modifier) 可选 **set**
+>
+> *willSet-didSet 代码块* → **{** [willSet 子句](./06_Declarations.md#willSet_clause) [didSet 子句](./06_Declarations.md#didSet_clause) 可选 **}**
+>
+> *willSet-didSet 代码块* → **{** [didSet 子句](./06_Declarations.md#didSet_clause) [willSet 子句](./06_Declarations.md#willSet_clause) 可选 **}**
+>
+> *willSet 子句* → [属性集](./07_Attributes.md#attributes) 可选 **willSet** [setter 名称](./06_Declarations.md#setter_name) 可选 [代码块](./06_Declarations.md#code_block)
+>
+> *didSet 子句* → [属性集](./07_Attributes.md#attributes) 可选
+>
+ **didSet** [setter 名称](./06_Declarations.md#setter_name) 可选 [代码块](./06_Declarations.md#code_block)
+
+
+
+> 类型别名声明语法
+>
+> *类型别名声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) **typealias** [类型别名名称](./06_Declarations.md#typealias_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型别名赋值](./06_Declarations.md#typealias_assignment)
+>
+> *类型别名名称* → [标识符](./02_Lexical_Structure.md#identifier)
+>
+> *类型别名赋值* → **=** [类型](./03_Types.md#type)
+>
+
+
+
+> 函数声明语法
+>
+> *函数声明* → [函数头](./06_Declarations.md#function_head) [函数名](./06_Declarations.md#function_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [函数签名](./06_Declarations.md#function_signature) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [函数体](./06_Declarations.md#function_body) 可选
+>
+> *函数头* → [属性集](./07_Attributes.md#attributes) 可选 [声明描述符集](./06_Declarations.md#declaration_specifiers) 可选 **func**
+>
+> *函数名* → [标识符](./02_Lexical_Structure.md#identifier) | [运算符](./02_Lexical_Structure.md#operator)
+>
+> *函数签名* → [参数子句](./06_Declarations.md#parameter_clause) **throws** 可选 [函数结果](./06_Declarations.md#function_result) 可选
+>
+
+> *函数签名* → [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [函数结果](./06_Declarations.md#function_result) 可选
+>
+> *函数结果* → **->** [属性集](./07_Attributes.md#attributes) 可选 [类型](./03_Types.md#type)
+>
+> *函数体* → [代码块](./06_Declarations.md#code_block)
+>
+> *参数子句* → **(** **)** | **(** [参数集](./06_Declarations.md#parameter_list) **)**
+>
+> *参数集* → [参数](./06_Declarations.md#parameter) | [参数](./06_Declarations.md#parameter) **,** [参数集](./06_Declarations.md#parameter_list)
+>
+> *参数* → [外部参数名](./06_Declarations.md#parameter_name) 可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) [默认参数子句](./06_Declarations.md#default_argument_clause) 可选
+>
+> *参数* → [外部参数名](./06_Declarations.md#parameter_name) 可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation)
+>
+> *参数* → [外部参数名](./06_Declarations.md#parameter_name) 可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) **...**
+>
+> *外部参数名* → [标识符](./02_Lexical_Structure.md#identifier)
+>
+> *本地参数名* → [标识符](./02_Lexical_Structure.md#identifier)
+>
+> *默认参数子句* → **=** [表达式](./04_Expressions.md#expression)
+>
+
+
+
+> 枚举声明语法
+>
+> *枚举声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 [联合式枚举](./06_Declarations.md#union_style_enum)
+>
+> *枚举声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 [原始值式枚举](./06_Declarations.md#raw-value-style-enum)
+>
+> *联合式枚举* → **indirect** 可选 **enum** [枚举名](./06_Declarations.md#enum_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型继承子句](./03_Types.md#type-inheritance-clause) 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 **{** [联合式枚举成员](./06_Declarations.md#union_style_enum_members) 可选 **}**
+>
+> *联合式枚举成员集* → [联合式枚举成员](./06_Declarations.md#union_style_enum_member) [联合样式枚举成员集](./06_Declarations.md#union_style_enum_members) 可选
+>
+> *联合样式枚举成员* → [声明](./06_Declarations.md#declaration) | [联合式枚举 case 子句](./06_Declarations.md#union_style_enum_case_clause) | [编译控制语句](./05_Statements.md#compiler-control-statement)
+>
+> *联合式枚举 case 子句* → [属性集](./07_Attributes.md#attributes) 可选 **indirect** 可选 **case** [联合式枚举 case 集](./06_Declarations.md#union_style_enum_case_list)
+>
+> *联合式枚举 case 集* → [联合式枚举 case](./06_Declarations.md#union_style_enum_case) | [联合式枚举 case](./06_Declarations.md#union_style_enum_case) **,** [联合式枚举 case 集](./06_Declarations.md#union_style_enum_case_list)
+>
+> *联合式枚举 case* → [枚举的 case 名](./06_Declarations.md#enum_case_name) [元组类型](./03_Types.md#tuple_type) 可选
+>
+> *枚举名* → [标识符](./02_Lexical_Structure.md#identifier)
+>
+> *枚举的 case 名* → [标识符](./02_Lexical_Structure.md#identifier)
+>
+> *原始值式枚举* → **enum** [枚举名](./06_Declarations.md#enum_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型继承子句](./03_Types.md#type-inheritance-clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 **{** [原始值式枚举成员集](./06_Declarations.md#raw_value_style_enum_members) **}**
+>
+> *原始值式枚举成员集* → [原始值式枚举成员](./06_Declarations.md#raw_value_style_enum_member) [原始值式枚举成员集](./06_Declarations.md#raw_value_style_enum_members) 可选
+>
+> *原始值式枚举成员* → [声明](./06_Declarations.md#declaration) | [原始值式枚举 case 子句](./06_Declarations.md#raw_value_style_enum_case_clause) | [编译控制语句](./05_Statements.md#compiler-control-statement)
+>
+> *原始值式枚举 case 子句* → [属性集](./07_Attributes.md#attributes) 可选 **case** [原始值式枚举 case 集](./06_Declarations.md#raw_value_style_enum_case_list)
+>
+> *原始值式枚举 case 集* → [原始值式枚举 case](./06_Declarations.md#raw_value_style_enum_case) | [原始值式枚举 case](./06_Declarations.md#raw_value_style_enum_case) **,** [原始值式枚举 case 集](./06_Declarations.md#raw_value_style_enum_case_list)
+>
+> *原始值式枚举 case* → [枚举的 case 名](./06_Declarations.md#enum_case_name) [原始值赋值](./06_Declarations.md#raw_value_assignment) 可选
+>
+> *原始值赋值* → **=** [原始值字面量](./02_Lexical_Structure.md#literal)
+>
+> *原始值字面量(raw-value-literal)* → [数值字面量](./02_Lexical_Structure.md#literal) | [静态字符串字面量](./02_Lexical_Structure.md#literal) | [布尔字面量](./02_Lexical_Structure.md#literal)
+>
+
+
+
+> 结构体声明语法
+>
+> *结构体声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **struct** [结构体名称](./06_Declarations.md#struct_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型继承子句](./03_Types.md#type_inheritance_clause) 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [结构体主体](./06_Declarations.md#struct_body)
+>
+> *结构体名称* → [标识符](./02_Lexical_Structure.md#identifier)
+>
+> *结构体主体* → **{** [结构体成员集](./06_Declarations.md#declarations) 可选 **}**
+>
+> *结构体成员集* → [结构体成员](./06_Declarations.md#declarations) [结构体成员集](./06_Declarations.md#declarations) 可选
+>
+> *结构体成员* → [声明集](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement)
+>
+
+
+
+> 类声明语法
+>
+> *类声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **final** 可选 **class** [类名](./06_Declarations.md#class_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型继承子句](./03_Types.md#type_inheritance_clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [类主体](./06_Declarations.md#class_body)
+>
+> *类声明* → [属性集](./07_Attributes.md#attributes) 可选 **final** [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **class** [类名](./06_Declarations.md#class_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型继承子句](./03_Types.md#type_inheritance_clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [类主体](./06_Declarations.md#class_body)
+>
+> *类名* → [标识符](./02_Lexical_Structure.md#identifier)
+>
+> *类主体* → **{** [类成员集](./06_Declarations.md#declarations) 可选 **}**
+>
+> *类成员集* → [类成员](./06_Declarations.md#declarations) [类成员集](./06_Declarations.md#declarations) 可选
+>
+> *类成员* → [声明集](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement)
+>
+
+
+
+> 协议声明语法
+>
+> *协议声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **protocol** [协议名](./06_Declarations.md#protocol_name) [类型继承子句](./03_Types.md#type_inheritance_clause) 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [协议主体](./06_Declarations.md#protocol_body)
+>
+> *协议名* → [标识符](./02_Lexical_Structure.md#identifier)
+>
+> *协议主体* → **{** [协议成员集](./06_Declarations.md#protocol_member_declarations) 可选 **}**
+>
+> *协议成员集* → [协议成员](./06_Declarations.md#declarations) [协议成员集](./06_Declarations.md#declarations) 可选
+>
+> *协议成员* → [协议成员声明](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement)
+>
+> *协议成员声明* → [协议属性声明](./06_Declarations.md#protocol_property_declaration)
+>
+> *协议成员声明* → [协议方法声明](./06_Declarations.md#protocol_method_declaration)
+>
+> *协议成员声明* → [协议构造器声明](./06_Declarations.md#protocol_initializer_declaration)
+>
+> *协议成员声明* → [协议下标声明](./06_Declarations.md#protocol_subscript_declaration)
+>
+> *协议成员声明* → [协议关联类型声明](./06_Declarations.md#protocol_associated_type_declaration)
+>
+> *协议成员声明* → [类型别名声明](./06_Declarations.md#typealias_declaration)
+>
+
+
+
+> 协议属性声明语法
+>
+> *协议属性声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block)
+>
+
+
+
+> 协议方法声明语法
+>
+> *协议方法声明* → [函数头](./06_Declarations.md#function_head) [函数名](./06_Declarations.md#function_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [函数签名](./06_Declarations.md#function_signature) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选
+>
+
+
+
+> 协议构造器声明语法
+>
+> *协议构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [参数子句](./06_Declarations.md#parameter_clause) **throws** 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选
+>
+> *协议构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选
+>
+
+
+
+> 协议下标声明语法
+>
+> *协议下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block)
+>
+
+
+
+> 协议关联类型声明语法
+>
+> *协议关联类型声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **associatedtype** [类型别名](./06_Declarations.md#typealias_name) [类型继承子句](./03_Types.md#type_inheritance_clause) 可选 [类型别名赋值](./06_Declarations.md#typealias_assignment) 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选
+>
+
+
+
+> 构造器声明语法
+>
+> *构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [参数子句](./06_Declarations.md#parameter_clause) **throws** 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [构造器主体](./06_Declarations.md#initializer_body)
+>
+> *构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [构造器主体](./06_Declarations.md#initializer_body)
+>
+> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers) 可选 **init**
+>
+> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers) 可选 **init ?**
+>
+> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers) 可选 **init !**
+>
+> *构造器主体* → [代码块](./06_Declarations.md#code_block)
+>
+
+
+
+> 析构器声明语法
+>
+> *析构器声明* → [属性集](./07_Attributes.md#attributes) 可选 **deinit** [代码块](./06_Declarations.md#code_block)
+>
+
+
+
+> 扩展声明语法
+>
+> *扩展声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **extension** [类型标识](./03_Types.md#type_identifier) [类型继承子句](./03_Types.md#type_inheritance_clause) 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [扩展主体](./06_Declarations.md#extension_body)
+>
+> *扩展主体* → **{** [扩展成员集](./06_Declarations.md#declarations) 可选 **}**
+>
+> *扩展成员集* → [扩展成员](./06_Declarations.md#declarations) [扩展成员集](./06_Declarations.md#declarations) 可选
+>
+> *扩展成员* → [声明集](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement)
+>
+
+
+
+> 下标声明语法
+>
+> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [代码块](./06_Declarations.md#code_block)
+>
+> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [getter-setter 块](./06_Declarations.md#getter_setter_block)
+>
+> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block)
+>
+> *下标头(Head)* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers) 可选 **subscript** [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [参数子句](./06_Declarations.md#parameter_clause)
+>
+> *下标结果(Result)* → **->** [属性集](./07_Attributes.md#attributes) 可选 [类型](./03_Types.md#type)
+>
+
+
+
+> 运算符声明语法
+>
+> *运算符声明* → [前置运算符声明](./06_Declarations.md#prefix_operator_declaration) | [后置运算符声明](./06_Declarations.md#postfix_operator_declaration) | [中置运算符声明](./06_Declarations.md#infix_operator_declaration)
+>
+> *前置运算符声明* → **prefix** **operator** [运算符](./02_Lexical_Structure.md#operator)
+>
+> *后置运算符声明* → **postfix** **operator** [运算符](./02_Lexical_Structure.md#operator)
+>
+> *中置运算符声明* → **infix** **operator** [运算符](./02_Lexical_Structure.md#operator) [中置运算符属性集](./06_Declarations.md#infix_operator_attributes) 可选
+>
+> *中置运算符属性集* → [优先级组名](./06_Declarations.md#precedence_group_name)
+>
+
+> 优先级组声明语法
+>
+> *优先级组声明* → **precedencegroup** [优先级组名](./06_Declarations.md#precedence_group_name) **{** [优先级组属性集](./06_Declarations.md#precedence_group_attributes) 可选 **}**
+>
+> *优先级组属性集* → [优先级组属性](./06_Declarations.md#declarations) [优先级组属性集](./06_Declarations.md#declarations) 可选
+>
+> *优先级组属性* → [优先级组关系](./06_Declarations.md#declarations)
+>
+> *优先级组属性* → [优先级组赋值](./06_Declarations.md#declarations)
+>
+> *优先级组属性* → [优先级组结合](./06_Declarations.md#declarations)
+>
+> *优先级组关系* → **higherThan :** [优先级组名集](./06_Declarations.md#declarations)
+>
+> *优先级组关系* → **lowerThan :** [优先级组名集](./06_Declarations.md#declarations)
+>
+> *优先级组赋值* → **assignment :** [布尔字面量](./02_Lexical_Structure.md#string_literal)
+>
+> *优先级组结合* → **associativity : left**
+>
+> *优先级组结合* → **associativity : right**
+>
+> *优先级组结合* → **associativity : none**
+>
+> *优先级组名集* → [优先级组名](./06_Declarations.md#declarations) | [优先级组名](./06_Declarations.md#declarations) **,** [优先级组名集](./06_Declarations.md#declarations)
+>
+> *优先级组名* → [标识符](./02_Lexical_Structure.md#identifier)
+>
+
+
+> 声明修饰符语法
+>
+> *声明修饰符* → **class** | **convenience** | **dynamic** | **final** | **infix** | **lazy** | **optional** | **override** | **postfix** | **prefix** | **required** | **static** | **unowned** | **unowned(safe)** | **unowned(unsafe)** | **weak**
+>
+> *声明修饰符* → [访问级别修饰符](./07_Attributes.md#access-level-modifier)
+>
+> *声明修饰符* → [可变性修饰符](./07_Attributes.md#mutation-modifier)
+>
+> *声明修饰符集* → [声明修饰符](./06_Declarations.md#declaration_modifier) [声明修饰符集](./06_Declarations.md#declaration_modifiers) 可选
+>
+> *访问级别修饰符* → **private** | **private(set)**
+>
+> *访问级别修饰符* → **fileprivate** | **fileprivate(set)**
+>
+> *访问级别修饰符* → **internal** | **internal(set)**
+>
+> *访问级别修饰符* → **public** | **public(set)**
+>
+> *访问级别修饰符* → **open** | **open(set)**
+>
+> *可变性修饰符* → **mutating** | **nonmutating**
+>
+
+## 属性 {#attributes}
+
+> 属性语法
+>
+> *属性* → **@** [属性名](./07_Attributes.md#attribute_name) [属性参数子句](./07_Attributes.md#attribute_argument_clause) 可选
+>
+> *属性名* → [标识符](./02_Lexical_Structure.md#identifier)
+>
+> *属性参数子句* → **{** [平衡令牌集](./07_Attributes.md#balanced_tokens) 可选 **}**
+>
+> *属性(Attributes)集* → [属性](./07_Attributes.md#attribute) [属性集](./07_Attributes.md#attributes) 可选
+>
+> *平衡令牌集* → [平衡令牌](./07_Attributes.md#balanced_token) [平衡令牌集](./07_Attributes.md#balanced_tokens) 可选
+>
+> *平衡令牌* → **(** [平衡令牌集](./07_Attributes.md#balanced_tokens) 可选 **)**
+>
+> *平衡令牌* → **[** [平衡令牌集](./07_Attributes.md#balanced_tokens) 可选 **]**
+>
+> *平衡令牌* → **{** [平衡令牌集](./07_Attributes.md#balanced_tokens) 可选 **}**
+>
+> *平衡令牌* → 任意标识符、关键字、字面量或运算符
+>
+> *平衡令牌* → 除 **(** 、**)**、**[**、**]**、**{**、**}** 外的任意标点符号
+>
+>
+
+## 模式 {#patterns}
+
+> 模式语法
+>
+> *模式* → [通配符模式](./08_Patterns.md#wildcard_pattern) [类型注解](./03_Types.md#type_annotation) 可选
+>
+> *模式* → [标识符模式](./08_Patterns.md#identifier_pattern) [类型注解](./03_Types.md#type_annotati Value Bindingon ) 可选
+>
+> *模式* → [值绑定模式](./08_Patterns.md#value_binding_pattern)
+>
+> *模式* → [元组模式](./08_Patterns.md#tuple_pattern) [类型注解](./03_Types.md#type_annotation) 可选
+>
+> *模式* → [枚举 case 模式](./08_Patterns.md#enum_case_pattern)
+>
+> *模式* → [可选模式](./08_Patterns.md#optional_pattern)
+>
+> *模式* → [类型转换模式](./08_Patterns.md#type_casting_pattern)
+>
+> *模式* → [表达式模式](./08_Patterns.md#expression_pattern)
+>
+
+
+
+> 通配符模式语法
+>
+> *通配符模式* → **_**
+>
+
+
+
+> 标识符模式语法
+>
+> *标识符模式* → [标识符](./02_Lexical_Structure.md#identifier)
+>
+
+
+
+> 值绑定模式语法
+>
+> *值绑定模式* → **var** [模式](./08_Patterns.md#pattern) | **let** [模式](./08_Patterns.md#pattern)
+>
+
+
+
+> 元组模式语法
+>
+> *元组模式* → **(** [元组模式元素集](./08_Patterns.md#tuple_pattern_element_list) 可选 **)**
+>
+> *元组模式元素集* → [元组模式元素](./08_Patterns.md#tuple_pattern_element) | [元组模式元素](./08_Patterns.md#tuple_pattern_element) **,** [元组模式元素集](./08_Patterns.md#tuple_pattern_element_list)
+>
+> *元组模式元素* → [模式](./08_Patterns.md#pattern) | [标识符](./02_Lexical_Structure.md#identifier) **:** [模式](./08_Patterns.md#pattern)
+>
+
+
+
+> 枚举 case 模式语法
+>
+> *enum-case-pattern* → [类型标识](./03_Types.md#type_identifier) 可选 **.** [枚举 case 名](./06_Declarations.md#enum_case_name) [元组模式](./08_Patterns.md#tuple_pattern) 可选
+>
+
+
+> 可选模式语法
+>
+> *可选模式* → [标识符模式](./02_Lexical_Structure.md#identifier) **?**
+>
+
+
+
+> 类型转换模式语法
+>
+> *类型转换模式* → [is 模式](./08_Patterns.md#is_pattern) | [as 模式](./08_Patterns.md#as_pattern)
+>
+> *is 模式* → **is** [类型](./03_Types.md#type)
+>
+> *as 模式* → [模式](./08_Patterns.md#pattern) **as** [类型](./03_Types.md#type)
+>
+
+
+
+> 表达式模式语法
+>
+> *表达式模式* → [表达式](./04_Expressions.md#expression)
+>
+
+## 泛型参数 {#generic_parameters_and_arguments}
+
+> 泛型形参子句语法
+>
+>
+> *泛型参数子句* → **<** [泛型参数集](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) **>**
+>
+> *泛型参数集* → [泛型参数](./09_Generic_Parameters_and_Arguments.md#generic_parameter) | [泛形参数](./09_Generic_Parameters_and_Arguments.md#generic_parameter) **,** [泛型参数集](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list)
+>
+> *泛形参数* → [类型名称](./03_Types.md#type_name)
+>
+> *泛形参数* → [类型名称](./03_Types.md#type_name) **:** [类型标识](./03_Types.md#type_identifier)
+>
+> *泛形参数* → [类型名称](./03_Types.md#type_name) **:** [协议合成类型](./03_Types.md#protocol_composition_type)
+>
+> *泛型 where 子句* → **where** [约束集](./09_Generic_Parameters_and_Arguments.md#requirement_list)
+>
+> *约束集* → [约束](./09_Generic_Parameters_and_Arguments.md#requirement) | [约束](./09_Generic_Parameters_and_Arguments.md#requirement) **,** [约束集](./09_Generic_Parameters_and_Arguments.md#requirement_list)
+>
+> *约束* → [一致性约束](./09_Generic_Parameters_and_Arguments.md#conformance_requirement) | [同类型约束](./09_Generic_Parameters_and_Arguments.md#same_type_requirement)
+>
+> *一致性约束* → [类型标识](./03_Types.md#type_identifier) **:** [类型标识](./03_Types.md#type_identifier)
+>
+> *一致性约束* → [类型标识](./03_Types.md#type_identifier) **:** [协议合成类型](./03_Types.md#protocol_composition_type)
+>
+> *同类型约束* → [类型标识](./03_Types.md#type_identifier) **==** [类型](./03_Types.md#type_identifier)
+>
diff --git a/source/chapter3/10_Summary_of_the_Grammar.md b/source/chapter3/10_Summary_of_the_Grammar.md
index 279ca9c8..19d9db9a 100755
--- a/source/chapter3/10_Summary_of_the_Grammar.md
+++ b/source/chapter3/10_Summary_of_the_Grammar.md
@@ -59,17 +59,17 @@
> While 循环语法
->
-> *while 语句* → **while** [*条件从句*](./05_Statements.md#while_condition) [*代码块*](./06_Declarations.md#code_block)
->
-> *条件从句* → [*表达式*](TODO)
->
-> *条件从句* → [*表达式*](TODO) *,* [*表达式集*]()
->
-> *条件从句* → [*表达式集*](TODO)
->
-> *条件从句* → [*可用条件(availability-condition*)](TODO) *|* [*表达式集*]()
->
+>
+> *while 语句* → **while** [*条件子句*](./05_Statements.md#while_condition) [*代码块*](./06_Declarations.md#code_block)
+>
+> *条件子句* → [*表达式*](TODO)
+>
+> *条件子句* → [*表达式*](TODO) *,* [*表达式集*]()
+>
+> *条件子句* → [*表达式集*](TODO)
+>
+> *条件子句* → [*可用条件(availability-condition*)](TODO) *|* [*表达式集*]()
+>
> *条件集* → [*条件*](TODO) *|* [*条件*](TODO) *,* [*条件集*]()
>
> *条件* → [*可用条件(availability-condition)*](TODO) *|* [*个例条件(case-condition)*](TODO) *|* [*可选绑定条件(optional-binding-condition)*](TODO)
@@ -104,17 +104,17 @@
> If 语句语法
->
-> *if 语句* → **if** [*条件从句*](TODO) [*代码块*](TODO) [*else 从句(Clause)*](TODO) _可选_
->
-> *else 从句(Clause)* → **else** [*代码块*](./06_Declarations.md#code_block) | **else** [*if 语句*](./05_Statements.md#if_statement)
->
+>
+> *if 语句* → **if** [*条件子句*](TODO) [*代码块*](TODO) [*else 子句(Clause)*](TODO) _可选_
+>
+> *else 子句(Clause)* → **else** [*代码块*](./06_Declarations.md#code_block) | **else** [*if 语句*](./05_Statements.md#if_statement)
+>
> Guard 语句语法
->
-> *guard 语句* → **guard** [*条件从句*](TODO) **else** [*代码块*](TODO)
->
+>
+> *guard 语句* → **guard** [*条件子句*](TODO) **else** [*代码块*](TODO)
+>
@@ -134,9 +134,9 @@
> *case 项集* → [*模式*](./08_Patterns.md#pattern) [*where-clause*](./05_Statements.md#guard_clause) _可选_ | [*模式*](./08_Patterns.md#pattern) [*where-clause*](./05_Statements.md#guard_clause) _可选_ **,** [*case 项集*](./05_Statements.md#case_item_list)
>
> *default 标签* → **default** **:**
->
-> *where 从句* → **where** [*where 表达式*](TODO)
->
+>
+> *where 子句* → **where** [*where 表达式*](TODO)
+>
> *where 表达式* → [*表达式*](TODO)
>
@@ -244,11 +244,11 @@
## 泛型参数 {#generic_parameters_and_arguments}
-> 泛型形参从句(Generic Parameter Clause)语法
->
+> 泛型形参子句(Generic Parameter Clause)语法
+>
+>
+> *泛型参数子句* → **<** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) [*约束子句*](./09_Generic_Parameters_and_Arguments.md#requirement_clause) _可选_ **>**
>
-> *泛型参数从句* → **<** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) [*约束从句*](./09_Generic_Parameters_and_Arguments.md#requirement_clause) _可选_ **>**
->
> *泛型参数集* → [*泛形参数*](./09_Generic_Parameters_and_Arguments.md#generic_parameter) | [*泛形参数*](./09_Generic_Parameters_and_Arguments.md#generic_parameter) **,** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list)
>
> *泛形参数* → [*类型名称*](./03_Types.md#type_name)
@@ -256,9 +256,9 @@
> *泛形参数* → [*类型名称*](./03_Types.md#type_name) **:** [*类型标识*](./03_Types.md#type_identifier)
>
> *泛形参数* → [*类型名称*](./03_Types.md#type_name) **:** [*协议合成类型*](./03_Types.md#protocol_composition_type)
->
-> *约束从句* → **where** [*约束集*](./09_Generic_Parameters_and_Arguments.md#requirement_list)
->
+>
+> *约束子句* → **where** [*约束集*](./09_Generic_Parameters_and_Arguments.md#requirement_list)
+>
> *约束集* → [*约束*](./09_Generic_Parameters_and_Arguments.md#requirement) | [*约束*](./09_Generic_Parameters_and_Arguments.md#requirement) **,** [*约束集*](./09_Generic_Parameters_and_Arguments.md#requirement_list)
>
> *约束* → [*一致性约束*](./09_Generic_Parameters_and_Arguments.md#conformance_requirement) | [*同类型约束*](./09_Generic_Parameters_and_Arguments.md#same_type_requirement)
@@ -272,10 +272,10 @@
-> 泛型实参从句语法
->
-> *(泛型参数从句 Generic Argument Clause)* → **<** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_argument_list) **>**
->
+> 泛型实参子句语法
+>
+> *(泛型参数子句 Generic Argument Clause)* → **<** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_argument_list) **>**
+>
> *泛型参数集* → [*泛型参数*](./09_Generic_Parameters_and_Arguments.md#generic_argument) | [*泛型参数*](./09_Generic_Parameters_and_Arguments.md#generic_argument) **,** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_argument_list)
>
> *泛型参数* → [*类型*](./03_Types.md#type)
@@ -313,6 +313,8 @@
>
> *声明* → [*运算符声明*](./06_Declarations.md#operator_declaration)
>
+> *声明* → [*优先级组声明*](./06_Declarations.md#precedence_group_declaration)
+>
> *声明(Declarations)集* → [*声明*](./06_Declarations.md#declaration) [*声明(Declarations)集*](./06_Declarations.md#declarations) _可选_
>
@@ -336,9 +338,9 @@
> 导入(Import)声明语法
>
> *导入声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **import** [*导入类型*](./06_Declarations.md#import_kind) _可选_ [*导入路径*](./06_Declarations.md#import_path)
->
-> *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **var** | **func**
->
+>
+> *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **let** | **var** | **func**
+>
> *导入路径* → [*导入路径标识符*](./06_Declarations.md#import_path_identifier) | [*导入路径标识符*](./06_Declarations.md#import_path_identifier) **.** [*导入路径*](./06_Declarations.md#import_path)
>
> *导入路径标识符* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator)
@@ -347,9 +349,9 @@
> 常数声明语法
->
-> *常量声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改符(Modifiers)集*](./06_Declarations.md#declaration_specifiers) _可选_ **let** [*模式构造器集*](./06_Declarations.md#pattern_initializer_list)
->
+>
+> *常量声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符(Modifiers)集*](./06_Declarations.md#declaration_specifiers) _可选_ **let** [*模式构造器集*](./06_Declarations.md#pattern_initializer_list)
+>
> *模式构造器集* → [*模式构造器*](./06_Declarations.md#pattern_initializer) | [*模式构造器*](./06_Declarations.md#pattern_initializer) **,** [*模式构造器集*](./06_Declarations.md#pattern_initializer_list)
>
> *模式构造器* → [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) _可选_
@@ -369,48 +371,50 @@
>
> *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block)
>
+> *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*构造器*](./06_Declarations.md#initializer) _可选_ [*willSet-didSet 代码块*](./06_Declarations.md#willSet_didSet_block)
+>
> *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*构造器*](./06_Declarations.md#initializer) _可选_ [*willSet-didSet 代码块*](./06_Declarations.md#willSet_didSet_block)
->
-> *变量声明头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改符(Modifers)集*](./06_Declarations.md#declaration_specifiers) _可选_ **var**
->
+>
+> *变量声明头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符(Modifers)集*](./06_Declarations.md#declaration_specifiers) _可选_ **var**
+>
> *变量名称* → [*标识符*](./02_Lexical_Structure.md#identifier)
->
-> *getter-setter 块* → **{** [*getter 从句*](./06_Declarations.md#getter_clause) [*setter 从句*](./06_Declarations.md#setter_clause) _可选_ **}**
->
-> *getter-setter 块* → **{** [*setter 从句*](./06_Declarations.md#setter_clause) [*getter 从句*](./06_Declarations.md#getter_clause) **}**
->
-> *getter 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **get** [*代码块*](./06_Declarations.md#code_block)
->
-> *setter 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **set** [*setter 名称*](./06_Declarations.md#setter_name) _可选_ [*代码块*](./06_Declarations.md#code_block)
->
+>
+> *getter-setter 块* → [*代码块*](./06_Declarations.md#code_block)
+>
+> *getter-setter 块* → **{** [*getter 子句*](./06_Declarations.md#getter_clause) [*setter 子句*](./06_Declarations.md#setter_clause) _可选_ **}**
+>
+> *getter-setter 块* → **{** [*setter 子句*](./06_Declarations.md#setter_clause) [*getter 子句*](./06_Declarations.md#getter_clause) **}**
+>
+> *getter 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*可变性修饰符(mutation-modifier)*](./06_Declarations.md#mutation-modifier) _可选_ **get** [*代码块*](./06_Declarations.md#code_block)
+>
+> *setter 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*可变性修饰符(mutation-modifier)*](./06_Declarations.md#mutation-modifier) _可选_ **set** [*setter 名称*](./06_Declarations.md#setter_name) _可选_ [*代码块*](./06_Declarations.md#code_block)
+>
> *setter 名称* → **(** [*标识符*](./02_Lexical_Structure.md#identifier) **)**
->
-> *getter-setter 关键字(Keyword)块* → **{** [*getter 关键字(Keyword)从句*](./06_Declarations.md#getter_keyword_clause) [*setter 关键字(Keyword)从句*](./06_Declarations.md#setter_keyword_clause) _可选_ **}**
->
-> *getter-setter 关键字(Keyword)块* → **{** [*setter 关键字(Keyword)从句*](./06_Declarations.md#setter_keyword_clause) [*getter 关键字(Keyword)从句*](./06_Declarations.md#getter_keyword_clause) **}**
->
-> *getter 关键字(Keyword)从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **get**
->
-> *setter 关键字(Keyword)从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **set**
->
-> *willSet-didSet 代码块* → **{** [*willSet 从句*](./06_Declarations.md#willSet_clause) [*didSet 从句*](./06_Declarations.md#didSet_clause) _可选_ **}**
->
-> *willSet-didSet 代码块* → **{** [*didSet 从句*](./06_Declarations.md#didSet_clause) [*willSet 从句*](./06_Declarations.md#willSet_clause) **}**
->
-> *willSet 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **willSet** [*setter 名称*](./06_Declarations.md#setter_name) _可选_ [*代码块*](./06_Declarations.md#code_block)
->
-> *didSet 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_
->
+>
+> *getter-setter 关键字(Keyword)块* → **{** [*getter 关键字(Keyword)子句*](./06_Declarations.md#getter_keyword_clause) [*setter 关键字(Keyword)子句*](./06_Declarations.md#setter_keyword_clause) _可选_ **}**
+>
+> *getter-setter 关键字(Keyword)块* → **{** [*setter 关键字(Keyword)子句*](./06_Declarations.md#setter_keyword_clause) [*getter 关键字(Keyword)子句*](./06_Declarations.md#getter_keyword_clause) **}**
+>
+> *getter 关键字(Keyword)子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*可变性修饰符(mutation-modifier)*](./06_Declarations.md#mutation-modifier) _可选_ **get**
+>
+> *setter 关键字(Keyword)子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*可变性修饰符(mutation-modifier)*](./06_Declarations.md#mutation-modifier) _可选_ **set**
+>
+> *willSet-didSet 代码块* → **{** [*willSet 子句*](./06_Declarations.md#willSet_clause) [*didSet 子句*](./06_Declarations.md#didSet_clause) _可选_ **}**
+>
+> *willSet-didSet 代码块* → **{** [*didSet 子句*](./06_Declarations.md#didSet_clause) [*willSet 子句*](./06_Declarations.md#willSet_clause) _可选_ **}**
+>
+> *willSet 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **willSet** [*setter 名称*](./06_Declarations.md#setter_name) _可选_ [*代码块*](./06_Declarations.md#code_block)
+>
+> *didSet 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_
+>
**didSet** [*setter 名称*](./06_Declarations.md#setter_name) _可选_ [*代码块*](./06_Declarations.md#code_block)
> 类型别名声明语法
->
-> *类型别名声明* → [*类型别名头(Head)*](./06_Declarations.md#typealias_head) [*类型别名赋值*](./06_Declarations.md#typealias_assignment)
->
-> *类型别名头(Head)* → [*属性*](TODO) _可选_ [*访问级别修改符(access-level-modifier)*](TODO) **typealias** [*类型别名名称*](./06_Declarations.md#typealias_name)
->
+>
+> *类型别名声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) **typealias** [*类型别名名称*](./06_Declarations.md#typealias_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型别名赋值*](./06_Declarations.md#typealias_assignment)
+>
> *类型别名名称* → [*标识符*](./02_Lexical_Structure.md#identifier)
>
> *类型别名赋值* → **=** [*类型*](./03_Types.md#type)
@@ -419,114 +423,126 @@
> 函数声明语法
->
-> *函数声明* → [*函数头*](./06_Declarations.md#function_head) [*函数名*](./06_Declarations.md#function_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*函数签名(Signature)*](./06_Declarations.md#function_signature) [*函数体*](./06_Declarations.md#function_body)
->
+>
+> *函数声明* → [*函数头*](./06_Declarations.md#function_head) [*函数名*](./06_Declarations.md#function_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*函数签名(Signature)*](./06_Declarations.md#function_signature) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*函数体*](./06_Declarations.md#function_body) _可选_
+>
> *函数头* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明描述符(Specifiers)集*](./06_Declarations.md#declaration_specifiers) _可选_ **func**
>
> *函数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator)
->
-> *函数签名(Signature)* → [*parameter-clauses*](./06_Declarations.md#parameter_clauses) **throws** _可选_ [*函数结果*](./06_Declarations.md#function_result) _可选_
->
+>
+> *函数签名(Signature)* → [*参数子句*](./06_Declarations.md#parameter_clause) **throws** _可选_ [*函数结果*](./06_Declarations.md#function_result) _可选_
+>
-> *函数签名(Signature)* → [*parameter-clauses*](./06_Declarations.md#parameter_clauses) **rethrows** [*函数结果*](./06_Declarations.md#function_result) _可选_
->
+> *函数签名(Signature)* → [*参数子句*](./06_Declarations.md#parameter_clause) **rethrows** [*函数结果*](./06_Declarations.md#function_result) _可选_
+>
> *函数结果* → **->** [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type)
>
> *函数体* → [*代码块*](./06_Declarations.md#code_block)
->
-> *参数从句* → [*参数从句*](./06_Declarations.md#parameter_clause) [*parameter-clauses*](./06_Declarations.md#parameter_clauses) _可选_
->
-> *参数从句* → **(** **)** | **(** [*参数集*](./06_Declarations.md#parameter_list) **...** _可选_ **)**
->
+>
+> *参数子句* → **(** **)** | **(** [*参数集*](./06_Declarations.md#parameter_list) **)**
+>
> *参数集* → [*参数*](./06_Declarations.md#parameter) | [*参数*](./06_Declarations.md#parameter) **,** [*参数集*](./06_Declarations.md#parameter_list)
->
-> *参数* → **inout** _可选_ **let** _可选_ [*外部参数名*](./06_Declarations.md#parameter_name) _可选_ [*本地参数名*](./06_Declarations.md#local_parameter_name) _可选_ [*类型注解*](./03_Types.md#type_annotation) [*默认参数从句*](./06_Declarations.md#default_argument_clause) _可选_
->
-> *参数* → **inout** _可选_ **var** [*外部参数名*](./06_Declarations.md#parameter_name) [*本地参数名*](./06_Declarations.md#local_parameter_name) _可选_ [*类型注解*](./03_Types.md#type_annotation) [*默认参数从句*](./06_Declarations.md#default_argument_clause) _可选_
->
-> *参数* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type)
->
-> *外部参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | **_**
->
-> *本地参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | **_**
->
-> *默认参数从句* → **=** [*表达式*](./04_Expressions.md#expression)
->
+>
+> *参数* → [*外部参数名*](./06_Declarations.md#parameter_name) _可选_ [*本地参数名*](./06_Declarations.md#local_parameter_name) [*类型注解*](./03_Types.md#type_annotation) [*默认参数子句*](./06_Declarations.md#default_argument_clause) _可选_
+>
+> *参数* → [*外部参数名*](./06_Declarations.md#parameter_name) _可选_ [*本地参数名*](./06_Declarations.md#local_parameter_name) [*类型注解*](./03_Types.md#type_annotation)
+>
+> *参数* → [*外部参数名*](./06_Declarations.md#parameter_name) _可选_ [*本地参数名*](./06_Declarations.md#local_parameter_name) [*类型注解*](./03_Types.md#type_annotation) **...**
+>
+> *外部参数名* → [*标识符*](./02_Lexical_Structure.md#identifier)
+>
+> *本地参数名* → [*标识符*](./02_Lexical_Structure.md#identifier)
+>
+> *默认参数子句* → **=** [*表达式*](./04_Expressions.md#expression)
+>
> 枚举声明语法
->
-> *枚举声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ [*联合式枚举*](./06_Declarations.md#union_style_enum)
->
-> *枚举声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ [*原始值式枚举(raw-value-style-enum)*](TODO)
->
-> *联合式枚举* → **enum** [*枚举名*](./06_Declarations.md#enum_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承从句(type-inheritance-clause)*](TODO) _可选_ **{** [*联合样式枚举成员*](./06_Declarations.md#union_style_enum_members) _可选_ **}**
->
-> *联合样式枚举成员* → [*union-style-enum-member*](./06_Declarations.md#union_style_enum_member) [*联合样式枚举成员*](./06_Declarations.md#union_style_enum_members) _可选_
->
-> *联合样式枚举成员* → [*声明*](./06_Declarations.md#declaration) | [*联合式(Union Style)的枚举 case 从句*](./06_Declarations.md#union_style_enum_case_clause)
->
-> *联合式(Union Style)的枚举 case 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **case** [*联合式(Union Style)的枚举 case 集*](./06_Declarations.md#union_style_enum_case_list)
->
-> *联合式(Union Style)的枚举 case 集* → [*联合式(Union Style)的 case*](./06_Declarations.md#union_style_enum_case) | [*联合式(Union Style)的 case*](./06_Declarations.md#union_style_enum_case) **,** [*联合式(Union Style)的枚举 case 集*](./06_Declarations.md#union_style_enum_case_list)
->
-> *联合式(Union Style)的枚举 case* → [*枚举的 case 名*](./06_Declarations.md#enum_case_name) [*元组类型*](./03_Types.md#tuple_type) _可选_
->
+>
+> *枚举声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ [*联合式枚举*(union_style_enum)](./06_Declarations.md#union_style_enum)
+>
+> *枚举声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ [*原始值式枚举(raw-value-style-enum)*](./06_Declarations.md#raw-value-style-enum)
+>
+> *联合式枚举* → **indirect** _可选_ **enum** [*枚举名*](./06_Declarations.md#enum_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承子句(type-inheritance-clause)*](./03_Types.md#type-inheritance-clause) _可选_ [*泛型 where 子句(generic-where-clause)*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ **{** [*联合样式枚举成员*](./06_Declarations.md#union_style_enum_members) _可选_ **}**
+>
+> *联合式枚举成员集* → [*联合式枚举成员*](./06_Declarations.md#union_style_enum_member) [*联合样式枚举成员集*](./06_Declarations.md#union_style_enum_members) _可选_
+>
+> *联合样式枚举成员* → [*声明*](./06_Declarations.md#declaration) | [*联合式(Union Style)枚举 case 子句*](./06_Declarations.md#union_style_enum_case_clause) | [*编译控制语句*](./05_Statements.md#compiler-control-statement)
+>
+> *联合式(Union Style)枚举 case 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **indirect** _可选_ **case** [*联合式(Union Style)枚举 case 集*](./06_Declarations.md#union_style_enum_case_list)
+>
+> *联合式(Union Style)枚举 case 集* → [*联合式(Union Style)枚举 case*](./06_Declarations.md#union_style_enum_case) | [*联合式(Union Style)枚举 case*](./06_Declarations.md#union_style_enum_case) **,** [*联合式(Union Style)枚举 case 集*](./06_Declarations.md#union_style_enum_case_list)
+>
+> *联合式(Union Style)枚举 case* → [*枚举的 case 名*](./06_Declarations.md#enum_case_name) [*元组类型*](./03_Types.md#tuple_type) _可选_
+>
> *枚举名* → [*标识符*](./02_Lexical_Structure.md#identifier)
>
> *枚举的 case 名* → [*标识符*](./02_Lexical_Structure.md#identifier)
->
-> *原始值式枚举* → **enum** [*枚举名*](./06_Declarations.md#enum_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ **:** [*类型标识*](./03_Types.md#type_identifier) **{** [*原始值式枚举成员集*](./06_Declarations.md#raw_value_style_enum_members) _可选_ **}**
->
+>
+> *原始值式枚举* → **enum** [*枚举名*](./06_Declarations.md#enum_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承子句*](./03_Types.md#type-inheritance-clause) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ **{** [*原始值式枚举成员集*](./06_Declarations.md#raw_value_style_enum_members) **}**
+>
> *原始值式枚举成员集* → [*原始值式枚举成员*](./06_Declarations.md#raw_value_style_enum_member) [*原始值式枚举成员集*](./06_Declarations.md#raw_value_style_enum_members) _可选_
->
-> *原始值式枚举成员* → [*声明*](./06_Declarations.md#declaration) | [*原始值式枚举 case 从句*](./06_Declarations.md#raw_value_style_enum_case_clause)
->
-> *原始值式枚举 case 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **case** [*原始值式枚举 case 集*](./06_Declarations.md#raw_value_style_enum_case_list)
->
+>
+> *原始值式枚举成员* → [*声明*](./06_Declarations.md#declaration) | [*原始值式枚举 case 子句*](./06_Declarations.md#raw_value_style_enum_case_clause) | [*编译控制语句*](./05_Statements.md#compiler-control-statement)
+>
+> *原始值式枚举 case 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **case** [*原始值式枚举 case 集*](./06_Declarations.md#raw_value_style_enum_case_list)
+>
> *原始值式枚举 case 集* → [*原始值式枚举 case*](./06_Declarations.md#raw_value_style_enum_case) | [*原始值式枚举 case*](./06_Declarations.md#raw_value_style_enum_case) **,** [*原始值式枚举 case 集*](./06_Declarations.md#raw_value_style_enum_case_list)
>
> *原始值式枚举 case* → [*枚举的 case 名*](./06_Declarations.md#enum_case_name) [*原始值赋值*](./06_Declarations.md#raw_value_assignment) _可选_
->
-> *原始值赋值* → **=** [*字面量*](./02_Lexical_Structure.md#literal)
->
-> *原始值字面量(raw-value-literal)* → [*数值字面量*](TODO) | [*字符串字面量*](TODO) | [*布尔字面量*](TODO)
->
+>
+> *原始值赋值* → **=** [*原始值字面量*](./02_Lexical_Structure.md#literal)
+>
+> *原始值字面量(raw-value-literal)* → [*数值字面量*](./02_Lexical_Structure.md#literal) | [*静态字符串字面量*](./02_Lexical_Structure.md#literal) | [*布尔字面量*](./02_Lexical_Structure.md#literal)
+>
> 结构体声明语法
->
-> *结构体声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ **struct** [*结构体名称*](./06_Declarations.md#struct_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*结构体主体*](./06_Declarations.md#struct_body)
->
+>
+> *结构体声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **struct** [*结构体名称*](./06_Declarations.md#struct_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承子句*](./03_Types.md#type_inheritance_clause) _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*结构体主体*](./06_Declarations.md#struct_body)
+>
> *结构体名称* → [*标识符*](./02_Lexical_Structure.md#identifier)
->
-> *结构体主体* → **{** [*声明(Declarations)集*](./06_Declarations.md#declarations) _可选_ **}**
->
+>
+> *结构体主体* → **{** [*结构体成员集*](./06_Declarations.md#declarations) _可选_ **}**
+>
+> *结构体成员集* → [*结构体成员*](./06_Declarations.md#declarations) [*结构体成员集*](./06_Declarations.md#declarations) _可选_
+>
+> *结构体成员* → [*声明集*](./06_Declarations.md#declarations) | [*编译控制语句*](./05_Statements.md#compiler-control-statement)
+>
> 类声明语法
->
-> *类声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) **class** [*类名*](./06_Declarations.md#class_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*类主体*](./06_Declarations.md#class_body)
->
+>
+> *类声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **final** _可选_ **class** [*类名*](./06_Declarations.md#class_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承子句*](./03_Types.md#type_inheritance_clause) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*类主体*](./06_Declarations.md#class_body)
+>
+> *类声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **final** [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **class** [*类名*](./06_Declarations.md#class_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承子句*](./03_Types.md#type_inheritance_clause) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*类主体*](./06_Declarations.md#class_body)
+>
> *类名* → [*标识符*](./02_Lexical_Structure.md#identifier)
->
-> *类主体* → **{** [*声明(Declarations)集*](./06_Declarations.md#declarations) _可选_ **}**
->
+>
+> *类主体* → **{** [*类成员集*](./06_Declarations.md#declarations) _可选_ **}**
+>
+> *类成员集* → [*类成员*](./06_Declarations.md#declarations) [*类成员集*](./06_Declarations.md#declarations) _可选_
+>
+> *类成员* → [*声明集*](./06_Declarations.md#declarations) | [*编译控制语句*](./05_Statements.md#compiler-control-statement)
+>
> 协议(Protocol)声明语法
->
-> *协议声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_[*访问级别修改器(access-level-modifier)*](TODO) **protocol** [*协议名*](./06_Declarations.md#protocol_name) [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*协议主体*](./06_Declarations.md#protocol_body)
->
+>
+> *协议声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **protocol** [*协议名*](./06_Declarations.md#protocol_name) [*类型继承子句*](./03_Types.md#type_inheritance_clause) _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*协议主体*](./06_Declarations.md#protocol_body)
+>
> *协议名* → [*标识符*](./02_Lexical_Structure.md#identifier)
->
-> *协议主体* → **{** [*协议成员声明(Declarations)集*](./06_Declarations.md#protocol_member_declarations) _可选_ **}**
->
+>
+> *协议主体* → **{** [*协议成员集*](./06_Declarations.md#protocol_member_declarations) _可选_ **}**
+>
+> *协议成员集* → [*协议成员*](./06_Declarations.md#declarations) [*协议成员集*](./06_Declarations.md#declarations) _可选_
+>
+> *协议成员* → [*协议成员声明*](./06_Declarations.md#declarations) | [*编译控制语句*](./05_Statements.md#compiler-control-statement)
+>
> *协议成员声明* → [*协议属性声明*](./06_Declarations.md#protocol_property_declaration)
>
> *协议成员声明* → [*协议方法声明*](./06_Declarations.md#protocol_method_declaration)
@@ -536,9 +552,9 @@
> *协议成员声明* → [*协议下标声明*](./06_Declarations.md#protocol_subscript_declaration)
>
> *协议成员声明* → [*协议关联类型声明*](./06_Declarations.md#protocol_associated_type_declaration)
->
-> *协议成员声明(Declarations)集* → [*协议成员声明*](./06_Declarations.md#protocol_member_declaration) [*协议成员声明(Declarations)集*](./06_Declarations.md#protocol_member_declarations) _可选_
->
+>
+> *协议成员声明* → [*类型别名声明*](./06_Declarations.md#typealias_declaration)
+>
@@ -550,43 +566,47 @@
> 协议方法声明语法
->
-> *协议方法声明* → [*函数头*](./06_Declarations.md#function_head) [*函数名*](./06_Declarations.md#function_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*函数签名(Signature)*](./06_Declarations.md#function_signature)
->
+>
+> *协议方法声明* → [*函数头*](./06_Declarations.md#function_head) [*函数名*](./06_Declarations.md#function_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*函数签名(Signature)*](./06_Declarations.md#function_signature) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_
+>
> 协议构造器声明语法
->
-> *协议构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数从句*](./06_Declarations.md#parameter_clause)
->
+>
+> *协议构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数子句*](./06_Declarations.md#parameter_clause) **throws** _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_
+>
+> *协议构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数子句*](./06_Declarations.md#parameter_clause) **rethrows** [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_
+>
> 协议下标声明语法
->
-> *协议下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block)
->
+>
+> *协议下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block)
+>
> 协议关联类型声明语法
->
-> *协议关联类型声明* → [*类型别名头(Head)*](./06_Declarations.md#typealias_head) [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*类型别名赋值*](./06_Declarations.md#typealias_assignment) _可选_
->
+>
+> *协议关联类型声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **associatedtype** [*类型别名*](./06_Declarations.md#typealias_name) [*类型继承子句*](./03_Types.md#type_inheritance_clause) _可选_ [*类型别名赋值*](./06_Declarations.md#typealias_assignment) _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_
+>
> 构造器声明语法
->
-> *构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数从句*](./06_Declarations.md#parameter_clause) [*构造器主体*](./06_Declarations.md#initializer_body)
->
-> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init**
->
-> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init ?**
->
-> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init !**
->
+>
+> *构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数子句*](./06_Declarations.md#parameter_clause) **throws** _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*构造器主体*](./06_Declarations.md#initializer_body)
+>
+> *构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数子句*](./06_Declarations.md#parameter_clause) **rethrows** [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*构造器主体*](./06_Declarations.md#initializer_body)
+>
+> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符集(declaration-modifiers)*](./06_Declarations.md#declaration_modifiers) _可选_ **init**
+>
+> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符集(declaration-modifiers)*](./06_Declarations.md#declaration_modifiers) _可选_ **init ?**
+>
+> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符集(declaration-modifiers)*](./06_Declarations.md#declaration_modifiers) _可选_ **init !**
+>
> *构造器主体* → [*代码块*](./06_Declarations.md#code_block)
>
@@ -600,24 +620,28 @@
> 扩展(Extension)声明语法
->
-> *扩展声明* → [*访问级别修改器*](TODO) _可选_ **extension** [*类型标识*](./03_Types.md#type_identifier) [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*extension-body*](./06_Declarations.md#extension_body)
->
-> *extension-body* → **{** [*声明(Declarations)集*](./06_Declarations.md#declarations) _可选_ **}**
->
+>
+> *扩展声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **extension** [*类型标识*](./03_Types.md#type_identifier) [*类型继承子句*](./03_Types.md#type_inheritance_clause) _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*扩展主体*](./06_Declarations.md#extension_body)
+>
+> *扩展主体* → **{** [*扩展成员集*](./06_Declarations.md#declarations) _可选_ **}**
+>
+> *扩展成员集* → [*扩展成员*](./06_Declarations.md#declarations) [*扩展成员集*](./06_Declarations.md#declarations) _可选_
+>
+> *扩展成员* → [*声明集*](./06_Declarations.md#declarations) | [*编译控制语句*](./05_Statements.md#compiler-control-statement)
+>
> 下标声明语法
->
-> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*代码块*](./06_Declarations.md#code_block)
->
-> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*getter-setter 块*](./06_Declarations.md#getter_setter_block)
->
-> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block)
->
-> *下标头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改器(declaration-modifiers)*](TODO) _可选_ **subscript** [*参数从句*](./06_Declarations.md#parameter_clause)
->
+>
+> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*代码块*](./06_Declarations.md#code_block)
+>
+> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*getter-setter 块*](./06_Declarations.md#getter_setter_block)
+>
+> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block)
+>
+> *下标头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符集(declaration-modifiers)*](./06_Declarations.md#declaration_modifiers) _可选_ **subscript** [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数子句*](./06_Declarations.md#parameter_clause)
+>
> *下标结果(Result)* → **->** [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type)
>
@@ -626,42 +650,94 @@
> 运算符声明语法
>
> *运算符声明* → [*前置运算符声明*](./06_Declarations.md#prefix_operator_declaration) | [*后置运算符声明*](./06_Declarations.md#postfix_operator_declaration) | [*中置运算符声明*](./06_Declarations.md#infix_operator_declaration)
->
-> *前置运算符声明* → **prefix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** **}**
->
-> *后置运算符声明* → **postfix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** **}**
->
-> *中置运算符声明* → **infix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** [*中置运算符属性集*](./06_Declarations.md#infix_operator_attributes) _可选_ **}**
->
-> *中置运算符属性集* → [*优先级从句*](./06_Declarations.md#precedence_clause) _可选_ [*结和性从句*](./06_Declarations.md#associativity_clause) _可选_
->
-> *优先级从句* → **precedence** [*优先级水平*](./06_Declarations.md#precedence_level)
->
-> *优先级水平* → 数值 0 到 255,首末项包括在内
->
-> *结和性从句* → **associativity** [*结和性*](./06_Declarations.md#associativity)
->
-> *结和性* → **left** | **right** | **none**
->
+>
+> *前置运算符声明* → **prefix** **operator** [*运算符*](./02_Lexical_Structure.md#operator)
+>
+> *后置运算符声明* → **postfix** **operator** [*运算符*](./02_Lexical_Structure.md#operator)
+>
+> *中置运算符声明* → **infix** **operator** [*运算符*](./02_Lexical_Structure.md#operator) [*中置运算符属性集*](./06_Declarations.md#infix_operator_attributes) _可选_
+>
+> *中置运算符属性集* → [*优先级组名*](./06_Declarations.md#precedence_group_name)
+>
+
+> 优先级组声明语法
+>
+> *优先级组声明* → **precedencegroup** [*优先级组名*](./06_Declarations.md#precedence_group_name) **{** [*优先级组属性集*](./06_Declarations.md#precedence_group_attributes) _可选_ **}**
+>
+> *优先级组属性集* → [*优先级组属性*](./06_Declarations.md#declarations) [*优先级组属性集*](./06_Declarations.md#declarations) _可选_
+>
+> *优先级组属性* → [*优先级组关系*](./06_Declarations.md#declarations)
+>
+> *优先级组属性* → [*优先级组赋值*](./06_Declarations.md#declarations)
+>
+> *优先级组属性* → [*优先级组结合*](./06_Declarations.md#declarations)
+>
+> *优先级组关系* → **higherThan :** [*优先级组名集*](./06_Declarations.md#declarations)
+>
+> *优先级组关系* → **lowerThan :** [*优先级组名集*](./06_Declarations.md#declarations)
+>
+> *优先级组赋值* → **assignment :** [*布尔字面量*](./02_Lexical_Structure.md#string_literal)
+>
+> *优先级组结合* → **associativity : left**
+>
+> *优先级组结合* → **associativity : right**
+>
+> *优先级组结合* → **associativity : none**
+>
+> *优先级组名集* → [*优先级组名*](./06_Declarations.md#declarations) | [*优先级组名*](./06_Declarations.md#declarations) **,** [*优先级组名集*](./06_Declarations.md#declarations)
+>
+> *优先级组名* → [*标识符*](./02_Lexical_Structure.md#identifier)
+>
-> 声明修改器语法
->
-> *声明修改器* → **类** | **便捷(convenience)** | **动态(dynamic)** | **final** | **中置(infix)** | **lazy** | **可变(mutating)** | **不可变(nonmutating)** | **可选(optional)** | **改写(override)** | **后置** | **前置** | **required** | **static** | **unowned** | **unowned(safe)** | **unowned(unsafe)** | **弱(weak)**
->
-> *声明修改器* → [*访问级别声明器(access-level-modifier)*](TODO)
->
-> *声明修改集* → [*声明修改器*](TODO) [*声明修改器集*](TODO) _可选_
->
-> *访问级别修改器* → **内部的** | **内部的(set)**
->
-> *访问级别修改器* → **私有的** | **私有的(set)**
->
-> *访问级别修改器* → **公共的**
->
-| **公共的(set)**
-> *访问级别修改器集* →[*访问级别修改器*](TODO) [*访问级别修改器集*](TODO) _可选_
->
+> 声明修饰符语法
+>
+> *声明修饰符* → **class** | **convenience** | **dynamic** | **final** | **infix** | **lazy** | **optional** | **override** | **postfix** | **prefix** | **required** | **static** | **unowned** | **unowned(safe)** | **unowned(unsafe)** | **weak**
+>
+> *声明修饰符* → [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier)
+>
+> *声明修饰符* → [*可变性修饰符(mutation-modifier)*](./07_Attributes.md#mutation-modifier)
+>
+> *声明修饰符集* → [*声明修饰符(declaration-modifier)*](./06_Declarations.md#declaration_modifier) [*声明修饰符集(declaration-modifiers)*](./06_Declarations.md#declaration_modifiers) _可选_
+>
+> *访问级别修饰符* → **private** | **private(set)**
+>
+> *访问级别修饰符* → **fileprivate** | **fileprivate(set)**
+>
+> *访问级别修饰符* → **internal** | **internal(set)**
+>
+> *访问级别修饰符* → **public** | **public(set)**
+>
+> *访问级别修饰符* → **open** | **open(set)**
+>
+> *可变性修饰符* → **mutating** | **nonmutating**
+>
+
+## 属性 {#attributes}
+
+> 属性语法
+>
+> *属性* → **@** [*属性名*](./07_Attributes.md#attribute_name) [*属性参数子句*](./07_Attributes.md#attribute_argument_clause) _可选_
+>
+> *属性名* → [*标识符*](./02_Lexical_Structure.md#identifier)
+>
+> *属性参数子句* → **{** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **}**
+>
+> *属性(Attributes)集* → [*属性*](./07_Attributes.md#attribute) [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_
+>
+> *平衡令牌集* → [*平衡令牌*](./07_Attributes.md#balanced_token) [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_
+>
+> *平衡令牌* → **(** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **)**
+>
+> *平衡令牌* → **[** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **]**
+>
+> *平衡令牌* → **{** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **}**
+>
+> *平衡令牌* → 任意标识符、关键字、字面量或运算符
+>
+> *平衡令牌* → 除 **(** 、**)**、**[**、**]**、**{**、**}** 外的任意标点符号
+>
+>
## 模式 {#patterns}
@@ -674,11 +750,11 @@
> *模式* → [*值绑定模式*](./08_Patterns.md#value_binding_pattern)
>
> *模式* → [*元组模式*](./08_Patterns.md#tuple_pattern) [*类型注解*](./03_Types.md#type_annotation) _可选_
->
-> *模式* → [*枚举个例模式*](./08_Patterns.md#enum_case_pattern)
->
-> *模式* → [*可选模式*](TODO)
->
+>
+> *模式* → [*枚举 case 模式*](./08_Patterns.md#enum_case_pattern)
+>
+> *模式* → [*可选模式*](./08_Patterns.md#optional_pattern)
+>
> *模式* → [*类型转换模式*](./08_Patterns.md#type_casting_pattern)
>
> *模式* → [*表达式模式*](./08_Patterns.md#expression_pattern)
@@ -712,22 +788,22 @@
> *元组模式* → **(** [*元组模式元素集*](./08_Patterns.md#tuple_pattern_element_list) _可选_ **)**
>
> *元组模式元素集* → [*元组模式元素*](./08_Patterns.md#tuple_pattern_element) | [*元组模式元素*](./08_Patterns.md#tuple_pattern_element) **,** [*元组模式元素集*](./08_Patterns.md#tuple_pattern_element_list)
->
-> *元组模式元素* → [*模式*](./08_Patterns.md#pattern)
->
+>
+> *元组模式元素* → [*模式*](./08_Patterns.md#pattern) | [*标识符*](./02_Lexical_Structure.md#identifier) **:** [*模式*](./08_Patterns.md#pattern)
+>
-> 枚举用例模式语法
->
-> *enum-case-pattern* → [*类型标识*](./03_Types.md#type_identifier) _可选_ **.** [*枚举的 case 名*](./06_Declarations.md#enum_case_name) [*元组模式*](./08_Patterns.md#tuple_pattern) _可选_
->
+> 枚举 case 模式语法
+>
+> *enum-case-pattern* → [*类型标识*](./03_Types.md#type_identifier) _可选_ **.** [*枚举 case 名*](./06_Declarations.md#enum_case_name) [*元组模式*](./08_Patterns.md#tuple_pattern) _可选_
+>
> 可选模式语法
->
-> *可选模式* → [*识别符模式*](TODO) **?**
->
+>
+> *可选模式* → [*标识符模式*](./02_Lexical_Structure.md#identifier) **?**
+>
@@ -745,634 +821,32 @@
> 表达式模式语法
>
> *表达式模式* → [*表达式*](./04_Expressions.md#expression)
->
-
-## 属性 {#attributes}
-
-> 属性语法
->
-> *属性* → **@** [*属性名*](./07_Attributes.md#attribute_name) [*属性参数从句*](./07_Attributes.md#attribute_argument_clause) _可选_
->
-> *属性名* → [*标识符*](./02_Lexical_Structure.md#identifier)
->
-> *属性参数从句* → **(** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **)**
->
-> *属性(Attributes)集* → [*属性*](./07_Attributes.md#attribute) [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_
->
-> *平衡令牌集* → [*平衡令牌*](./07_Attributes.md#balanced_token) [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_
->
-> *平衡令牌* → **(** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **)**
->
-> *平衡令牌* → **[** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **]**
->
-> *平衡令牌* → **{** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **}**
->
-> *平衡令牌* → **任意标识符、关键字、字面量或运算符**
->
-> *平衡令牌* → **任意标点除了(、)、[、]、{ 或 }**
->
-
-## 表达式 {#expressions}
-
-> 表达式语法
->
-> *表达式* → [*try-operator*](TODO) _可选_ [*前置表达式*](./04_Expressions.md#prefix_expression) [*二元表达式集*](./04_Expressions.md#binary_expressions) _可选_
->
-> *表达式集* → [*表达式*](./04_Expressions.md#expression) | [*表达式*](./04_Expressions.md#expression) **,** [*表达式集*](./04_Expressions.md#expression_list)
->
-
-
-
-> 前置表达式语法
->
-> *前置表达式* → [*前置运算符*](./02_Lexical_Structure.md#prefix_operator) _可选_ [*后置表达式*](./04_Expressions.md#postfix_expression)
->
-> *前置表达式* → [*写入写出(in-out)表达式*](./04_Expressions.md#in_out_expression)
->
-> *写入写出(in-out)表达式* → **&** [*标识符*](./02_Lexical_Structure.md#identifier)
->
-
-
-> try 表达式语法
->
-> *try-operator* → **try** | **try !**
->
-
-
-
-> 二元表达式语法
->
-> *二元表达式* → [*二元运算符*](./02_Lexical_Structure.md#binary_operator) [*前置表达式*](./04_Expressions.md#prefix_expression)
->
-> *二元表达式* → [*赋值运算符*](./04_Expressions.md#assignment_operator) [*try 运算符*](TODO) _可选_ [*前置表达式*](./04_Expressions.md#prefix_expression)
->
-> *二元表达式* → [*条件运算符*](./04_Expressions.md#conditional_operator) [*try 运算符*](TODO) _可选_ [*前置表达式*](./04_Expressions.md#prefix_expression)
->
-> *二元表达式* → [*类型转换运算符*](./04_Expressions.md#type_casting_operator)
->
-> *二元表达式集* → [*二元表达式*](./04_Expressions.md#binary_expression) [*二元表达式集*](./04_Expressions.md#binary_expressions) _可选_
->
-
-
-
-> 赋值运算符语法
->
-> *赋值运算符* → **=**
->
-
-
-
-> 三元条件运算符语法
->
-> *三元条件运算符* → **?** [*表达式*](./04_Expressions.md#expression) **:**
->
-
-
-
-> 类型转换运算符语法
->
-> *类型转换运算符* → **is** [*类型*](./03_Types.md#type)
->
-> *类型转换运算符* → **as** [*类型*](./03_Types.md#type)
->
-> *类型转换运算符* → **as ?** [*类型*](./03_Types.md#type)
->
-> *类型转换运算符* → **as !** [*类型*](./03_Types.md#type)
->
-
-
-
-> 主表达式语法
->
-> *主表达式* → [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause) _可选_
->
-> *主表达式* → [*字面量表达式*](./04_Expressions.md#literal_expression)
->
-> *主表达式* → [*self 表达式*](./04_Expressions.md#self_expression)
->
-> *主表达式* → [*超类表达式*](./04_Expressions.md#superclass_expression)
->
-> *主表达式* → [*闭包表达式*](./04_Expressions.md#closure_expression)
->
-> *主表达式* → [*圆括号表达式*](./04_Expressions.md#parenthesized_expression)
->
-> *主表达式* → [*隐式成员表达式*](./04_Expressions.md#implicit_member_expression)
->
-> *主表达式* → [*通配符表达式*](./04_Expressions.md#wildcard_expression)
->
-
-
-
-> 字面量表达式语法
->
-> *字面量表达式* → [*字面量*](./02_Lexical_Structure.md#literal)
->
-> *字面量表达式* → [*数组字面量*](./04_Expressions.md#array_literal) | [*字典字面量*](./04_Expressions.md#dictionary_literal)
->
-> *字面量表达式* → **__FILE__** | **__LINE__** | **__COLUMN__** | **__FUNCTION__**
->
-> *数组字面量* → **[** [*数组字面量项集*](./04_Expressions.md#array_literal_items) _可选_ **]**
->
-> *数组字面量项集* → [*数组字面量项*](./04_Expressions.md#array_literal_item) **,** _可选_ | [*数组字面量项*](./04_Expressions.md#array_literal_item) **,** [*数组字面量项集*](./04_Expressions.md#array_literal_items)
->
-> *数组字面量项* → [*表达式*](./04_Expressions.md#expression)
->
-> *字典字面量* → **[** [*字典字面量项集*](./04_Expressions.md#dictionary_literal_items) **]** | **[** **:** **]**
->
-> *字典字面量项集* → [*字典字面量项*](./04_Expressions.md#dictionary_literal_item) **,** _可选_ | [*字典字面量项*](./04_Expressions.md#dictionary_literal_item) **,** [*字典字面量项集*](./04_Expressions.md#dictionary_literal_items)
->
-> *字典字面量项* → [*表达式*](./04_Expressions.md#expression) **:** [*表达式*](./04_Expressions.md#expression)
->
-
-
-
-> Self 表达式语法
->
-> *self 表达式* → **self**
->
-> *self 表达式* → **self** **.** [*标识符*](./02_Lexical_Structure.md#identifier)
->
-> *self 表达式* → **self** **[** [*表达式*](./04_Expressions.md#expression) **]**
->
-> *self 表达式* → **self** **.** **init**
->
-
-
-
-> 超类表达式语法
->
-> *超类表达式* → [*超类方法表达式*](./04_Expressions.md#superclass_method_expression) | [*超类下标表达式*](./04_Expressions.md#超类下标表达式) | [*超类构造器表达式*](./04_Expressions.md#superclass_initializer_expression)
->
-> *超类方法表达式* → **super** **.** [*标识符*](./02_Lexical_Structure.md#identifier)
->
-> *超类下标表达式* → **super** **[** [*表达式*](./04_Expressions.md#expression) **]**
->
-> *超类构造器表达式* → **super** **.** **init**
->
-
-
-
-> 闭包表达式语法
->
-> *闭包表达式* → **{** [*闭包签名(Signational)*](./04_Expressions.md#closure_signature) _可选_ [*多条语句(Statements)*](./05_Statements.md#statements) **}**
->
-> *闭包签名(Signational)* → [*参数从句*](./06_Declarations.md#parameter_clause) [*函数结果*](./06_Declarations.md#function_result) _可选_ **in**
->
-> *闭包签名(Signational)* → [*标识符集*](./02_Lexical_Structure.md#identifier_list) [*函数结果*](./06_Declarations.md#function_result) _可选_ **in**
->
-> *闭包签名(Signational)* → [*捕获(Capature)集*](./04_Expressions.md#capture_list) [*参数从句*](./06_Declarations.md#parameter_clause) [*函数结果*](./06_Declarations.md#function_result) _可选_ **in**
->
-> *闭包签名(Signational)* → [*捕获(Capature)集*](./04_Expressions.md#capture_list) [*标识符集*](./02_Lexical_Structure.md#identifier_list) [*函数结果*](./06_Declarations.md#function_result) _可选_ **in**
->
-> *闭包签名(Signational)* → [*捕获(Capature)集*](./04_Expressions.md#capture_list) **in**
->
-> *捕获(Capature)集* → **[** [*捕获(Capature)说明符*](./04_Expressions.md#capture_specifier) [*表达式*](./04_Expressions.md#expression) **]**
->
-> *捕获(Capature)说明符* → **weak** | **unowned** | **unowned(safe)** | **unowned(unsafe)**
->
-
-
-
-> 隐式成员表达式语法
->
-> *隐式成员表达式* → **.** [*标识符*](./02_Lexical_Structure.md#identifier)
->
-
-
-
-> 圆括号表达式(Parenthesized Expression)语法
->
-> *圆括号表达式* → **(** [*表达式元素集*](./04_Expressions.md#expression_element_list) _可选_ **)**
->
-> *表达式元素集* → [*表达式元素*](./04_Expressions.md#expression_element) | [*表达式元素*](./04_Expressions.md#expression_element) **,** [*表达式元素集*](./04_Expressions.md#expression_element_list)
->
-> *表达式元素* → [*表达式*](./04_Expressions.md#expression) | [*标识符*](./02_Lexical_Structure.md#identifier) **:** [*表达式*](./04_Expressions.md#expression)
->
-
-
-
-> 通配符表达式语法
->
-> *通配符表达式* → **_**
->
-
-
-
-> 后置表达式语法
->
-> *后置表达式* → [*主表达式*](./04_Expressions.md#primary_expression)
->
-> *后置表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) [*后置运算符*](./02_Lexical_Structure.md#postfix_operator)
->
-> *后置表达式* → [*函数调用表达式*](./04_Expressions.md#function_call_expression)
->
-> *后置表达式* → [*构造器表达式*](./04_Expressions.md#initializer_expression)
->
-> *后置表达式* → [*显示成员表达式*](./04_Expressions.md#explicit_member_expression)
->
-> *后置表达式* → [*后置 self 表达式*](./04_Expressions.md#postfix_self_expression)
->
-> *后置表达式* → [*动态类型表达式*](./04_Expressions.md#dynamic_type_expression)
->
-> *后置表达式* → [*下标表达式*](./04_Expressions.md#subscript_expression)
->
-> *后置表达式* → [*强制取值(Forced Value)表达式*](./04_Expressions.md#forced_value_expression)
->
-> *后置表达式* → [*可选链(Optional Chaining)表达式*](./04_Expressions.md#optional_chaining_expression)
->
-
-
-
-> 函数调用表达式语法
->
-> *函数调用表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) [*圆括号表达式*](./04_Expressions.md#parenthesized_expression)
->
-> *函数调用表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) [*圆括号表达式*](./04_Expressions.md#parenthesized_expression) _可选_ [*后置闭包(Trailing Closure)*](./04_Expressions.md#trailing_closure)
->
-> *后置闭包(Trailing Closure)* → [*闭包表达式*](./04_Expressions.md#closure_expression)
->
-
-
-
-> 构造器表达式语法
->
-> *构造器表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** **init**
->
-
-
-
-> 显式成员表达式语法
->
-> *显示成员表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** [*十进制数字*](./02_Lexical_Structure.md#decimal_digit)
->
-> *显示成员表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause) _可选_
->
-
-
-
-> 后置 Self 表达式语法
->
-> *后置 self 表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** **self**
->
-
-
-
-> 动态类型表达式语法
->
-> *动态类型表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** **dynamicType**
->
-
-
-
-> 附属脚本表达式语法
->
-> *附属脚本表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **[** [*表达式集*](./04_Expressions.md#expression_list) **]**
->
-
-
-
-> 强制取值(Forced Value)语法
->
-> *强制取值(Forced Value)表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **!**
->
-
-
-
-> 可选链表达式语法
->
-> *可选链表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **?**
->
-
-## 词法结构 {#lexical_structure}
-
-> 标识符语法
->
-> *标识符* → [*标识符头(Head)*](./02_Lexical_Structure.md#identifier_head) [*标识符字符集*](./02_Lexical_Structure.md#identifier_characters) _可选_
->
-> *标识符* → [*标识符头(Head)*](./02_Lexical_Structure.md#identifier_head) [*标识符字符集*](./02_Lexical_Structure.md#identifier_characters) _可选_
->
-> *标识符* → [*隐式参数名*](./02_Lexical_Structure.md#implicit_parameter_name)
->
-> *标识符集* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*标识符*](./02_Lexical_Structure.md#identifier) **,** [*标识符集*](./02_Lexical_Structure.md#identifier_list)
->
-> *标识符头(Head)* → Upper- or lowercase letter A through 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
->
-> *标识符字符* → [*标识符头(Head)*](./02_Lexical_Structure.md#identifier_head)
->
-> *标识符字符集* → [*标识符字符*](./02_Lexical_Structure.md#identifier_character) [*标识符字符集*](./02_Lexical_Structure.md#identifier_characters) _可选_
->
-> *隐式参数名* → **$** [*十进制数字集*](./02_Lexical_Structure.md#decimal_digits)
->
-
-
-
-> 字面量语法
->
-> *字面量* → [*数值型字面量*](./02_Lexical_Structure.md#integer_literal) | [*字符串字面量*](./02_Lexical_Structure.md#floating_point_literal) | [*布尔字面量*](./02_Lexical_Structure.md#string_literal) | [*空字面量*](TODO)
->
-> *数值型字面量* → **-** _可选_ [*整形字面量*](TODO) | **-** _可选_ [*浮点型字面量*](TODO)
->
-> *布尔字面量* → **true** | **false**
->
-> *空字面量* → **nil**
->
-
-
-
-> 整型字面量语法
->
-> *整型字面量* → [*二进制字面量*](./02_Lexical_Structure.md#binary_literal)
->
-> *整型字面量* → [*八进制字面量*](./02_Lexical_Structure.md#octal_literal)
->
-> *整型字面量* → [*十进制字面量*](./02_Lexical_Structure.md#decimal_literal)
->
-> *整型字面量* → [*十六进制字面量*](./02_Lexical_Structure.md#hexadecimal_literal)
->
-> *二进制字面量* → **0b** [*二进制数字*](./02_Lexical_Structure.md#binary_digit) [*二进制字面量字符集*](./02_Lexical_Structure.md#binary_literal_characters) _可选_
->
-> *二进制数字* → 数值 0 到 1
->
-> *二进制字面量字符* → [*二进制数字*](./02_Lexical_Structure.md#binary_digit) | **_**
->
-> *二进制字面量字符集* → [*二进制字面量字符*](./02_Lexical_Structure.md#binary_literal_character) [*二进制字面量字符集*](./02_Lexical_Structure.md#binary_literal_characters) _可选_
->
-> *八进制字面量* → **0o** [*八进制数字*](./02_Lexical_Structure.md#octal_digit) [*八进制字符集*](./02_Lexical_Structure.md#octal_literal_characters) _可选_
->
-> *八进字数字* → 数值 0 到 7
->
-> *八进制字符* → [*八进制数字*](./02_Lexical_Structure.md#octal_digit) | **_**
->
-> *八进制字符集* → [*八进制字符*](./02_Lexical_Structure.md#octal_literal_character) [*八进制字符集*](./02_Lexical_Structure.md#octal_literal_characters) _可选_
->
-> *十进制字面量* → [*十进制数字*](./02_Lexical_Structure.md#decimal_digit) [*十进制字符集*](./02_Lexical_Structure.md#decimal_literal_characters) _可选_
->
-> *十进制数字* → 数值 0 到 9
->
-> *十进制数字集* → [*十进制数字*](./02_Lexical_Structure.md#decimal_digit) [*十进制数字集*](./02_Lexical_Structure.md#decimal_digits) _可选_
->
-> *十进制字面量字符* → [*十进制数字*](./02_Lexical_Structure.md#decimal_digit) | **_**
->
-> *十进制字面量字符集* → [*十进制字面量字符*](./02_Lexical_Structure.md#decimal_literal_character) [*十进制字面量字符集*](./02_Lexical_Structure.md#decimal_literal_characters) _可选_
->
-> *十六进制字面量* → **0x** [*十六进制数字*](./02_Lexical_Structure.md#hexadecimal_digit) [*十六进制字面量字符集*](./02_Lexical_Structure.md#hexadecimal_literal_characters) _可选_
->
-> *十六进制数字* → 数值 0 到 9, a through f, or A through F
->
-> *十六进制字符* → [*十六进制数字*](./02_Lexical_Structure.md#hexadecimal_digit) | **_**
->
-> *十六进制字面量字符集* → [*十六进制字符*](./02_Lexical_Structure.md#hexadecimal_literal_character) [*十六进制字面量字符集*](./02_Lexical_Structure.md#hexadecimal_literal_characters) _可选_
->
-
-
-
-> 浮点型字面量语法
->
-> *浮点数字面量* → [*十进制字面量*](./02_Lexical_Structure.md#decimal_literal) [*十进制分数*](./02_Lexical_Structure.md#decimal_fraction) _可选_ [*十进制指数*](./02_Lexical_Structure.md#decimal_exponent) _可选_
->
-> *浮点数字面量* → [*十六进制字面量*](./02_Lexical_Structure.md#hexadecimal_literal) [*十六进制分数*](./02_Lexical_Structure.md#hexadecimal_fraction) _可选_ [*十六进制指数*](./02_Lexical_Structure.md#hexadecimal_exponent)
->
-> *十进制分数* → **.** [*十进制字面量*](./02_Lexical_Structure.md#decimal_literal)
->
-> *十进制指数* → [*浮点数 e*](./02_Lexical_Structure.md#floating_point_e) [*正负号*](./02_Lexical_Structure.md#sign) _可选_ [*十进制字面量*](./02_Lexical_Structure.md#decimal_literal)
->
-> *十六进制分数* → **.** [*十六进制数*](./02_Lexical_Structure.md#hexadecimal_literal)
->
- [*十六进制字面量字符集*](TODO)_可选_
-> *十六进制指数* → [*浮点数 p*](./02_Lexical_Structure.md#floating_point_p) [*正负号*](./02_Lexical_Structure.md#sign) _可选_ [*十六进制字面量*](./02_Lexical_Structure.md#hexadecimal_literal)
->
-> *浮点数 e* → **e** | **E**
->
-> *浮点数 p* → **p** | **P**
->
-> *正负号* → **+** | **-**
->
-
-
-
-> 字符串型字面量语法
->
-> *字符串字面量* → **"** [*引用文本*](./02_Lexical_Structure.md#quoted_text) **"**
->
-> *引用文本* → [*引用文本条目*](./02_Lexical_Structure.md#quoted_text_item) [*引用文本*](./02_Lexical_Structure.md#quoted_text) _可选_
->
-> *引用文本条目* → [*转义字符*](./02_Lexical_Structure.md#escaped_character)
->
-> *引用文本条目* → **(** [*表达式*](./04_Expressions.md#expression) **)**
->
-> *引用文本条目* → 除了", \, U+000A, or U+000D 的所有 Unicode 的字符
->
-> *转义字符* → **/0** | **\\** | **\t** | **\n** | **\r** | **\"** | **\'**
->
-> *转义字符* → **\u** **{** [*十六进制标量数字集*](TODO) **}**
->
-> *unicode 标量数字集* → Between one and eight hexadecimal digits
->
-
-
-
-> 运算符语法语法
->
-> *运算符* → [*运算符头*](./02_Lexical_Structure.md#operator_character) [*运算符字符集*](./02_Lexical_Structure.md#operator) _可选_
->
-> *运算符* → [*点运算符头*](TODO) [*点运算符字符集*](TODO) _可选_
->
-> *运算符字符* → **/** | **=** | **-** | **+** | **!** | ***** | **%** | **<** | **>** | **&** | **|** | **^** | **~** | **?**
->
-> *运算符头* → 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
->
-> *运算符字符* → [*运算符头*](TODO)
->
-> *运算符字符* → U+0300–U+036F
->
-> *运算符字符* → U+1DC0–U+1DFF
->
-> *运算符字符* → U+20D0–U+20FF
->
-> *运算符字符* → U+FE00–U+FE0F
->
-> *运算符字符* → U+FE20–U+FE2F
->
-> *运算符字符* → U+E0100–U+E01EF
->
-> *运算符字符集* → [*运算符字符*](TODO) [*运算符字符集*](TODO)_可选_
->
-> *点运算符头* → **..**
->
-> *点运算符字符* → **.** | [*运算符字符*](TODO)
->
-> *点运算符字符集* → [*点运算符字符*](TODO) [*点运算符字符集*](TODO) _可选_
->
-> *二元运算符* → [*运算符*](./02_Lexical_Structure.md#operator)
->
-> *前置运算符* → [*运算符*](./02_Lexical_Structure.md#operator)
->
-> *后置运算符* → [*运算符*](./02_Lexical_Structure.md#operator)
->
-
-## 类型 {#types}
-
-> 类型语法
->
-> *类型* → [*数组类型*](./03_Types.md#array_type) | [*字典类型*](TODO) | [*函数类型*](./03_Types.md#function_type) | [*类型标识符*](./03_Types.md#type_identifier) | [*元组类型*](./03_Types.md#tuple_type) | [*可选类型*](./03_Types.md#optional_type) | [*隐式解析可选类型*](./03_Types.md#implicitly_unwrapped_optional_type) | [*协议合成类型*](./03_Types.md#protocol_composition_type) | [*元型类型*](./03_Types.md#metatype_type)
->
-
-
-
-> 类型注解语法
->
-> *类型注解* → **:** [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type)
->
-
-
-
-> 类型标识语法
->
-> *类型标识* → [*类型名称*](./03_Types.md#type_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause) _可选_ | [*类型名称*](./03_Types.md#type_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause) _可选_ **.** [*类型标识符*](./03_Types.md#type_identifier)
->
-> *类型名* → [*标识符*](./02_Lexical_Structure.md#identifier)
->
-
-
-
-> 元组类型语法
->
-> *元组类型* → **(** [*元组类型主体*](./03_Types.md#tuple_type_body) _可选_ **)**
->
-> *元组类型主体* → [*元组类型的元素集*](./03_Types.md#tuple_type_element_list) **...** _可选_
->
-> *元组类型的元素集* → [*元组类型的元素*](./03_Types.md#tuple_type_element) | [*元组类型的元素*](./03_Types.md#tuple_type_element) **,** [*元组类型的元素集*](./03_Types.md#tuple_type_element_list)
->
-> *元组类型的元素* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **inout** _可选_ [*类型*](./03_Types.md#type) | **inout** _可选_ [*元素名*](./03_Types.md#element_name) [*类型注解*](./03_Types.md#type_annotation)
->
-> *元素名* → [*标识符*](./02_Lexical_Structure.md#identifier)
->
-
-
-
-> 函数类型语法
->
-> *函数类型* → [*类型*](./03_Types.md#type) **throws** _可选_ **->** [*类型*](./03_Types.md#type)
->
-> *函数类型* → [*类型*](TODO) **rethrows** **->** [*类型*](TODO)
->
-
-
-
-> 数组类型语法
->
-> *数组类型* → **[** [*类型*](./03_Types.md#array_type) **]**
->
-
-
-> 字典类型语法
->
-> *字典类型* → **[** [*类型 **:** 类型*](TODO) **]**
->
-
-
-
-> 可选类型语法
->
-> *可选类型* → [*类型*](./03_Types.md#type) **?**
->
-
-
-
-> 隐式解析可选类型(Implicitly Unwrapped Optional Type)语法
->
-> *隐式解析可选类型* → [*类型*](./03_Types.md#type) **!**
->
-
-
-
-> 协议合成类型语法
->
-> *协议合成类型* → **protocol** **<** [*协议标识符集*](./03_Types.md#protocol_identifier_list) _可选_ **>**
->
-> *协议标识符集* → [*协议标识符*](./03_Types.md#protocol_identifier) | [*协议标识符*](./03_Types.md#protocol_identifier) **,** [*协议标识符集*](./03_Types.md#protocol_identifier_list)
->
-> *协议标识符* → [*类型标识符*](./03_Types.md#type_identifier)
->
-
-
-
-> 元(Metatype)类型语法
->
-> *元类型* → [*类型*](./03_Types.md#type) **.** **Type** | [*类型*](./03_Types.md#type) **.** **Protocol**
->
-
-
-
-> 类型继承从句语法
->
-> *类型继承从句* → **:** [*类条件(class-requirement))*](TODO) **,** [*类型继承集*](./03_Types.md#type_inheritance_list)
->
-> *类型继承从句* → **:** [*类条件(class-requirement))*](TODO)
->
-> *类型继承从句* → **:** [*类型继承集*](TODO)
->
-> *类型继承集* → [*类型标识符*](./03_Types.md#type_identifier) | [*类型标识符*](./03_Types.md#type_identifier) **,** [*类型继承集*](./03_Types.md#type_inheritance_list)
->
-> *类条件* → **class**
->
+>
+
+## 泛型参数 {#generic_parameters_and_arguments}
+
+> 泛型形参子句(Generic Parameter Clause)语法
+>
+>
+> *泛型参数子句* → **<** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) **>**
+>
+> *泛型参数集* → [*泛形参数*](./09_Generic_Parameters_and_Arguments.md#generic_parameter) | [*泛形参数*](./09_Generic_Parameters_and_Arguments.md#generic_parameter) **,** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list)
+>
+> *泛形参数* → [*类型名称*](./03_Types.md#type_name)
+>
+> *泛形参数* → [*类型名称*](./03_Types.md#type_name) **:** [*类型标识*](./03_Types.md#type_identifier)
+>
+> *泛形参数* → [*类型名称*](./03_Types.md#type_name) **:** [*协议合成类型*](./03_Types.md#protocol_composition_type)
+>
+> *泛型 where 子句* → **where** [*约束集*](./09_Generic_Parameters_and_Arguments.md#requirement_list)
+>
+> *约束集* → [*约束*](./09_Generic_Parameters_and_Arguments.md#requirement) | [*约束*](./09_Generic_Parameters_and_Arguments.md#requirement) **,** [*约束集*](./09_Generic_Parameters_and_Arguments.md#requirement_list)
+>
+> *约束* → [*一致性约束*](./09_Generic_Parameters_and_Arguments.md#conformance_requirement) | [*同类型约束*](./09_Generic_Parameters_and_Arguments.md#same_type_requirement)
+>
+> *一致性约束* → [*类型标识*](./03_Types.md#type_identifier) **:** [*类型标识*](./03_Types.md#type_identifier)
+>
+> *一致性约束* → [*类型标识*](./03_Types.md#type_identifier) **:** [*协议合成类型*](./03_Types.md#protocol_composition_type)
+>
+> *同类型约束* → [*类型标识*](./03_Types.md#type_identifier) **==** [*类型*](./03_Types.md#type_identifier)
+>