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*37748cd8SNickeauuse Antlr\Antlr4\Runtime\IntervalSet; 9*37748cd8SNickeauuse Antlr\Antlr4\Runtime\Token; 10*37748cd8SNickeau 11*37748cd8SNickeau/** 12*37748cd8SNickeau * A transition containing a set of values. 13*37748cd8SNickeau */ 14*37748cd8SNickeauclass SetTransition extends Transition 15*37748cd8SNickeau{ 16*37748cd8SNickeau /** @var IntervalSet */ 17*37748cd8SNickeau public $set; 18*37748cd8SNickeau 19*37748cd8SNickeau public function __construct(ATNState $target, ?IntervalSet $set = null) 20*37748cd8SNickeau { 21*37748cd8SNickeau parent::__construct($target); 22*37748cd8SNickeau 23*37748cd8SNickeau if ($set !== null) { 24*37748cd8SNickeau $this->set = $set; 25*37748cd8SNickeau } else { 26*37748cd8SNickeau $this->set = new IntervalSet(); 27*37748cd8SNickeau $this->set->addOne(Token::INVALID_TYPE); 28*37748cd8SNickeau } 29*37748cd8SNickeau } 30*37748cd8SNickeau 31*37748cd8SNickeau public function matches(int $symbol, int $minVocabSymbol, int $maxVocabSymbol) : bool 32*37748cd8SNickeau { 33*37748cd8SNickeau return $this->set->contains($symbol); 34*37748cd8SNickeau } 35*37748cd8SNickeau 36*37748cd8SNickeau public function label() : ?IntervalSet 37*37748cd8SNickeau { 38*37748cd8SNickeau return $this->set; 39*37748cd8SNickeau } 40*37748cd8SNickeau 41*37748cd8SNickeau public function getSerializationType() : int 42*37748cd8SNickeau { 43*37748cd8SNickeau return self::SET; 44*37748cd8SNickeau } 45*37748cd8SNickeau 46*37748cd8SNickeau public function equals(object $other) : bool 47*37748cd8SNickeau { 48*37748cd8SNickeau if ($this === $other) { 49*37748cd8SNickeau return true; 50*37748cd8SNickeau } 51*37748cd8SNickeau 52*37748cd8SNickeau return $other instanceof self 53*37748cd8SNickeau && $this->set->equals($other->set) 54*37748cd8SNickeau && $this->target->equals($other->target); 55*37748cd8SNickeau } 56*37748cd8SNickeau 57*37748cd8SNickeau public function __toString() : string 58*37748cd8SNickeau { 59*37748cd8SNickeau return (string) $this->set; 60*37748cd8SNickeau } 61*37748cd8SNickeau} 62