public function getToken($buffer, $offset)
{
$char = substr($buffer, $offset, 1);
foreach ($this->_tokenChars as $type => $expectedChar) {
if ($char === $expectedChar) {
return new Scanner\Token($type, $char, $offset);
}
}
foreach ($this->_tokenPatterns as $type => $pattern) {
$tokenString = $this->matchPattern($buffer, $offset, $pattern);
if (!empty($tokenString)) {
return new Scanner\Token($type, $tokenString, $offset);
}
}
return NULL;
}