public function testSuccess() { $lexer = new Lexer('foo and'); $this->assertEquals('foo', $lexer->match(Tokens::T_IDENTIFIER)); $this->assertEquals('and', $lexer->match(Tokens::T_AND)); $this->assertTrue($lexer->isEol()); $lexer->reset(); $this->assertTrue($lexer->isNextToken(Tokens::T_IDENTIFIER)); $lexer->match(Tokens::T_IDENTIFIER); $this->assertEquals(' ', $lexer->match(Tokens::T_WHITESPACE, false)); }
protected function parseFieldIdentifier(Lexer $lexer) { $domain = array(); while ($lexer->isNextToken(Tokens::T_IDENTIFIER)) { $domain[] = $lexer->match(Tokens::T_IDENTIFIER); if ($lexer->isNextToken(Tokens::T_HIERARCHY_SEPARATOR)) { $lexer->match(Tokens::T_HIERARCHY_SEPARATOR); } } return new Expr\FieldIdentifier(implode('.', $domain)); }