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