Lines Matching defs:atn

137         $atn = $this->readATN();
138 $this->readStates($atn);
139 $this->readRules($atn);
140 $this->readModes($atn);
157 $this->readEdges($atn, $sets);
158 $this->readDecisions($atn);
159 $this->readLexerActions($atn);
160 $this->markPrecedenceDecisions($atn);
161 $this->verifyATN($atn);
163 if ($atn->grammarType === ATN::ATN_TYPE_PARSER
165 $this->generateRuleBypassTransitions($atn);
167 $this->verifyATN($atn);
170 return $atn;
227 private function readStates(ATN $atn) : void
238 $atn->addState(null);
266 $atn->addState($s);
272 $pair[0]->loopBackState = $atn->states[$pair[1]];
276 $endState = $atn->states[$pair[1]];
288 $decisionState = $atn->states[$this->readInt()];
300 $ruleStartState = $atn->states[$this->readInt()];
310 private function readRules(ATN $atn) : void
314 $atn->ruleToTokenType = [];
315 $atn->ruleToStartState = [];
318 $startState = $atn->states[$s];
324 $atn->ruleToStartState[$i] = $startState;
326 if ($atn->grammarType === ATN::ATN_TYPE_LEXER) {
333 $atn->ruleToTokenType[$i] = $tokenType;
337 $atn->ruleToStopState = [];
338 foreach ($atn->states as $state) {
343 $atn->ruleToStopState[$state->ruleIndex] = $state;
344 $atn->ruleToStartState[$state->ruleIndex]->stopState = $state;
348 private function readModes(ATN $atn) : void
353 $tokensStartState = $atn->states[$this->readInt()];
359 $atn->modeToStartState[] = $tokensStartState;
392 private function readEdges(ATN $atn, array &$sets) : void
403 $trans = $this->edgeFactory($atn, $ttype, $src, $trg, $arg1, $arg2, $arg3, $sets);
404 $srcState = $atn->states[$src];
409 foreach ($atn->states as $state) {
416 if ($atn->ruleToStartState[$t->target->ruleIndex]->isLeftRecursiveRule) {
423 $atn->ruleToStopState[$t->target->ruleIndex]->addTransition($trans);
427 foreach ($atn->states as $state) {
462 private function readDecisions(ATN $atn) : void
469 $decState = $atn->states[$s];
471 $atn->decisionToState[] = $decState;
477 private function readLexerActions(ATN $atn) : void
479 if ($atn->grammarType === ATN::ATN_TYPE_LEXER) {
482 $atn->lexerActions = [];
498 $atn->lexerActions[$i] = $lexerAction;
503 private function generateRuleBypassTransitions(ATN $atn) : void
505 $count = \count($atn->ruleToStartState);
508 $atn->ruleToTokenType[$i] = $atn->maxTokenType + $i + 1;
512 $this->generateRuleBypassTransition($atn, $i);
516 private function generateRuleBypassTransition(ATN $atn, int $idx) : void
520 $atn->addState($bypassStart);
524 $atn->addState($bypassStop);
527 $atn->defineDecisionState($bypassStart);
532 if ($atn->ruleToStartState[$idx]->isLeftRecursiveRule) {
536 foreach ($atn->states as $state) {
558 $endState = $atn->ruleToStopState[$idx];
563 foreach ($atn->states as $state) {
576 $ruleToStartState = $atn->ruleToStartState[$idx];
585 $atn->ruleToStartState[$idx]->addTransition(new EpsilonTransition($bypassStart));
594 $atn->addState($matchState);
595 $matchState->addTransition(new AtomTransition($bypassStop, $atn->ruleToTokenType[$idx] ?? 0));
628 * @param ATN $atn The ATN.
630 private function markPrecedenceDecisions(ATN $atn) : void
632 foreach ($atn->states as $state) {
640 if ($atn->ruleToStartState[$state->ruleIndex]->isLeftRecursiveRule) {
653 private function verifyATN(ATN $atn) : void
660 foreach ($atn->states as $state) {
761 ATN $atn,
770 $target = $atn->states[$trg];
782 $ruleStart = $atn->states[$arg1];