Files
the-swift-programming-langu…/source/chapter3/01_About_the_Language_Reference.md
ChildhoodAndy 9173f36452 add 3-1 AboutTheLanguageReference
add 3-1 AboutTheLanguageReference
2014-06-05 18:55:29 +08:00

38 lines
3.3 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 关于语言附注
本书的这一节描述了Swift编程语言的形式语法。这里描述的语法是为了帮助您更详细的了解该语言而不是让您直接实现一个解析器或编译器。
Swift语言相对小点这是由于在Swift代码中几乎无处不在的许多常见的的类型函数以及运算符都由Swift标准库来定义。虽然这些类型函数和运算符不是Swift语言本身的一部分但是它们被广泛用于这本书的讨论和代码范例。
# 如何阅读语法
用来描述Swift编程语言形式语法的记法遵循下面几个约定
- 箭头(→)用来标记语法产式,可以被理解为“可以包含”。
- 句法范畴由*斜体*文字表示,并出现在一个语法产式规则两侧。
- 义词和标点符号由粗体固定宽度的文本显示和只出现在一个语法产式规则的右边。
- 选择性的语法产式由竖线(|)分隔。当可选用的语法产式太多时,为了阅读方便,它们将被拆分为多行语法产式规则。
- 在少数情况下,常规字体文字用来描述语法产式规则的右边。
- 可选的句法范畴和文字用尾标`opt`来标记。
举个例子getter-setter的语法块的定义如下
> GRAMMAR OF A GETTER-SETTER BLOCK
> *getter-setter-block* → {­ [*getter-clause*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/swift/grammar/getter-clause) [­*setter-clause*­](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/swift/grammar/setter-clause)*opt* ­}­ | {­ [*setter-clause*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/swift/grammar/setter-clause) [­*getter-clause*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/swift/grammar/getter-clause)­}­
这个定义表明一个getter-setter方法块可以由一个getter子句后跟一个可选的setter子句构成用大括号括起来或者由一个setter子句后跟一个getter子句构成用大括号括起来。上述的文法产生等价于下面的两个产生明确阐明如何二中择一
> GRAMMAR OF A GETTER-SETTER BLOCK
> getter-setter-block → {­ [*getter-clause*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/swift/grammar/getter-clause) [*­setter-clause*­](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/swift/grammar/setter-clause)*opt* ­}­­
> getter-setter-block → {­ [*setter-clause*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/swift/grammar/setter-clause) [*­getter-clause*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/swift/grammar/getter-clause)­}­
================================================================
上篇:[高级操作符]()
下篇:[词法结构]()