diff --git a/source/chapter3/02_Lexical_Structure.md b/source/chapter3/02_Lexical_Structure.md index 0fd074a2..76f1ae44 100755 --- a/source/chapter3/02_Lexical_Structure.md +++ b/source/chapter3/02_Lexical_Structure.md @@ -34,11 +34,11 @@ Swift 的“词法结构(*lexical structure*)”描述了能构成该语言 > 标识符语法 -> *标识符* → [*头部标识符*](#identifier_head) [*标识符字符组*](#identifier_characters)可选 +> *标识符* → [*头部标识符*](#identifier_head) [*标识符字符组*](#identifier_characters)可选 > *标识符* → \`[*头部标识符*](#identifier_head) [*标识符字符组*](#identifier_characters)可选\` > *标识符* → [*隐式参数名*](#implicit_parameter_name) -> *标识符列表* → [*标识符*](#identifier) | [*标识符*](#identifier) **,** [*标识符列表*](#identifier_list) - +> *标识符列表* → [*标识符*](#identifier) | [*标识符*](#identifier) **,** [*标识符列表*](#identifier_list) + > *头部标识符* → 大写或小写字母 A - Z > *头部标识符* → U+00A8, U+00AA, U+00AD, U+00AF, U+00B2–U+00B5, or U+00B7–U+00BA > *头部标识符* → U+00BC–U+00BE, U+00C0–U+00D6, U+00D8–U+00F6, or U+00F8–U+00FF @@ -57,9 +57,9 @@ Swift 的“词法结构(*lexical structure*)”描述了能构成该语言 > *标识符字符* → 数值 0 - 9 > *标识符字符* → U+0300–U+036F, U+1DC0–U+1DFF, U+20D0–U+20FF, or U+FE20–U+FE2F > *标识符字符* → [*头部标识符*](#identifier_head) - + > *标识符字符组* → [*标识符字符*](#identifier_character) [*标识符字符列表*](#identifier_characters)可选 - > *隐式参数名* → **$** [*十进制数字列表*](#decimal_digits) @@ -94,10 +94,10 @@ true // 布尔型字面量 当为一个字面量值指定了类型注解的时候,这个注解的类型必须能通过这个字面量值实例化后得到。也就是说,这个类型必须遵守这些 Swift 标准库协议中的一个:整型字面量的`IntegerLiteralConvertible`协议、符点型字面量的`FloatingPointLiteralConvertible`协议、字符串字面量的`StringLiteralConvertible`协议以及布尔型字面量的`BooleanLiteralConvertible`协议。比如,`Int8` 遵守了 `IntegerLiteralConvertible`协议,因此它能在 `let x: Int8 = 42` 这个声明中作为整型字面量 `42` 的类型注解。 > 字面量语法 -> *字面量* → [*数字型字面量*](#numeric_literal) | [*字符串型字面量*](#string_literal) | [*布尔型字面量*](#boolean_literal) | [*nil型字面量*](#nil_literal) - -> *数字型字面量* → -可选[*整型字面量*](#integer_literal) | -可选[*符点型字面量*](#floating_point_literal) -> *布尔型字面量* → **true** | **false** +> *字面量* → [*数字型字面量*](#numeric_literal) | [*字符串型字面量*](#string_literal) | [*布尔型字面量*](#boolean_literal) | [*nil型字面量*](#nil_literal) + +> *数字型字面量* → -可选[*整型字面量*](#integer_literal) | -可选[*符点型字面量*](#floating_point_literal) +> *布尔型字面量* → **true** | **false** > *nil型字面量* → **nil** ### 整型字面量 @@ -120,23 +120,23 @@ true // 布尔型字面量 > *二进制字面量* → **0b** [*二进制数字*](#binary_digit) [*二进制字面量字符组*](#binary_literal_characters)可选 > *二进制数字* → 数值 0 到 1 -> *二进制字面量字符* → [*二进制数字*](#binary_digit) | _ +> *二进制字面量字符* → [*二进制数字*](#binary_digit) | _ > *二进制字面量字符组* → [*二进制字面量字符*](#binary_literal_character) [*二进制字面量字符组*](#binary_literal_characters)可选 - +> *八进制字面量* → **0o** [*八进字数字*](#octal_digit) [*八进制字符列表*](#octal_literal_characters)可选 > *八进字数字* → 数值 0 到 7 -> *八进制字符* → [*八进字数字*](#octal_digit) | _ +> *八进制字符* → [*八进字数字*](#octal_digit) | _ > *八进制字符组* → [*八进制字符*](#octal_literal_character) [*八进制字符列表*](#octal_literal_characters)可选 - -> *十进制字面量* → [*十进制数字*](#decimal_digit) [*十进制字符组*](#decimal_literal_characters)可选 + +> *十进制字面量* → [*十进制数字*](#decimal_digit) [*十进制字符组*](#decimal_literal_characters)可选 > *十进制数字* → 数值 0 到 9 > *十进制数字列表* → [*十进制数字*](#decimal_digit) [*十进制数字列表*](#decimal_digits)可选 -> *十进制字符* → [*十进制数字*](#decimal_digit) | _ +> *十进制字符* → [*十进制数字*](#decimal_digit) | _ > *十进制字符列表* → [*十进制字符*](#decimal_literal_character) [*十进制字符列表*](#decimal_literal_characters)可选 - + > *十六进制字面量* → **0x** [*十六进制数字*](#hexadecimal_digit) [*十六进制字面量字符列表*](#hexadecimal_literal_characters)可选 > *十六进制数字* → 数值 0 到 9, 字母 a 到 f, 或 A 到 F -> *十六进制字符* → [*十六进制数字*](#hexadecimal_digit) | _ +> *十六进制字符* → [*十六进制数字*](#hexadecimal_digit) | _ > *十六进制字面量字符列表* → [*十六进制字符*](#hexadecimal_literal_character) [*十六进制字面量字符列表*](#hexadecimal_literal_characters)可选 ### 浮点型字面量 @@ -156,9 +156,9 @@ true // 布尔型字面量 除非特别指定,浮点型字面量的默认推导类型为 Swift 标准库类型中的 `Double`,表示64位浮点数。Swift 标准库也定义了 `Float` 类型,表示32位浮点数。 > 浮点型字面量语法 -> *浮点数字面量* → [*十进制字面量*](#decimal_literal) [*十进制分数*](#decimal_fraction)可选 [*十进制指数*](#decimal_exponent)可选 +> *浮点数字面量* → [*十进制字面量*](#decimal_literal) [*十进制分数*](#decimal_fraction)可选 [*十进制指数*](#decimal_exponent)可选 > *浮点数字面量* → [*十六进制字面量*](#hexadecimal_literal) [*十六进制分数*](#hexadecimal_fraction)可选 [*十六进制指数*](#hexadecimal_exponent) - + > *十进制分数* → **.** [*十进制字面量*](#decimal_literal) > *十进制指数* → [*浮点数e*](#floating_point_e) [*正负号*](#sign)可选 [*十进制字面量*](#decimal_literal) @@ -211,7 +211,7 @@ let x = 3; "1 2 \(x)" > *引用文本条目* → [*转义字符*](#escaped_character) > *引用文本条目* → **\(** [*表达式*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Expressions.html#//apple_ref/doc/uid/TP40014097-CH32-ID383) **)** > *引用文本条目* → **除了"­, \­, U+000A, 或者 U+000D的所有Unicode的字符** -> *转义字符* → **\0** | **\\** | **\t** | **\n** | **\r** | **\"** | **\'** +> *转义字符* → **\0** | **\\** | **\t** | **\n** | **\r** | **\"** | **\'** > *转义字符* → **\u {** [*unicode标量数字*](#unicode_scalar_digits) **}** > *unicode标量数字* → 一到八位的十六进制数字 @@ -242,36 +242,36 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > 运算符语法语法 > *运算符* → [*头部运算符*](#operator_head) [*运算符字符组*](#operator_characters)可选 -> *运算符* → [*头部点运算符*](#dot_operator_head) [*点运算符字符组*](#dot_operator_characters)可选 - +> *运算符* → [*头部点运算符*](#dot_operator_head) [*点运算符字符组*](#dot_operator_characters)可选 + > *头部运算符* → **/** | **=** | **+** | **!** |**\*** | **%** |**<** | **>** |**&** | **|** |**/** | **~** | **?** | -> *头部运算符* → 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+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 - -> *运算符字符* → [*头部运算符*](#operator_head) -> *运算符字符* → U+0300–U+036F -> *运算符字符* → U+1DC0–U+1DFF -> *运算符字符* → U+20D0–U+20FF -> *运算符字符* → U+FE00–U+FE0F -> *运算符字符* → U+FE20–U+FE2F -> *运算符字符* → U+E0100–U+E01EF - -> *运算符字符组* → [*运算符字符*](#operator_character) [*运算符字符组*](#operator_characters)可选 - -> *头部点运算符* → **..** -> *头部点运算符字符* → . | [*运算符字符*](#operator_character) + +> *运算符字符* → [*头部运算符*](#operator_head) +> *运算符字符* → U+0300–U+036F +> *运算符字符* → U+1DC0–U+1DFF +> *运算符字符* → U+20D0–U+20FF +> *运算符字符* → U+FE00–U+FE0F +> *运算符字符* → U+FE20–U+FE2F +> *运算符字符* → U+E0100–U+E01EF + +> *运算符字符组* → [*运算符字符*](#operator_character) [*运算符字符组*] (#operator_characters)可选 + +> *头部点运算符* → **..** +> *头部点运算符字符* → . | [*运算符字符*](#operator_character) > *头部点运算符字符组* → [*点运算符字符*](#dot_operator_character) [*点运算符字符组*](#dot_operator_characters)可选 > *二元运算符* → [*运算符*](#operator)