1*37748cd8SNickeau<?php 2*37748cd8SNickeau 3*37748cd8SNickeaudeclare(strict_types=1); 4*37748cd8SNickeau 5*37748cd8SNickeaunamespace Antlr\Antlr4\Runtime\Tree; 6*37748cd8SNickeau 7*37748cd8SNickeauuse Antlr\Antlr4\Runtime\Interval; 8*37748cd8SNickeauuse Antlr\Antlr4\Runtime\RuleContext; 9*37748cd8SNickeauuse Antlr\Antlr4\Runtime\Token; 10*37748cd8SNickeau 11*37748cd8SNickeauclass TerminalNodeImpl implements TerminalNode 12*37748cd8SNickeau{ 13*37748cd8SNickeau /** @var Token */ 14*37748cd8SNickeau public $symbol; 15*37748cd8SNickeau 16*37748cd8SNickeau /** @var ParseTree|null */ 17*37748cd8SNickeau public $parent; 18*37748cd8SNickeau 19*37748cd8SNickeau public function __construct(Token $symbol) 20*37748cd8SNickeau { 21*37748cd8SNickeau $this->symbol = $symbol; 22*37748cd8SNickeau } 23*37748cd8SNickeau 24*37748cd8SNickeau public function getChild(int $i, ?string $type = null) : ?Tree 25*37748cd8SNickeau { 26*37748cd8SNickeau return null; 27*37748cd8SNickeau } 28*37748cd8SNickeau 29*37748cd8SNickeau public function getSymbol() : Token 30*37748cd8SNickeau { 31*37748cd8SNickeau return $this->symbol; 32*37748cd8SNickeau } 33*37748cd8SNickeau 34*37748cd8SNickeau /** 35*37748cd8SNickeau * @return ParseTree|null 36*37748cd8SNickeau */ 37*37748cd8SNickeau public function getParent() : ?Tree 38*37748cd8SNickeau { 39*37748cd8SNickeau return $this->parent; 40*37748cd8SNickeau } 41*37748cd8SNickeau 42*37748cd8SNickeau public function setParent(RuleContext $parent) : void 43*37748cd8SNickeau { 44*37748cd8SNickeau $this->parent = $parent; 45*37748cd8SNickeau } 46*37748cd8SNickeau 47*37748cd8SNickeau public function getPayload() : Token 48*37748cd8SNickeau { 49*37748cd8SNickeau return $this->symbol; 50*37748cd8SNickeau } 51*37748cd8SNickeau 52*37748cd8SNickeau public function getSourceInterval() : Interval 53*37748cd8SNickeau { 54*37748cd8SNickeau if ($this->symbol === null) { 55*37748cd8SNickeau return new Interval(-1, -2); 56*37748cd8SNickeau } 57*37748cd8SNickeau 58*37748cd8SNickeau $tokenIndex = $this->symbol->getTokenIndex(); 59*37748cd8SNickeau 60*37748cd8SNickeau return new Interval($tokenIndex, $tokenIndex); 61*37748cd8SNickeau } 62*37748cd8SNickeau 63*37748cd8SNickeau public function getChildCount() : int 64*37748cd8SNickeau { 65*37748cd8SNickeau return 0; 66*37748cd8SNickeau } 67*37748cd8SNickeau 68*37748cd8SNickeau public function accept(ParseTreeVisitor $visitor) 69*37748cd8SNickeau { 70*37748cd8SNickeau return $visitor->visitTerminal($this); 71*37748cd8SNickeau } 72*37748cd8SNickeau 73*37748cd8SNickeau public function getText() : ?string 74*37748cd8SNickeau { 75*37748cd8SNickeau return $this->symbol->getText(); 76*37748cd8SNickeau } 77*37748cd8SNickeau 78*37748cd8SNickeau /** 79*37748cd8SNickeau * @param array<string>|null $ruleNames 80*37748cd8SNickeau */ 81*37748cd8SNickeau public function toStringTree(?array $ruleNames = null) : string 82*37748cd8SNickeau { 83*37748cd8SNickeau return (string) $this; 84*37748cd8SNickeau } 85*37748cd8SNickeau 86*37748cd8SNickeau public function __toString() : string 87*37748cd8SNickeau { 88*37748cd8SNickeau if ($this->symbol->getType() === Token::EOF) { 89*37748cd8SNickeau return '<EOF>'; 90*37748cd8SNickeau } 91*37748cd8SNickeau 92*37748cd8SNickeau return $this->symbol->getText() ?? ''; 93*37748cd8SNickeau } 94*37748cd8SNickeau} 95