语法总结
最后更新于
这有帮助吗?
空白字符语法
空白字符 → 可选
空白字符项 →
空白字符项 →
空白字符项 →
空白字符项 →
空白字符项 → U+0000,U+0009,U+000B,U+000C 或 U+0020
换行符* → U+000A
换行符 → U+000D
换行符 → U+000D 后面是 U+000A
注释 → //
注释 → /* */
注释内容 → 可选
注释内容项 → 除 U+000A 或 U+000D 外的任何 Unicode 标量值
多行注释内容 → 可选
多行注释内容项 →
多行注释内容项 →
多行注释内容项 → 除 /* 或 */ 外的任何 Unicode 标量值
标识符语法
标识符头(Head) → 大写或者小写字母 A 到 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
整型字面量语法
二进制数字 → 数值 0 到 1
八进字数字 → 数值 0 到 7
十进制数字 → 数值 0 到 9
十六进制数字 → 数值 0 到 9,a 到 f,或者 A 到 F
浮点型字面量语法
浮点数 e → e | E
浮点数 p → p | P
正负号 → + | -
字符串型字面量语法
引用文本项 → 除了 "、**\**、U+000A、U+000D 以外的所有 Unicode 字符
多行引用文本 → 除了 \ 以外的任何 Unicode 标量值
unicode 标量数字 → 一到八位的十六进制数字
正则表达式字面量语法
正则表达式 → 任何正则表达式
运算符语法语法
运算符字符 → / | = | - | + | ! | * | % | < | > | & | | | ^ | ~ | ?
运算符头 → 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
点运算符头 → ..
类型语法
类型注解语法
类型标识语法
元组类型语法
函数类型语法
函数类型子句 → ( )
数组类型语法
字典类型语法
可选类型语法
隐式解析可选类型(Implicitly Unwrapped Optional Type)语法
协议合成类型语法
元(Metatype)类型语法
类型继承从句语法
类条件 → class
表达式语法
前缀表达式语法
try 表达式语法
try 操作符 → try | **try ? ** | ** try ! **
await 表达式语法
await 操作符 → await
中缀表达式语法
赋值操作符语法
赋值运算符 → [=]
条件运算符
类型转换运算符语法
基础表达式语法
字面量表达式语法
字面量表达式 → #file | #filePath | #line | #column | #function | dsohandle
self 表达式语法
self 构造器表达式 → self . init
父类表达式语法
父类构造器表达式 → super . init
闭包表达式语法
捕获说明符 → weak | unowned | unowned(safe) | unowned(unsafe)
隐式成员表达式语法
圆括号表达式语法
元组表达式语法
通配符表达式语法
通配符表达式 → _
key-path表达式语法
选择器表达式语法
后缀表达式表达式语法
函数调用表达式语法
初始化表达式语法
显式成员表达式语法
后缀 self 表达式语法
下标表达式语法
语句语法
循环语句语法
循环语句 → [while 语句](./05_Statements.md#wheetatype 类型 ile-statement)
For-In 循环语法
While 循环语法
Repeat-While 语句语法
分支语句语法
If 语句语法
Guard 语句语法
Switch 语句语法
标签语句语法
控制转移语句语法
Break 语句语法
Continue 语句语法
Fallthrough 语句语法
fallthrough 语句 → fallthrough
Return 语句语法
Throw 语句语法
Defer 语句语法
Do 语句语法
编译控制语句
条件编译块语法
if 指令 → #if
elseif 指令 → #elseif
else 指令 → #else
endif 指令 → #endif
操作系统 → macOS | iOS | watchOS | tvOS
架构 → i386 | x86_64 | arm | arm64
环境 → 模拟器 | macCatalyst
行控制语句语法
行控制语句 → #sourceLocation ( )
行号 → 一个大于 0 的十进制数字
编译期诊断语句语法
可用性条件语法
可用性参数 → *
平台名 → iOS | iOSApplicationExtension
平台名 → macOS | macOSApplicationExtension
平台名 → watchOS
平台名 → tvOS
声明语法
顶级声明语法
代码块语法
导入声明语法
导入类型 → typealias | struct | class | enum | protocol | let | var | func
常数声明语法
变量声明语法
类型别名声明语法
函数声明语法
枚举声明语法
结构体声明语法
类声明语法
协议声明语法
协议属性声明语法
协议方法声明语法
协议构造器声明语法
协议下标声明语法
协议关联类型声明语法
构造器声明语法
析构器声明语法
扩展声明语法
下标声明语法
运算符声明语法
优先级组声明语法
优先级组结合 → associativity : left
优先级组结合 → associativity : right
优先级组结合 → associativity : none
声明修饰符语法
声明修饰符 → class | convenience | dynamic | final | infix | lazy | optional | override | postfix | prefix | required | static | unowned | unowned(safe) | unowned(unsafe) | weak
访问级别修饰符 → private | private(set)
访问级别修饰符 → fileprivate | fileprivate(set)
访问级别修饰符 → internal | internal(set)
访问级别修饰符 → public | public(set)
访问级别修饰符 → open | open(set)
可变性修饰符 → mutating | nonmutating
actor 隔离修饰符 → nonisolated
属性语法
平衡令牌 → 任意标识符、关键字、字面量或运算符
平衡令牌 → 除 ( 、)、[、]、{、} 外的任意标点符号
模式语法
通配符模式语法
通配符模式 → _
标识符模式语法
值绑定模式语法
元组模式语法
枚举 case 模式语法
可选模式语法
类型转换模式语法
表达式模式语法
泛型形参子句语法
泛型实参子句语法
标识符 → 可选
标识符 → 可选
标识符 →
标识符 →
标识符集 → | ,
标识符字符 →
标识符字符集 → 可选
隐式参数名 → $
属性包装器呈现值 → $
字面量 → | | | |
数值型字面量 → -可选 | -可选
整型字面量 →
整型字面量 →
整型字面量 →
整型字面量 →
二进制字面量 → 0b 可选
二进制字面量字符 → | -
二进制字面量字符集 → 可选
八进制字面量 → 0o 可选
八进制字符 → | -
八进制字符集 → 可选
十进制字面量 → 可选
十进制数字集 → 可选
十进制字面量字符 → | -
十进制字面量字符集 → 可选
十六进制字面量 → 0x 可选
十六进制字符 → | -
十六进制字面量字符集 → 可选
浮点数字面量 → 可选可选
浮点数字面量 → 可选
十进制分数 → .
十进制指数 → 可选
十六进制分数 → .
十六进制指数 → 可选
字符串字面量 → |
字符串开分隔定界符 → "
字符串闭分隔定界符 → " 可选
静态字符串字面量 → 可选
静态字符串字面量 → 可选
多行字符串开分隔定界符 → """
多行字符串闭分隔定界符 → """
字符串扩展分隔符 → # 可选
引用文本 → 可选
引用文本项 →
多行引用文本 → 可选
多行引用文本项 可选
多行引用文本 →
插值字符串字面量 → 可选
插值字符串字面量 → 可选
插值文本 → 可选
插值文本项 → \() |
多行插值文本 → 可选
多行插值文本项 → \( ) |
转义序列 → \
转义字符 → 0 | \ | t | n | r | " | '
转义字符 → u { }
转义换行符 → 可选
正则表达式字面量 →
正则表达式字面量开分隔定界符 → 可选 /
正则表达式字面量闭分割定界符 → / 可选
正则表达式扩展分隔符 → # 可选
运算符 → 可选
运算符 → 可选
运算符字符 →
运算符字符集 → 可选
点运算符字符 → . |
点运算符字符集 → 可选
二元运算符 →
前置运算符 →
后置运算符 →
类型 →
类型 →
类型 →
类型 →
类型 →
类型 →
类型 →
类型 →
类型 →
类型 →
类型 →
类型 →
类型 → ( )
类型注解 → : 可选
类型标识 → 可选| 可选.
类型名 →
元组类型 → ( ) | ( , )
元组类型元素列表 → | ,
元组类型元素 → |
元素名 →
函数类型 → async可选 throws可选->
函数类型 → rethrows ->
函数类型子句 → ( *...*可选 )
函数类型参数列表 → | ,
函数类型参数 → 可选 输入输出参数可选 |
参数标签 →
数组类型 → [ ]
字典类型 → [ ]
可选类型 → ?
隐式解析可选类型 → !
协议合成类型 → |
协议持续延续 → |
元类型 → . Type | . Protocol
类型继承从句 → :
类型继承集 → 可选 | 可选 ,
表达式 → 可选
表达式列表 → |,
前缀表达式 → 可选
前缀表达式 →
输入输出表达式 → &
中缀表达式 →
中缀表达式 → 可选
中缀表达式 → 可选
中缀表达式 →
中缀表达式 → 可选
条件运算符 → [?] :
类型转换运算符 → [is]
类型转换运算符 → [as]
类型转换运算符 → [as ?]
类型转换运算符 → [as !]
基础表达式 → 可选
基础表达式 →
基础表达式 →
基础级表达式 →
基础表达式 →
基础表达式 →
基础表达式 →
基础表达式 →
基础表达式 →
基础表达式 →
基础表达式 →
基础表达式 →
字面量表达式 →
字面量表达式 → | |
数组字面量 → [ 可选 ] 数组字面量项列表 → 可选 | , 数组字面量项 →
字典字面量 → [ ] | [ : ]
字典字面量项列表 → ,**可选 | ,
字典字面量项 → :
palyground 字面量 → #colorLiteral ( red : , green :, blue : , alpha : )
playground 字面量 → #fileLiteral ( resourceName : )
playground 字面量 → **#imageLiteral ( resourceName : )
self 表达式 → self | | |
self 方法表达式 → self .
self 下标表达式 → self [ ]
父类表达式 → | |
父类方法表达式 → super .
父类下标表达式 → super [ ]
闭包表达式 → { 可选 }
闭包签名 → async可选 throws可选 可选 in
闭包签名 → 可选 in
闭包参数子句 ( ) | ( | )
闭包参数列表 | ,
闭包参数 可选
闭包参数 ...
闭包参数名
捕获列表 → [ ]
捕获列表项列表 → | ,
捕获列表项 → 可选
隐式成员表达式 → .
圆括号表达式 → ( )
元组表达式 → ( ) | (, )
元组元素列表 → | , 元组元素 → | :
key-path 表达式 → ** 可选 . [多个 key-path 组件] 多个 key-path 组件 → | . key-path 组件 → 可选 | 多个 key-path 后缀 → 可选 key-path-postfixes {./04_Expressions.md#key-path-postfixes}
key-path 后缀 → ? | ! | self | [ ]
选择器表达式 → #selector ( )
选择器表达式 → #selector ( )
选择器表达式 → #selector ( )
key-path 字符串表达式语法 key-path 字符串表达式 → #keyPath ( )
后缀表达式 →
后缀表达式 →
后缀表达式 →
后缀表达式 →
后缀表达式 →
后缀表达式 →
后缀表达式 →
后缀表达式 →
后缀表达式 →
函数调用表达式 →
函数调用表达式 → 可选
函数调用参数子句 → ( ) | ( )
函数调用参数表 → | ,
函数调用参数 → | :
函数调用参数 → | :
尾随闭包 → 可选
标签尾随闭包集→
标签尾随闭包→ :
构造器表达式 → . init
构造器表达式 → . init ( )
显式成员表达式 → .
显式成员表达式 → . 可选
显式成员表达式 → . ( )
显式成员表达式 →
参数名称 → 可选
参数名 → :
后缀 self 表达式 → . self
下标表达式 → [ ]
强制取值表达式语法 强制取值表达式 → !
可选链式表达式语法 可选链表达式 → ?
语句 → ;可选
语句 → ;可选
语句 → ;可选
语句 → ;可选
语句 → ;可选
语句 → ;可选
语句 → ;可选
语句 → ;可选
语句 →
语句集 → 可选
循环语句 →
循环语句 →
for-in 语句 → for case可选 in 可选
while 语句 → while
条件集 → | ,
条件 → | | |
case 条件 → case
可选绑定条件 → let 可选 | var 可选
repeat-while-statement → repeat while
分支语句 →
分支语句 →
分支语句 →
if 语句 → if 可选
else 子句 → else | else
guard 语句 → guard else
switch 语句 → switch { 可选 }
switch-case集 → 可选
switch-case →
switch-case →
switch-case →
case 标签 → 可选 case :
case 项集 → 可选 | 可选 ,
default 标签 → 可选 default :
where 子句 → where
where 表达式 →
条件 switch-case → 可选 可选
switch if 指令子句 → 可选
switch elseif 指令子句集 → 可选
switch elseif 指令子句 → 可选
switch else 指令子句 → 可选
标签语句 →
标签语句 →
标签语句 →
标签语句 →
语句标签 → :
标签名称 →
控制转移语句 →
控制转移语句 →
控制转移语句 →
控制转移语句 →
控制转移语句 →
break 语句 → break 可选
continue 语句 → continue 可选
return 语句 → return 可选
throw 语句 → throw
defer 语句 → defer
do 语句 → do 可选
catch 子句集 → 可选
catch 子句 → catch 可选 可选
catch 模式列表 → | ,
catch 模式 → 可选
编译控制语句 →
编译控制语句 →
编译控制语句 →
条件编译块 → 可选 可选
if 指令子句 → 可选
elseif 指令子句集 → 可选
elseif 指令子句 → 可选
else 指令子句 → 可选
编译条件 →
编译条件 →
编译条件 →
编译条件 → ( )
编译条件 → !
编译条件 → &&
编译条件 → ||
平台条件 → os ( )
平台条件 → arch ( )
平台条件 → swift ( >= ) | swift ( < )
平台条件 → compiler ( >= ) | compiler ( < )
平台条件 → canImport ( )
平台条件 → targetEnvironment ( )
swift 版本 → 可选
swift 版本后缀 → . 可选
模块名 →
行控制语句 → #sourceLocation ( file: , line: )
文件名 →
诊断语句 → #error ( )
诊断语句 → #warning ( )
诊断信息 →
可用性条件 → #available ( )
可用性参数集 → | ,
可用性参数 →
平台版本 →
平台版本 → .
平台版本 → . .
声明 →
声明 →
声明 →
声明 →
声明 →
声明 →
声明 →
声明 →
声明 →
声明 →
声明 →
声明 →
声明 →
声明 →
声明 →
声明 →
声明集 → 可选
顶级声明 → 可选
代码块 → { 可选 }
导入声明 → 可选 import 可选
导入路径 → | .
导入路径标识符 → |
常量声明 → 可选 可选 let
模式构造器集 → | ,
模式构造器 → 可选
构造器 → =
变量声明 →
变量声明 →
变量声明 →
变量声明 →
变量声明 → 可选
变量声明 → 可选
变量声明头 → 可选 可选 var
变量名称 →
getter-setter 块 →
getter-setter 块 → { 可选 }
getter-setter 块 → { }
getter 子句 → 可选 可选 get
setter 子句 → 可选 可选 set 可选
setter 名称 → ( )
getter-setter 关键字(Keyword)块 → { 可选 }
getter-setter 关键字(Keyword)块 → { }
getter 关键字(Keyword)子句 → 可选 可选 get
setter 关键字(Keyword)子句 → 可选 可选 set
willSet-didSet 代码块 → { 可选 }
willSet-didSet 代码块 → { 可选 }
willSet 子句 → 可选 willSet 可选
didSet 子句 → 可选
didSet 可选
类型别名声明 → 可选 typealias 可选
类型别名名称 →
类型别名赋值 → =
函数声明 → 可选 可选 可选
函数头 → 可选 可选 func
函数名 → |
函数签名 → async可选 throws可选 可选
函数签名 → async可选 rethrows 可选
函数结果 → -> 可选
函数体 →
参数子句 → ( ) | ( )
参数集 → | ,
参数 → 可选 可选
参数 → 可选
参数 → 可选 ...
外部参数名 →
本地参数名 →
默认参数子句 → =
枚举声明 → 可选 可选
枚举声明 → 可选 可选
联合式枚举 → indirect可选 enum 可选 可选 可选 { 可选 }
联合式枚举成员集 → 可选
联合样式枚举成员 → | |
联合式枚举 case 子句 → 可选 indirect可选 case
联合式枚举 case 集 → | ,
联合式枚举 case → 可选
枚举名 →
枚举的 case 名 →
原始值式枚举 → enum 可选 可选 { }
原始值式枚举成员集 → 可选
原始值式枚举成员 → | |
原始值式枚举 case 子句 → 可选 case
原始值式枚举 case 集 → | ,
原始值式枚举 case → 可选
原始值赋值 → =
原始值字面量(raw-value-literal) → | |
结构体声明 → 可选 可选 struct 可选 可选 可选
结构体名称 →
结构体主体 → { 可选 }
结构体成员集 → 可选
结构体成员 → |
类声明 → 可选 可选 final可选 class 可选 可选
类声明 → 可选 final 可选 class 可选 可选
类名 →
类主体 → { 可选 }
类成员集 → 可选
类成员 → |
协议声明 → 可选 可选 protocol 可选 可选
协议名 →
协议主体 → { 可选 }
协议成员集 → 可选
协议成员 → |
协议成员声明 →
协议成员声明 →
协议成员声明 →
协议成员声明 →
协议成员声明 →
协议成员声明 →
协议属性声明 →
协议方法声明 → 可选 可选
协议构造器声明 → 可选 throws可选 可选
协议构造器声明 → 可选 rethrows 可选
协议下标声明 → 可选
协议关联类型声明 → 可选 可选 associatedtype 可选 可选 可选
构造器声明 → 可选 throws可选 可选
构造器声明 → 可选 rethrows 可选
构造器头(Head) → 可选 可选 init
构造器头(Head) → 可选 可选 init ?
构造器头(Head) → 可选 可选 init !
构造器主体 →
析构器声明 → 可选 deinit
扩展声明 → 可选 可选 extension 可选 可选
扩展主体 → { 可选 }
扩展成员集 → 可选
扩展成员 → |
下标声明 → 可选
下标声明 → 可选
下标声明 → 可选
下标头(Head) → 可选 可选 subscript 可选
下标结果(Result) → -> 可选
运算符声明 → | |
前置运算符声明 → prefix operator
后置运算符声明 → postfix operator
中置运算符声明 → infix operator 可选
中置运算符特性 →
优先级组声明 → precedencegroup { 可选 }
优先级组特性 → 可选
优先级组属性 →
优先级组属性 →
优先级组属性 →
优先级组关系 → higherThan :
优先级组关系 → lowerThan :
优先级组赋值 → assignment :
优先级组名集 → | ,
优先级组名 →
声明修饰符 →
声明修饰符 →
声明修饰符 →
声明修饰符集 → 可选
属性 → @ 可选
属性名 →
属性参数子句 → { 可选 }
属性(Attributes)集 → 可选
平衡令牌集 → 可选
平衡令牌 → ( 可选 )
平衡令牌 → [ 可选 ]
平衡令牌 → { 可选 }
模式 → 可选
模式 → [类型注解](./03_Types.md#type-annotati Value Bindingon )可选
模式 →
模式 → 可选
模式 →
模式 →
模式 →
模式 →
标识符模式 →
值绑定模式 → var | let
元组模式 → ( 可选 )
元组模式元素集 → | ,
元组模式元素 → | :
enum-case-pattern → 可选 . 可选
可选模式 → ?
类型转换模式 → |
is 模式 → is
as 模式 → as
表达式模式 →
泛型参数子句 → < >
泛型参数集 → | ,
泛形参数 →
泛形参数 → :
泛形参数 → :
泛型 where 子句 → where
约束集 → | ,
约束 → |
一致性约束 → :
一致性约束 → :
同类型约束 → ==
泛型实参子句 → < >
泛型实参集 → | ,
泛形实参 →