ECMAScript | Терминаторы линий

Также как и кодовые точки пробела (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 для целей отчетности по номерам строк.

Синтаксис Терминатора Линии

LineTerminator ::

<LF>
<CR>
<LS>
<PS>

LineTerminatorSequence ::

<LF>
<CR> [lookahead ≠ <LF>]
<LS>
<PS>
<CR><LF>

Информационные ссылки

ECMAScript | Язык ECMAScript: лексическая грамматика

Стандарт ECMAScript — Раздел «12.3 Line Terminators» — https://tc39.es/ecma262/#sec-line-terminators

Поделись записью