11.3 行终结符
就像空白符代码单元一样,行终结符代码单元也是用来改善源代码的可读性以及分割tokens(不可分割的词法单元)。然而也有不同之处,行终结符对语法文法的行为有一定的影响。一般情况下,行终结符可以出现在任何两个 token 之间,但也有少数地方,语法文法禁止这样做。行终结符也影响自动插入分号过程。行终结符不能出现在 StringLiteral, Template, or TemplateSubstitutionTail 之外的任何 token 内。行终结符只能出现在作为 LineContinuation 一部分的 StringLiteral token 里。
行终结符可以出现在 MultiLineComment(7.4)内,但不能出现在 SingleLineComment 内。
正则表达式的 \s 类匹配的空白字符集中包含行终结符。
表 33 列出了 ECMAScript 的行终止字符
代码单元 | Unicode名称 | 简写 |
---|---|---|
U+000A | LINE FEED (LF) | < LF > |
U+000D | CARRIAGE RETURN (CR) | < CR > |
U+2028 | LINE SEPARATOR | < LS > |
U+2029 | PARAGRAPH SEPARATOR | < PS > |
只有在表33中列出的Unicode字符会被当做行终结符,其他新行或者折行代码单元不会被当做行终结符,但是如果符合表32的话会被当做空白符。< CR > < LF >这个组合一般是被当作行终结符。计算行数时会被当作单个 SourceCharacter
语法:
LineTerminator::
<LF>
<CR>
<LS>
<PS>
LineTerminatorSequence::
<LF>
<CR>[lookahead ≠ <LF>]
<LS>
<PS>
<CR><LF>