空白字符语法 空白字符 → 空白字符项 空白字符可选 空白字符项 → 换行符 空白字符项 → 注释 空白字符项 → 多行注释 空白字符项 → U+0000,U+0009,U+000B,U+000C 或 U+0020 换行符* → U+000A 换行符 → U+000D 换行符 → U+000D 后面是 U+000A 注释 → // 单行内容注释 换行符 注释 → /* 多行内容注释 */ 注释内容 → 注释内容项 注释内容可选 注释内容项 → 除 U+000A 或 U+000D 外的任何 Unicode 标量值 多行注释内容 → 多行注释内容项 多行注释内容可选 多行注释内容项 → 多行内容 多行注释内容项 → 注释内容项 多行注释内容项 → 除 /* 或 */ 外的任何 Unicode 标量值
空白字符语法
空白字符 → 空白字符项 空白字符可选
空白字符项 → 换行符
空白字符项 → 注释
空白字符项 → 多行注释
空白字符项 → 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) 标识符字符集可选 标识符 → 标识符头(Head) 标识符字符集可选 标识符 → 隐式参数名 标识符 → 属性包装器呈现值 标识符集 → 标识符 | 标识符 , 标识符集 标识符头(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 标识符字符 → 标识符头(Head) 标识符字符集 → 标识符字符 标识符字符集可选 隐式参数名 → $ 十进制数字集 属性包装器呈现值 → $ 标识符字符集
标识符语法
标识符 → 标识符头(Head) 标识符字符集可选
标识符 → 隐式参数名
标识符 → 属性包装器呈现值
标识符集 → 标识符 | 标识符 , 标识符集
标识符头(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
标识符字符 → 标识符头(Head)
标识符字符集 → 标识符字符 标识符字符集可选
隐式参数名 → $ 十进制数字集
属性包装器呈现值 → $ 标识符字符集
字面量语法 字面量 → 数值型字面量 | 字符串字面量 | 布尔字面量 | 空字面量 数值型字面量 → -可选整形字面量 | -可选浮点型字面量 布尔字面量 → true | false 空字面量 → nil
字面量语法
字面量 → 数值型字面量 | 字符串字面量 | 布尔字面量 | 空字面量
数值型字面量 → -可选整形字面量 | -可选浮点型字面量
布尔字面量 → true | false
空字面量 → nil
整型字面量语法 整型字面量 → 二进制字面量 整型字面量 → 八进制字面量 整型字面量 → 十进制字面量 整型字面量 → 十六进制字面量 二进制字面量 → 0b 二进制数字 二进制字面量字符集可选 二进制数字 → 数值 0 到 1 二进制字面量字符 → 二进制数字 | - 二进制字面量字符集 → 二进制字面量字符 二进制字面量字符集可选 八进制字面量 → 0o 八进制数字 八进制字符集可选 八进字数字 → 数值 0 到 7 八进制字符 → 八进制数字 | - 八进制字符集 → 八进制字符 八进制字符集可选 十进制字面量 → 十进制数字 十进制字符集可选 十进制数字 → 数值 0 到 9 十进制数字集 → 十进制数字 十进制数字集可选 十进制字面量字符 → 十进制数字 | - 十进制字面量字符集 → 十进制字面量字符 十进制字面量字符集可选 十六进制字面量 → 0x 十六进制数字 十六进制字面量字符集可选 十六进制数字 → 数值 0 到 9,a 到 f,或者 A 到 F 十六进制字符 → 十六进制数字 | - 十六进制字面量字符集 → 十六进制字符 十六进制字面量字符集可选
整型字面量语法
整型字面量 → 二进制字面量
整型字面量 → 八进制字面量
整型字面量 → 十进制字面量
整型字面量 → 十六进制字面量
二进制字面量 → 0b 二进制数字 二进制字面量字符集可选
二进制数字 → 数值 0 到 1
二进制字面量字符 → 二进制数字 | -
二进制字面量字符集 → 二进制字面量字符 二进制字面量字符集可选
八进制字面量 → 0o 八进制数字 八进制字符集可选
八进字数字 → 数值 0 到 7
八进制字符 → 八进制数字 | -
八进制字符集 → 八进制字符 八进制字符集可选
十进制字面量 → 十进制数字 十进制字符集可选
十进制数字 → 数值 0 到 9
十进制数字集 → 十进制数字 十进制数字集可选
十进制字面量字符 → 十进制数字 | -
十进制字面量字符集 → 十进制字面量字符 十进制字面量字符集可选
十六进制字面量 → 0x 十六进制数字 十六进制字面量字符集可选
十六进制数字 → 数值 0 到 9,a 到 f,或者 A 到 F
十六进制字符 → 十六进制数字 | -
十六进制字面量字符集 → 十六进制字符 十六进制字面量字符集可选
浮点型字面量语法 浮点数字面量 → 十进制字面量 十进制分数可选十进制指数可选 浮点数字面量 → 十六进制字面量 十六进制分数可选十六进制指数 十进制分数 → . 十进制字面量 十进制指数 → 浮点数 e 正负号可选十进制字面量 十六进制分数 → . 十六进制数 十六进制指数 → 浮点数 p 正负号可选十六进制字面量 浮点数 e → e | E 浮点数 p → p | P 正负号 → + | -
浮点型字面量语法
浮点数字面量 → 十进制字面量 十进制分数可选十进制指数可选
浮点数字面量 → 十六进制字面量 十六进制分数可选十六进制指数
十进制分数 → . 十进制字面量
十进制指数 → 浮点数 e 正负号可选十进制字面量
十六进制分数 → . 十六进制数
十六进制指数 → 浮点数 p 正负号可选十六进制字面量
浮点数 e → e | E
浮点数 p → p | P
正负号 → + | -
字符串型字面量语法
字符串字面量 → 静态字符串字面量 | 插值字符串字面量 字符串开分隔定界符 → 字符串扩展分隔符 " 字符串闭分隔定界符 → " 字符串扩展分隔符可选 静态字符串字面量 → 字符串开分隔定界符 引用文本可选 字符串闭分隔定界符 静态字符串字面量 → 多行字符串开分隔定界符 多行引用文本可选 多行字符串闭分隔定界符 多行字符串开分隔定界符 → 字符串扩展分隔符 """ 多行字符串闭分隔定界符 → """ 字符串扩展分隔符 字符串扩展分隔符 → # 字符串扩展分隔符可选 引用文本 → 引用文本项 引用文本可选 引用文本项 → 转义字符 引用文本项 → 除了 "、\\、U+000A、U+000D 以外的所有 Unicode 字符 多行引用文本 → 多行引用文本项 多行引用文本可选 多行引用文本项 转义字符可选 多行引用文本 → 除了 \ 以外的任何 Unicode 标量值 多行引用文本 → 转义换行
字符串字面量 → 静态字符串字面量 | 插值字符串字面量
字符串开分隔定界符 → 字符串扩展分隔符 "
字符串闭分隔定界符 → " 字符串扩展分隔符可选
静态字符串字面量 → 字符串开分隔定界符 引用文本可选 字符串闭分隔定界符
静态字符串字面量 → 多行字符串开分隔定界符 多行引用文本可选 多行字符串闭分隔定界符
多行字符串开分隔定界符 → 字符串扩展分隔符 """
多行字符串闭分隔定界符 → """ 字符串扩展分隔符
字符串扩展分隔符 → # 字符串扩展分隔符可选
引用文本 → 引用文本项 引用文本可选
引用文本项 → 转义字符
引用文本项 → 除了 "、\\、U+000A、U+000D 以外的所有 Unicode 字符
多行引用文本 → 多行引用文本项 多行引用文本可选
多行引用文本项 转义字符可选
多行引用文本 → 除了 \ 以外的任何 Unicode 标量值
多行引用文本 → 转义换行
插值字符串字面量 → 字符串开分隔定界符 插值文本可选 字符串闭分隔定界符 插值字符串字面量 → 多行字符串开分隔定界符 插值文本可选 多行字符串闭分隔定界符 插值文本 → 插值文本项 插值文本可选 插值文本项 → \(表达式) | 引用文本项 多行插值文本 → 多行插值文本项 多行插值文本可选 多行插值文本项 → \( 表达式 ) | 多行引用文本项 转义序列 → \ 字符串扩展分隔符 转义字符 → 转义序列 0 | 转义序列 \ | 转义序列 t | 转义序列 n | 转义序列 r | 转义序列 \" | 转义序列 ' 转义字符 → 转义序列 u { unicode 标量数字 } unicode 标量数字 → 一到八位的十六进制数字 转义换行符 → 转义序列 空白可选 换行符
插值字符串字面量 → 字符串开分隔定界符 插值文本可选 字符串闭分隔定界符
插值字符串字面量 → 多行字符串开分隔定界符 插值文本可选 多行字符串闭分隔定界符
插值文本 → 插值文本项 插值文本可选
插值文本项 → \(表达式) | 引用文本项
多行插值文本 → 多行插值文本项 多行插值文本可选
多行插值文本项 → \( 表达式 ) | 多行引用文本项
转义序列 → \ 字符串扩展分隔符
转义字符 → 转义序列 0 | 转义序列 \ | 转义序列 t | 转义序列 n | 转义序列 r | 转义序列 \" | 转义序列 '
转义字符 → 转义序列 u { 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 运算符字符集 → 运算符字符 运算符字符集可选 点运算符头 → .. 点运算符字符 → . | 运算符字符 点运算符字符集 → 点运算符字符 点运算符字符集可选 二元运算符 → 运算符 前置运算符 → 运算符 后置运算符 → 运算符
运算符语法语法
运算符 → 运算符头 运算符字符集可选
运算符 → 点运算符头 点运算符字符集可选
运算符字符 → / | = | - | + | ! | * | % | < | > | & | | | ^ | ~ | ?
运算符头 → 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
运算符字符集 → 运算符字符 运算符字符集可选
点运算符头 → ..
点运算符字符 → . | 运算符字符
点运算符字符集 → 点运算符字符 点运算符字符集可选
二元运算符 → 运算符
前置运算符 → 运算符
后置运算符 → 运算符
类型语法 类型 → 数组类型 类型 → 字典类型 类型 → 函数类型 类型 → 类型标识符 类型 → 元组类型 类型 → 可选类型 类型 → 隐式解析可选类型 类型 → 协议合成类型 类型 → Any 类型 → Self 类型 → ( type )
类型语法
类型 → 数组类型
类型 → 字典类型
类型 → 函数类型
类型 → 类型标识符
类型 → 元组类型
类型 → 可选类型
类型 → 隐式解析可选类型
类型 → 协议合成类型
类型 → Any
类型 → Self
类型 → ( type )
类型注解语法 类型注解 → : 属性(Attributes)集可选类型
类型注解语法
类型注解 → : 属性(Attributes)集可选类型
类型标识语法 类型标识 → 类型名称 泛型参数从句可选| 类型名称 泛型参数从句可选. 类型标识符 类型名 → 标识符
类型标识语法
类型标识 → 类型名称 泛型参数从句可选| 类型名称 泛型参数从句可选. 类型标识符
类型名 → 标识符
元组类型语法 元组类型 → ( ) | ( 元组类型元素 , 元组类型元素列表 ) 元组类型元素列表 → 元组类型元素 | 元组类型元素 , 元组类型元素列表 元组类型元素 → 元素名 类型注解 | 类型 元素名 → 标识符
元组类型语法
元组类型 → ( ) | ( 元组类型元素 , 元组类型元素列表 )
元组类型元素列表 → 元组类型元素 | 元组类型元素 , 元组类型元素列表
元组类型元素 → 元素名 类型注解 | 类型
元素名 → 标识符
函数类型语法 函数类型 → 类型 throws可选-> 类型 函数类型 → 类型 rethrows -> 类型 函数类型子句 → ( ) 函数类型子句 → ( 函数类型参数列表 ...可选 ) 函数类型参数列表 → 函数类型参数 | 函数类型参数, 函数类型参数列表 函数类型参数 → 特性列表可选 输入输出参数可选 类型 | 参数标签 类型注解 参数标签 → 标识符
函数类型语法
函数类型 → 类型 throws可选-> 类型
函数类型 → 类型 rethrows -> 类型
函数类型子句 → ( )
函数类型子句 → ( 函数类型参数列表 ...可选 )
函数类型参数列表 → 函数类型参数 | 函数类型参数, 函数类型参数列表
函数类型参数 → 特性列表可选 输入输出参数可选 类型 | 参数标签 类型注解
参数标签 → 标识符
数组类型语法 数组类型 → [ 类型 ]
数组类型语法
数组类型 → [ 类型 ]
字典类型语法 字典类型 → [ 类型 : 类型 ]
字典类型语法
字典类型 → [ 类型 : 类型 ]
可选类型语法 可选类型 → 类型 ?
可选类型语法
可选类型 → 类型 ?
隐式解析可选类型(Implicitly Unwrapped Optional Type)语法 隐式解析可选类型 → 类型 !
隐式解析可选类型(Implicitly Unwrapped Optional Type)语法
隐式解析可选类型 → 类型 !
协议合成类型语法 协议合成类型 → 类型标识符 | 协议合成延续 协议持续延续 → 类型标识符 | 协议合成类型
协议合成类型语法
协议合成类型 → 类型标识符 | 协议合成延续
协议持续延续 → 类型标识符 | 协议合成类型
元(Metatype)类型语法 元类型 → 类型 . Type | 类型 . Protocol
元(Metatype)类型语法
元类型 → 类型 . Type | 类型 . Protocol
类型继承从句语法 类型继承从句 → : 类型继承集 类型继承集 → 类型标识符 | 类型标识符 , 类型继承集 类条件 → class
类型继承从句语法
类型继承从句 → : 类型继承集
类型继承集 → 类型标识符 | 类型标识符 , 类型继承集
类条件 → class
表达式语法 表达式 → try 运算符可选 前缀表达式 二元表达式列表 表达式列表 → 表达式|表达式, 表达式列表
表达式语法
表达式 → try 运算符可选 前缀表达式 二元表达式列表
表达式列表 → 表达式|表达式, 表达式列表
前缀表达式语法 前缀表达式 → [前缀操作符]()可选 前缀表达式 前缀表达式 → 输入输出表达式 输入输出表达式 → & 标识符
前缀表达式语法
前缀表达式 → [前缀操作符]()可选 前缀表达式
前缀表达式 → 输入输出表达式
输入输出表达式 → & 标识符
try 表达式语法 try 操作符 → try | try ? | try !
try 表达式语法
try 操作符 → try | try ? | try !
二元表达式语法 二元表达式 → 二元运算符 前缀表达式 二元表达式 → 赋值操作符 try 运算符可选 前缀表达式 二元表达式 → 条件运算符 try 运算符可选 前缀表达式 二元表达式 → 类型转换运算符 二元表达式 → 二元表达式 二元表达式列表可选
二元表达式语法
二元表达式 → 二元运算符 前缀表达式
二元表达式 → 赋值操作符 try 运算符可选 前缀表达式
二元表达式 → 条件运算符 try 运算符可选 前缀表达式
二元表达式 → 类型转换运算符
二元表达式 → 二元表达式 二元表达式列表可选
赋值操作符语法 赋值运算符 → [=]
赋值操作符语法
赋值运算符 → [=]
条件运算符 条件运算符 → [?] 表达式:
条件运算符
条件运算符 → [?] 表达式:
类型转换运算符语法 类型转换运算符 → [is] 类型 类型转换运算符 → [as] 类型 类型转换运算符 → [as ?] 类型 类型转换运算符 → [as !] 类型
类型转换运算符语法
类型转换运算符 → [is] 类型
类型转换运算符 → [as] 类型
类型转换运算符 → [as ?] 类型
类型转换运算符 → [as !] 类型
基础表达式语法 基础表达式 → 标识符 泛型实参子句可选 基础表达式 → 字面量表达式 基础表达式 → self 表达式 基础级表达式 → 父类表达式 基础表达式 → 闭包表达式 基础表达式 → 圆括号表达式 基础表达式 → 元组表达式 基础表达式 → 隐式成员表达式 基础表达式 → 通配符表达式 基础表达式 → key-path表达式 基础表达式 → 选择器表达式 基础表达式 → key-path字符串表达式
基础表达式语法
基础表达式 → 标识符 泛型实参子句可选
基础表达式 → 字面量表达式
基础表达式 → self 表达式
基础级表达式 → 父类表达式
基础表达式 → 闭包表达式
基础表达式 → 圆括号表达式
基础表达式 → 元组表达式
基础表达式 → 隐式成员表达式
基础表达式 → 通配符表达式
基础表达式 → key-path表达式
基础表达式 → 选择器表达式
基础表达式 → key-path字符串表达式
字面量表达式语法 字面量表达式 → 字面量 字面量表达式 → 数组字面量 | 字典字面量 | 练习场字面量 字面量表达式 → #file | #line | #column | #function | dsohandle 数组字面量 → [ 数组字面量项列表可选 ] 数组字面量项列表 → 数组字面量项可选 | 数组字面量项,数组字面量项列表 数组字面量项 → 表达式 字典字面量 → [字典字面量项列表 ] | [ : ] 字典字面量项列表 → 字典字面量项 ,**可选 | 字典字面量项 ,字典字面量项列表 字典字面量项 → 表达式 : 表达式 palyground 字面量 → #colorLiteral ( red : 表达式 , green :表达式, blue :表达式 , alpha : 表达式 ) playground 字面量 → #fileLiteral ( resourceName : 表达式 ) playground 字面量 → **#imageLiteral ( resourceName : 表达式 )
字面量表达式语法
字面量表达式 → 字面量
字面量表达式 → 数组字面量 | 字典字面量 | 练习场字面量
字面量表达式 → #file | #line | #column | #function | dsohandle
数组字面量 → [ 数组字面量项列表可选 ] 数组字面量项列表 → 数组字面量项可选 | 数组字面量项,数组字面量项列表 数组字面量项 → 表达式
字典字面量 → [字典字面量项列表 ] | [ : ]
字典字面量项列表 → 字典字面量项 ,**可选 | 字典字面量项 ,字典字面量项列表
字典字面量项 → 表达式 : 表达式
palyground 字面量 → #colorLiteral ( red : 表达式 , green :表达式, blue :表达式 , alpha : 表达式 )
playground 字面量 → #fileLiteral ( resourceName : 表达式 )
playground 字面量 → **#imageLiteral ( resourceName : 表达式 )
self 表达式语法 self 表达式 → self | self 方法表达式 | self 下标表达式 | self 构造器表达式 self 方法表达式 → self . 标识符 self 下标表达式 → self [ 函数调用参数表 ] self 构造器表达式 → self . init
self 表达式语法
self 表达式 → self | self 方法表达式 | self 下标表达式 | self 构造器表达式
self 方法表达式 → self . 标识符
self 下标表达式 → self [ 函数调用参数表 ]
self 构造器表达式 → self . init
父类表达式语法 父类表达式 → 父类方法表达式 | 父类下标表达式 | 父类构造器表达式 父类方法表达式 → super . 标识符 父类下标表达式 → super [函数调用参数表 ] 父类构造器表达式 → super . init
父类表达式语法
父类表达式 → 父类方法表达式 | 父类下标表达式 | 父类构造器表达式
父类方法表达式 → super . 标识符
父类下标表达式 → super [函数调用参数表 ]
父类构造器表达式 → super . init
闭包表达式语法 闭包表达式 → { 闭包签名可选 语句 } 闭包签名* → 参数子句 函数结果可选 in 闭包签名 → 标识符列表 函数结果可选 in 闭包参数子句 ( ) | ( 闭包参数列表 | 标识符列表 ) 闭包参数列表 闭包参数 | 闭包参数, 闭包参数列表 闭包参数 闭包参数名 类型声明 可选 闭包参数 闭包参数名 类型声明 ... 闭包参数名 标识符 捕获列表 → 捕获列表 [ 捕获列表项列表 ] 捕获列表项列表 → 捕获列表项 | 捕获列表项 , 捕获列表项列表 捕获列表项 → 捕获说明符可选 表达式 捕获说明符 → weak | unowned | unowned(safe) | unowned(unsafe)
闭包表达式语法
闭包表达式 → { 闭包签名可选 语句 }
闭包签名* → 参数子句 函数结果可选 in
闭包签名 → 标识符列表 函数结果可选 in
闭包参数子句 ( ) | ( 闭包参数列表 | 标识符列表 )
闭包参数列表 闭包参数 | 闭包参数, 闭包参数列表
闭包参数 闭包参数名 类型声明 可选
闭包参数 闭包参数名 类型声明 ...
闭包参数名 标识符
捕获列表 → 捕获列表 [ 捕获列表项列表 ]
捕获列表项列表 → 捕获列表项 | 捕获列表项 , 捕获列表项列表
捕获列表项 → 捕获说明符可选 表达式
捕获说明符 → weak | unowned | unowned(safe) | unowned(unsafe)
隐式成员表达式语法 隐式成员表达式 → . 标识符
隐式成员表达式语法
隐式成员表达式 → . 标识符
圆括号表达式语法 圆括号表达式 → ( 表达式 )
圆括号表达式语法
圆括号表达式 → ( 表达式 )
元组表达式语法 元组表达式 → ( ) | (元组元素, 元组元素列表 ) 元组元素列表 → 元组元素 | 元组元素 , 元组元素列表 元组元素 → 表达式 | 标识符 : 表达式
元组表达式语法
元组表达式 → ( ) | (元组元素, 元组元素列表 )
元组元素列表 → 元组元素 | 元组元素 , 元组元素列表 元组元素 → 表达式 | 标识符 : 表达式
通配符表达式语法 通配符表达式 → _
通配符表达式语法
通配符表达式 → _
key-path表达式语法 key-path 表达式 → \ 类型可选 . [多个 key-path 组件] 多个 key-path 组件 → key-path 组件 | key-path 组件 . 多个 key-path 组件 key-path 组件 → 标识符 多个 key-path 后缀可选 | 多个 key-path 后缀 多个 key-path 后缀 → key-path 后缀 多个 key-path 后缀可选 key-path-postfixes {./04-Expressions.md#key-path-postfixes} key-path 后缀 → ? | ! | self | [ 函数调用参数表 ]
key-path表达式语法
key-path 表达式 → \ 类型可选 . [多个 key-path 组件] 多个 key-path 组件 → key-path 组件 | key-path 组件 . 多个 key-path 组件 key-path 组件 → 标识符 多个 key-path 后缀可选 | 多个 key-path 后缀 多个 key-path 后缀 → key-path 后缀 多个 key-path 后缀可选 key-path-postfixes {./04-Expressions.md#key-path-postfixes}
key-path 后缀 → ? | ! | self | [ 函数调用参数表 ]
选择器表达式语法 选择器表达式 → #selector ( 表达式 ) 选择器表达式 → #selector ( getter:表达式 ) 选择器表达式 → #selector ( setter:表达式 )
选择器表达式语法
选择器表达式 → #selector ( 表达式 )
选择器表达式 → #selector ( getter:表达式 )
选择器表达式 → #selector ( setter:表达式 )
key-path 字符串表达式语法 key-path 字符串表达式 → #keyPath ( 表达式 )
后缀表达式表达式语法 后缀表达式 → 基本表达式 后缀表达式 → 后缀表达式 后缀运算符 后缀表达式 → 函数调用表达式 后缀表达式 → 构造器表达式 后缀表达式 → 显式成员表达式 后缀表达式 → 后缀 self 表达式 后缀表达式 → 下标表达式 后缀表达式 → 强制取值表达式 后缀表达式 → 可选链表达式
后缀表达式表达式语法
后缀表达式 → 基本表达式
后缀表达式 → 后缀表达式 后缀运算符
后缀表达式 → 函数调用表达式
后缀表达式 → 构造器表达式
后缀表达式 → 显式成员表达式
后缀表达式 → 后缀 self 表达式
后缀表达式 → 下标表达式
后缀表达式 → 强制取值表达式
后缀表达式 → 可选链表达式
函数调用表达式语法 函数调用表达式 → 后缀表达式 函数调用参数子句 函数调用表达式 → 后缀表达式 函数调用参数子句可选 尾随闭包 函数调用参数子句 → ( ) | ( 函数调用参数表 ) 函数调用参数表 → 函数调用参数 | 函数调用参数 , 函数调用参数表 函数调用参数 → 表达式 | 标识符 : 表达式 函数调用参数 → 运算符 | 标识符 : 运算符 尾随闭包 → 闭包表达式
函数调用表达式语法
函数调用表达式 → 后缀表达式 函数调用参数子句
函数调用表达式 → 后缀表达式 函数调用参数子句可选 尾随闭包
函数调用参数子句 → ( ) | ( 函数调用参数表 )
函数调用参数表 → 函数调用参数 | 函数调用参数 , 函数调用参数表
函数调用参数 → 表达式 | 标识符 : 表达式
函数调用参数 → 运算符 | 标识符 : 运算符
尾随闭包 → 闭包表达式
初始化表达式语法 构造器表达式 → 后缀表达式 . init 构造器表达式 → 后缀表达式 . init ( 参数名称 )
初始化表达式语法
构造器表达式 → 后缀表达式 . init
构造器表达式 → 后缀表达式 . init ( 参数名称 )
显式成员表达式语法 显式成员表达式 → 后缀表达式 . [十进制数字] (02-Lexical-Structure.md#decimal-digit) 显式成员表达式 → 后缀表达式 . 标识符 泛型实参子句可选 显式成员表达式 → 后缀表达式 . [标识符] (02-Lexical-Structure.md#identifier) ( 参数名称 ) 参数名称 → 参数名 参数名称可选 参数名 → 标识符 :
显式成员表达式语法
显式成员表达式 → 后缀表达式 . [十进制数字] (02-Lexical-Structure.md#decimal-digit)
显式成员表达式 → 后缀表达式 . 标识符 泛型实参子句可选
显式成员表达式 → 后缀表达式 . [标识符] (02-Lexical-Structure.md#identifier) ( 参数名称 )
参数名称 → 参数名 参数名称可选
参数名 → 标识符 :
后缀 self 表达式语法 后缀 self 表达式 → 后缀表达式 . self
后缀 self 表达式语法
后缀 self 表达式 → 后缀表达式 . self
下标表达式语法 下标表达式 → 后缀表达式 [ 表达式列表 ]
下标表达式语法
下标表达式 → 后缀表达式 [ 表达式列表 ]
强制取值表达式语法 强制取值表达式 → 后缀表达式 !
可选链式表达式语法 可选链表达式 → 后缀表达式 ?
语句语法 语句 → 表达式 ;可选 语句 → 声明 ;可选 语句 → 循环语句 ;可选 语句 → 分支语句 ;可选 语句 → 标签语句 ;可选 语句 → 控制转移语句 ;可选 语句 → 延迟语句 ;可选 语句 → 执行语句 ;可选 语句 → 编译控制语句 语句集 → 语句 语句集可选
语句语法
语句 → 表达式 ;可选
语句 → 声明 ;可选
语句 → 循环语句 ;可选
语句 → 分支语句 ;可选
语句 → 标签语句 ;可选
语句 → 控制转移语句 ;可选
语句 → 延迟语句 ;可选
语句 → 执行语句 ;可选
语句 → 编译控制语句
语句集 → 语句 语句集可选
循环语句语法 循环语句 → for-in 语句 循环语句 → [while 语句](./05_Statements.md#wheetatype 类型 ile-statement) 循环语句 → repeat-while 语句
循环语句语法
循环语句 → for-in 语句
循环语句 → [while 语句](./05_Statements.md#wheetatype 类型 ile-statement)
循环语句 → repeat-while 语句
For-In 循环语法 for-in 语句 → for case可选 模式 in 表达式 where 子句可选 代码块
For-In 循环语法
for-in 语句 → for case可选 模式 in 表达式 where 子句可选 代码块
While 循环语法 while 语句 → while 条件集 代码块 条件集 → 条件 | 条件 , 条件集 条件 → 表达式 | 可用性条件 | case 条件 | 可选绑定条件 case 条件 → case 模式 构造器 可选绑定条件 → let 模式 构造器 | var 模式 构造器
While 循环语法
while 语句 → while 条件集 代码块
条件集 → 条件 | 条件 , 条件集 条件 → 表达式 | 可用性条件 | case 条件 | 可选绑定条件
case 条件 → case 模式 构造器
可选绑定条件 → let 模式 构造器 | var 模式 构造器
Repeat-While 语句语法 repeat-while-statement → repeat 代码块 while 表达式
Repeat-While 语句语法
repeat-while-statement → repeat 代码块 while 表达式
分支语句语法 分支语句 → if 语句 分支语句 → guard 语句 分支语句 → switch 语句
分支语句语法
分支语句 → if 语句
分支语句 → guard 语句
分支语句 → switch 语句
If 语句语法 if 语句 → if 条件集 代码块 else 子句可选 else 子句 → else 代码块 | else if 语句
If 语句语法
if 语句 → if 条件集 代码块 else 子句可选
else 子句 → else 代码块 | else if 语句
Guard 语句语法 guard 语句 → guard 条件集 else 代码块
Guard 语句语法
guard 语句 → guard 条件集 else 代码块
Switch 语句语法 switch 语句 → switch 表达式 { switch-case集可选 } switch-case集 → switch-case switch-case集可选 switch-case → case 标签 语句集 switch-case → default 标签 语句集 switch-case → 条件 switch-case case 标签 → 特性可选 case case 项集 : case 项集 → 模式 where 子句可选 | 模式 where 子句可选 , case 项集 default 标签 → 特性可选 default : where 子句 → where where 表达式 where 表达式 → 表达式 条件 switch-case → switch if 指令子句 switch elseif 指令子句集可选 switch else 指令子句可选 endif 指令 switch if 指令子句 → if 指令 编译条件 switch-case集可选 switch elseif 指令子句集 → elseif 指令子句 switch elseif 指令子句集可选 switch elseif 指令子句 → elseif 指令 编译条件 switch-case集可选 switch else 指令子句 → else 指令 switch-case集可选
Switch 语句语法
switch 语句 → switch 表达式 { switch-case集可选 }
switch-case集 → switch-case switch-case集可选
switch-case → case 标签 语句集
switch-case → default 标签 语句集
switch-case → 条件 switch-case
case 标签 → 特性可选 case case 项集 :
case 项集 → 模式 where 子句可选 | 模式 where 子句可选 , case 项集
default 标签 → 特性可选 default :
where 子句 → where where 表达式
where 表达式 → 表达式
条件 switch-case → switch if 指令子句 switch elseif 指令子句集可选 switch else 指令子句可选 endif 指令
switch if 指令子句 → if 指令 编译条件 switch-case集可选
switch elseif 指令子句集 → elseif 指令子句 switch elseif 指令子句集可选
switch elseif 指令子句 → elseif 指令 编译条件 switch-case集可选
switch else 指令子句 → else 指令 switch-case集可选
标签语句语法 标签语句 → 语句标签 循环语句 标签语句 → 语句标签 if 语句 标签语句 → 语句标签 switch 语句 标签语句 → 语句标签 do 语句 语句标签 → 标签名称 : 标签名称 → 标识符
标签语句语法
标签语句 → 语句标签 循环语句
标签语句 → 语句标签 if 语句
标签语句 → 语句标签 switch 语句
标签语句 → 语句标签 do 语句
语句标签 → 标签名称 :
标签名称 → 标识符
控制转移语句语法 控制转移语句 → break 语句 控制转移语句 → continue 语句 控制转移语句 → fallthrough 语句 控制转移语句 → return 语句 控制转移语句 → throw 语句
控制转移语句语法
控制转移语句 → break 语句
控制转移语句 → continue 语句
控制转移语句 → fallthrough 语句
控制转移语句 → return 语句
控制转移语句 → throw 语句
Break 语句语法 break 语句 → break 标签名称可选
Break 语句语法
break 语句 → break 标签名称可选
Continue 语句语法 continue 语句 → continue 标签名称可选
Continue 语句语法
continue 语句 → continue 标签名称可选
Fallthrough 语句语法 fallthrough 语句 → fallthrough
Fallthrough 语句语法
fallthrough 语句 → fallthrough
Return 语句语法 return 语句 → return 表达式可选
Return 语句语法
return 语句 → return 表达式可选
Throw 语句语法 throw 语句 → throw 表达式
Throw 语句语法
throw 语句 → throw 表达式
Defer 语句语法 defer 语句 → defer 代码块
Defer 语句语法
defer 语句 → defer 代码块
Do 语句语法 do 语句 → do 代码块 catch 子句集可选 catch 子句集 → catch 子句 catch 子句集可选 catch 子句 → catch 模式可选 where 子句可选 代码块可选
Do 语句语法
do 语句 → do 代码块 catch 子句集可选
catch 子句集 → catch 子句 catch 子句集可选
catch 子句 → catch 模式可选 where 子句可选 代码块可选
编译控制语句 编译控制语句 → 条件编译块 编译控制语句 → 行控制语句 编译控制语句 → 诊断语句
编译控制语句
编译控制语句 → 条件编译块
编译控制语句 → 行控制语句
编译控制语句 → 诊断语句
条件编译块语法 条件编译块 → if 指令子句 elseif 指令子句集可选 else 指令子句可选 endif 指令 if 指令子句 → if 指令 编译条件 语句集可选 elseif 指令子句集 → elseif 指令子句 elseif 指令子句集可选 elseif 指令子句 → elseif 指令 编译条件 语句集可选 else 指令子句 → else 指令 语句集可选 if 指令 → #if elseif 指令 → #elseif else 指令 → #else endif 指令 → #endif 编译条件 → 平台条件 编译条件 → 标识符 编译条件 → 布尔字面量 编译条件 → ( 编译条件 ) 编译条件 → ! 编译条件 编译条件 → 编译条件 && 编译条件 编译条件 → 编译条件 || 编译条件 平台条件 → os ( 操作系统 ) 平台条件 → arch ( 架构 ) 平台条件 → swift ( >= swift 版本 ) | swift ( < swift 版本 ) 平台条件 → compiler ( >= swift 版本 ) | compiler ( < swift 版本 ) 平台条件 → canImport ( 模块名 ) 平台条件 → targetEnvironment ( 环境 ) 操作系统 → macOS | iOS | watchOS | tvOS 架构 → i386 | x86_64 | arm | arm64 swift 版本 → 十进制数字集 swift 版本后缀可选 swift 版本后缀 → . 十进制数字集 swift 版本集可选 模块名 → 标识符 环境 → 模拟器 | macCatalyst
条件编译块语法
条件编译块 → if 指令子句 elseif 指令子句集可选 else 指令子句可选 endif 指令
if 指令子句 → if 指令 编译条件 语句集可选
elseif 指令子句集 → elseif 指令子句 elseif 指令子句集可选
elseif 指令子句 → elseif 指令 编译条件 语句集可选
else 指令子句 → else 指令 语句集可选
if 指令 → #if
elseif 指令 → #elseif
else 指令 → #else
endif 指令 → #endif
编译条件 → 平台条件
编译条件 → 标识符
编译条件 → 布尔字面量
编译条件 → ( 编译条件 )
编译条件 → ! 编译条件
编译条件 → 编译条件 && 编译条件
编译条件 → 编译条件 || 编译条件
平台条件 → os ( 操作系统 )
平台条件 → arch ( 架构 )
平台条件 → swift ( >= swift 版本 ) | swift ( < swift 版本 )
平台条件 → compiler ( >= swift 版本 ) | compiler ( < swift 版本 )
平台条件 → canImport ( 模块名 )
平台条件 → targetEnvironment ( 环境 )
操作系统 → macOS | iOS | watchOS | tvOS
架构 → i386 | x86_64 | arm | arm64
swift 版本 → 十进制数字集 swift 版本后缀可选
swift 版本后缀 → . 十进制数字集 swift 版本集可选
模块名 → 标识符
环境 → 模拟器 | macCatalyst
行控制语句语法 行控制语句 → #sourceLocation ( file: 文件名 , line: 行号 ) 行控制语句 → #sourceLocation ( ) 行号 → 一个大于 0 的十进制数字 文件名 → 静态字符串字面量
行控制语句语法
行控制语句 → #sourceLocation ( file: 文件名 , line: 行号 )
行控制语句 → #sourceLocation ( )
行号 → 一个大于 0 的十进制数字
文件名 → 静态字符串字面量
编译期诊断语句语法 诊断语句 → #error ( 诊断信息 ) 诊断语句 → #warning ( 诊断信息 ) 诊断信息 → 静态字符串字面量
编译期诊断语句语法
诊断语句 → #error ( 诊断信息 )
诊断语句 → #warning ( 诊断信息 )
诊断信息 → 静态字符串字面量
可用性条件语法 可用性条件 → #available ( 可用性参数集 ) 可用性参数集 → 可用性参数 | 可用性参数 , 可用性参数集) 可用性参数 → 平台名 平台版本 可用性参数 → * 平台名 → iOS | iOSApplicationExtension 平台名 → macOS | macOSApplicationExtension 平台名 → watchOS 平台名 → tvOS 平台版本 → 十进制数字集 平台版本 → 十进制数字集 . 十进制数字集 平台版本 → 十进制数字集 . 十进制数字集 . 十进制数字集
可用性条件语法
可用性条件 → #available ( 可用性参数集 )
可用性参数集 → 可用性参数 | 可用性参数 , 可用性参数集)
可用性参数 → 平台名 平台版本
可用性参数 → *
平台名 → iOS | iOSApplicationExtension
平台名 → macOS | macOSApplicationExtension
平台名 → watchOS
平台名 → tvOS
平台版本 → 十进制数字集
平台版本 → 十进制数字集 . 十进制数字集
平台版本 → 十进制数字集 . 十进制数字集 . 十进制数字集
声明语法 声明 → 导入声明 声明 → 常量声明 声明 → 变量声明 声明 → 类型别名声明 声明 → 函数声明 声明 → 枚举声明 声明 → 结构体声明 声明 → 类声明 声明 → 协议声明 声明 → 构造器声明 声明 → 析构器声明 声明 → 扩展声明 声明 → 下标声明 声明 → 运算符声明 声明 → 优先级组声明 声明集 → 声明 声明集可选
声明语法
声明 → 导入声明
声明 → 常量声明
声明 → 变量声明
声明 → 类型别名声明
声明 → 函数声明
声明 → 枚举声明
声明 → 结构体声明
声明 → 类声明
声明 → 协议声明
声明 → 构造器声明
声明 → 析构器声明
声明 → 扩展声明
声明 → 下标声明
声明 → 运算符声明
声明 → 优先级组声明
声明集 → 声明 声明集可选
顶级声明语法 顶级声明 → 多条语句可选
顶级声明语法
顶级声明 → 多条语句可选
代码块语法 代码块 → { 多条语句可选 }
代码块语法
代码块 → { 多条语句可选 }
导入声明语法 导入声明 → 特性可选 import 导入类型可选 导入路径 导入类型 → typealias | struct | class | enum | protocol | let | var | func 导入路径 → 导入路径标识符 | 导入路径标识符 . 导入路径 导入路径标识符 → 标识符 | 运算符
导入声明语法
导入声明 → 特性可选 import 导入类型可选 导入路径
导入类型 → typealias | struct | class | enum | protocol | let | var | func
导入路径 → 导入路径标识符 | 导入路径标识符 . 导入路径
导入路径标识符 → 标识符 | 运算符
常数声明语法 常量声明 → 特性可选 声明修饰符集可选 let 模式构造器集 模式构造器集 → 模式构造器 | 模式构造器 , 模式构造器集 模式构造器 → 模式 构造器可选 构造器 → = 表达式
常数声明语法
常量声明 → 特性可选 声明修饰符集可选 let 模式构造器集
模式构造器集 → 模式构造器 | 模式构造器 , 模式构造器集
模式构造器 → 模式 构造器可选
构造器 → = 表达式
变量声明语法 变量声明 → 变量声明头 模式构造器集 变量声明 → 变量声明头 变量名 类型注解 代码块 变量声明 → 变量声明头 变量名 类型注解 getter-setter 块 变量声明 → 变量声明头 变量名 类型注解 getter-setter 关键字块 变量声明 → 变量声明头 变量名 构造器可选 willSet-didSet 代码块 变量声明 → 变量声明头 变量名 类型注解 构造器可选 willSet-didSet 代码块 变量声明头 → 特性可选 声明修饰符集可选 var 变量名称 → 标识符 getter-setter 块 → 代码块 getter-setter 块 → { getter 子句 setter 子句可选 } getter-setter 块 → { setter 子句 getter 子句 } getter 子句 → 特性可选 可变性修饰符可选 get 代码块 setter 子句 → 特性可选 可变性修饰符可选 set setter 名称可选 代码块 setter 名称 → ( 标识符 ) getter-setter 关键字(Keyword)块 → { getter 关键字子句 setter 关键字子句可选 } getter-setter 关键字(Keyword)块 → { setter 关键字子句 getter 关键字子句 } getter 关键字(Keyword)子句 → 特性可选 可变性修饰符可选 get setter 关键字(Keyword)子句 → 特性可选 可变性修饰符可选 set willSet-didSet 代码块 → { willSet 子句 didSet 子句可选 } willSet-didSet 代码块 → { didSet 子句 willSet 子句可选 } willSet 子句 → 特性可选 willSet setter 名称可选 代码块 didSet 子句 → 特性可选 didSet setter 名称可选 代码块
变量声明语法
变量声明 → 变量声明头 模式构造器集
变量声明 → 变量声明头 变量名 类型注解 代码块
变量声明 → 变量声明头 变量名 类型注解 getter-setter 块
变量声明 → 变量声明头 变量名 类型注解 getter-setter 关键字块
变量声明 → 变量声明头 变量名 构造器可选 willSet-didSet 代码块
变量声明 → 变量声明头 变量名 类型注解 构造器可选 willSet-didSet 代码块
变量声明头 → 特性可选 声明修饰符集可选 var
变量名称 → 标识符
getter-setter 块 → 代码块
getter-setter 块 → { getter 子句 setter 子句可选 }
getter-setter 块 → { setter 子句 getter 子句 }
getter 子句 → 特性可选 可变性修饰符可选 get 代码块
setter 子句 → 特性可选 可变性修饰符可选 set setter 名称可选 代码块
setter 名称 → ( 标识符 )
getter-setter 关键字(Keyword)块 → { getter 关键字子句 setter 关键字子句可选 }
getter-setter 关键字(Keyword)块 → { setter 关键字子句 getter 关键字子句 }
getter 关键字(Keyword)子句 → 特性可选 可变性修饰符可选 get
setter 关键字(Keyword)子句 → 特性可选 可变性修饰符可选 set
willSet-didSet 代码块 → { willSet 子句 didSet 子句可选 }
willSet-didSet 代码块 → { didSet 子句 willSet 子句可选 }
willSet 子句 → 特性可选 willSet setter 名称可选 代码块
didSet 子句 → 特性可选
didSet setter 名称可选 代码块
类型别名声明语法 类型别名声明 → 特性可选 访问级别修饰符 typealias 类型别名名称 泛型参数子句可选 类型别名赋值 类型别名名称 → 标识符 类型别名赋值 → = 类型
类型别名声明语法
类型别名声明 → 特性可选 访问级别修饰符 typealias 类型别名名称 泛型参数子句可选 类型别名赋值
类型别名名称 → 标识符
类型别名赋值 → = 类型
函数声明语法 函数声明 → 函数头 函数名 泛型参数子句可选 函数签名 泛型 where 子句可选 函数体可选 函数头 → 特性可选 声明描述符集可选 func 函数名 → 标识符 | 运算符 函数签名 → 参数子句 throws可选 函数结果可选
函数声明语法
函数声明 → 函数头 函数名 泛型参数子句可选 函数签名 泛型 where 子句可选 函数体可选
函数头 → 特性可选 声明描述符集可选 func
函数名 → 标识符 | 运算符
函数签名 → 参数子句 throws可选 函数结果可选
函数签名 → 参数子句 rethrows 函数结果可选 函数结果 → -> 特性可选 类型 函数体 → 代码块 参数子句 → ( ) | ( 参数集 ) 参数集 → 参数 | 参数 , 参数集 参数 → 外部参数名可选 本地参数名 类型注解 默认参数子句可选 参数 → 外部参数名可选 本地参数名 类型注解 参数 → 外部参数名可选 本地参数名 类型注解 ... 外部参数名 → 标识符 本地参数名 → 标识符 默认参数子句 → = 表达式
函数签名 → 参数子句 rethrows 函数结果可选
函数结果 → -> 特性可选 类型
函数体 → 代码块
参数子句 → ( ) | ( 参数集 )
参数集 → 参数 | 参数 , 参数集
参数 → 外部参数名可选 本地参数名 类型注解 默认参数子句可选
参数 → 外部参数名可选 本地参数名 类型注解
参数 → 外部参数名可选 本地参数名 类型注解 ...
外部参数名 → 标识符
本地参数名 → 标识符
默认参数子句 → = 表达式
枚举声明语法 枚举声明 → 特性可选 访问级别修饰符可选 联合式枚举 枚举声明 → 特性可选 访问级别修饰符可选 原始值式枚举 联合式枚举 → indirect可选 enum 枚举名 泛型参数子句可选 类型继承子句可选 泛型 where 子句可选 { 联合式枚举成员可选 } 联合式枚举成员集 → 联合式枚举成员 联合样式枚举成员集可选 联合样式枚举成员 → 声明 | 联合式枚举 case 子句 | 编译控制语句 联合式枚举 case 子句 → 特性可选 indirect可选 case 联合式枚举 case 集 联合式枚举 case 集 → 联合式枚举 case | 联合式枚举 case , 联合式枚举 case 集 联合式枚举 case → 枚举的 case 名 元组类型可选 枚举名 → 标识符 枚举的 case 名 → 标识符 原始值式枚举 → enum 枚举名 泛型参数子句可选 类型继承子句 泛型 where 子句可选 { 原始值式枚举成员集 } 原始值式枚举成员集 → 原始值式枚举成员 原始值式枚举成员集可选 原始值式枚举成员 → 声明 | 原始值式枚举 case 子句 | 编译控制语句 原始值式枚举 case 子句 → 特性可选 case 原始值式枚举 case 集 原始值式枚举 case 集 → 原始值式枚举 case | 原始值式枚举 case , 原始值式枚举 case 集 原始值式枚举 case → 枚举的 case 名 原始值赋值可选 原始值赋值 → = 原始值字面量 原始值字面量(raw-value-literal) → 数值字面量 | 静态字符串字面量 | 布尔字面量
枚举声明语法
枚举声明 → 特性可选 访问级别修饰符可选 联合式枚举
枚举声明 → 特性可选 访问级别修饰符可选 原始值式枚举
联合式枚举 → indirect可选 enum 枚举名 泛型参数子句可选 类型继承子句可选 泛型 where 子句可选 { 联合式枚举成员可选 }
联合式枚举成员集 → 联合式枚举成员 联合样式枚举成员集可选
联合样式枚举成员 → 声明 | 联合式枚举 case 子句 | 编译控制语句
联合式枚举 case 子句 → 特性可选 indirect可选 case 联合式枚举 case 集
联合式枚举 case 集 → 联合式枚举 case | 联合式枚举 case , 联合式枚举 case 集
联合式枚举 case → 枚举的 case 名 元组类型可选
枚举名 → 标识符
枚举的 case 名 → 标识符
原始值式枚举 → enum 枚举名 泛型参数子句可选 类型继承子句 泛型 where 子句可选 { 原始值式枚举成员集 }
原始值式枚举成员集 → 原始值式枚举成员 原始值式枚举成员集可选
原始值式枚举成员 → 声明 | 原始值式枚举 case 子句 | 编译控制语句
原始值式枚举 case 子句 → 特性可选 case 原始值式枚举 case 集
原始值式枚举 case 集 → 原始值式枚举 case | 原始值式枚举 case , 原始值式枚举 case 集
原始值式枚举 case → 枚举的 case 名 原始值赋值可选
原始值赋值 → = 原始值字面量
原始值字面量(raw-value-literal) → 数值字面量 | 静态字符串字面量 | 布尔字面量
结构体声明语法 结构体声明 → 特性可选 访问级别修饰符可选 struct 结构体名称 泛型参数子句可选 类型继承子句可选 泛型 where 子句可选 结构体主体 结构体名称 → 标识符 结构体主体 → { 结构体成员集可选 }
结构体声明语法
结构体声明 → 特性可选 访问级别修饰符可选 struct 结构体名称 泛型参数子句可选 类型继承子句可选 泛型 where 子句可选 结构体主体
结构体名称 → 标识符
结构体主体 → { 结构体成员集可选 }
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8