/** * Constructor. * * @param Stream $stream * @param Token|null $expected */ public function __construct(Stream $stream, Token $expected = null) { $this->actual = $stream->current(); $this->expected = $expected; $this->tokenLine = $this->actual->getLine(); $message = sprintf('Unexpected token %s at line %d ("%s").', (string) $this->actual, $this->tokenLine, $stream->humanize()); if ($this->expected !== null) { $message = sprintf('%s Expects token %s.', $message, (string) $this->expected); } parent::__construct($message); }