in experiments/Lexer.php [670:727]
private function scanDqEscapeSequence($text, & $pos, $endOfFilePos) {
if ($pos >= $endOfFilePos) {
// ERROR
return;
}
$char = ord($text[$pos]);
switch ($char) {
// dq-simple-escape-sequence
case CharacterCodes::_doubleQuote:
case CharacterCodes::_backslash:
case CharacterCodes::_dollar:
case CharacterCodes::e:
case CharacterCodes::f:
case CharacterCodes::r:
case CharacterCodes::t:
case CharacterCodes::v:
$pos++;
return;
// dq-hexadecimal-escape-sequence
case CharacterCodes::x:
case CharacterCodes::X:
$pos++;
for ($i = 0; $i<2; $i++) {
if (isset($text[$pos]) && $this->isHexadecimalDigit(ord($text[$pos]))) {
$pos++;
}
}
return;
// dq-unicode-escape-sequence
case CharacterCodes::u:
$pos++;
if (isset($text[$pos]) && ord($text[$pos]) === CharacterCodes::_openBrace) {
$this->scanHexadecimalLiteral($text, $pos, $endOfFilePos);
if (isset($text[$pos]) && ord($text[$pos]) === CharacterCodes::_closeBrace) {
$pos++;
return;
}
// OTHERWISE ERROR
}
return;
default:
// dq-octal-digit-escape-sequence
if ($this->isOctalDigitChar(ord($text[$pos]))) {
for ($i = $pos; $i < $pos + 3; $i++) {
if (!(isset($text[$i]) || $this->isOctalDigitChar(ord($text[$i])))) {
return;
}
$pos++;
return;
}
}
$pos++;
return;
}
}