public function getToken($buffer, $offset)
{
if ('"' === substr($buffer, $offset, 1)) {
return new Scanner\Token(Scanner\Token::DOUBLEQUOTE_STRING_END, '"', $offset);
} else {
$tokenString = substr($buffer, $offset, 2);
if ('\\"' == $tokenString || '\\\\' == $tokenString) {
return new Scanner\Token(Scanner\Token::STRING_ESCAPED_CHARACTER, $tokenString, $offset);
} else {
$tokenString = $this->matchPattern($buffer, $offset, '([^\\\\"]+)S');
if (!empty($tokenString)) {
return new Scanner\Token(Scanner\Token::STRING_CHARACTERS, $tokenString, $offset);
}
}
}
return NULL;
}