语法总结(Summary of the Grammar)


    本页包含内容:

    语句语法
    语句; 可选
    语句声明 ; 可选
    语句; 可选
    语句分支语句 ; 可选
    语句
    语句控制转移语句 ; 可选
    语句; 可选

    语句执行语句 ; 可选

    多条语句(Statements)多条语句(Statements) 可选

    循环语句语法
    循环语句
    循环语句for-in语句
    循环语句
    循环语句repeat-while语句

    For 循环语法
    for语句for 可选 ; 表达式 可选 ; 可选 代码块
    for语句for ( 可选 ; 表达式 可选 ; 可选 ) 代码块
    for初始条件 → | 表达式集

    For-In 循环语法
    for-in语句for case 可选 in 表达式 where从句 可选

    While 循环语法
    while语句while 代码块
    条件从句

    条件从句表达式 ,

    条件从句表达式集

    条件从句| 表达式集

    条件集| 条件 ,

    条件可用条件(availability-condition) | | 可选绑定条件(optional-binding-condition)

    个例条件(case-condition)case 构造器 可选

    可选绑定条件(optional-binding-condition)可选绑定头(optional-binding-head) 可选 where从句 可选

    可选绑定头(optional-binding-head)let | var 模式 构造器

    可选绑定连续集(optional-binding-contiuation-list)| 可选绑定连续(optional-binding-contiuation)

    可选绑定连续(optional-binding-continuation)模式 构造器 |

    Repeat-While语句语法
    repeat-while-statementrepeat 代码块 while

    分支语句语法
    分支语句if语句

    分支语句

    分支语句switch语句

    If语句语法
    if语句if 代码块 可选

    else从句(Clause)else 代码块 | else

    Guard 语句语法
    guard语句guard 条件从句 else

    Switch语句语法
    switch语句switch 表达式 { 可选 }
    SwitchCase集SwitchCase 可选
    SwitchCasecase标签 | default标签
    SwitchCasecase标签 ; | ;
    case标签case case项集 :
    case项集where-clause 可选 | where-clause 可选 ,
    default标签default :
    where从句where where表达式
    where表达式

    标记语句语法
    标记语句(Labeled Statement)语句标签 | 语句标签 | 语句标签
    语句标签标签名称 :
    标签名称

    控制传递语句(Control Transfer Statement) 语法
    控制传递语句break语句
    控制传递语句
    控制传递语句fallthrough语句
    控制传递语句
    控制传递语句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)平台名(platform-name)

    可用参数(availability- argument) → *

    平台名iOS | iOSApplicationExtension

    平台名OSX | OSXApplicationExtension

    平台名watchOS

    平台版本十进制数(decimal-digits)

    平台版本 → . 十进制数(decimal-digits)

    平台版本. 十进制数(decimal-digits) . )

    抛出语句(Throw Statement)语法

    抛出语句(throw-statement)throw 表达式(expression)

    延迟语句 (defer-statement)语法

    延迟语句(defer-statement)defer

    执行语句(do-statement)语法

    执行语句(do-statement)do 代码块 可选

    catch-clausescatch-clause 可选

    catch-clausescatch 模式(pattern) 可选 可选 代码块(code-block) 可选

    泛型参数

    泛型形参从句(Generic Parameter Clause) 语法
    泛型参数从句< 约束从句 可选 >
    泛型参数集 → | 泛形参数 ,
    泛形参数类型名称
    泛形参数: 类型标识
    泛形参数: 协议合成类型
    约束从句where
    约束集约束 | , 约束集
    约束 → | 同类型约束
    一致性约束: 类型标识
    一致性约束: 协议合成类型
    同类型约束== 类型

    泛型实参从句语法
    (泛型参数从句Generic Argument Clause)< >
    泛型参数集泛型参数 | , 泛型参数集
    泛型参数

    声明语法
    声明
    声明常量声明
    声明
    声明类型别名声明
    声明
    声明枚举声明
    声明
    声明类声明
    声明
    声明构造器声明
    声明
    声明扩展声明
    声明
    声明运算符声明
    声明(Declarations)集声明(Declarations)集 可选

    顶级(Top Level) 声明语法
    顶级声明可选

    代码块语法
    代码块{ 多条语句(Statements) 可选 }

    导入(Import)声明语法
    导入声明可选 import 导入类型 可选
    导入类型typealias | struct | class | enum | protocol | var | func
    导入路径导入路径标识符 | . 导入路径
    导入路径标识符 → | 运算符

    常数声明语法
    常量声明可选 声明修改符(Modifiers)集 可选 let
    模式构造器集模式构造器 | , 模式构造器集
    模式构造器构造器 可选
    构造器=

    变量声明语法
    变量声明变量声明头(Head)
    变量声明变量声明头(Head) 类型注解
    变量声明变量声明头(Head) 类型注解
    变量声明变量声明头(Head) 类型注解
    变量声明变量声明头(Head) 类型注解 可选 willSet-didSet代码块
    变量声明头(Head)可选 声明修改符(Modifers)集 可选 var
    变量名称
    getter-setter块{ getter从句 可选 }
    getter-setter块{ setter从句 }
    getter从句属性(Attributes)集 可选 get
    setter从句属性(Attributes)集 可选 set 可选 代码块
    setter名称( )
    getter-setter关键字(Keyword)块{ getter关键字(Keyword)从句 可选 }
    getter-setter关键字(Keyword)块{ setter关键字(Keyword)从句 }
    getter关键字(Keyword)从句属性(Attributes)集 可选 get
    setter关键字(Keyword)从句可选 set
    willSet-didSet代码块{ willSet从句 可选 }
    willSet-didSet代码块{ didSet从句 }
    willSet从句属性(Attributes)集 可选 willSet 可选 代码块
    didSet从句可选 didSet setter名称 可选

    函数声明语法
    函数声明函数头 泛型参数从句 可选 函数体
    函数头可选 声明描述符(Specifiers)集 可选 func
    函数名 → | 运算符
    函数签名(Signature)throws 可选 函数结果 可选

    函数签名(Signature)rethrows 函数结果 可选
    函数结果-> 可选 类型
    函数体
    参数从句参数从句 可选
    参数从句( ) | ( 参数集 可选 )
    参数集 → | 参数 ,
    参数inout 可选 let 可选 外部参数名 可选 可选 类型注解 可选
    参数inout 可选 var 外部参数名 可选 类型注解 可选
    参数属性(Attributes)集 可选
    外部参数名标识符 | _
    本地参数名 → | _
    默认参数从句= 表达式

    枚举声明语法
    枚举声明可选 访问级别修改器(access-level-modifier) 可选

    枚举声明属性(Attributes)集 可选 可选 原始值式枚举(raw-value-style-enum)

    联合式枚举enum 泛型参数从句 可选 可选 { 联合样式枚举成员 可选 }

    联合样式枚举成员联合样式枚举成员 可选

    联合样式枚举成员 → | 联合式(Union Style)的枚举case从句

    联合式(Union Style)的枚举case从句可选 case 联合式(Union Style)的枚举case集
    联合式(Union Style)的枚举case集 → | 联合式(Union Style)的case ,
    联合式(Union Style)的枚举case枚举的case名 可选
    枚举名标识符
    枚举的case名
    原始值式枚举enum 枚举名 可选 : 类型标识 { 可选 }
    原始值式枚举成员集原始值式枚举成员 可选
    原始值式枚举成员声明 |
    原始值式枚举case从句属性(Attributes)集 可选 case
    原始值式枚举case集原始值式枚举case | , 原始值式枚举case集
    原始值式枚举case原始值赋值 可选
    原始值赋值=
    原始值字面量(raw-value-literal)数值字面量 | | 布尔字面量

    类声明语法
    类声明可选 访问级别修改器(access-level-modifier) class 泛型参数从句 可选 可选 类主体
    类名
    类主体{ 声明(Declarations)集 可选 }

    协议(Protocol)声明语法
    协议声明可选访问级别修改器(access-level-modifier) protocol 类型继承从句 可选
    协议名标识符
    协议主体{ 可选 }
    协议成员声明协议属性声明
    协议成员声明
    协议成员声明协议构造器声明
    协议成员声明
    协议成员声明协议关联类型声明
    协议成员声明(Declarations)集协议成员声明(Declarations)集 可选

    协议属性声明语法
    协议属性声明变量名 getter-setter关键字(Keyword)块

    协议方法声明语法
    协议方法声明函数名 可选 函数签名(Signature)

    协议构造器声明语法
    协议构造器声明泛型参数从句 可选

    协议下标声明语法
    协议下标声明下标头(Head) getter-setter关键字(Keyword)块

    协议关联类型声明语法
    协议关联类型声明类型继承从句 可选 可选

    构造器声明语法
    构造器声明构造器头(Head) 可选 参数从句
    构造器头(Head)属性(Attributes)集 可选 可选 init
    构造器头(Head)属性(Attributes)集 可选 可选 init ?

    构造器头(Head)属性(Attributes)集 可选 可选 init !

    构造器主体代码块

    析构器声明语法
    析构器声明可选 deinit 代码块

    扩展(Extension)声明语法
    扩展声明可选 extension 类型标识 可选 extension-body
    extension-body{ 可选 }

    下标声明语法
    下标声明下标头(Head) 代码块
    下标声明下标结果(Result)
    下标声明下标头(Head) getter-setter关键字(Keyword)块
    下标头(Head)可选 声明修改器(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)

    声明修改器

    声明修改集声明修改器 可选

    访问级别修改器内部的 | 内部的(set)

    访问级别修改器私有的 | 私有的(set)

    访问级别修改器公共的
    | 公共的(set)

    访问级别修改器集访问级别修改器 可选

    模式

    模式(Patterns) 语法
    模式通配符模式 可选
    模式标识符模式 可选
    模式值绑定模式
    模式类型注解 可选

    模式
    模式可选模式
    模式
    模式表达式模式

    通配符模式语法
    通配符模式_

    标识符模式语法
    标识符模式

    值绑定(Value Binding)模式语法
    值绑定模式var 模式 | let

    元组模式语法
    元组模式( 元组模式元素集 可选 )
    元组模式元素集 → | 元组模式元素 ,
    元组模式元素模式

    枚举用例模式语法
    enum-case-pattern可选 . 枚举的case名 可选

    可选模式语法
    可选模式识别符模式 ?

    类型转换模式语法
    类型转换模式(type-casting-pattern) → | as模式
    is模式is
    as模式模式 as

    表达式模式语法
    表达式模式表达式

    属性语法
    属性@ 属性名 可选
    属性名标识符
    属性参数从句( 可选 )
    属性(Attributes)集属性 可选
    平衡令牌集平衡令牌 可选
    平衡令牌( 平衡令牌集 可选 )
    平衡令牌[ 可选 ]
    平衡令牌{ 平衡令牌集 可选 }
    平衡令牌任意标识符, 关键字, 字面量或运算符
    平衡令牌任意标点除了(, ), [, ], {, 或 }

    表达式

    表达式语法
    表达式可选 前置表达式 可选
    表达式集表达式 | , 表达式集

    前置表达式语法
    前置表达式可选 后置表达式
    前置表达式
    写入写出(in-out)表达式& 标识符

    try表达式语法
    try-operatortry | try !

    二元表达式语法
    二元表达式前置表达式
    二元表达式try运算符 可选
    二元表达式条件运算符 可选 前置表达式
    二元表达式
    二元表达式集二元表达式 可选

    赋值运算符语法
    赋值运算符=

    三元条件运算符语法
    三元条件运算符? 表达式 :

    类型转换运算符语法
    类型转换运算符is

    类型转换运算符as 类型

    类型转换运算符as ?

    类型转换运算符as ! 类型

    主表达式语法
    主表达式泛型参数从句 可选
    主表达式
    主表达式self表达式
    主表达式
    主表达式闭包表达式
    主表达式
    主表达式隐式成员表达式
    主表达式

    Self 表达式语法
    self表达式self
    self表达式self . 标识符
    self表达式self [ ]
    self表达式self . init

    超类表达式语法
    超类表达式超类方法表达式 | | 超类构造器表达式
    超类方法表达式super .
    超类下标表达式super [ 表达式 ]
    超类构造器表达式super . init

    闭包表达式语法
    闭包表达式{ 可选 多条语句(Statements) }
    闭包签名(Signational)函数结果 可选 in
    闭包签名(Signational)函数结果 可选 in
    闭包签名(Signational)参数从句 可选 in
    闭包签名(Signational)捕获(Capature)集 函数结果 可选 in
    闭包签名(Signational)in
    捕获(Capature)集[ 捕获(Capature)说明符 ]
    捕获(Capature)说明符weak | unowned | unowned(safe) | unowned(unsafe)

    隐式成员表达式语法
    隐式成员表达式. 标识符

    圆括号表达式(Parenthesized Expression)语法
    圆括号表达式( 可选 )
    表达式元素集表达式元素 | , 表达式元素集
    表达式元素 → | 标识符 :

    通配符表达式语法
    通配符表达式_

    函数调用表达式语法
    函数调用表达式后置表达式
    函数调用表达式后置表达式 可选 后置闭包(Trailing Closure)
    后置闭包(Trailing Closure)

    构造器表达式语法
    构造器表达式后置表达式 . init

    显式成员表达式语法
    显示成员表达式. 十进制数字
    显示成员表达式. 标识符 可选

    后置Self 表达式语法
    后置self表达式后置表达式 . self

    动态类型表达式语法
    动态类型表达式. dynamicType

    附属脚本表达式语法
    附属脚本表达式后置表达式 [ ]

    强制取值(Forced Value)语法
    强制取值(Forced Value)表达式后置表达式 !

    可选链表达式语法
    可选链表达式?

    标识符语法
    标识符标识符字符集 可选
    标识符标识符字符集 可选
    标识符
    标识符集标识符 | , 标识符集
    标识符头(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
    标识符字符
    标识符字符集标识符字符 可选
    隐式参数名$ 十进制数字集

    字面量语法
    字面量 → | 字符串字面量 | | 空字面量

    数值型字面量- 可选 | - 可选 浮点型字面量

    布尔字面量true | false

    空字面量nil

    整型字面量语法
    整型字面量
    整型字面量八进制字面量
    整型字面量
    整型字面量十六进制字面量
    二进制字面量0b 二进制字面量字符集 可选
    二进制数字 → 数值 0 到 1
    二进制字面量字符 → | _
    二进制字面量字符集二进制字面量字符 可选
    八进制字面量0o 八进制数字 可选
    八进字数字 → 数值 0 到 7
    八进制字符八进制数字 | _
    八进制字符集八进制字符集 可选
    十进制字面量十进制字符集 可选
    十进制数字 → 数值 0 到 9
    十进制数字集十进制数字集 可选
    十进制字面量字符 → | _
    十进制字面量字符集十进制字面量字符 可选
    十六进制字面量0x 十六进制数字 可选
    十六进制数字 → 数值 0 到 9, a through f, or A through F
    十六进制字符十六进制数字 | _
    十六进制字面量字符集十六进制字面量字符集 可选

    浮点型字面量语法
    浮点数字面量十进制分数 可选 可选
    浮点数字面量十六进制字面量 可选 十六进制指数
    十进制分数.
    十进制指数浮点数e 可选 十进制字面量
    十六进制分数.
    十六进制字面量字符集可选
    十六进制指数正负号 可选
    浮点数ee | E
    浮点数pp | 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)集 可选

    类型标识语法
    类型标识类型名称 可选 | 类型名称 可选 . 类型标识符
    类型名

    元组类型语法
    元组类型( 元组类型主体 可选 )
    元组类型主体 可选
    元组类型的元素集元组类型的元素 | , 元组类型的元素集
    元组类型的元素可选 inout 可选 类型 | inout 可选 类型注解
    元素名

    函数类型语法
    函数类型类型 throws 可选 ->
    函数类型类型 rethrows ->

    数组类型语法
    数组类型[ 类型 ]

    字典类型语法
    字典类型[ ]

    可选类型语法
    可选类型类型 ?

    隐式解析可选类型(Implicitly Unwrapped Optional Type)语法
    隐式解析可选类型!

    协议合成类型语法
    协议合成类型protocol < 协议标识符集 可选 >
    协议标识符集 → | 协议标识符 ,
    协议标识符类型标识符

    类型继承从句语法

    类型继承从句: , 类型继承集

    类型继承从句:

    类型继承从句: 类型继承集

    类型继承集 → | 类型标识符 ,

    类条件class