1*37748cd8SNickeau<?php 2*37748cd8SNickeau 3*37748cd8SNickeaudeclare(strict_types=1); 4*37748cd8SNickeau 5*37748cd8SNickeaunamespace Antlr\Antlr4\Runtime\Atn\Actions; 6*37748cd8SNickeau 7*37748cd8SNickeauuse Antlr\Antlr4\Runtime\Comparison\Hasher; 8*37748cd8SNickeauuse Antlr\Antlr4\Runtime\Lexer; 9*37748cd8SNickeau 10*37748cd8SNickeau/** 11*37748cd8SNickeau * Implements the `more` lexer action by calling {@see Lexer::more()}. 12*37748cd8SNickeau * 13*37748cd8SNickeau * The `more` command does not have any parameters, so this action is 14*37748cd8SNickeau * implemented as a singleton instance exposed by {@see LexerMoreAction::INSTANCE()}. 15*37748cd8SNickeau * 16*37748cd8SNickeau * @author Sam Harwell 17*37748cd8SNickeau */ 18*37748cd8SNickeaufinal class LexerMoreAction implements LexerAction 19*37748cd8SNickeau{ 20*37748cd8SNickeau /** 21*37748cd8SNickeau * Provides a singleton instance of this parameterless lexer action. 22*37748cd8SNickeau */ 23*37748cd8SNickeau public static function instance() : self 24*37748cd8SNickeau { 25*37748cd8SNickeau static $instance; 26*37748cd8SNickeau 27*37748cd8SNickeau return $instance = $instance ?? new self(); 28*37748cd8SNickeau } 29*37748cd8SNickeau 30*37748cd8SNickeau /** 31*37748cd8SNickeau * {@inheritdoc} 32*37748cd8SNickeau * 33*37748cd8SNickeau * @return int This method returns {@see LexerActionType::MORE}. 34*37748cd8SNickeau */ 35*37748cd8SNickeau public function getActionType() : int 36*37748cd8SNickeau { 37*37748cd8SNickeau return LexerActionType::MORE; 38*37748cd8SNickeau } 39*37748cd8SNickeau 40*37748cd8SNickeau /** 41*37748cd8SNickeau * {@inheritdoc} 42*37748cd8SNickeau * 43*37748cd8SNickeau * @return bool This method returns `false`. 44*37748cd8SNickeau */ 45*37748cd8SNickeau public function isPositionDependent() : bool 46*37748cd8SNickeau { 47*37748cd8SNickeau return false; 48*37748cd8SNickeau } 49*37748cd8SNickeau 50*37748cd8SNickeau /** 51*37748cd8SNickeau * {@inheritdoc} 52*37748cd8SNickeau * 53*37748cd8SNickeau * This action is implemented by calling {@see Lexer::more()}. 54*37748cd8SNickeau */ 55*37748cd8SNickeau public function execute(Lexer $lexer) : void 56*37748cd8SNickeau { 57*37748cd8SNickeau $lexer->more(); 58*37748cd8SNickeau } 59*37748cd8SNickeau 60*37748cd8SNickeau public function hashCode() : int 61*37748cd8SNickeau { 62*37748cd8SNickeau return Hasher::hash($this->getActionType()); 63*37748cd8SNickeau } 64*37748cd8SNickeau 65*37748cd8SNickeau public function equals(object $other) : bool 66*37748cd8SNickeau { 67*37748cd8SNickeau if ($this === $other) { 68*37748cd8SNickeau return true; 69*37748cd8SNickeau } 70*37748cd8SNickeau 71*37748cd8SNickeau return $other instanceof self; 72*37748cd8SNickeau } 73*37748cd8SNickeau 74*37748cd8SNickeau public function __toString() : string 75*37748cd8SNickeau { 76*37748cd8SNickeau return 'more'; 77*37748cd8SNickeau } 78*37748cd8SNickeau} 79