Lines Matching refs:dfa

187  * `dfa.edges[t]` null, or `dfa.edges[t]` to be non-null. The
190 * simulation. It could also race trying to get `dfa.edges[t]`, but either
292 protected $dfa;
342 $dfa = $this->decisionToDFA[$decision];
343 $this->dfa = $dfa;
350 if ($dfa->isPrecedenceDfa()) {
354 $s0 = $dfa->getPrecedenceStartState($this->parser->getPrecedence());
357 $s0 = $dfa->s0;
364 $dfa->decision,
372 if ($dfa->atnStartState === null) {
377 $dfa->atnStartState,
382 if ($dfa->isPrecedenceDfa()) {
391 if ($dfa->s0 === null) {
395 $dfa->s0->configs = $s0_closure; // not used for prediction but useful to know start configs anyway
399 $s0 = $this->addDFAState($dfa, new DFAState($s0_closure));
401 $dfa->setPrecedenceStartState($this->parser->getPrecedence(), $s0);
403 $s0 = $this->addDFAState($dfa, new DFAState($s0_closure));
404 $dfa->s0 = $s0;
408 $alt = $this->execATN($dfa, $s0, $input, $index, $outerContext);
411 $this->log[] = \sprintf('DFA after predictATN: %s', $dfa->toString($this->parser->getVocabulary()));
417 $this->dfa = null;
455 DFA $dfa,
466 $dfa->decision,
485 $D = $this->computeTargetState($dfa, $previousD, $t);
562 if ($dfa->atnStartState === null) {
566 $s0_closure = $this->computeStartState($dfa->atnStartState, $outerContext, true);
569 $dfa,
576 return $this->execATNWithFullContext($dfa, $D, $s0_closure, $input, $startIndex, $outerContext);
598 $this->reportAmbiguity($dfa, $D, $startIndex, $stopIndex, false, $alts, $D->configs);
640 * @param DFA $dfa The DFA
649 public function computeTargetState(DFA $dfa, DFAState $previousD, int $t) : ?DFAState
654 $this->addDFAEdge($dfa, $previousD, $t, self::error());
703 $decisionState = $this->atn->getDecisionState($dfa->decision);
714 // All adds to dfa are done after we've created full D state
715 $D = $this->addDFAEdge($dfa, $previousD, $t, $D);
753 DFA $dfa,
852 $this->reportContextSensitivity($dfa, $predictedAlt, $reach, $startIndex, $input->getIndex());
885 $this->reportAmbiguity($dfa, $D, $startIndex, $input->getIndex(), $foundExactAmbig, null, $reach);
1545 $fullCtx = false; // in dfa
1752 if ($this->dfa && $this->dfa->isPrecedenceDfa()) {
1754 && $this->dfa->atnStartState !== null
1755 && $t->getOutermostPrecedenceReturn() === $this->dfa->atnStartState->ruleIndex) {
2330 * @param DFA $dfa The DFA
2339 protected function addDFAEdge(DFA $dfa, ?DFAState $from, int $t, ?DFAState $to) : ?DFAState
2349 $to = $this->addDFAState($dfa, $to);// used existing if possible not incoming
2362 $this->log[] = 'DFA =' . \PHP_EOL . $dfa->toString($this->parser->getVocabulary());
2377 * @param DFA $dfa The dfa
2386 protected function addDFAState(DFA $dfa, DFAState $D) : DFAState
2392 $existing = $dfa->states->get($D);
2398 $D->stateNumber = $dfa->states->count();
2405 $dfa->states->add($D);
2415 DFA $dfa,
2427 $dfa->decision,
2436 $dfa,
2446 DFA $dfa,
2458 $dfa->decision,
2467 $dfa,
2480 DFA $dfa,
2503 $dfa,