protected function expect($token, $do_next = true, $try_next = false, $next_on_match = 1)
{
if ($do_next) {
if ($do_next === 1) {
$this->next();
} else {
$this->next_no_whitespace();
}
}
if (is_int($token)) {
if ($this->token !== $token && (!$try_next || ($try_next === 1 && $this->next() !== $token || $try_next === true && $this->next_no_whitespace() !== $token))) {
$this->addError('Unexpected "' . $this->getTokenString() . '"');
return false;
}
} else {
if ($this->doc[$this->pos] !== $token && (!$try_next || ($try_next === 1 && $this->next() !== self::TOK_NULL || $try_next === true && $this->next_no_whitespace() !== self::TOK_NULL) && $this->doc[$this->pos] !== $token)) {
$this->addError('Expected "' . $token . '", but found "' . $this->getTokenString() . '"');
return false;
}
}
if ($next_on_match) {
if ($next_on_match === 1) {
$this->next();
} else {
$this->next_no_whitespace();
}
}
return true;
}