1*37748cd8SNickeau<?php 2*37748cd8SNickeau 3*37748cd8SNickeaudeclare(strict_types=1); 4*37748cd8SNickeau 5*37748cd8SNickeaunamespace Antlr\Antlr4\Runtime\Atn\Transitions; 6*37748cd8SNickeau 7*37748cd8SNickeauuse Antlr\Antlr4\Runtime\Atn\States\ATNState; 8*37748cd8SNickeau 9*37748cd8SNickeaufinal class ActionTransition extends Transition 10*37748cd8SNickeau{ 11*37748cd8SNickeau /** @var int */ 12*37748cd8SNickeau public $ruleIndex; 13*37748cd8SNickeau 14*37748cd8SNickeau /** @var int */ 15*37748cd8SNickeau public $actionIndex; 16*37748cd8SNickeau 17*37748cd8SNickeau /** 18*37748cd8SNickeau * e.g. $i ref in action 19*37748cd8SNickeau * 20*37748cd8SNickeau * @var bool 21*37748cd8SNickeau */ 22*37748cd8SNickeau public $isCtxDependent; 23*37748cd8SNickeau 24*37748cd8SNickeau public function __construct(ATNState $target, int $ruleIndex, int $actionIndex = -1, bool $isCtxDependent = false) 25*37748cd8SNickeau { 26*37748cd8SNickeau parent::__construct($target); 27*37748cd8SNickeau 28*37748cd8SNickeau $this->ruleIndex = $ruleIndex; 29*37748cd8SNickeau $this->actionIndex = $actionIndex; 30*37748cd8SNickeau $this->isCtxDependent = $isCtxDependent; 31*37748cd8SNickeau } 32*37748cd8SNickeau 33*37748cd8SNickeau public function matches(int $symbol, int $minVocabSymbol, int $maxVocabSymbol) : bool 34*37748cd8SNickeau { 35*37748cd8SNickeau return false; 36*37748cd8SNickeau } 37*37748cd8SNickeau 38*37748cd8SNickeau /** 39*37748cd8SNickeau * {@inheritdoc} 40*37748cd8SNickeau */ 41*37748cd8SNickeau public function isEpsilon() : bool 42*37748cd8SNickeau { 43*37748cd8SNickeau return true; 44*37748cd8SNickeau } 45*37748cd8SNickeau 46*37748cd8SNickeau public function getSerializationType() : int 47*37748cd8SNickeau { 48*37748cd8SNickeau return self::ACTION; 49*37748cd8SNickeau } 50*37748cd8SNickeau 51*37748cd8SNickeau public function equals(object $other) : bool 52*37748cd8SNickeau { 53*37748cd8SNickeau if ($this === $other) { 54*37748cd8SNickeau return true; 55*37748cd8SNickeau } 56*37748cd8SNickeau 57*37748cd8SNickeau if (!$other instanceof self) { 58*37748cd8SNickeau return false; 59*37748cd8SNickeau } 60*37748cd8SNickeau 61*37748cd8SNickeau return $this->ruleIndex === $other->ruleIndex 62*37748cd8SNickeau && $this->actionIndex === $other->actionIndex 63*37748cd8SNickeau && $this->isCtxDependent === $other->isCtxDependent 64*37748cd8SNickeau && $this->target->equals($other->target); 65*37748cd8SNickeau } 66*37748cd8SNickeau 67*37748cd8SNickeau public function __toString() : string 68*37748cd8SNickeau { 69*37748cd8SNickeau return \sprintf('action_%d:%d', $this->ruleIndex, $this->actionIndex); 70*37748cd8SNickeau } 71*37748cd8SNickeau} 72