xref: /plugin/combo/vendor/antlr/antlr4-php-runtime/src/Atn/Transitions/ActionTransition.php (revision 37748cd8654635afbeca80942126742f0f4cc346)
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