From 37bcb2969aa16bd70f9aab5a76680d253d1827e9 Mon Sep 17 00:00:00 2001 From: Chen Jia Date: Tue, 2 Apr 2019 04:21:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B010=5FSummary=5Fof=5Fthe=5FGra?= =?UTF-8?q?mmar(Satements)=20(#915)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 第三章 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 --- ...s -> Generic Parameters and Arguments).md} | 326 ++++++++++++++++++ 1 file changed, 326 insertions(+) rename source/chapter3/{10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md => 10_Summary_of_the_Grammar(from Statements -> Generic Parameters and Arguments).md} (69%) 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 Statements -> Generic Parameters and Arguments).md similarity index 69% rename from source/chapter3/10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md rename to source/chapter3/10_Summary_of_the_Grammar(from Statements -> Generic Parameters and Arguments).md index 6ee594a0..bb5454bf 100644 --- a/source/chapter3/10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md +++ b/source/chapter3/10_Summary_of_the_Grammar(from Statements -> Generic Parameters and Arguments).md @@ -1,3 +1,329 @@ +## 语句 {#statements} + +> 语句语法 +> +> *语句* → [表达式](./04_Expressions.md#expression) **;**可选 +> +> *语句* → [声明](./06_Declarations.md#declaration) **;**可选 +> +> *语句* → [循环语句](./05_Statements.md#loop_statement) **;**可选 +> +> *语句* → [分支语句](./05_Statements.md#branch_statement) **;**可选 +> +> *语句* → [标签语句](./05_Statements.md#labeled_statement) **;**可选 +> +> *语句* → [控制转移语句](./05_Statements.md#control_transfer_statement) **;**可选 +> +> *语句* → [延迟语句](./05_Statements.md#defer_statement) **;**可选 +> +> *语句* → [执行语句](./05_Statements.md#do_statement) **;**可选 +> +> *语句* → [编译控制语句](./05_Statements.md#compiler_control_statement) +> +> *语句集* → [语句](./05_Statements.md#statement) [语句集](./05_Statements.md#statements)可选 +> + + + +> 循环语句语法 +> +> *循环语句* → [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**可选 [模式](./08_Patterns.md#pattern) **in** [表达式](./04_Expressions.md#expression) [where 子句](./05_Statements.md#where_clause)可选 [代码块](./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)可选 +> +> *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)可选 **}** +> +> *switch-case集* → [switch-case](./05_Statements.md#switch_case) [switch-case集](./05_Statements.md#switch_cases)可选 +> +> *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)可选 **case** [case 项集](./05_Statements.md#case_item_list) **:** +> +> *case 项集* → [模式](./08_Patterns.md#pattern) [where 子句](./05_Statements.md#where_clause)可选 | [模式](./08_Patterns.md#pattern) [where 子句](./05_Statements.md#guard_clause)可选 **,** [case 项集](./05_Statements.md#case_item_list) +> +> *default 标签* → [属性集](./07_Attributes.md#attributes)可选 **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)可选 [switch else 指令子句](./05_Statements.md#switch_else_directive_clause)可选 [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)可选 +> +> *switch elseif 指令子句集* → [elseif 指令子句](./05_Statements.md#else_if_directive_clause) [switch elseif 指令子句集](./05_Statements.md#switch_elseif_directive_clauses)可选 +> +> *switch elseif 指令子句* → [elseif 指令](./05_Statements.md#elseif_directive) [编译条件](./05_Statements.md#compilation_condition) [switch-case集](./05_Statements.md#switch_cases)可选 +> +> *switch else 指令子句* → [else 指令](./05_Statements.md#else_directive) [switch-case集](./05_Statements.md#switch_cases)可选 +> + + + +> 标签语句语法 +> +> *标签语句* → [语句标签](./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)可选 +> + + + +> Continue 语句语法 +> +> *continue 语句* → **continue** [标签名称](./05_Statements.md#label_name)可选 +> + + + +> Fallthrough 语句语法 +> +> *fallthrough 语句* → **fallthrough** +> + + + +> Return 语句语法 +> +> *return 语句* → **return** [表达式](./04_Expressions.md#expression)可选 +> + + + +> 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)可选 +> +> *catch 子句集* → [catch 子句](./05_Statements.md#catch_clause) [catch 子句集](05_Statements.md#catch_clauses)可选 +> +> *catch 子句* → **catch** [模式](./08_Patterns.md#pattern)可选 [where 子句](./05_Statements.md#where_clause)可选 [代码块](./06_Declarations.md#code_block)可选 +> + + +> 编译控制语句 +> +> *编译控制语句* → [条件编译块](./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)可选 [else 指令子句](./05_Statements.md#else_directive_clause)可选 [endif 指令](./05_Statements.md#endif_directive) +> +> *if 指令子句* → [if 指令](./05_Statements.md#if_directive) [编译条件](./05_Statements.md#compilation_condition) [语句集](./05_Statements.md#statements)可选 +> +> *elseif 指令子句集* → [elseif 指令子句](./05_Statements.md#else_if_directive_clause) [elseif 指令子句集](./05_Statements.md#elseif_directive_clauses)可选 +> +> *elseif 指令子句* → [elseif 指令](./05_Statements.md#elseif_directive) [编译条件](./05_Statements.md#compilation_condition) [语句集](./05_Statements.md#statements)可选 +> +> *else 指令子句* → [else 指令](./05_Statements.md#else_directive) [语句集](./05_Statements.md#statements)可选 +> +> *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)可选 +> +> *swift 版本后缀* → **.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) [swift 版本集](./05_Statements.md#swift_version_continuation)可选 +> +> *模块名* → [标识符](./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} > 声明语法