Lines Matching refs:recognizer

76     public function reset(Parser $recognizer) : void
78 $this->endErrorCondition($recognizer);
85 * @param Parser $recognizer The parser instance.
87 protected function beginErrorCondition(Parser $recognizer) : void
92 public function inErrorRecoveryMode(Parser $recognizer) : bool
101 protected function endErrorCondition(Parser $recognizer) : void
114 public function reportMatch(Parser $recognizer) : void
116 $this->endErrorCondition($recognizer);
137 public function reportError(Parser $recognizer, RecognitionException $e) : void
141 if ($this->inErrorRecoveryMode($recognizer)) {
146 $this->beginErrorCondition($recognizer);
149 $this->reportNoViableAlternative($recognizer, $e);
151 $this->reportInputMismatch($recognizer, $e);
153 $this->reportFailedPredicate($recognizer, $e);
155 $recognizer->notifyErrorListeners($e->getMessage(), $e->getOffendingToken(), $e);
166 public function recover(Parser $recognizer, RecognitionException $e) : void
168 $inputStream = $recognizer->getInputStream();
176 && $this->lastErrorStates->contains($recognizer->getState())
182 $recognizer->consume();
191 $this->lastErrorStates->addOne($recognizer->getState());
193 $followSet = $this->getErrorRecoverySet($recognizer);
195 $this->consumeUntil($recognizer, $followSet);
242 public function sync(Parser $recognizer) : void
244 $interpreter = $recognizer->getInterpreter();
251 $s = $interpreter->atn->states[$recognizer->getState()];
254 if ($this->inErrorRecoveryMode($recognizer)) {
258 $tokens = $recognizer->getInputStream();
267 $nextTokens = $recognizer->getATN()->nextTokens($s);
281 $this->nextTokensContext = $recognizer->getContext();
282 $this->nextTokensState = $recognizer->getState();
293 if ($this->singleTokenDeletion($recognizer) !== null) {
297 throw new InputMismatchException($recognizer);
301 $this->reportUnwantedToken($recognizer);
302 $expecting = $recognizer->getExpectedTokens();
303 $whatFollowsLoopIterationOrRule = $expecting->orSet($this->getErrorRecoverySet($recognizer));
304 $this->consumeUntil($recognizer, $whatFollowsLoopIterationOrRule);
317 * @param Parser $recognizer The parser instance.
322 protected function reportNoViableAlternative(Parser $recognizer, NoViableAltException $e) : void
324 $tokens = $recognizer->getTokenStream();
344 $recognizer->notifyErrorListeners($msg, $e->getOffendingToken(), $e);
351 * @param Parser $recognizer The parser instance.
356 protected function reportInputMismatch(Parser $recognizer, InputMismatchException $e) : void
367 $expectedTokens->toStringVocabulary($recognizer->getVocabulary())
370 $recognizer->notifyErrorListeners($msg, $e->getOffendingToken(), $e);
377 * @param Parser $recognizer The parser instance.
382 protected function reportFailedPredicate(Parser $recognizer, FailedPredicateException $e) : void
384 $msg = \sprintf('rule %s %s', $recognizer->getCurrentRuleName(), $e->getMessage());
386 $recognizer->notifyErrorListeners($msg, $e->getOffendingToken(), $e);
394 * `$recognizer` is in error recovery mode.
405 * @param Parser $recognizer The parser instance.
407 protected function reportUnwantedToken(Parser $recognizer) : void
409 if ($this->inErrorRecoveryMode($recognizer)) {
413 $this->beginErrorCondition($recognizer);
415 $t = $recognizer->getCurrentToken();
417 $expecting = $this->getExpectedTokens($recognizer);
422 $expecting->toStringVocabulary($recognizer->getVocabulary())
425 $recognizer->notifyErrorListeners($msg, $t);
432 * method returns, `$recognizer` is in error recovery mode.
443 * @param Parser $recognizer the parser instance
445 protected function reportMissingToken(Parser $recognizer) : void
447 if ($this->inErrorRecoveryMode($recognizer)) {
451 $this->beginErrorCondition($recognizer);
453 $t = $recognizer->getCurrentToken();
454 $expecting = $this->getExpectedTokens($recognizer);
458 $expecting->toStringVocabulary($recognizer->getVocabulary()),
462 $recognizer->notifyErrorListeners($msg, $t);
515 public function recoverInline(Parser $recognizer) : Token
518 $matchedSymbol = $this->singleTokenDeletion($recognizer);
523 $recognizer->consume();
529 if ($this->singleTokenInsertion($recognizer)) {
530 return $this->getMissingSymbol($recognizer);
535 throw new InputMismatchException($recognizer);
538 throw new InputMismatchException($recognizer, $this->nextTokensState, $this->nextTokensContext);
545 * input. If this method returns `true`, `$recognizer` will be in error
554 * @param Parser $recognizer The parser instance.
559 protected function singleTokenInsertion(Parser $recognizer) : bool
561 $stream = $recognizer->getInputStream();
567 $interpreter = $recognizer->getInterpreter();
581 $currentState = $atn->states[$recognizer->getState()];
583 $expectingAtLL2 = $atn->nextTokensInContext($next, $recognizer->getContext());
586 $this->reportMissingToken($recognizer);
599 * returns non-null, `$recognizer` will _not_ be in error recovery mode
608 * @param Parser $recognizer The parser instance.
614 protected function singleTokenDeletion(Parser $recognizer) : ?Token
616 $inputStream = $recognizer->getInputStream();
623 $expecting = $this->getExpectedTokens($recognizer);
626 $this->reportUnwantedToken($recognizer);
627 $recognizer->consume(); // simply delete extra token
629 $matchedSymbol = $recognizer->getCurrentToken();
630 $this->reportMatch($recognizer); // we know current token is correct
640 * The recognizer attempts to recover from single missing
657 protected function getMissingSymbol(Parser $recognizer) : Token
659 $currentSymbol = $recognizer->getCurrentToken();
665 $inputStream = $recognizer->getInputStream();
677 $expecting = $this->getExpectedTokens($recognizer);
688 $tokenText = \sprintf('<missing %s>', $recognizer->getVocabulary()->getDisplayName($expectedTokenType));
698 return $recognizer->getTokenFactory()->createEx(
713 protected function getExpectedTokens(Parser $recognizer) : IntervalSet
715 return $recognizer->getExpectedTokens();
855 protected function getErrorRecoverySet(Parser $recognizer) : IntervalSet
857 $interpreter = $recognizer->getInterpreter();
864 $ctx = $recognizer->getContext();
886 protected function consumeUntil(Parser $recognizer, IntervalSet $set) : void
888 $inputStream = $recognizer->getInputStream();
897 $recognizer->consume();