1: <?php
2:
3: namespace BN\Compiler\Scanner\Converter;
4:
5: use BN\Compiler\Token\Token;
6: use BN\Compiler\Token\TokenType;
7: use BN\Compiler\Scanner\LexemeConverter;
8:
9: class LexemeToUnsignedNumber implements LexemeConverter
10: {
11: public function canConvertLexeme($lexeme)
12: {
13: return $this->isStringNumeric($lexeme)
14: && $this->noUnarySign($lexeme);
15: }
16:
17: private function isStringNumeric($lexeme)
18: {
19: return is_string($lexeme) && is_numeric($lexeme);
20: }
21:
22: private function noUnarySign($lexeme)
23: {
24: return !in_array($lexeme[0], array('+', '-'), true);
25: }
26:
27: public function convertLexeme($lexeme)
28: {
29: return new Token(TokenType::NUMBER, $lexeme);
30: }
31: }
32: