/** * Throw a syntax error * * @param string $expected * @throws ParserException */ private function syntaxError($expected) { $token = $this->lexer->lookahead; $tokenPosition = isset($token['position']) ? $token['position'] : '-1'; $message = sprintf('line 0, col %s: Error: Expected %s, got ', $tokenPosition, $expected); if ($this->lexer->lookahead === null) { $message .= 'end of string'; } else { $message .= $this->lexer->getLiteral($token['type']); } throw new ParserException($message); }
/** * Assert an expected token * * @param mixed $expected * @param mixed $actual */ private function assertToken($expected, $actual) { $this->assertEquals($expected, $actual, sprintf('Expected %s, got %s', $this->lexer->getLiteral($expected), $this->lexer->getLiteral($actual))); }