public function lex(string $value) : array
{
foreach (self::PATTERNS as $pattern => $tokenTypeConstant) {
if (1 === preg_match($pattern, $value, $matches)) {
if (null === $tokenTypeConstant) {
throw InvalidArgumentExceptionFactory::createForInvalidExpressionLanguageToken($value);
}
return [new Token($matches[0], new TokenType($tokenTypeConstant))];
}
}
return $this->lexer->lex($value);
}