Также как и кодовые точки пробела (white space code points), точки кода конца строки (line terminator code points) используются для улучшения читаемости исходного текста и для отделения лексем (неделимых лексических единиц) друг от друга. Однако, в отличие от кодовых точек пробелов, терминаторы строк имеют некоторое влияние на поведение синтаксической грамматики. В общем случае символы конца строки могут встречаться между любыми двумя токенами, но есть несколько мест, где они запрещены синтаксической грамматикой. Знаки конца строки также влияют на процесс автоматической вставки точки с запятой (раздел 12.9). Знак конца строки не может встречаться ни в одном токене, кроме StringLiteral, Template или TemplateSubstitutionTail. Знаки конца строки <LF> и <CR> не могут встречаться в токене StringLiteral, кроме как часть LineContinuation.
Знак конца строки может встречаться в MultiLineComment, но не может встречаться в SingleLineComment.
Знаки конца строки включаются в набор кодовых точек пробела, которые соответствуют классу \s в регулярных выражениях.
Кодовые точки окончания строки ECMAScript перечислены в таблице 39.
Code Point (Кодовая точка) | Name (Имя) | Abbreviation (Сокращённое название) |
---|---|---|
U+000A | LINE FEED (LF) | <LF> |
U+000D | CARRIAGE RETURN (CR) | <CR> |
U+2028 | LINE SEPARATOR | <LS> |
U+2029 | PARAGRAPH SEPARATOR | <PS> |
Таблица 39: Кодовые точки терминатора линии
Только кодовые точки Unicode в таблице 39 рассматриваются как терминаторы строки. Другие точки кода Unicode с новой строкой или разрывом строки не рассматриваются как терминаторы строки, но обрабатываются как пробелы, если они соответствуют требованиям, перечисленным в Таблице 38. Последовательность <CR><LF> обычно используется в качестве ограничителя строки. Его следует рассматривать как единый SourceCharacter для целей отчетности по номерам строк.
Синтаксис Терминатора Линии
<LF>
<CR>
<LS>
<PS>
<LF>
<CR> [lookahead ≠ <LF>]
<LS>
<PS>
<CR><LF>
Информационные ссылки
ECMAScript | Язык ECMAScript: лексическая грамматика
Стандарт ECMAScript — Раздел «12.3 Line Terminators» — https://tc39.es/ecma262/#sec-line-terminators