> 1.0 翻譯:[stanzhai](https://github.com/stanzhai)?校對:[xielingwang](https://github.com/xielingwang)
>
> 2.0 翻譯+校對:[miaosiqi](https://github.com/miaosiqi)
本頁包含內容:
[TOC=2]
## 語句
### 語句語法
> 語句 → _表達式_ ; 可選
> 語句 → _聲明_ ; 可選
> 語句 → _循環語句_ ; 可選
> 語句 → _分支語句_ ; 可選
> 語句 → _標記語句(Labeled Statement)_
> 語句 → _控制轉移語句_ ; 可選
> 語句 → _延遲語句_ ; _可選_
> _語句_ → _執行語句_ ; _可選_
> _多條語句(Statements)_ → _語句_ _多條語句(Statements)_ _可選_
### 循環語句語法
> 循環語句 → _for語句_
> 循環語句 → _for-in語句_
> 循環語句 → _while語句_
> 循環語句 → _repeat-while語句_
### For 循環語法
> for語句 → for _for初始條件_ 可選 ; _表達式_ 可選 ; _表達式_ 可選 _代碼塊_
> for語句 → for ( _for初始條件_ 可選 ; _表達式_ 可選 ; _表達式_ 可選 ) _代碼塊_
> for初始條件 → _變量聲明_ | _表達式集_
### For-In 循環語法
> for-in語句 → for case 可選 _模式_ in _表達式_ _代碼塊_ _where從句_ _可選_
### While 循環語法
> while語句 → while _條件從句_ _代碼塊_
> 條件從句 → _表達式_
> _條件從句_ → _表達式_ , _表達式集_
> _條件從句_ → _表達式集_
> _條件從句_ → _可用條件 (availability-condition_) | _表達式集_
> _條件集_ → _條件_ | _條件_ , _條件集_
> _條件_ → _可用條件(availability-condition)_ | _個例條件(case-condition)_ | _可選綁定條件(optional-binding-condition)_
> _個例條件(case-condition)_ → case _模式_ _構造器_ _where從句__可選_
> _可選綁定條件(optional-binding-condition)_ → _可選綁定頭(optional-binding-head)_ _可選綁定連續集(optional-binding-continuation-list)_ 可選 _where從句_ _可選_
> _可選綁定頭(optional-binding-head)_ → let _模式 構造器_ | var _模式 構造器_
> _可選綁定連續集(optional-binding-contiuation-list)_ → _可選綁定連續(optional-binding-contiuation)_ | _可選綁定連續(optional-binding-contiuation)_ , _可選綁定連續集(optional-binding-contiuation-list)_
> _可選綁定連續(optional-binding-continuation)_ → _模式 構造器_ | _可選綁定頭(optional-binding-head)_
> Repeat-While語句語法 repeat-while-statement → repeat _代碼塊_ while _表達式_
### 分支語句語法
> 分支語句 → _if語句_
> _分支語句_ → _guard語句_
> _分支語句_ → _switch語句_
### If語句語法
> if語句 → if _條件從句_ _代碼塊_ _else從句(Clause)_ _可選_
> _else從句(Clause)_ → else _代碼塊_ | else _if語句_
### Guard 語句語法
> guard語句 → guard _條件從句_ else _代碼塊_
### Switch語句語法
> switch語句 → switch _表達式_ { _SwitchCase_ 可選 }
> SwitchCase集 → _SwitchCase_ _SwitchCase集_ 可選
> SwitchCase → _case標簽_ _多條語句(Statements)_ | _default標簽_ _多條語句(Statements)_
> SwitchCase → _case標簽_ ; | _default標簽_ ;
> case標簽 → case _case項集_ :
> case項集 → _模式_ _where-clause_ 可選 | _模式_ _where-clause_ 可選 , _case項集_
> default標簽 → default :
where從句 → where _where表達式_
where表達式 → _表達式_
### 標記語句語法
> 標記語句(Labeled Statement) → _語句標簽_ _循環語句_ | _語句標簽_ _if語句_ | _語句標簽_ _switch語句_ 語句標簽 → _標簽名稱_ :
> 標簽名稱 → _標識符_
### 控制傳遞語句(Control Transfer Statement) 語法
> 控制傳遞語句 → _break語句_
> 控制傳遞語句 → _continue語句_
> 控制傳遞語句 → _fallthrough語句_
> 控制傳遞語句 → _return語句_ 控制傳遞語句 → _throw語句_
> Break 語句語法
> break語句 → break _標簽名稱_ _可選_
> Continue 語句語法
> continue語句 → continue _標簽名稱_ _可選_
### Fallthrough 語句語法
> fallthrough語句 → fallthrough
### Return 語句語法
> return語句 → return _表達式_ _可選_
### 可用條件(Availability Condition)語法
> _可用條件(availability-condition)_ → #available ( _多可用參數_(availability-arguments) )
> _多可用參數(availability- arguments)_ → _可用參數(availability-argument)_|_可用參數(availability-argument)_ , 多可用參數(availability-arguments)
> _可用參數(availability- argument)_ → _平臺名(platform-name)_ _平臺版本(platform-version)_
> _可用參數(availability- argument)_ → *
> _平臺名_ → iOS | iOSApplicationExtension
> _平臺名_ → OSX | OSXApplicationExtension
> _平臺名_ → watchOS
> _平臺版本_ → _十進制數(decimal-digits)_
> _平臺版本_ → _十進制數(decimal-digits)_ . _十進制數(decimal-digits)_
> _平臺版本_ → _十進制數(decimal-digits)_ . _十進制數(decimal-digits)_ . _十進制數(decimal-digits)_)
### 拋出語句(Throw Statement)語法
> _拋出語句(throw-statement)_ → throw _表達式(expression)_
### 延遲語句 (defer-statement)語法
> _延遲語句(defer-statement)_ → defer _代碼塊_
### 執行語句(do-statement)語法
> _執行語句(do-statement)_ → do _代碼塊_ _catch-clauses_ _可選_
> _catch-clauses_ → _catch-clause_ _catch-clauses_ _可選_
> _catch-clauses_ → catch _模式(pattern)_ 可選 _where-clause_ 可選 _代碼塊(code-block)_ _可選_
## 泛型參數
### 泛型形參從句(Generic Parameter Clause) 語法
> 泛型參數從句 → _泛型參數集_ _約束從句_ 可選 >
> 泛型參數集 → _泛形參數_ | _泛形參數_ , _泛型參數集_
> 泛形參數 → _類型名稱_
> 泛形參數 → _類型名稱_ : _類型標識_
> 泛形參數 → _類型名稱_ : _協議合成類型_
> 約束從句 → where _約束集_
> 約束集 → _約束_ | _約束_ , _約束集_
> 約束 → _一致性約束_ | _同類型約束_
> 一致性約束 → _類型標識_ : _類型標識_
> 一致性約束 → _類型標識_ : _協議合成類型_
> 同類型約束 → _類型標識_ == _類型_
### 泛型實參從句語法
> (泛型參數從句Generic Argument Clause) → _泛型參數集_ >
> 泛型參數集 → _泛型參數_ | _泛型參數_ , _泛型參數集_
> 泛型參數 → _類型_
## 聲明 (Declarations)
### 聲明語法
> 聲明 → _導入聲明_
> 聲明 → _常量聲明_
> 聲明 → _變量聲明_
> 聲明 → _類型別名聲明_
> 聲明 → _函數聲明_
> 聲明 → _枚舉聲明_
> 聲明 → _結構體聲明_
> 聲明 → _類聲明_
> 聲明 → _協議聲明_
> 聲明 → _構造器聲明_
> 聲明 → _析構器聲明_
> 聲明 → _擴展聲明_
> 聲明 → _下標腳本聲明_
> 聲明 → _運算符聲明_
> 聲明(Declarations)集 → _聲明_ _聲明(Declarations)集_ _可選_
### 頂級(Top Level) 聲明語法
> 頂級聲明 → _多條語句(Statements)_ _可選_
### 代碼塊語法
> 代碼塊 → { _多條語句(Statements)_ 可選 }
### 導入(Import)聲明語法
> 導入聲明 → _屬性(Attributes)集_ 可選 import _導入類型_ 可選 _導入路徑_
> 導入類型 → typealias | struct | class | enum | protocol | var | func
> 導入路徑 → _導入路徑標識符_ | _導入路徑標識符_ . _導入路徑_
> 導入路徑標識符 → _標識符_ | _運算符_
### 常數聲明語法
> 常量聲明 → _屬性(Attributes)集_ 可選 _聲明修改符(Modifiers)集_ 可選 let _模式構造器集_
> 模式構造器集 → _模式構造器_ | _模式構造器_ , _模式構造器集_
> 模式構造器 → _模式_ _構造器_ 可選
> 構造器 → = _表達式_
### 變量聲明語法
> 變量聲明 → _變量聲明頭(Head)_ _模式構造器集_
> 變量聲明 → _變量聲明頭(Head)_ _變量名_ _類型注解_ _代碼塊_
> 變量聲明 → _變量聲明頭(Head)_ _變量名_ _類型注解_ _getter-setter塊_
> 變量聲明 → _變量聲明頭(Head)_ _變量名_ _類型注解_ _getter-setter關鍵字(Keyword)塊_
> 變量聲明 → _變量聲明頭(Head)_ _變量名_ _類型注解_ _構造器_ 可選 _willSet-didSet代碼塊_
> 變量聲明頭(Head) → _屬性(Attributes)集_ 可選 _聲明修改符(Modifers)集_ 可選 var
> 變量名稱 → _標識符_
> getter-setter塊 → { _getter從句_ _setter從句_ 可選 }
> getter-setter塊 → { _setter從句_ _getter從句_ }
> getter從句 → _屬性(Attributes)集_ 可選 get _代碼塊_
> setter從句 → _屬性(Attributes)集_ 可選 set _setter名稱_ 可選 _代碼塊_
> setter名稱 → ( _標識符_ )
> getter-setter關鍵字(Keyword)塊 → { _getter關鍵字(Keyword)從句_ _setter關鍵字(Keyword)從句_ 可選 }
> getter-setter關鍵字(Keyword)塊 → { _setter關鍵字(Keyword)從句_ _getter關鍵字(Keyword)從句_ }
> getter關鍵字(Keyword)從句 → _屬性(Attributes)集_ 可選 get
> setter關鍵字(Keyword)從句 → _屬性(Attributes)集_ 可選 set
> willSet-didSet代碼塊 → { _willSet從句_ _didSet從句_ 可選 }
> willSet-didSet代碼塊 → { _didSet從句_ _willSet從句_ }
> willSet從句 → _屬性(Attributes)集_ 可選 willSet _setter名稱_ 可選 _代碼塊_
> didSet從句 → _屬性(Attributes)集_ 可選 didSet _setter名稱_ 可選 _代碼塊_
### 類型別名聲明語法
> 類型別名聲明 → _類型別名頭(Head)_ _類型別名賦值_
> 類型別名頭(Head) → _屬性_ 可選 _訪問級別修改符(access-level-modifier)_ typealias _類型別名名稱_
> 類型別名名稱 → _標識符_
> 類型別名賦值 → = _類型_
### 函數聲明語法
> 函數聲明 → _函數頭_ _函數名_ _泛型參數從句_ 可選 _函數簽名(Signature)_ _函數體_
> 函數頭 → _屬性(Attributes)集_ 可選 _聲明描述符(Specifiers)集_ 可選 func
> 函數名 → _標識符_ | _運算符_
> 函數簽名(Signature) → _parameter-clauses_ throws 可選 _函數結果_ _可選_
> _函數簽名(Signature)_ → _parameter-clauses_ rethrows _函數結果_ 可選
> 函數結果 → -> _屬性(Attributes)集_ 可選 _類型_
> 函數體 → _代碼塊_
> 參數從句 → _參數從句_ _parameter-clauses_ 可選
> 參數從句 → ( ) | ( _參數集_ ... 可選 )
> 參數集 → _參數_ | _參數_ , _參數集_
> 參數 → inout 可選 let 可選 _外部參數名_ 可選 _本地參數名_ 可選 _類型注解_ _默認參數從句_ 可選
> 參數 → inout 可選 var _外部參數名_ _本地參數名_ 可選 _類型注解_ _默認參數從句_ 可選
> 參數 → _屬性(Attributes)集_ 可選 _類型_
> 外部參數名 → _標識符_ | _
> 本地參數名 → _標識符_ | _
> 默認參數從句 → = _表達式_
### 枚舉聲明語法
> 枚舉聲明 → _屬性(Attributes)集_ 可選 _訪問級別修改器(access-level-modifier)_ 可選 _聯合式枚舉_
> _枚舉聲明_ → _屬性(Attributes)集_ 可選 _訪問級別修改器(access-level-modifier)_ 可選 _原始值式枚舉(raw-value-style-enum)_
> _聯合式枚舉_ → enum _枚舉名_ _泛型參數從句_ 可選 _類型繼承從句(type-inheritance-clause)_ 可選 { _聯合樣式枚舉成員_ 可選 }
> _聯合樣式枚舉成員_ → _union-style-enum-member_ _聯合樣式枚舉成員_ _可選_
> _聯合樣式枚舉成員_ → _聲明_ | _聯合式(Union Style)的枚舉case從句_
> _聯合式(Union Style)的枚舉case從句_ → _屬性(Attributes)集_ 可選 case _聯合式(Union Style)的枚舉case集_
> 聯合式(Union Style)的枚舉case集 → _聯合式(Union Style)的case_ | _聯合式(Union Style)的case_ , _聯合式(Union Style)的枚舉case集_
> 聯合式(Union Style)的枚舉case → _枚舉的case名_ _元組類型_ 可選
> 枚舉名 → _標識符_
> 枚舉的case名 → _標識符_
> 原始值式枚舉 → enum _枚舉名_ _泛型參數從句_ 可選 : _類型標識_ { _原始值式枚舉成員集_ 可選 }
> 原始值式枚舉成員集 → _原始值式枚舉成員_ _原始值式枚舉成員集_ 可選
> 原始值式枚舉成員 → _聲明_ | _原始值式枚舉case從句_
> 原始值式枚舉case從句 → _屬性(Attributes)集_ 可選 case _原始值式枚舉case集_
> 原始值式枚舉case集 → _原始值式枚舉case_ | _原始值式枚舉case_ , _原始值式枚舉case集_
> 原始值式枚舉case → _枚舉的case名_ _原始值賦值_ 可選
> 原始值賦值 → = _字面量_ 原始值字面量(raw-value-literal) → _數值字面量_ | _字符串字面量_ | _布爾字面量_
### 結構體聲明語法
> 結構體聲明 → _屬性(Attributes)集_ 可選 _訪問級別修改器(access-level-modifier)_ 可選 struct _結構體名稱_ _泛型參數從句_ 可選 _類型繼承從句_ 可選 _結構體主體_
> 結構體名稱 → _標識符_
> 結構體主體 → { _聲明(Declarations)集_ 可選 }
### 類聲明語法
> 類聲明 → _屬性(Attributes)集_ 可選 _訪問級別修改器(access-level-modifier)_ class _類名_ _泛型參數從句_ 可選 _類型繼承從句_ 可選 _類主體_
> 類名 → _標識符_
> 類主體 → { _聲明(Declarations)集_ 可選 }
### 協議(Protocol)聲明語法
> 協議聲明 → _屬性(Attributes)集_ 可選__訪問級別修改器(access-level-modifier)_ protocol _協議名_ _類型繼承從句__可選 _協議主體_
> 協議名 → _標識符_
> 協議主體 → { _協議成員聲明(Declarations)集_ 可選 }
> 協議成員聲明 → _協議屬性聲明_
> 協議成員聲明 → _協議方法聲明_
> 協議成員聲明 → _協議構造器聲明_
> 協議成員聲明 → _協議下標腳本聲明_
> 協議成員聲明 → _協議關聯類型聲明_
> 協議成員聲明(Declarations)集 → _協議成員聲明_ _協議成員聲明(Declarations)集_ _可選_
### 協議屬性聲明語法
> 協議屬性聲明 → _變量聲明頭(Head)_ _變量名_ _類型注解_ _getter-setter關鍵字(Keyword)塊_
### 協議方法聲明語法
> 協議方法聲明 → _函數頭_ _函數名_ _泛型參數從句_ 可選 _函數簽名(Signature)_
### 協議構造器聲明語法
> 協議構造器聲明 → _構造器頭(Head)_ _泛型參數從句_ 可選 _參數從句_
### 協議下標腳本聲明語法
> 協議下標腳本聲明 → _下標腳本頭(Head)_ _下標腳本結果(Result)_ _getter-setter關鍵字(Keyword)塊_
### 協議關聯類型聲明語法
> 協議關聯類型聲明 → _類型別名頭(Head)_ _類型繼承從句_ 可選 _類型別名賦值_ _可選_
### 構造器聲明語法
> 構造器聲明 → _構造器頭(Head)_ _泛型參數從句_ 可選 _參數從句_ _構造器主體_
> 構造器頭(Head) → _屬性(Attributes)集_ 可選 _聲明修改器集(declaration-modifiers)_ 可選 init
> 構造器頭(Head) → _屬性(Attributes)集_ 可選 _聲明修改器集(declaration-modifiers)_ 可選 init ?
> _構造器頭(Head)_ → _屬性(Attributes)集_ 可選 _聲明修改器集(declaration-modifiers)_ 可選 init !
> _構造器主體_ → _代碼塊_
### 析構器聲明語法
> 析構器聲明 → _屬性(Attributes)集_ 可選 deinit _代碼塊_
### 擴展(Extension)聲明語法
> 擴展聲明 → _訪問級別修改器_ 可選 extension _類型標識_ _類型繼承從句_ 可選 _extension-body_
> extension-body → { _聲明(Declarations)集_ 可選 }
### 下標腳本聲明語法
> 下標腳本聲明 → _下標腳本頭(Head)_ _下標腳本結果(Result)_ _代碼塊_
> 下標腳本聲明 → _下標腳本頭(Head)_ _下標腳本結果(Result)_ _getter-setter塊_
> 下標腳本聲明 → _下標腳本頭(Head)_ _下標腳本結果(Result)_ _getter-setter關鍵字(Keyword)塊_
> 下標腳本頭(Head) → _屬性(Attributes)集_ 可選 _聲明修改器(declaration-modifiers)_ 可選 subscript _參數從句_
> 下標腳本結果(Result) → -> _屬性(Attributes)集_ 可選 _類型_
### 運算符聲明語法
> 運算符聲明 → _前置運算符聲明_ | _后置運算符聲明_ | _中置運算符聲明_
> 前置運算符聲明 → prefix 運算符 _運算符_ { }
> 后置運算符聲明 → postfix 運算符 _運算符_ { }
> 中置運算符聲明 → infix 運算符 _運算符_ { _中置運算符屬性集_ 可選 }
> 中置運算符屬性集 → _優先級從句_ 可選 _結和性從句_ 可選
> 優先級從句 → precedence _優先級水平_
> 優先級水平 → 數值 0 到 255,首末項包括在內 結和性從句 → associativity _結和性_
> 結和性 → left | right | none
### 聲明修改器語法
> _聲明修改器_ → 類 | 便捷(convenience) | 動態(dynamic) | final | 中置(infix) | lazy | 可變(mutating) | 不可變(nonmutating) | 可選(optional) | 改寫(override) | 后置 | 前置 | required |static | unowned | unowned(safe) | unowned(unsafe) | 弱(weak)
> _聲明修改器_ → _訪問級別聲明器(access-level-modifier)_
> _聲明修改集_ → _聲明修改器_ _聲明修改器集_ _可選_
> _訪問級別修改器_ → 內部的 | 內部的(set)
> _訪問級別修改器_ → 私有的 | 私有的(set)
> _訪問級別修改器_ → 公共的 | 公共的(set)
> _訪問級別修改器集_ →_訪問級別修改器_ _訪問級別修改器集_ _可選_
## 模式
### 模式(Patterns) 語法
> 模式 → _通配符模式_ _類型注解_ 可選
> 模式 → _標識符模式_ _類型注解_ 可選
> 模式 → _值綁定模式_
> 模式 → _元組模式_ _類型注解_ _可選_
> _模式_ → _枚舉個例模式_
> 模式 → _可選模式_ 模式 → _類型轉換模式_
> 模式 → _表達式模式_
### 通配符模式語法
> 通配符模式 → _
### 標識符模式語法
> 標識符模式 → _標識符_
### 值綁定(Value Binding)模式語法
> 值綁定模式 → var _模式_ | let _模式_
### 元組模式語法
> 元組模式 → ( _元組模式元素集_ 可選 )
> 元組模式元素集 → _元組模式元素_ | _元組模式元素_ , _元組模式元素集_
> 元組模式元素 → _模式_
### 枚舉用例模式語法
> enum-case-pattern → _類型標識_ 可選 . _枚舉的case名_ _元組模式_ _可選_
> 可選模式語法 可選模式 → _識別符模式_ ?
### 類型轉換模式語法
> 類型轉換模式(type-casting-pattern) → _is模式_ | _as模式_
> is模式 → is _類型_
> as模式 → _模式_ as _類型_
### 表達式模式語法
> 表達式模式 → _表達式_
## 屬性
### 屬性語法
> 屬性 → @ _屬性名_ _屬性參數從句_ 可選
> 屬性名 → _標識符_
> 屬性參數從句 → ( _平衡令牌集_ 可選 )
> 屬性(Attributes)集 → _屬性_ _屬性(Attributes)集_ 可選
> 平衡令牌集 → _平衡令牌_ _平衡令牌集_ 可選
> 平衡令牌 → ( _平衡令牌集_ 可選 )
> 平衡令牌 → [ _平衡令牌集_ 可選 ]
> 平衡令牌 → { _平衡令牌集_ 可選 }
> 平衡令牌 → 任意標識符, 關鍵字, 字面量或運算符
> 平衡令牌 → 任意標點除了(, ), [, ], {, 或 }
## 表達式
### 表達式語法
> 表達式 → _try-operator_ 可選 _前置表達式_ _二元表達式集_ 可選
> 表達式集 → _表達式_ | _表達式_ , _表達式集_
### 前置表達式語法
> 前置表達式 → _前置運算符_ 可選 _后置表達式_
> 前置表達式 → _寫入寫出(in-out)表達式_
> 寫入寫出(in-out)表達式 → & _標識符_
> try表達式語法 try-operator → try | try !
### 二元表達式語法
> 二元表達式 → _二元運算符_ _前置表達式_
> 二元表達式 → _賦值運算符_ _try運算符_ 可選 _前置表達式_
> 二元表達式 → _條件運算符_ _try運算符_ 可選 _前置表達式_
> 二元表達式 → _類型轉換運算符_
> 二元表達式集 → _二元表達式_ _二元表達式集_ _可選_
### 賦值運算符語法
> 賦值運算符 → =
> 三元條件運算符語法
> 三元條件運算符 → ? _表達式_ :
### 類型轉換運算符語法
> 類型轉換運算符 → is _類型_
> _類型轉換運算符_ → as _類型_
> _類型轉換運算符_ → as ? _類型_
> _類型轉換運算符_ → as ! _類型_
### 主表達式語法
> 主表達式 → _標識符_ _泛型參數從句_ 可選
> 主表達式 → _字面量表達式_
> 主表達式 → _self表達式_
> 主表達式 → _超類表達式_
> 主表達式 → _閉包表達式_
> 主表達式 → _圓括號表達式_
> 主表達式 → _隱式成員表達式_
> 主表達式 → _通配符表達式_
### 字面量表達式語法
> 字面量表達式 → _字面量_
> 字面量表達式 → _數組字面量_ | _字典字面量_
> 字面量表達式 → FILE | LINE | COLUMN | FUNCTION
> 數組字面量 → [ _數組字面量項集_ 可選 ]
> 數組字面量項集 → _數組字面量項_ , 可選 | _數組字面量項_ , _數組字面量項集_
> 數組字面量項 → _表達式_
> 字典字面量 → [ _字典字面量項集_ ] | [ : ]
> 字典字面量項集 → _字典字面量項_ , 可選 | _字典字面量項_ , _字典字面量項集_
> 字典字面量項 → _表達式_ : _表達式_
### Self 表達式語法
> self表達式 → self
> self表達式 → self . _標識符_
> self表達式 → self [ _表達式_ ]
> self表達式 → self . init
### 超類表達式語法
> 超類表達式 → _超類方法表達式_ | _超類下標表達式_ | _超類構造器表達式_
> 超類方法表達式 → super . _標識符_
> 超類下標表達式 → super [ _表達式_ ]
> 超類構造器表達式 → super . init
### 閉包表達式語法
> 閉包表達式 → { _閉包簽名(Signational)_ 可選 _多條語句(Statements)_ }
> 閉包簽名(Signational) → _參數從句_ _函數結果_ 可選 in
> 閉包簽名(Signational) → _標識符集_ _函數結果_ 可選 in
> 閉包簽名(Signational) → _捕獲(Capature)集_ _參數從句_ _函數結果_ 可選 in
> 閉包簽名(Signational) → _捕獲(Capature)集_ _標識符集_ _函數結果_ 可選 in
> 閉包簽名(Signational) → _捕獲(Capature)集_ in
> 捕獲(Capature)集 → [ _捕獲(Capature)說明符_ _表達式_ ]
> 捕獲(Capature)說明符 → weak | unowned | unowned(safe) | unowned(unsafe)
### 隱式成員表達式語法
> 隱式成員表達式 → . _標識符_
> 圓括號表達式(Parenthesized Expression)語法
> 圓括號表達式 → ( _表達式元素集_ 可選 )
> 表達式元素集 → _表達式元素_ | _表達式元素_ , _表達式元素集_
> 表達式元素 → _表達式_ | _標識符_ : _表達式_
### 通配符表達式語法
> 通配符表達式 → _
> 后置表達式語法
> 后置表達式 → _主表達式_
> 后置表達式 → _后置表達式_ _后置運算符_
> 后置表達式 → _函數調用表達式_
> 后置表達式 → _構造器表達式_
> 后置表達式 → _顯示成員表達式_
> 后置表達式 → _后置self表達式_
> 后置表達式 → _動態類型表達式_
> 后置表達式 → _下標表達式_
> 后置表達式 → _強制取值(Forced Value)表達式_
> 后置表達式 → _可選鏈(Optional Chaining)表達式_
### 函數調用表達式語法
> 函數調用表達式 → _后置表達式_ _圓括號表達式_
> 函數調用表達式 → _后置表達式_ _圓括號表達式_ 可選 _后置閉包(Trailing Closure)_
> 后置閉包(Trailing Closure) → _閉包表達式_
### 構造器表達式語法
> 構造器表達式 → _后置表達式_ . init
### 顯式成員表達式語法
> 顯示成員表達式 → _后置表達式_ . _十進制數字_
> 顯示成員表達式 → _后置表達式_ . _標識符_ _泛型參數從句_ _可選_
### 后置Self 表達式語法
> 后置self表達式 → _后置表達式_ . self
### 動態類型表達式語法
> 動態類型表達式 → _后置表達式_ . dynamicType
### 附屬腳本表達式語法
> 附屬腳本表達式 → _后置表達式_ [ _表達式集_ ]
### 強制取值(Forced Value)語法
> 強制取值(Forced Value)表達式 → _后置表達式_ !
### 可選鏈表達式語法
> 可選鏈表達式 → _后置表達式_ ?
## 詞法結構
### 標識符語法
> 標識符 → _標識符頭(Head)_ _標識符字符集_ 可選
> 標識符 → _標識符頭(Head)_ _標識符字符集_ 可選
> 標識符 → _隱式參數名_
> 標識符集 → _標識符_ | _標識符_ , _標識符集_
> 標識符頭(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)_
> 標識符字符集 → _標識符字符_ _標識符字符集_ 可選
> 隱式參數名 → $ _十進制數字集_
### 字面量語法
> 字面量 → _數值型字面量_ | _字符串字面量_ | _布爾字面量_ | _空字面量_
> _數值型字面量_ → - 可選 _整形字面量_ | - 可選 _浮點型字面量_
> _布爾字面量_ → true | false
> _空字面量_ → nil
### 整型字面量語法
> 整型字面量 → _二進制字面量_
> 整型字面量 → _八進制字面量_
> 整型字面量 → _十進制字面量_
> 整型字面量 → _十六進制字面量_
> 二進制字面量 → 0b _二進制數字_ _二進制字面量字符集_ 可選
> 二進制數字 → 數值 0 到 1
> 二進制字面量字符 → _二進制數字_ | _
> 二進制字面量字符集 → _二進制字面量字符_ _二進制字面量字符集_ 可選
> 八進制字面量 → 0o _八進制數字_ _八進制字符集_ 可選
> 八進字數字 → 數值 0 到 7
> 八進制字符 → _八進制數字_ | _
> 八進制字符集 → _八進制字符_ _八進制字符集_ 可選
> 十進制字面量 → _十進制數字_ _十進制字符集_ 可選
> 十進制數字 → 數值 0 到 9
> 十進制數字集 → _十進制數字_ _十進制數字集_ 可選
> 十進制字面量字符 → _十進制數字_ | _
> 十進制字面量字符集 → _十進制字面量字符_ _十進制字面量字符集_ 可選
> 十六進制字面量 → 0x _十六進制數字_ _十六進制字面量字符集_ 可選
> 十六進制數字 → 數值 0 到 9, a through f, or A through F
> 十六進制字符 → _十六進制數字_ | _
> 十六進制字面量字符集 → _十六進制字符_ _十六進制字面量字符集_ _可選_
### 浮點型字面量語法
> 浮點數字面量 → _十進制字面量_ _十進制分數_ 可選 _十進制指數_ 可選
> 浮點數字面量 → _十六進制字面量_ _十六進制分數_ 可選 _十六進制指數_
> 十進制分數 → . _十進制字面量_
> 十進制指數 → _浮點數e_ _正負號_ 可選 _十進制字面量_
> 十六進制分數 → . _十六進制數_
> _十六進制字面量字符集__可選_
> 十六進制指數 → _浮點數p_ _正負號_ 可選 _十六進制字面量_
> 浮點數e → e | E
> 浮點數p → p | P
> 正負號 → + | -
### 字符串型字面量語法
> 字符串字面量 → " _引用文本_ "
> 引用文本 → _引用文本條目_ _引用文本_ 可選
> 引用文本條目 → _轉義字符_
> 引用文本條目 → ( _表達式_ )
> 引用文本條目 → 除了"-, \-, U+000A, or U+000D的所有Unicode的字符
> 轉義字符 → /0 | \ | \t | \n | \r | \" | \'
> 轉義字符 → \u { _十六進制標量數字集_ }
> unicode標量數字集 → Between one and eight hexadecimal digits
### 運算符語法語法
> 運算符 → _運算符頭_ _運算符字符集_ 可選 運算符 → _點運算符頭_ _點運算符字符集_ 可選
> 運算符字符 → / | = | - | + | ! | * | % | | > | & | | | ^ | ~ | ?
> 運算符頭 → 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
> _運算符字符_ → _運算符頭_
> _運算符字符_ → U+0300–U+036F
> _運算符字符_ → U+1DC0–U+1DFF
> _運算符字符_ → U+20D0–U+20FF
> _運算符字符_ → U+FE00–U+FE0F
> _運算符字符_ → U+FE20–U+FE2F
> _運算符字符_ → U+E0100–U+E01EF
> _運算符字符集_ → _運算符字符_ _運算符字符集__可選_
> _點運算符頭_ → ..
> _點運算符字符_ → . | _運算符字符_
> _點運算符字符集_ → _點運算符字符_ _點運算符字符集_ _可選_
> _二元運算符_ → _運算符_
> 前置運算符 → _運算符_
> 后置運算符 → _運算符_
## 類型
### 類型語法
> 類型 → _數組類型_ | _字典類型_ | _函數類型_ | _類型標識符_ | _元組類型_ | _可選類型_ | _隱式解析可選類型_ | _協議合成類型_ | _元型類型_
### 類型注解語法
> 類型注解 → : _屬性(Attributes)集_ 可選 _類型_
### 類型標識語法
> 類型標識 → _類型名稱_ _泛型參數從句_ 可選 | _類型名稱_ _泛型參數從句_ 可選 . _類型標識符_
> 類型名 → _標識符_
### 元組類型語法
> 元組類型 → ( _元組類型主體_ 可選 )
> 元組類型主體 → _元組類型的元素集_ ... 可選
> 元組類型的元素集 → _元組類型的元素_ | _元組類型的元素_ , _元組類型的元素集_
> 元組類型的元素 → _屬性(Attributes)集_ 可選 inout 可選 _類型_ | inout 可選 _元素名_ _類型注解_
> 元素名 → _標識符_
### 函數類型語法
> 函數類型 → _類型_ throws 可選 -> _類型_
> 函數類型 → _類型_ rethrows -> _類型_
### 數組類型語法
> 數組類型 → [ _類型_ ]
### 字典類型語法
> 字典類型 → [ _類型 : 類型_ ]
### 可選類型語法
> 可選類型 → _類型_ ?
> 隱式解析可選類型(Implicitly Unwrapped Optional Type)語法
> 隱式解析可選類型 → _類型_ !
### 協議合成類型語法
> 協議合成類型 → protocol _協議標識符集_ 可選 >
> 協議標識符集 → _協議標識符_ | _協議標識符_ , _協議標識符集_
> 協議標識符 → _類型標識符_
### 元(Metatype)類型語法
> 元類型 → _類型_ . Type | _類型_ . Protocol
### 類型繼承從句語法
> _類型繼承從句_ → : _類條件(class-requirement))_ , _類型繼承集_
> _類型繼承從句_ → : _類條件(class-requirement))_
> _類型繼承從句_ → : _類型繼承集_
> _類型繼承集_ → _類型標識符_ | _類型標識符_ , _類型繼承集_
> _類條件_ → class
- 介紹
- 歡迎使用 Swift
- 關于 Swift
- Swift 初見
- Swift 版本歷史記錄
- Swift1.0 發布內容
- Swift 教程
- 基礎部分
- 基本運算符
- 字符串和字符
- 集合類型
- 控制流
- 函數
- 閉包
- 枚舉
- 類和結構體
- 屬性
- 方法
- 下標腳本
- 繼承
- 構造過程
- 析構過程
- 自動引用計數
- 可選鏈
- 錯誤處理
- 類型轉換
- 嵌套類型
- 擴展
- 協議
- 泛型
- 權限控制
- 高級操作符
- 語言參考
- 關于語言參考
- 詞法結構
- 類型
- 表達式
- 語句
- 聲明
- 特性
- 模式
- 泛型參數
- 語法總結
- 蘋果官方Blog官方翻譯
- Access Control 權限控制的黑與白
- 造個類型不是夢-白話Swift類型創建
- WWDC里面的那個“大炮打氣球”
- Swift與C語言指針友好合作
- 引用類型和值類型的恩怨
- 訪問控制和Protected
- 可選類型完美解決占位問題