更新10_Summary_of_the_Grammar(Satements) (#915)

* 第三章 10_Summary_of_the_Grammar(从 Declarations 到 Generic Parameters and Arguments)

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

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

去掉"可选"前的空格

* 更新10_Summary_of_the_Grammar(Satements),按原文顺序,追加在原10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md 前面并更名为10_Summary_of_the_Grammar(from Statements -> Generic Parameters and Arguments).md
This commit is contained in:
Chen Jia
2019-04-02 04:21:40 +08:00
committed by Jie Liang
parent 307ddedd43
commit 37bcb2969a

View File

@ -1,3 +1,329 @@
## 语句 {#statements}
> 语句语法
>
> *语句* → [表达式](./04_Expressions.md#expression) **;**<sub>可选</sub>
>
> *语句* → [声明](./06_Declarations.md#declaration) **;**<sub>可选</sub>
>
> *语句* → [循环语句](./05_Statements.md#loop_statement) **;**<sub>可选</sub>
>
> *语句* → [分支语句](./05_Statements.md#branch_statement) **;**<sub>可选</sub>
>
> *语句* → [标签语句](./05_Statements.md#labeled_statement) **;**<sub>可选</sub>
>
> *语句* → [控制转移语句](./05_Statements.md#control_transfer_statement) **;**<sub>可选</sub>
>
> *语句* → [延迟语句](./05_Statements.md#defer_statement) **;**<sub>可选</sub>
>
> *语句* → [执行语句](./05_Statements.md#do_statement) **;**<sub>可选</sub>
>
> *语句* → [编译控制语句](./05_Statements.md#compiler_control_statement)
>
> *语句集* → [语句](./05_Statements.md#statement) [语句集](./05_Statements.md#statements)<sub>可选</sub>
>
<!-- -->
> 循环语句语法
>
> *循环语句* → [for-in 语句](./05_Statements.md#for_in_statement)
>
> *循环语句* → [while 语句](./05_Statements.md#wheetatype 类型 ile_statement)
>
> *循环语句* → [repeat-while 语句](./05_Statements.md#do_while_statement)
>
<!-- -->
> For-In 循环语法
>
> *for-in 语句***for case**<sub>可选</sub> [模式](./08_Patterns.md#pattern) **in** [表达式](./04_Expressions.md#expression) [where 子句](./05_Statements.md#where_clause)<sub>可选</sub> [代码块](./06_Declarations.md#code_block)
>
<!-- -->
> While 循环语法
>
> *while 语句***while** [条件集](./05_Statements.md#condition_list) [代码块](./06_Declarations.md#code_block)
>
> *条件集* → [条件](./05_Statements.md#condition) | [条件](./05_Statements.md#condition) **,** [条件集](./05_Statements.md#condition_list)
> *条件* → [表达式](./04_Expressions.md#expression) | [可用性条件](./05_Statements.md#availability_condition) | [case 条件](./05_Statements.md#case_condition) | [可选绑定条件](./05_Statements.md#optional_binding_condition)
>
> *case 条件***case** [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer)
>
> *可选绑定条件***let** [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer) | **var** [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer)
>
<!-- -->
> Repeat-While 语句语法
>
*repeat-while-statement* → **repeat** [代码块](./06_Declarations.md#code_block) **while** [表达式](./04_Expressions.md#expression)
<!-- -->
> 分支语句语法
>
> *分支语句* → [if 语句](./05_Statements.md#if_statement)
>
> *分支语句* → [guard 语句](./05_Statements.md#guard_statement)
>
> *分支语句* → [switch 语句](./05_Statements.md#switch_statement)
>
<!-- -->
> If 语句语法
>
> *if 语句***if** [条件集](./05_Statements.md#condition_list) [代码块](./06_Declarations.md#code_block) [else 子句](./05_Statements.md#else_clause)<sub>可选</sub>
>
> *else 子句***else** [代码块](./06_Declarations.md#code_block) | **else** [if 语句](./05_Statements.md#if_statement)
>
<!-- -->
> Guard 语句语法
>
> *guard 语句***guard** [条件集](./05_Statements.md#condition_list) **else** [代码块](./06_Declarations.md#code_block)
>
<!-- -->
> Switch 语句语法
>
> *switch 语句***switch** [表达式](./04_Expressions.md#expression) **{** [switch-case集](./05_Statements.md#switch_cases)<sub>可选</sub> **}**
>
> *switch-case集* → [switch-case](./05_Statements.md#switch_case) [switch-case集](./05_Statements.md#switch_cases)<sub>可选</sub>
>
> *switch-case* → [case 标签](./05_Statements.md#case_label) [语句集](./05_Statements.md#statements)
>
> *switch-case* → [default 标签](./05_Statements.md#default_label) [语句集](./05_Statements.md#statements)
>
> *switch-case* → [条件 switch-case](./05_Statements.md#conditional_switch_case)
>
> *case 标签* → [属性集](./07_Attributes.md#attributes)<sub>可选</sub> **case** [case 项集](./05_Statements.md#case_item_list) **:**
>
> *case 项集* → [模式](./08_Patterns.md#pattern) [where 子句](./05_Statements.md#where_clause)<sub>可选</sub> | [模式](./08_Patterns.md#pattern) [where 子句](./05_Statements.md#guard_clause)<sub>可选</sub> **,** [case 项集](./05_Statements.md#case_item_list)
>
> *default 标签* → [属性集](./07_Attributes.md#attributes)<sub>可选</sub> **default** **:**
>
> *where 子句***where** [where 表达式](./05_Statements.md#where_expression)
>
> *where 表达式* → [表达式](./04_Expressions.md#expression)
>
> *条件 switch-case* → [switch if 指令子句](./05_Statements.md#switch_if_directive_clause) [switch elseif 指令子句集](./05_Statements.md#switch_elseif_directive_clauses)<sub>可选</sub> [switch else 指令子句](./05_Statements.md#switch_else_directive_clause)<sub>可选</sub> [endif 指令](./05_Statements.md#endif_directive)
>
> *switch if 指令子句* → [if 指令](./05_Statements.md#if_directive) [编译条件](./05_Statements.md#compilation_condition) [switch-case集](./05_Statements.md#switch_cases)<sub>可选</sub>
>
> *switch elseif 指令子句集* → [elseif 指令子句](./05_Statements.md#else_if_directive_clause) [switch elseif 指令子句集](./05_Statements.md#switch_elseif_directive_clauses)<sub>可选</sub>
>
> *switch elseif 指令子句* → [elseif 指令](./05_Statements.md#elseif_directive) [编译条件](./05_Statements.md#compilation_condition) [switch-case集](./05_Statements.md#switch_cases)<sub>可选</sub>
>
> *switch else 指令子句* → [else 指令](./05_Statements.md#else_directive) [switch-case集](./05_Statements.md#switch_cases)<sub>可选</sub>
>
<!-- -->
> 标签语句语法
>
> *标签语句* → [语句标签](./05_Statements.md#statement_label) [循环语句](./05_Statements.md#loop_statement)
>
> *标签语句* → [语句标签](./05_Statements.md#statement_label) [if 语句](./05_Statements.md#if_statement)
>
> *标签语句* → [语句标签](./05_Statements.md#statement_label) [switch 语句](./05_Statements.md#switch_statement)
>
> *标签语句* → [语句标签](./05_Statements.md#statement_label) [do 语句](./05_Statements.md#do_statement)
>
> *语句标签* → [标签名称](./05_Statements.md#label_name) **:**
>
> *标签名称* → [标识符](./02_Lexical_Structure.md#identifier)
>
<!-- -->
> 控制转移语句语法
>
> *控制转移语句* → [break 语句](./05_Statements.md#break_statement)
>
> *控制转移语句* → [continue 语句](./05_Statements.md#continue_statement)
>
> *控制转移语句* → [fallthrough 语句](./05_Statements.md#fallthrough_statement)
>
> *控制转移语句* → [return 语句](./05_Statements.md#return_statement)
>
> *控制转移语句* → [throw 语句](./05_Statements.md#throw_statement)
>
<!-- -->
> Break 语句语法
>
> *break 语句***break** [标签名称](./05_Statements.md#label_name)<sub>可选</sub>
>
<!-- -->
> Continue 语句语法
>
> *continue 语句***continue** [标签名称](./05_Statements.md#label_name)<sub>可选</sub>
>
<!-- -->
> Fallthrough 语句语法
>
> *fallthrough 语句* → **fallthrough**
>
<!-- -->
> Return 语句语法
>
> *return 语句***return** [表达式](./04_Expressions.md#expression)<sub>可选</sub>
>
<!-- -->
> Throw 语句语法
>
> *throw 语句***throw** [表达式](./04_Expressions.md#expression)
>
<!-- -->
> Defer 语句语法
>
> *defer 语句***defer** [代码块](./06_Declarations.md#code_block)
>
<!-- -->
> Do 语句语法
>
> *do 语句***do** [代码块](./06_Declarations.md#code_block) [catch 子句集](./05_Statements.md#catch_clauses)<sub>可选</sub>
>
> *catch 子句集* → [catch 子句](./05_Statements.md#catch_clause) [catch 子句集](05_Statements.md#catch_clauses)<sub>可选</sub>
>
> *catch 子句***catch** [模式](./08_Patterns.md#pattern)<sub>可选</sub> [where 子句](./05_Statements.md#where_clause)<sub>可选</sub> [代码块](./06_Declarations.md#code_block)<sub>可选</sub>
>
<!-- -->
> 编译控制语句
>
> *编译控制语句* → [条件编译块](./05_Statements.md#conditional_complation_block)
>
> *编译控制语句* → [行控制语句](./05_Statements.md#line_control_statement)
>
> *编译控制语句* → [诊断语句](./05_Statements.md#diagnostic_statement)
>
<!-- -->
> 条件编译块语法
>
> *条件编译块* → [if 指令子句](./05_Statements.md#if_directive_clause) [elseif 指令子句集](./05_Statements.md#elseif_directive_clauses)<sub>可选</sub> [else 指令子句](./05_Statements.md#else_directive_clause)<sub>可选</sub> [endif 指令](./05_Statements.md#endif_directive)
>
> *if 指令子句* → [if 指令](./05_Statements.md#if_directive) [编译条件](./05_Statements.md#compilation_condition) [语句集](./05_Statements.md#statements)<sub>可选</sub>
>
> *elseif 指令子句集* → [elseif 指令子句](./05_Statements.md#else_if_directive_clause) [elseif 指令子句集](./05_Statements.md#elseif_directive_clauses)<sub>可选</sub>
>
> *elseif 指令子句* → [elseif 指令](./05_Statements.md#elseif_directive) [编译条件](./05_Statements.md#compilation_condition) [语句集](./05_Statements.md#statements)<sub>可选</sub>
>
> *else 指令子句* → [else 指令](./05_Statements.md#else_directive) [语句集](./05_Statements.md#statements)<sub>可选</sub>
>
> *if 指令***#if**
>
> *elseif 指令***#elseif**
>
> *else 指令***#else**
>
> *endif 指令***#endif**
>
> *编译条件* → [平台条件](./05_Statements.md#platform_condition)
>
> *编译条件* → [标识符](./02_Lexical_Structure.md#identifier)
>
> *编译条件* → [布尔字面量](./02_Lexical_Structure.md#boolean_literal)
>
> *编译条件***(** [编译条件](./05_Statements.md#compilation_condition) **)**
>
> *编译条件***!** [编译条件](./05_Statements.md#compilation_condition)
>
> *编译条件* → [编译条件](./05_Statements.md#compilation_condition) **&&** [编译条件](./05_Statements.md#compilation_condition)
>
> *编译条件* → [编译条件](./05_Statements.md#compilation_condition) **||** [编译条件](./05_Statements.md#compilation_condition)
>
> *平台条件***os** **(** [操作系统](./05_Statements.md#operating_system) **)**
>
> *平台条件***arch** **(** [架构](./05_Statements.md#architecture) **)**
>
> *平台条件***swift** **(** **>=** [swift 版本](./05_Statements.md#swift_version) **)** | **swift** **(** **<** [swift 版本](./05_Statements.md#swift_version) **)**
>
> *平台条件***compiler** **(** **>=** [swift 版本](./05_Statements.md#swift_version) **)** | **compiler** **(** **<** [swift 版本](./05_Statements.md#swift_version) **)**
>
> *平台条件***canImport** **(** [模块名](./05_Statements.md#module_name) **)**
>
> *平台条件***targetEnvironment** **(** [环境](./05_Statements.md#environment) **)**
>
> *操作系统***macOS** | **iOS** | **watchOS** | **tvOS**
>
> *架构***i386** | **x86_64** | **arm** | **arm64**
>
> *swift 版本* → [十进制数字集](./02_Lexical_Structure.md#decimal_digits) [swift 版本后缀](./05_Statements.md#swift_version_continuation)<sub>可选</sub>
>
> *swift 版本后缀***.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) [swift 版本集](./05_Statements.md#swift_version_continuation)<sub>可选</sub>
>
> *模块名* → [标识符](./02_Lexical_Structure.md#identifier)
>
> *环境* → **simulator**
>
<!-- -->
> 行控制语句语法
>
> *行控制语句***#sourceLocation** **(** **file:** [文件名](./05_Statements.md#file_name) **,** **line:** [行号](./05_Statements.md#line_number) **)**
>
> *行控制语句***#sourceLocation** **(** **)**
>
> *行号* → 一个大于 0 的十进制数字
>
> *文件名* → [静态字符串字面量](./02_Lexical_Structure.md#static_string_literal)
>
<!-- -->
> 编译期诊断语句语法
>
> *诊断语句***#error** **(** [诊断信息](./05_Statements.md#diagnostic_message) **)**
>
> *诊断语句***#warning** **(** [诊断信息](./05_Statements.md#diagnostic_message) **)**
>
> *诊断信息* → [静态字符串字面量](./02_Lexical_Structure.md#static_string_literal)
>
<!-- -->
> 可用性条件语法
>
> *可用性条件***#available** **(** [可用性参数集](./05_Statements.md#availability_arguments) **)**
>
> *可用性参数集* → [可用性参数](./05_Statements.md#availability_argument) | [可用性参数](./05_Statements.md#availability_argument) , [可用性参数集)](./05_Statements.md#availability_arguments)
>
> *可用性参数* → [平台名](./05_Statements.md#platform_name) [平台版本](./05_Statements.md#platform_version)
>
> *可用性参数***\***
>
> *平台名***iOS** | **iOSApplicationExtension**
>
> *平台名***macOS** | **macOSApplicationExtension**
>
> *平台名* → **watchOS**
>
> *平台名* → **tvOS**
>
> *平台版本* → [十进制数字集](./02_Lexical_Structure.md#decimal_digits)
>
> *平台版本* → [十进制数字集](./02_Lexical_Structure.md#decimal_digits) **.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits)
>
> *平台版本* → [十进制数字集](./02_Lexical_Structure.md#decimal_digits) **.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) **.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits)
>
## 声明 {#declarations}
> 声明语法