1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
<?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<string, string|int> */
class ConcreteLexer extends AbstractLexer
{
final public const INT = 'int';
/**
* {@inheritDoc}
*/
protected function getCatchablePatterns(): array
{
return [
'=|<|>',
'[a-z]+',
'\d+',
];
}
/**
* {@inheritDoc}
*/
protected function getNonCatchablePatterns(): array
{
return [
'\s+',
'(.)',
];
}
protected function getType(string|int|float &$value): string
{
if (is_numeric($value)) {
$value = (int) $value;
return 'int';
}
if (in_array($value, ['=', '<', '>'])) {
return 'operator';
}
return 'string';
}
}
|