ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:19.75KB ,
资源ID:11779096      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-11779096.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Swift语言词法结构.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

Swift语言词法结构.docx

1、Swift语言词法结构Swift语言词法结构Swift 的“词法结构(lexical structure)”描述了如何在该语言中用字符序列构建合法标记,组成该语言中最底层的代码块,并在之后的章节中用于描述语言的其他部分。通常,标记在随后介绍的语法约束下,由 Swift 源文件的输入文本中提取可能的最长子串生成。这种方法称为“最长匹配项(longest match)”,或者“最大适合”(maximal munch)。1、空白与注释空白(whitespace)有两个用途:分隔源文件中的标记和区分运算符属于前缀还是后缀,(参见 运算符)在其他情况下则会被忽略。以下的字符会被当作空白:空格(space

2、)(U+0020)、换行符(line feed)(U+000A)、回车符(carriage return)(U+000D)、水平 tab(horizontal tab)(U+0009)、垂直 tab(vertical tab)(U+000B)、换页符(form feed)(U+000C)以及空(null)(U+0000)。注释(comments)被编译器当作空白处理。单行注释由 / 开始直到该行结束。多行注释由 /* 开始,以 */ 结束。可以嵌套注释,但注意注释标记必须匹配。2、标识符标识符(identifiers)可以由以下的字符开始:大写或小写的字母 A 到 Z、下划线 _、基本多语言面

3、(Basic Multilingual Plane)中的 Unicode 非组合字符以及基本多语言面以外的非专用区(Private Use Area)字符。首字符之后,标识符允许使用数字和 Unicode 字符组合。使用保留字(reserved word)作为标识符,需要在其前后增加反引号。例如,class 不是合法的标识符,但可以使用class。反引号不属于标识符的一部分,x和 x 表示同一标识符。 闭包(closure)中如果没有明确指定参数名称,参数将被隐式命名为 $0、$1、$2. 这些命名在闭包作用域内是合法的标识符。 标识符语法 identifier identifier-head

4、­ identifier-characters­ opt identifier identifier-head identifier-characters opt identifier implicit-parameter-nameidentifier-list identifier | identifier , identifier-listidentifier-head A 到 Z 大写或小写字母identifier-head U+00A8, U+00AA, U+00AD, U+00AF, U+00B2U+00B5, 或 U+00B7U+00BAidentifier-hea

5、d U+00BCU+00BE, U+00C0U+00D6, U+00D8U+00F6, 或 U+00F8U+00FFidentifier-head U+0100U+02FF, U+0370U+167F, U+1681U+180D, 或 U+180FU+1DBFidentifier-head U+1E00U+1FFFidentifier-head U+200BU+200D, U+202AU+202E, U+203FU+2040, U+2054, 或 U+2060U+206Fidentifier-head U+2070U+20CF, U+2100U+218F, U+2460U+24FF, 或 U+

6、2776U+2793identifier-head U+2C00U+2DFF 或 U+2E80U+2FFFidentifier-head U+3004U+3007, U+3021U+302F, U+3031U+303F, 或 U+3040U+D7FFidentifier-head U+F900U+FD3D, U+FD40U+FDCF, U+FDF0U+FE1F, 或 U+FE30U+FE44identifier-head U+FE47U+FFFDidentifier-head U+10000U+1FFFD, U+20000U+2FFFD, U+30000U+3FFFD, 或 U+40000U+

7、4FFFDidentifier-head U+50000U+5FFFD, U+60000U+6FFFD, U+70000U+7FFFD, 或 U+80000U+8FFFDidentifier-head U+90000U+9FFFD, U+A0000U+AFFFD, U+B0000U+BFFFD, 或 U+C0000U+CFFFDidentifier-head U+D0000U+DFFFD 或 U+E0000U+EFFFDidentifier-character 数字 0 到 9identifier-character U+0300U+036F, U+1DC0U+1DFF, U+20D0U+20

8、FF, or U+FE20U+FE2Fidentifier-character identifier-headidentifier-characters identifier-character identifier-characters optimplicit-parameter-name $ decimal-digits3、关键字被保留的关键字(keywords)不允许用作标识符,除非被反引号转义,参见 标识符。用作声明的关键字: class、deinit、enum、extension、func、import、init、let、protocol、static、struct、subscrip

9、t、typealias、var用作语句的关键字: break、case、continue、default、do、else、fallthrough、if、in、for、return、switch、where、while用作表达和类型的关键字: as、dynamicType、is、new、super、self、Self、Type、COLUMN、FILE、FUNCTION、LINE特定上下文中被保留的关键字: associativity、didSet、get、infix、inout、left、mutating、none、nonmutating、operator、override、postfix、pr

10、ecedence、prefix、right、set、unowned、unowned(safe)、unowned(unsafe)、weak、willSet,这些关键字在特定上下文之外可以被用于标识符。4、字面量字面值表示整型、浮点型数字或文本类型的值,举例如下:42 / 整型字面量3.14159 / 浮点型字面量“Hello, world!” / 文本型字面量字面量语法literal integer-literal | floating-point-literal | string-literal整型字面量整型字面量(integer literals)表示未指定精度整型数的值。整型字面量默认用十

11、进制表示,可以加前缀来指定其他的进制,二进制字面量加 0b,八进制字面量加 0o,十六进制字面量加 0x。十进制字面量包含数字 0 至 9。二进制字面量只包含 0 或 1,八进制字面量包含数字 0 至 7,十六进制字面量包含数字 0 至 9 以及字母 A 至 F (大小写均可)。负整数的字面量在数字前加减号 -,比如 -42。允许使用下划线 _ 来增加数字的可读性,下划线不会影响字面量的值。整型字面量也可以在数字前加 0,同样不会影响字面量的值。1000_000 / 等于 1000000005 / 等于 5除非特殊指定,整型字面量的默认类型为 Swift 标准库类型中的 Int。Swift 标

12、准库还定义了其他不同长度以及是否带符号的整数类型,请参考 整数类型。整型字面量语法integer-literal binary-literalinteger-literal octal-literalinteger-literal decimal-literalinteger-literal hexadecimal-literalbinary-literal 0b binary-digit binary-literal-characters optbinary-digit 数字 0 或 1binary-literal-character binary-digit | _binary-liter

13、al-characters binary-literal-character binary-literal-characters optoctal-literal 0o octal-digit octal-literal-characters optoctal-digit 数字 0 至 7octal-literal-character octal-digit | _octal-literal-characters octal-literal-character octal-literal-characters optdecimal-literal decimal-digit decimal-l

14、iteral-characters optdecimal-digit 数字 0 至 9decimal-digits decimal-digit decimal-digits optdecimal-literal-character decimal-digit | _decimal-literal-characters decimal-literal-character decimal-literal-characters opthexadecimal-literal 0x hexadecimal-digit hexadecimal-literal-characters opthexadecim

15、al-digit 数字 0 到 9, a 到 f, 或 A 到 Fhexadecimal-literal-character hexadecimal-digit | _hexadecimal-literal-characters hexadecimal-literal-character hexadecimal-literal-characters opt浮点型字面量浮点型字面量(floating-point literals)表示未指定精度浮点数的值。浮点型字面量默认用十进制表示(无前缀),也可以用十六进制表示(加前缀 0x)。十进制浮点型字面量(decimal floating-point

16、 literals)由十进制数字串后跟小数部分或指数部分(或两者皆有)组成。十进制小数部分由小数点 . 后跟十进制数字串组成。指数部分由大写或小写字母 e 后跟十进制数字串组成,这串数字表示 e 之前的数量乘以 10 的几次方。例如:1.25e2 表示 1.25 102,也就是 125.0;同样,1.25e2 表示 1.25 102,也就是 0.0125。十六进制浮点型字面量(hexadecimal floating-point literals)由前缀 0x 后跟可选的十六进制小数部分以及十六进制指数部分组成。十六进制小数部分由小数点后跟十六进制数字串组成。指数部分由大写或小写字母 p 后跟

17、十进制数字串组成,这串数字表示 p 之前的数量乘以 2 的几次方。例如:0xFp2 表示 15 22,也就是 60;同样,0xFp-2 表示 15 2-2,也就是 3.75。与整型字面量不同,负的浮点型字面量由一元运算符减号 和浮点型字面量组成,例如 -42.0。这代表一个表达式,而不是一个浮点整型字面量。允许使用下划线 _ 来增强可读性,下划线不会影响字面量的值。浮点型字面量也可以在数字前加 0,同样不会影响字面量的值。10_000.56 / 等于 10000.56005000.76 / 等于 5000.76除非特殊指定,浮点型字面量的默认类型为 Swift 标准库类型中的 Double,表

18、示64位浮点数。Swift 标准库也定义 Float 类型,表示32位浮点数。浮点型字面量语法floating-point-literal decimal-literal decimal-fraction opt decimal-exponent optfloating-point-literal hexadecimal-literal hexadecimal-fraction opt hexadecimal-exponentdecimal-fraction . decimal-literaldecimal-exponent floating-point-e sign opt decimal-

19、literalhexadecimal-fraction . hexadecimal-literal opthexadecimal-exponent floating-point-p sign opt hexadecimal-literalfloating-point-e e | Efloating-point-p p | Psign + | -文本型字面量文本型字面量(string literal)由双引号中的字符串组成,形式如下:“characters”文本型字面量中不能包含未转义的双引号 “、未转义的反斜线、回车符(carriage return)或换行符(line feed)。可以在文本

20、型字面量中使用的转义特殊符号如下:空字符(Null Character)0反斜线(Backslash)水平 Tab (Horizontal Tab)t换行符(Line Feed)n回车符(Carriage Return)r双引号(Double Quote)”单引号(Single Quote)字符也可以用以下方式表示:x 后跟两位十六进制数字u 后跟四位十六进制数字U 后跟八位十六进制数字后跟的数字表示一个 Unicode 码点。文本型字面量允许在反斜线小括号 () 中插入表达式的值。插入表达式(interpolated expression)不能包含未转义的双引号 “、反斜线 、回车符或者换行

21、符。表达式值的类型必须在 String 类中有对应的初始化方法。例如,以下所有文本型字面量的值相同:“1 2 3“1 2 (3)”“1 2 (1 + 2)”var x = 3; “1 2 (x)”文本型字面量的默认类型为 String。组成字符串的字符类型为 Character。更多有关 String 和 Character 的信息请参照 字符串和字符。文本型字面量语法string-literal “ quoted-text ”quoted-text quoted-text-item quoted-text optquoted-text-item escaped-characterquoted

22、-text-item ( expression )quoted-text-item 除 “、U+000A 或 U+000D 以外的任何 Unicode 扩展字符集escaped-character 0 | | t | n | r | ” | escaped-character x hexadecimal-digit hexadecimal-digitescaped-character u hexadecimal-digit hexadecimal-digit hexadecimal-digit hexadecimal-digitescaped-character U hexadecimal-d

23、igit hexadecimal-digit hexadecimal-digit hexadecimal-digit hexadecimal-digit hexadecimal-digit hexadecimal-digit hexadecimal-digit5、运算符Swift 标准库定义了许多可供使用的运算符,其中大部分在 基础运算符 和 高级运算符 中进行了阐述。这里将描述哪些字符能用作运算符。运算符由一个或多个以下字符组成: /、=、-、+、!、%、&、|、.。也就是说,标记 =, -、/、/、*/、. 以及一元前缀运算符 & 属于保留字,这些标记不能被重写或用于自定义运算符。运算符两

24、侧的空白被用来区分该运算符是否为前缀运算符(prefix operator)、后缀运算符(postfix operator)或二元运算符(binary operator)。规则总结如下:如果运算符两侧都有空白或两侧都无空白,将被看作二元运算符。例如:a+b 和 a + b 中的运算符 + 被看作二元运算符。如果运算符只有左侧空白,将被看作前缀一元运算符。例如 a +b 中的 + 被看作前缀一元运算符。如果运算符只有右侧空白,将被看作后缀一元运算符。例如 a+ b 中的 + 被看作后缀一元运算符。如果运算符左侧没有空白并紧跟 .,将被看作后缀一元运算符。例如 a+.b 中的 + 被看作后缀一元运

25、算符(同理, a+ . b 中的 + 是后缀一元运算符而 a + .b 中的 + 不是).鉴于这些规则,运算符前的字符 (、 和 ;运算符后的字符 )、 和 以及字符 ,、; 和 : 都将用于空白检测。以上规则需注意一点,如果运算符 ! 或 ? 左侧没有空白,则不管右侧是否有空白都将被看作后缀运算符。如果将 ? 用作可选类型(optional type)修饰,左侧必须无空白。如果用于条件运算符 ? :,必须两侧都有空白。在特定构成中 ,以 开头的运算符会被分离成两个或多个标记,剩余部分以同样的方式会被再次分离。因此,在 DictionaryString, Array 中没有必要添加空白来消除闭合字符 的歧义。在这个例子中, 闭合字符 被看作单字符标记,而不会被误解为移位运算符 。要学习如何自定义新的运算符,请参考 自定义操作符 和 运算符声明。学习如何重写现有运算符,请参考 运算符方法。运算符语法operator operator-character operator optoperator-character / | = | - | + | ! | * | % | | & | | | | | .binary-operator operatorprefix-operator operatorpostfix-operator operator

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2