С параметром направления direction.
Производство экранирующего Атома — AtomEscape :: DecimalEscape оценивается следующим образом:
1. Вычислите DecimalEscape, чтобы получить целое число n. 2. Утверждено: n ≤ NcapturingParens. 3. Вернуть ! BackreferenceMatcher(n, direction).
Производство экранирующего Атома — AtomEscape :: CharacterEscape оценивается следующим образом:
1. Оцените CharacterEscape, чтобы получить символ ch. 2. Пусть A будет одно-элементным CharSet, содержащим символ ch. 3. Вернуть ! CharacterSetMatcher(A, false, direction).
Производство экранирующего Атома — AtomEscape :: CharacterClassEscape оценивается следующим образом:
1. Вычислите CharacterClassEscape, чтобы получить CharSet A. 2. Вернуть ! CharacterSetMatcher(A, false, direction).
Управляющая последовательность в форме \, за которой следует ненулевое десятичное число n, соответствует результату n-го набора захватывающих скобок (22.2.2.1). Будет ошибкой, если в регулярном выражении меньше n захватывающих скобок. Если в регулярном выражении есть n или более захватывающих скобок, но n-я скобка является undefined, потому что она ничего не захватила, то обратная ссылка всегда выполняется успешно.
Производство экранирующего Атома — AtomEscape :: k GroupName оценивается следующим образом:
1. Найдите в охватывающем Шаблоне Pattern экземпляр GroupSpecifier, содержащий RegExpIdentifierName, у которого CapturingGroupName совпадает с CapturingGroupName для RegExpIdentifierName, содержащегося в GroupName. 2. Утверждено: найден уникальный такой GroupSpecifier. 3. Пусть parenIndex будет числом скобок с левым захватом во всем регулярном выражении, которые встречаются слева от расположенного GroupSpecifier. Это общее количество узлов синтаксического анализа Atom :: ( GroupSpecifier Disjunction ) до или включающих обнаруженный GroupSpecifier, включая непосредственно включающий Atom. 4. Вернуть ! BackreferenceMatcher(parenIndex, direction).
BackreferenceMatcher ( n, direction )
Абстрактная операция BackreferenceMatcher (Сопоставитель обратных ссылок) принимает аргументы n (положительное целое число) и направление direction (1 или -1). При вызове он выполняет следующие шаги:
1. Утверждено: n ≥ 1. 2. Верните новый Matcher с параметрами (x, c), который фиксирует n и направление direction и при вызове выполняет следующие шаги: а. Утверждено: x - это Состояние (State). b. Утверждено: c - это Продолжение (Continuation). c. Пусть cap будет списком захвата captures для x. d. Пусть s будет cap[n]. е. Если s является undefined, вернуть c(x). f. Пусть e будет endIndex для x. g. Пусть len будет количеством элементов в s. h. Пусть f будет e + direction × len. i. Если f < 0 или f > InputLength, вернуть ошибку failure. j. Пусть g будет min(e, f). k. Если существует целое число i между 0 (включительно) и len (исключающее), такое, что Canonicalize(s[i]) не является тем же символьным значением, что и Canonicalize(Input [g + i]), вернуть ошибку failure. l. Пусть y будет Состоянием (f, cap). m. Верните c(y).
Информационные ссылки
Предыдущий раздел — Атом (Atom) | Регулярные выражения (Regular Expression)
Стандарт ECMAScript — Раздел «AtomEscape» — https://tc39.es/ecma262/#sec-atomescape