Files
huangjingfen/pro_v3.5.1/vendor/doctrine/lexer/tests/EnumLexer.php

56 lines
974 B
PHP
Raw Normal View History

2026-03-07 22:29:07 +08:00
<?php
declare(strict_types=1);
namespace Doctrine\Tests\Common\Lexer;
use Doctrine\Common\Lexer\AbstractLexer;
use function in_array;
use function is_numeric;
/** @extends AbstractLexer<TokenType, string|int> */
class EnumLexer extends AbstractLexer
{
/**
* {@inheritDoc}
*/
protected function getCatchablePatterns(): array
{
return [
'=|<|>',
'[a-z]+',
'\d+',
];
}
/**
* {@inheritDoc}
*/
protected function getNonCatchablePatterns(): array
{
return [
'\s+',
'(.)',
];
}
/**
* {@inheritDoc}
*/
protected function getType(&$value): TokenType
{
if (is_numeric($value)) {
$value = (int) $value;
return TokenType::INT;
}
if (in_array($value, ['=', '<', '>'])) {
return TokenType::OPERATOR;
}
return TokenType::STRING;
}
}