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\Utils\StringUtils; 10*37748cd8SNickeau 11*37748cd8SNickeaufinal class RangeTransition extends Transition 12*37748cd8SNickeau{ 13*37748cd8SNickeau /** @var int */ 14*37748cd8SNickeau public $from; 15*37748cd8SNickeau 16*37748cd8SNickeau /** @var int */ 17*37748cd8SNickeau public $to; 18*37748cd8SNickeau 19*37748cd8SNickeau public function __construct(ATNState $target, int $from, int $to) 20*37748cd8SNickeau { 21*37748cd8SNickeau parent::__construct($target); 22*37748cd8SNickeau 23*37748cd8SNickeau $this->from = $from; 24*37748cd8SNickeau $this->to = $to; 25*37748cd8SNickeau } 26*37748cd8SNickeau 27*37748cd8SNickeau public function label() : ?IntervalSet 28*37748cd8SNickeau { 29*37748cd8SNickeau return IntervalSet::fromRange($this->from, $this->to); 30*37748cd8SNickeau } 31*37748cd8SNickeau 32*37748cd8SNickeau public function matches(int $symbol, int $minVocabSymbol, int $maxVocabSymbol) : bool 33*37748cd8SNickeau { 34*37748cd8SNickeau return $symbol >= $this->from && $symbol <= $this->to; 35*37748cd8SNickeau } 36*37748cd8SNickeau 37*37748cd8SNickeau public function getSerializationType() : int 38*37748cd8SNickeau { 39*37748cd8SNickeau return self::RANGE; 40*37748cd8SNickeau } 41*37748cd8SNickeau 42*37748cd8SNickeau public function equals(object $other) : bool 43*37748cd8SNickeau { 44*37748cd8SNickeau if ($this === $other) { 45*37748cd8SNickeau return true; 46*37748cd8SNickeau } 47*37748cd8SNickeau 48*37748cd8SNickeau return $other instanceof self 49*37748cd8SNickeau && $this->from === $other->from 50*37748cd8SNickeau && $this->to === $other->to 51*37748cd8SNickeau && $this->target->equals($other->target); 52*37748cd8SNickeau } 53*37748cd8SNickeau 54*37748cd8SNickeau public function __toString() : string 55*37748cd8SNickeau { 56*37748cd8SNickeau return \sprintf( 57*37748cd8SNickeau '\'%s\'..\'%s\'', 58*37748cd8SNickeau StringUtils::char($this->from), 59*37748cd8SNickeau StringUtils::char($this->to) 60*37748cd8SNickeau ); 61*37748cd8SNickeau } 62*37748cd8SNickeau} 63