• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

nette / latte / 8336142063

19 Mar 2024 01:30AM UTC coverage: 94.097% (+0.03%) from 94.071%
8336142063

push

github

dg
hasBlock() fixed template retrieval [Closes #357]

1 of 1 new or added line in 1 file covered. (100.0%)

37 existing lines in 8 files now uncovered.

5037 of 5353 relevant lines covered (94.1%)

0.94 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.79
/src/Latte/Compiler/TagParserData.php
1
<?php
2

3
/**
4
 * This file is part of the Latte (https://latte.nette.org)
5
 * Copyright (c) 2008 David Grudl (https://davidgrudl.com)
6
 */
7

8
declare(strict_types=1);
9

10
namespace Latte\Compiler;
11

12
use Latte\Compiler\Nodes\Php as Node;
13
use Latte\Compiler\Nodes\Php\Expression;
14
use Latte\Compiler\Nodes\Php\Scalar;
15

16

17
/** @internal generated trait used by TagParser */
18
abstract class TagParserData
19
{
20
        /** Symbol number of error recovery token */
21
        protected const ErrorSymbol = 1;
22

23
        /** Action number signifying default action */
24
        protected const DefaultAction = -8190;
25

26
        /** Rule number signifying that an unexpected token was encountered */
27
        protected const UnexpectedTokenRule = 8191;
28

29
        protected const Yy2Tblstate = 257;
30

31
        /** Number of non-leaf states */
32
        protected const NumNonLeafStates = 354;
33

34
        /** Map of lexer tokens to internal symbols */
35
        protected const TokenToSymbol = [
36
                0,     113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,
37
                113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   48,    108,   113,   109,   47,    113,   113,
38
                102,   103,   45,    43,    2,     44,    39,    46,    113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   22,    106,
39
                35,    7,     37,    21,    59,    113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,
40
                113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   61,    113,   107,   27,    113,   113,   100,   113,   113,
41
                113,   98,    101,   113,   113,   113,   113,   113,   113,   99,    113,   113,   113,   113,   113,   113,   113,   113,   113,   113,
42
                113,   113,   113,   104,   26,    105,   50,    113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,
43
                113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,
44
                113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,
45
                113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,
46
                113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,
47
                113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,
48
                113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   113,   1,     3,     4,     5,
49
                6,     8,     9,     10,    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,    23,    24,    25,    28,    29,    30,
50
                31,    32,    33,    34,    36,    38,    40,    41,    42,    49,    51,    52,    53,    54,    55,    56,    57,    58,    60,    62,
51
                63,    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
52
                83,    84,    85,    86,    87,    88,    89,    90,    110,   91,    92,    93,    94,    111,   112,   95,    96,    97,
53
        ];
54

55
        /** Map of states to a displacement into the self::Action table. The corresponding action for this
56
         *  state/symbol pair is self::Action[self::ActionBase[$state] + $symbol]. If self::ActionBase[$state] is 0, the
57
         *  action is defaulted, i.e. self::ActionDefault[$state] should be used instead. */
58
        protected const ActionBase = [
59
                297,   326,   326,   326,   326,   99,    121,   326,   273,   177,   230,   326,   406,   406,   406,   406,   406,   219,   219,   219,
60
                219,   287,   287,   291,   277,   401,   402,   403,   404,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,
61
                -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,
62
                -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,
63
                -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,
64
                -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   133,   198,   214,   416,   432,   427,   436,   459,   460,   458,
65
                462,   468,   52,    52,    52,    52,    52,    52,    52,    52,    52,    52,    52,    52,    52,    52,    137,   182,   528,   213,
66
                213,   213,   213,   213,   213,   213,   213,   213,   213,   213,   213,   213,   213,   213,   213,   213,   213,   549,   549,   549,
67
                437,   362,   204,   412,   38,    110,   110,   513,   513,   513,   513,   513,   447,   81,    81,    81,    81,    500,   500,   271,
68
                271,   271,   271,   271,   271,   271,   271,   271,   272,   135,   135,   454,   13,    275,   275,   275,   228,   228,   228,   228,
69
                228,   181,   108,   108,   108,   236,   355,   409,   276,   207,   207,   207,   207,   207,   207,   282,   469,   -21,   132,   132,
70
                205,   167,   167,   132,   378,   -13,   122,   -34,   208,   332,   221,   143,   158,   2,     405,   259,   262,   299,   142,   219,
71
                470,   470,   219,   219,   219,   411,   64,    64,    64,    147,   180,   39,    293,   445,   293,   293,   293,   42,    26,    -74,
72
                268,   352,   344,   351,   268,   62,    98,    65,    354,   357,   352,   352,   104,   65,    65,    294,   300,   298,   134,   76,
73
                298,   290,   290,   109,   35,    363,   360,   369,   342,   341,   304,   234,   253,   284,   281,   337,   252,   363,   360,   369,
74
                263,   6,     310,   285,   285,   285,   285,   285,   285,   285,   285,   285,   285,   234,   452,   36,    288,   374,   375,   17,
75
                395,   397,   450,   296,   451,   285,   278,   305,   279,   461,   331,   24,    234,   466,   286,   384,   301,   306,   385,   292,
76
                467,   398,   280,   453,   140,   376,   165,   455,   185,   408,   260,   400,   465,   457,   0,     -43,   -43,   -43,   -43,   -43,
77
                -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,   -43,
78
                -43,   -43,   -43,   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
79
                0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
80
                0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
81
                0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
82
                0,     0,     0,     0,     52,    52,    52,    52,    52,    52,    52,    52,    52,    52,    52,    52,    0,     0,     0,     0,
83
                0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     52,    52,    52,    52,    52,    52,    52,    52,    52,    52,
84
                52,    52,    52,    52,    52,    52,    52,    52,    52,    52,    52,    52,    52,    52,    52,    52,    52,    0,     447,   52,
85
                52,    52,    52,    52,    52,    52,    0,     108,   108,   108,   108,   -22,   -22,   -22,   -22,   -22,   -22,   -22,   -22,   -22,
86
                -22,   -22,   108,   -22,   -22,   -22,   -22,   -22,   -22,   -22,   -22,   -22,   -22,   -22,   -22,   0,     0,     0,     0,     0,
87
                0,     0,     378,   290,   290,   290,   290,   290,   290,   378,   378,   0,     0,     0,     0,     108,   108,   0,     0,     378,
88
                290,   0,     0,     0,     0,     0,     0,     0,     219,   219,   219,   378,   0,     0,     290,   290,   0,     0,     0,     268,
89
                0,     0,     0,     0,     0,     0,     285,   36,    285,   285,   285,
90
        ];
91

92
        /** Table of actions. Indexed according to self::ActionBase comment. */
93
        protected const Action = [
94
                35,    36,    -269,  33,    -269,  37,    -50,   38,    179,   180,   39,    40,    41,    42,    43,    44,    45,    -48,   1,     193,
95
                46,    557,   558,   205,   -47,   539,   381,   -222,  16,    555,   285,   522,   242,   243,   196,   0,     286,   287,   7,     -47,
96
                -220,  288,   289,   208,   537,   178,   539,   -222,  -222,  -222,  541,   540,   563,   561,   562,   55,    56,    57,    -8190, 30,
97
                -220,  -220,  -220,  416,   11,    224,   290,   15,    197,   -220,  198,   541,   540,   24,    566,   58,    59,    60,    22,    61,
98
                62,    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
99
                102,   195,   362,   363,   361,   -269,  191,   381,   418,   -269,  417,   234,   82,    -8190, -8190, -8190, -8191, -8191, -8191, -8191,
100
                73,    74,    75,    76,    362,   363,   361,   360,   359,   446,   379,   -8190, 380,   -8190, -8190, -8190, 383,   -8190, -8190, -8190,
101
                -8190, 372,   99,    -78,   12,    -78,   106,   290,   366,   360,   359,   77,    78,    79,    80,    81,    196,   195,   -267,  172,
102
                -267,  194,   47,    372,   13,    201,   339,   296,   82,    -78,   366,   107,   297,   368,   235,   236,   367,   373,   298,   299,
103
                362,   363,   361,   194,   47,    -8190, -8190, 201,   641,   296,   25,    108,   642,   -217,  297,   368,   235,   236,   367,   373,
104
                298,   299,   427,   -22,   18,    360,   359,   -8190, -8190, -8190, -8190, -8190, 26,    -217,  -217,  -217,  -8190, -8190, -8190, 372,
105
                20,    -265,  -217,  -265,  427,   -8190, 366,   -8190, -8190, -8190, 418,   -8190, 417,   362,   363,   361,   207,   -184,  -52,   194,
106
                47,    96,    -223,  201,   14,    296,   -78,   360,   359,   -184,  297,   368,   235,   236,   367,   373,   298,   299,   360,   359,
107
                97,    -267,  -223,  -223,  -223,  -267,  32,    109,   27,    31,    -183,  -183,  372,   379,   -23,   380,   362,   363,   361,   366,
108
                427,   -17,   -183,  -183,  -16,   19,    212,   213,   214,   209,   210,   211,   194,   47,    172,   241,   201,   -223,  296,   98,
109
                105,   360,   359,   297,   368,   235,   236,   367,   373,   298,   299,   100,   74,    75,    76,    372,   290,   -223,  -223,  -223,
110
                192,   28,    366,   418,   -265,  417,   -183,  199,   -265,  362,   363,   361,   1,     427,   200,   194,   47,    250,   -183,  201,
111
                381,   296,   195,   555,   381,   82,    297,   368,   235,   236,   367,   373,   298,   299,   360,   359,   289,   103,   322,   381,
112
                -8190, 278,   643,   567,   101,   -8190, -8190, -8190, 372,   568,   -8190, -192,  345,   50,    164,   366,   427,   51,    240,   224,
113
                290,   -252,  -251,  -8190, 290,   -8190, -8190, -8190, 194,   47,    21,    391,   201,   226,   296,   34,    260,   3,     177,   297,
114
                368,   235,   236,   367,   373,   298,   299,   -250,  54,    362,   363,   361,   -226,  246,   247,   248,   -219,  48,    49,    17,
115
                83,    84,    85,    86,    87,    88,    89,    90,    91,    92,    93,    94,    95,    -225,  360,   359,   -219,  -219,  -219,  -224,
116
                -8190, -8190, -8190, 2,     4,     -219,  5,     381,   372,   630,   362,   363,   361,   6,     8,     366,   9,     -226,  -8190, 10,
117
                -8190, -8190, 29,    468,   470,   52,    23,    183,   194,   47,    -218,  53,    201,   -217,  296,   196,   189,   190,   239,   297,
118
                368,   235,   236,   367,   373,   298,   299,   275,   277,   372,   -218,  -218,  -218,  -217,  -217,  -217,  366,   101,   510,   -218,
119
                553,   428,   -217,  525,   531,   533,   535,   585,   -29,   365,   364,   -225,  259,   376,   505,   377,   -8190, -8190, -8190, 330,
120
                369,   368,   371,   370,   367,   373,   374,   375,   360,   359,   334,   -8190, -8190, -8190, -8190, 544,   -8190, -8190, -8190, 511,
121
                -8190, -8190, -8190, -8191, -8191, -8191, -8191, -8191, 610,   418,   104,   417,   -8190, -8190, -8190, 638,   640,   -29,   392,   552,
122
                639,   1,     521,   342,   637,   594,   250,   608,   582,   381,   -8190, 353,   555,   598,   633,   347,   0,     556,   0,     290,
123
                0,     0,     0,     0,     288,   289,   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
124
                0,     0,     50,    0,     0,     0,     0,     0,     224,   290,
125
        ];
126

127
        /** Table indexed analogously to self::Action. If self::ActionCheck[self::ActionBase[$state] + $symbol] != $symbol
128
         *  then the action is defaulted, i.e. self::ActionDefault[$state] should be used instead. */
129
        protected const ActionCheck = [
130
                43,    44,    0,     77,    2,     48,    0,     50,    51,    52,    53,    54,    55,    56,    57,    58,    59,    0,     61,    62,
131
                63,    64,    65,    66,    0,     68,    69,    61,    2,     72,    73,    105,   75,    76,    21,    0,     79,    80,    2,     0,
132
                61,    84,    85,    86,    66,    6,     68,    81,    82,    83,    93,    94,    95,    96,    97,    3,     4,     5,     71,    102,
133
                81,    82,    83,    85,    2,     108,   109,   2,     26,    90,    28,    93,    94,    21,    87,    23,    24,    25,    2,     27,
134
                28,    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
135
                2,     49,    3,     4,     5,     103,   2,     69,    95,    107,   97,    2,     60,    3,     4,     5,     35,    36,    37,    38,
136
                39,    40,    41,    42,    3,     4,     5,     28,    29,    103,   66,    21,    68,    23,    24,    25,    2,     27,    28,    29,
137
                3,     42,    104,   0,     2,     2,     6,     109,   49,    28,    29,    43,    44,    45,    46,    47,    21,    49,    0,     26,
138
                2,     62,    63,    42,    22,    66,    44,    68,    60,    26,    49,    6,     73,    74,    75,    76,    77,    78,    79,    80,
139
                3,     4,     5,     62,    63,    3,     4,     66,    66,    68,    91,    6,     70,    61,    73,    74,    75,    76,    77,    78,
140
                79,    80,    103,   22,    6,     28,    29,    3,     4,     5,     43,    44,    91,    81,    82,    83,    3,     4,     5,     42,
141
                6,     0,     90,    2,     103,   21,    49,    23,    24,    25,    95,    27,    97,    3,     4,     5,     103,   90,    103,   62,
142
                63,    7,     61,    66,    102,   68,    103,   28,    29,    102,   73,    74,    75,    76,    77,    78,    79,    80,    28,    29,
143
                7,     103,   81,    82,    83,    107,   61,    7,     91,    61,    90,    90,    42,    66,    22,    68,    3,     4,     5,     49,
144
                103,   22,    102,   102,   22,    22,    81,    82,    83,    81,    82,    83,    62,    63,    26,    90,    66,    61,    68,    22,
145
                22,    28,    29,    73,    74,    75,    76,    77,    78,    79,    80,    104,   40,    41,    42,    42,    109,   81,    82,    83,
146
                22,    91,    49,    95,    103,   97,    90,    26,    107,   3,     4,     5,     61,    103,   28,    62,    63,    66,    102,   66,
147
                69,    68,    49,    72,    69,    60,    73,    74,    75,    76,    77,    78,    79,    80,    28,    29,    85,    61,    67,    69,
148
                85,    74,    70,    87,    91,    3,     4,     5,     42,    87,    71,    90,    78,    102,   90,    49,    103,   102,   90,    108,
149
                109,   102,   102,   21,    109,   23,    24,    25,    62,    63,    104,   91,    66,    61,    68,    98,    99,    100,   101,   73,
150
                74,    75,    76,    77,    78,    79,    80,    102,   104,   3,     4,     5,     102,   81,    82,    83,    61,    91,    92,    7,
151
                8,     9,     10,    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,    102,   28,    29,    81,    82,    83,    102,
152
                3,     4,     5,     102,   102,   90,    102,   69,    42,    71,    3,     4,     5,     102,   102,   49,    102,   102,   21,    102,
153
                23,    24,    102,   51,    52,    102,   88,    89,    62,    63,    61,    102,   66,    61,    68,    21,    102,   102,   102,   73,
154
                74,    75,    76,    77,    78,    79,    80,    103,   103,   42,    81,    82,    83,    81,    82,    83,    49,    91,    103,   90,
155
                103,   103,   90,    103,   103,   103,   103,   103,   103,   62,    63,    102,   104,   66,    103,   68,    3,     4,     5,     103,
156
                73,    74,    75,    76,    77,    78,    79,    80,    28,    29,    103,   3,     4,     5,     21,    103,   23,    24,    25,    103,
157
                27,    28,    29,    30,    31,    32,    33,    34,    103,   95,    22,    97,    3,     4,     5,     105,   105,   103,   105,   107,
158
                105,   61,    105,   105,   105,   105,   66,    105,   107,   69,    21,    106,   72,    107,   107,   107,   -1,    108,   -1,    109,
159
                -1,    -1,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
160
                -1,    -1,    102,   -1,    -1,    -1,    -1,    -1,    108,   109,
161
        ];
162

163
        /** Map of states to their default action */
164
        protected const ActionDefault = [
165
                8191,  263,   263,   31,    263,   8191,  8191,  263,   8191,  8191,  8191,  29,    8191,  8191,  8191,  29,    8191,  8191,  8191,  8191,
166
                8191,  39,    29,    8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  215,   215,   215,   8191,  8191,  8191,  8191,  8191,  8191,
167
                8191,  8191,  8191,  8191,  8191,  8191,  8191,  10,    8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,
168
                8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,
169
                8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,
170
                8191,  8191,  29,    8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  264,   264,   8191,  8191,  8191,  8191,  8191,  8191,  8191,
171
                8191,  8191,  1,     270,   271,   83,    77,    216,   266,   268,   79,    82,    80,    43,    44,    56,    120,   122,   154,   121,
172
                96,    101,   102,   103,   104,   105,   106,   107,   108,   109,   110,   111,   112,   113,   94,    95,    166,   155,   153,   152,
173
                118,   119,   125,   93,    8191,  123,   124,   142,   143,   140,   141,   144,   8191,  145,   146,   147,   148,   8191,  8191,  8191,
174
                8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  126,   69,    69,    69,    8191,  8191,  11,    8191,  8191,  8191,  8191,  8191,
175
                8191,  206,   132,   133,   135,   206,   205,   150,   8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  211,   115,   117,
176
                189,   127,   128,   97,    8191,  8191,  8191,  210,   8191,  278,   217,   217,   217,   217,   34,    34,    34,    8191,  89,    34,
177
                8191,  8191,  34,    34,    34,    8191,  8191,  8191,  8191,  195,   223,   217,   138,   8191,  129,   130,   131,   57,    8191,  8191,
178
                8191,  193,   182,   8191,  2,     28,    28,    28,    8191,  236,   237,   238,   28,    28,    28,    170,   36,    71,    28,    28,
179
                71,    8191,  8191,  28,    8191,  8191,  8191,  8191,  8191,  8191,  8191,  8191,  200,   8191,  221,   234,   185,   15,    20,    21,
180
                8191,  200,   219,   136,   137,   139,   158,   159,   160,   161,   162,   163,   164,   261,   8191,  257,   188,   8191,  8191,  217,
181
                8191,  8191,  277,   8191,  217,   134,   8191,  196,   241,   8191,  218,   217,   262,   8191,  8191,  8191,  59,    60,    8191,  8191,
182
                8191,  8191,  197,   8191,  8191,  8191,  8191,  8191,  8191,  8191,  55,    8191,  8191,  8191,
183
        ];
184

185
        /** Map of non-terminals to a displacement into the self::Goto table. The corresponding goto state for this
186
         *  non-terminal/state pair is self::Goto[self::GotoBase[$nonTerminal] + $state] (unless defaulted) */
187
        protected const GotoBase = [
188
                0,     0,     -1,    0,     0,     0,     108,   0,     226,   -12,   16,    -28,   0,     249,   -231,  0,     0,     0,     0,     225,
189
                219,   71,    -13,   255,   -2,    64,    0,     67,    0,     69,    -76,   0,     0,     -60,   -6,    1,     -5,    171,   0,     0,
190
                23,    0,     0,     72,    0,     0,     -18,   0,     0,     0,     34,    0,     0,     0,     0,     -77,   -44,   0,     0,     14,
191
                25,    112,   36,    42,    -67,   0,     0,     -51,   66,    0,     -15,   184,   236,   57,    0,     0,
192
        ];
193

194
        /** Table of states to goto after reduction. Indexed according to self::GotoBase comment. */
195
        protected const Goto = [
196
                112,   112,   111,   112,   317,   318,   112,   273,   274,   258,   111,   317,   318,   276,   333,   352,   140,   128,   129,   128,
197
                125,   125,   117,   138,   130,   130,   130,   130,   125,   110,   127,   127,   127,   122,   303,   304,   252,   305,   306,   307,
198
                308,   309,   310,   311,   312,   454,   454,   123,   124,   113,   114,   115,   116,   118,   136,   137,   139,   157,   160,   161,
199
                162,   165,   166,   167,   168,   169,   170,   171,   173,   174,   175,   176,   188,   202,   203,   204,   221,   222,   254,   255,
200
                256,   325,   141,   142,   143,   144,   145,   146,   147,   148,   149,   150,   151,   152,   153,   154,   155,   158,   119,   120,
201
                130,   131,   121,   159,   132,   133,   156,   134,   135,   181,   181,   181,   181,   328,   321,   181,   316,   316,   316,   181,
202
                412,   419,   421,   420,   422,   184,   186,   187,   186,   415,   415,   415,   415,   536,   536,   536,   415,   415,   415,   415,
203
                415,   225,   597,   597,   597,   538,   538,   538,   538,   538,   538,   538,   538,   538,   538,   538,   538,   237,   609,   609,
204
                609,   609,   609,   609,   251,   331,   218,   219,   230,   319,   324,   223,   231,   232,   233,   301,   301,   554,   554,   554,
205
                554,   554,   554,   554,   554,   554,   430,   430,   253,   595,   595,   576,   576,   576,   576,   576,   576,   576,   576,   576,
206
                576,   576,   574,   574,   574,   574,   574,   574,   574,   574,   574,   574,   574,   302,   302,   302,   302,   302,   302,   302,
207
                302,   302,   302,   302,   229,   602,   603,   300,   300,   300,   300,   229,   229,   300,   634,   635,   636,   300,   435,   341,
208
                229,   229,   644,   612,   405,   445,   444,   396,   320,   400,   348,   394,   386,   229,   338,   526,   313,   313,   408,   313,
209
                387,   426,   313,   530,   532,   628,   216,   503,   439,   534,   584,   586,   587,   527,   349,   332,   270,   271,   599,   600,
210
                601,   628,   629,   440,   0,     182,   182,   441,   0,     0,     0,     0,     0,     0,     629,   0,     0,     350,   529,   0,
211
                0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
212
                0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
213
                0,     0,     389,   389,   389,   0,     0,     389,   0,     0,     389,   389,   389,   0,     0,     0,     0,     0,     0,     0,
214
                0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
215
                0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     327,   0,     0,     0,     0,     0,     0,     0,     238,   0,
216
                0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
217
                0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     403,   403,
218
        ];
219

220
        /** Table indexed analogously to self::Goto. If self::GotoCheck[self::GotoBase[$nonTerminal] + $state] != $nonTerminal
221
         *  then the goto state is defaulted, i.e. self::GotoDefault[$nonTerminal] should be used. */
222
        protected const GotoCheck = [
223
                2,     2,     2,     2,     14,    14,    2,     36,    36,    36,    2,     14,    14,    14,    46,    46,    2,     2,     2,     2,
224
                2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
225
                2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
226
                2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
227
                2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
228
                2,     2,     2,     2,     2,     2,     2,     2,     2,     6,     6,     6,     6,     67,    61,    6,     55,    55,    55,    6,
229
                30,    30,    30,    30,    30,    6,     6,     6,     6,     33,    33,    33,    33,    33,    33,    33,    33,    33,    33,    33,
230
                33,    64,    67,    67,    67,    56,    56,    56,    56,    56,    56,    56,    56,    56,    56,    56,    56,    64,    67,    67,
231
                67,    67,    67,    67,    22,    22,    22,    22,    22,    22,    22,    22,    22,    22,    22,    24,    24,    24,    24,    24,
232
                24,    24,    24,    24,    24,    24,    37,    37,    71,    67,    67,    59,    59,    59,    59,    59,    59,    59,    59,    59,
233
                59,    59,    60,    60,    60,    60,    60,    60,    60,    60,    60,    60,    60,    62,    62,    62,    62,    62,    62,    62,
234
                62,    62,    62,    62,    10,    70,    70,    8,     8,     8,     8,     10,    10,    8,     9,     9,     9,     8,     11,    11,
235
                10,    10,    10,    72,    11,    11,    11,    19,    20,    21,    11,    11,    13,    10,    25,    11,    23,    23,    27,    23,
236
                13,    29,    23,    35,    35,    73,    63,    43,    40,    35,    35,    35,    35,    50,    34,    23,    68,    68,    68,    68,
237
                68,    73,    73,    40,    -1,    6,     6,     40,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    10,    10,    -1,
238
                -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
239
                -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
240
                -1,    -1,    6,     6,     6,     -1,    -1,    6,     -1,    -1,    6,     6,     6,     -1,    -1,    -1,    -1,    -1,    -1,    -1,
241
                -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
242
                -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    8,     -1,    -1,    -1,    -1,    -1,    -1,    -1,    8,     -1,
243
                -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
244
                -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,    23,
245
        ];
246

247
        /** Map of non-terminals to the default state to goto after their reduction */
248
        protected const GotoDefault = [
249
                -8192, 284,   126,   264,   357,   358,   185,   378,   326,   607,   593,   384,   265,   614,   282,   281,   453,   343,   279,   395,
250
                344,   399,   163,   291,   292,   335,   272,   407,   244,   424,   257,   336,   337,   262,   346,   548,   267,   429,   266,   245,
251
                438,   442,   452,   261,   519,   280,   329,   523,   351,   283,   528,   583,   263,   293,   268,   545,   249,   220,   294,   227,
252
                217,   314,   206,   215,   627,   228,   295,   581,   269,   589,   596,   315,   613,   626,   323,   340,
253
        ];
254

255
        /** Map of rules to the non-terminal on their left-hand side, i.e. the non-terminal to use for
256
         *  determining the state to goto after reduction. */
257
        protected const RuleToNonTerminal = [
258
                0,     1,     1,     1,     1,     6,     6,     7,     7,     7,     7,     7,     7,     7,     7,     7,     7,     7,     7,     7,
259
                7,     7,     8,     8,     8,     9,     9,     10,    11,    11,    4,     4,     12,    12,    14,    14,    15,    15,    16,    17,
260
                17,    18,    18,    19,    19,    5,     5,     21,    21,    21,    21,    25,    25,    26,    26,    27,    27,    29,    29,    29,
261
                29,    30,    30,    30,    30,    31,    31,    32,    32,    28,    28,    34,    34,    35,    35,    36,    36,    37,    37,    37,
262
                37,    20,    38,    38,    39,    39,    3,     3,     40,    41,    41,    41,    41,    2,     2,     2,     2,     2,     2,     2,
263
                2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
264
                2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
265
                2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
266
                2,     2,     2,     2,     2,     2,     2,     2,     2,     42,    45,    45,    48,    49,    49,    50,    51,    51,    51,    51,
267
                51,    51,    55,    33,    33,    56,    56,    56,    43,    43,    43,    53,    53,    47,    47,    59,    60,    60,    24,    62,
268
                62,    62,    62,    44,    44,    44,    44,    44,    44,    44,    44,    44,    44,    44,    44,    46,    46,    58,    58,    58,
269
                58,    65,    65,    65,    52,    52,    52,    66,    66,    66,    66,    66,    66,    66,    22,    22,    22,    22,    22,    67,
270
                67,    70,    69,    57,    57,    57,    57,    57,    57,    57,    54,    54,    54,    68,    68,    68,    23,    61,    71,    71,
271
                72,    72,    72,    72,    13,    13,    13,    13,    13,    13,    13,    13,    63,    63,    63,    63,    64,    74,    73,    73,
272
                73,    73,    73,    73,    73,    73,    73,    75,    75,    75,    75,
273
        ];
274

275
        /** Map of rules to the length of their right-hand side, which is the number of elements that have to
276
         *  be popped from the stack(s) on reduction. */
277
        protected const RuleToLength = [
278
                1,     2,     2,     2,     2,     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
279
                1,     1,     1,     1,     1,     1,     1,     1,     0,     1,     2,     0,     1,     3,     0,     1,     0,     1,     7,     0,
280
                2,     1,     3,     3,     4,     1,     3,     1,     2,     1,     1,     2,     0,     1,     3,     4,     6,     1,     2,     1,
281
                1,     1,     1,     1,     1,     3,     3,     3,     3,     0,     1,     0,     2,     2,     4,     1,     3,     1,     2,     2,
282
                3,     2,     3,     1,     2,     2,     1,     2,     3,     0,     3,     3,     3,     1,     3,     3,     3,     4,     1,     1,
283
                2,     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,     2,     2,     2,     2,     3,     3,
284
                3,     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,     2,     2,     2,     2,
285
                3,     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,     5,     4,     3,     3,     4,     4,     2,     2,
286
                2,     2,     2,     2,     2,     1,     8,     12,    9,     3,     0,     4,     2,     1,     3,     2,     2,     4,     2,     4,
287
                4,     6,     1,     1,     1,     1,     1,     1,     1,     1,     3,     1,     1,     0,     1,     1,     3,     5,     3,     4,
288
                1,     1,     3,     1,     1,     1,     1,     1,     1,     1,     1,     1,     3,     2,     3,     0,     1,     1,     3,     1,
289
                1,     1,     1,     1,     1,     3,     1,     1,     4,     1,     4,     6,     4,     4,     1,     1,     3,     3,     3,     1,
290
                4,     1,     3,     1,     4,     3,     3,     3,     3,     3,     1,     3,     1,     1,     3,     1,     4,     1,     3,     1,
291
                1,     1,     3,     0,     1,     2,     3,     4,     3,     4,     2,     2,     2,     2,     1,     2,     1,     1,     1,     4,
292
                3,     3,     3,     3,     3,     6,     3,     1,     1,     2,     1,
293
        ];
294

295
        /** Map of symbols to their names */
296
        protected const SymbolToName = [
297
                'end',
298
                'error',
299
                "','",
300
                "'or'",
301
                "'xor'",
302
                "'and'",
303
                "'=>'",
304
                "'='",
305
                "'+='",
306
                "'-='",
307
                "'*='",
308
                "'/='",
309
                "'.='",
310
                "'%='",
311
                "'&='",
312
                "'|='",
313
                "'^='",
314
                "'<<='",
315
                "'>>='",
316
                "'**='",
317
                "'??='",
318
                "'?'",
319
                "':'",
320
                "'??'",
321
                "'||'",
322
                "'&&'",
323
                "'|'",
324
                "'^'",
325
                "'&'",
326
                "'&'",
327
                "'=='",
328
                "'!='",
329
                "'==='",
330
                "'!=='",
331
                "'<=>'",
332
                "'<'",
333
                "'<='",
334
                "'>'",
335
                "'>='",
336
                "'.'",
337
                "'<<'",
338
                "'>>'",
339
                "'in'",
340
                "'+'",
341
                "'-'",
342
                "'*'",
343
                "'/'",
344
                "'%'",
345
                "'!'",
346
                "'instanceof'",
347
                "'~'",
348
                "'++'",
349
                "'--'",
350
                "'(int)'",
351
                "'(float'",
352
                "'(string)'",
353
                "'(array)'",
354
                "'(object)'",
355
                "'(bool)'",
356
                "'@'",
357
                "'**'",
358
                "'['",
359
                "'new'",
360
                "'clone'",
361
                'integer',
362
                'floating-point number',
363
                'identifier',
364
                'variable name',
365
                'constant',
366
                'variable',
367
                'number',
368
                'string content',
369
                'quoted string',
370
                "'match'",
371
                "'default'",
372
                "'function'",
373
                "'fn'",
374
                "'return'",
375
                "'use'",
376
                "'isset'",
377
                "'empty'",
378
                "'->'",
379
                "'?->'",
380
                "'??->'",
381
                "'list'",
382
                "'array'",
383
                "'heredoc start'",
384
                "'heredoc end'",
385
                "'\${'",
386
                "'{\$'",
387
                "'::'",
388
                "'...'",
389
                "'(expand)'",
390
                'fully qualified name',
391
                'namespaced name',
392
                "'null'",
393
                "'true'",
394
                "'false'",
395
                "'e'",
396
                "'m'",
397
                "'a'",
398
                "'f'",
399
                "'('",
400
                "')'",
401
                "'{'",
402
                "'}'",
403
                "';'",
404
                "']'",
405
                "'\"'",
406
                "'$'",
407
                "'\\\\'",
408
                'whitespace',
409
                'comment',
410
        ];
411

412
        /** Temporary value containing the result of last semantic action (reduction) */
413
        protected mixed $semValue = null;
414

415
        /** Semantic value stack (contains values of tokens and semantic action results) */
416
        protected array $semStack;
417

418
        /** @var Token[] Start attribute stack */
419
        protected array $startTokenStack;
420

421

422
        protected function reduce(int $rule, int $pos): void
1✔
423
        {
424
                (match ($rule) {
1✔
425
                        0, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 28, 29, 57, 70, 72, 93, 98, 99, 165, 182, 184, 188, 189, 191, 192, 194, 205, 210, 211, 216, 217, 219, 220, 221, 222, 224, 226, 227, 229, 234, 235, 239, 243, 250, 252, 253, 255, 260, 278, 290 => fn() => $this->semValue = $this->semStack[$pos],
1✔
426
                        2 => fn() => $this->semValue = new Node\ModifierNode($this->semStack[$pos], position: $this->startTokenStack[$pos]->position),
1✔
427
                        3 => fn() => $this->semValue = new Expression\ArrayNode($this->semStack[$pos], position: $this->startTokenStack[$pos]->position),
1✔
428
                        22, 23, 24, 25, 26, 62, 63, 64 => fn() => $this->semValue = new Node\IdentifierNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
1✔
429
                        27 => fn() => $this->semValue = new Expression\VariableNode(substr($this->semStack[$pos], 1), $this->startTokenStack[$pos]->position),
1✔
430
                        30, 40, 51, 81, 90, 91, 92, 150, 151, 171, 172, 190, 218, 225, 251, 254, 286 => fn() => $this->semValue = $this->semStack[$pos - 1],
1✔
431
                        31, 39, 52, 73, 89, 170, 193 => fn() => $this->semValue = [],
1✔
432
                        32, 41, 53, 75, 83, 86, 173, 259, 274 => fn() => $this->semValue = [$this->semStack[$pos]],
1✔
433
                        33, 42, 54, 66, 68, 76, 82, 174, 258 => function () use ($pos) {
1✔
434
                                $this->semStack[$pos - 2][] = $this->semStack[$pos];
1✔
435
                                $this->semValue = $this->semStack[$pos - 2];
1✔
436
                        },
1✔
437
                        34, 36 => fn() => $this->semValue = false,
1✔
438
                        35, 37 => fn() => $this->semValue = true,
1✔
439
                        38 => fn() => $this->semValue = new Expression\MatchNode($this->semStack[$pos - 4], $this->semStack[$pos - 1], $this->startTokenStack[$pos - 6]->position),
1✔
440
                        43 => fn() => $this->semValue = new Node\MatchArmNode($this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
441
                        44 => fn() => $this->semValue = new Node\MatchArmNode(null, $this->semStack[$pos], $this->startTokenStack[$pos - 3]->position),
1✔
442
                        45 => fn() => $this->semValue = [null, ...$this->semStack[$pos]],
1✔
443
                        46 => fn() => $this->semValue = [$this->semStack[$pos - 2], ...$this->semStack[$pos]],
1✔
444
                        47, 49 => fn() => $this->semValue = [$this->semStack[$pos], false],
1✔
UNCOV
445
                        48 => fn() => $this->semValue = [$this->semStack[$pos], true],
×
446
                        50 => fn() => $this->semValue = [$this->convertArrayToList($this->semStack[$pos]), false],
1✔
447
                        55 => fn() => $this->semValue = new Node\ParameterNode($this->semStack[$pos], null, $this->semStack[$pos - 3], $this->semStack[$pos - 2], $this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position),
1✔
448
                        56 => fn() => $this->semValue = new Node\ParameterNode($this->semStack[$pos - 2], $this->semStack[$pos], $this->semStack[$pos - 5], $this->semStack[$pos - 4], $this->semStack[$pos - 3], $this->startTokenStack[$pos - 5]->position),
1✔
449
                        58 => fn() => $this->semValue = new Node\NullableTypeNode($this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
1✔
450
                        59 => fn() => $this->semValue = new Node\UnionTypeNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
1✔
451
                        60 => fn() => $this->semValue = new Node\IntersectionTypeNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
1✔
452
                        61 => fn() => $this->semValue = TagParser::handleBuiltinTypes($this->semStack[$pos]),
1✔
453
                        65, 67 => fn() => $this->semValue = [$this->semStack[$pos - 2], $this->semStack[$pos]],
1✔
454
                        69, 71, 215 => fn() => $this->semValue = null,
1✔
455
                        74 => fn() => $this->semValue = $this->semStack[$pos - 2],
1✔
456
                        77 => fn() => $this->semValue = new Node\ArgumentNode($this->semStack[$pos], false, false, null, $this->startTokenStack[$pos]->position),
1✔
457
                        78 => fn() => $this->semValue = new Node\ArgumentNode($this->semStack[$pos], true, false, null, $this->startTokenStack[$pos - 1]->position),
1✔
458
                        79 => fn() => $this->semValue = new Node\ArgumentNode($this->semStack[$pos], false, true, null, $this->startTokenStack[$pos - 1]->position),
1✔
459
                        80 => fn() => $this->semValue = new Node\ArgumentNode($this->semStack[$pos], false, false, $this->semStack[$pos - 2], $this->startTokenStack[$pos - 2]->position),
1✔
460
                        84, 85 => fn() => $this->semValue = new Expression\FilterCallNode($this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
1✔
461
                        87, 272, 273 => function () use ($pos) {
1✔
462
                                $this->semStack[$pos - 1][] = $this->semStack[$pos];
1✔
463
                                $this->semValue = $this->semStack[$pos - 1];
1✔
464
                        },
1✔
465
                        88 => fn() => $this->semValue = new Node\FilterNode($this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
466
                        94, 96 => fn() => $this->semValue = new Expression\AssignNode($this->semStack[$pos - 2], $this->semStack[$pos], false, $this->startTokenStack[$pos - 2]->position),
1✔
467
                        95 => fn() => $this->semValue = new Expression\AssignNode($this->convertArrayToList($this->semStack[$pos - 2]), $this->semStack[$pos], false, $this->startTokenStack[$pos - 2]->position),
1✔
468
                        97 => fn() => $this->semValue = new Expression\AssignNode($this->semStack[$pos - 3], $this->semStack[$pos], true, $this->startTokenStack[$pos - 3]->position),
1✔
469
                        100 => fn() => $this->semValue = new Expression\CloneNode($this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
1✔
470
                        101 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '+', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
471
                        102 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '-', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
472
                        103 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '*', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
473
                        104 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '/', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
474
                        105 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '.', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
475
                        106 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '%', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
476
                        107 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '&', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
477
                        108 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '|', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
478
                        109 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '^', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
479
                        110 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '<<', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
480
                        111 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '>>', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
481
                        112 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '**', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
482
                        113 => fn() => $this->semValue = new Expression\AssignOpNode($this->semStack[$pos - 2], '??', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
483
                        114 => fn() => $this->semValue = new Expression\PostOpNode($this->semStack[$pos - 1], '++', $this->startTokenStack[$pos - 1]->position),
1✔
484
                        115 => fn() => $this->semValue = new Expression\PreOpNode($this->semStack[$pos], '++', $this->startTokenStack[$pos - 1]->position),
1✔
485
                        116 => fn() => $this->semValue = new Expression\PostOpNode($this->semStack[$pos - 1], '--', $this->startTokenStack[$pos - 1]->position),
1✔
486
                        117 => fn() => $this->semValue = new Expression\PreOpNode($this->semStack[$pos], '--', $this->startTokenStack[$pos - 1]->position),
1✔
487
                        118 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '||', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
488
                        119 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '&&', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
489
                        120 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], 'or', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
490
                        121 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], 'and', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
491
                        122 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], 'xor', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
492
                        123, 124 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '&', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
493
                        125 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '^', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
494
                        126 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '.', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
495
                        127 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '+', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
496
                        128 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '-', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
497
                        129 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '*', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
498
                        130 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '/', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
499
                        131 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '%', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
500
                        132 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '<<', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
501
                        133 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '>>', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
502
                        134 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '**', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
503
                        135 => fn() => $this->semValue = new Expression\InNode($this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
504
                        136 => fn() => $this->semValue = new Expression\UnaryOpNode($this->semStack[$pos], '+', $this->startTokenStack[$pos - 1]->position),
1✔
505
                        137 => fn() => $this->semValue = new Expression\UnaryOpNode($this->semStack[$pos], '-', $this->startTokenStack[$pos - 1]->position),
1✔
506
                        138 => fn() => $this->semValue = new Expression\NotNode($this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
1✔
507
                        139 => fn() => $this->semValue = new Expression\UnaryOpNode($this->semStack[$pos], '~', $this->startTokenStack[$pos - 1]->position),
1✔
508
                        140 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '===', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
509
                        141 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '!==', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
510
                        142 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '==', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
511
                        143 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '!=', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
512
                        144 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '<=>', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
513
                        145 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '<', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
514
                        146 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '<=', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
515
                        147 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '>', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
516
                        148 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '>=', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
517
                        149 => fn() => $this->semValue = new Expression\InstanceofNode($this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
518
                        152 => fn() => $this->semValue = new Expression\TernaryNode($this->semStack[$pos - 4], $this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 4]->position),
1✔
519
                        153 => fn() => $this->semValue = new Expression\TernaryNode($this->semStack[$pos - 3], null, $this->semStack[$pos], $this->startTokenStack[$pos - 3]->position),
1✔
520
                        154 => fn() => $this->semValue = new Expression\TernaryNode($this->semStack[$pos - 2], $this->semStack[$pos], null, $this->startTokenStack[$pos - 2]->position),
1✔
521
                        155 => fn() => $this->semValue = new Expression\BinaryOpNode($this->semStack[$pos - 2], '??', $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
522
                        156 => fn() => $this->semValue = new Expression\IssetNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position),
1✔
523
                        157 => fn() => $this->semValue = new Expression\EmptyNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position),
1✔
524
                        158 => fn() => $this->semValue = new Expression\CastNode('int', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
1✔
525
                        159 => fn() => $this->semValue = new Expression\CastNode('float', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
1✔
526
                        160 => fn() => $this->semValue = new Expression\CastNode('string', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
1✔
527
                        161 => fn() => $this->semValue = new Expression\CastNode('array', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
1✔
528
                        162 => fn() => $this->semValue = new Expression\CastNode('object', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
1✔
529
                        163 => fn() => $this->semValue = new Expression\CastNode('bool', $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
1✔
530
                        164 => fn() => $this->semValue = new Expression\ErrorSuppressNode($this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
1✔
531
                        166 => fn() => $this->semValue = new Expression\ClosureNode((bool) $this->semStack[$pos - 6], $this->semStack[$pos - 4], [], $this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 7]->position),
1✔
532
                        167 => fn() => $this->semValue = new Expression\ClosureNode((bool) $this->semStack[$pos - 10], $this->semStack[$pos - 8], $this->semStack[$pos - 6], $this->semStack[$pos - 5], $this->semStack[$pos - 2], $this->startTokenStack[$pos - 11]->position),
1✔
533
                        168 => fn() => $this->semValue = new Expression\ClosureNode((bool) $this->semStack[$pos - 7], $this->semStack[$pos - 5], $this->semStack[$pos - 3], $this->semStack[$pos - 2], null, $this->startTokenStack[$pos - 8]->position),
1✔
534
                        169 => fn() => $this->semValue = new Expression\NewNode($this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
535
                        175 => fn() => $this->semValue = new Node\ClosureUseNode($this->semStack[$pos], $this->semStack[$pos - 1], $this->startTokenStack[$pos - 1]->position),
1✔
536
                        176, 178 => fn() => $this->semValue = $this->checkFunctionName(new Expression\FunctionCallNode($this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position)),
1✔
537
                        177, 179 => fn() => $this->semValue = $this->checkFunctionName(new Expression\FunctionCallableNode($this->semStack[$pos - 3], $this->startTokenStack[$pos - 3]->position)),
1✔
538
                        180 => fn() => $this->semValue = new Expression\StaticMethodCallNode($this->semStack[$pos - 3], $this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 3]->position),
1✔
539
                        181 => fn() => $this->semValue = new Expression\StaticMethodCallableNode($this->semStack[$pos - 5], $this->semStack[$pos - 3], $this->startTokenStack[$pos - 5]->position),
1✔
540
                        183, 185, 186 => fn() => $this->semValue = new Node\NameNode($this->semStack[$pos], Node\NameNode::KindNormal, $this->startTokenStack[$pos]->position),
1✔
541
                        187 => fn() => $this->semValue = new Node\NameNode($this->semStack[$pos], Node\NameNode::KindFullyQualified, $this->startTokenStack[$pos]->position),
1✔
542
                        195 => fn() => $this->semValue = new Expression\ConstantFetchNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
1✔
543
                        196 => fn() => $this->semValue = new Expression\ClassConstantFetchNode($this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
544
                        197 => fn() => $this->semValue = new Expression\ClassConstantFetchNode($this->semStack[$pos - 4], $this->semStack[$pos - 1], $this->startTokenStack[$pos - 4]->position),
1✔
545
                        198 => fn() => $this->semValue = new Expression\ArrayNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 2]->position),
1✔
546
                        199 => fn() => $this->semValue = new Expression\ArrayNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position),
1✔
547
                        200 => function () use ($pos) {
1✔
548
                                $this->semValue = $this->semStack[$pos];
1✔
549
                                $this->shortArrays->attach($this->semValue);
1✔
550
                        },
1✔
551
                        201 => fn() => $this->semValue = Scalar\StringNode::parse($this->semStack[$pos], $this->startTokenStack[$pos]->position),
1✔
552
                        202 => fn() => $this->semValue = Scalar\InterpolatedStringNode::parse($this->semStack[$pos - 1], $this->startTokenStack[$pos - 2]->position),
1✔
553
                        203 => fn() => $this->semValue = Scalar\IntegerNode::parse($this->semStack[$pos], $this->startTokenStack[$pos]->position),
1✔
554
                        204 => fn() => $this->semValue = Scalar\FloatNode::parse($this->semStack[$pos], $this->startTokenStack[$pos]->position),
1✔
555
                        206, 287 => fn() => $this->semValue = new Scalar\StringNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
1✔
556
                        207 => fn() => $this->semValue = new Scalar\BooleanNode(true, $this->startTokenStack[$pos]->position),
1✔
557
                        208 => fn() => $this->semValue = new Scalar\BooleanNode(false, $this->startTokenStack[$pos]->position),
1✔
558
                        209 => fn() => $this->semValue = new Scalar\NullNode($this->startTokenStack[$pos]->position),
1✔
559
                        212 => fn() => $this->semValue = $this->parseDocString($this->semStack[$pos - 2], [$this->semStack[$pos - 1]], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position, $this->startTokenStack[$pos]->position),
1✔
560
                        213 => fn() => $this->semValue = $this->parseDocString($this->semStack[$pos - 1], [], $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position, $this->startTokenStack[$pos]->position),
1✔
561
                        214 => fn() => $this->semValue = $this->parseDocString($this->semStack[$pos - 2], $this->semStack[$pos - 1], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position, $this->startTokenStack[$pos]->position),
1✔
562
                        223 => fn() => $this->semValue = new Expression\ConstantFetchNode(new Node\NameNode($this->semStack[$pos], Node\NameNode::KindNormal, $this->startTokenStack[$pos]->position), $this->startTokenStack[$pos]->position),
1✔
563
                        228, 244, 279 => fn() => $this->semValue = new Expression\ArrayAccessNode($this->semStack[$pos - 3], $this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position),
1✔
564
                        230 => fn() => $this->semValue = new Expression\MethodCallNode($this->semStack[$pos - 3], $this->semStack[$pos - 1], $this->semStack[$pos], false, $this->startTokenStack[$pos - 3]->position),
1✔
565
                        231 => fn() => $this->semValue = new Expression\MethodCallableNode($this->semStack[$pos - 5], $this->semStack[$pos - 3], $this->startTokenStack[$pos - 5]->position),
1✔
566
                        232 => fn() => $this->semValue = new Expression\MethodCallNode($this->semStack[$pos - 3], $this->semStack[$pos - 1], $this->semStack[$pos], true, $this->startTokenStack[$pos - 3]->position),
1✔
567
                        233 => fn() => $this->semValue = new Expression\MethodCallNode(new Expression\BinaryOpNode($this->semStack[$pos - 3], '??', new Scalar\NullNode($this->startTokenStack[$pos - 3]->position), $this->startTokenStack[$pos - 3]->position), $this->semStack[$pos - 1], $this->semStack[$pos], true, $this->startTokenStack[$pos - 3]->position),
1✔
568
                        236, 245, 280 => fn() => $this->semValue = new Expression\PropertyFetchNode($this->semStack[$pos - 2], $this->semStack[$pos], false, $this->startTokenStack[$pos - 2]->position),
1✔
569
                        237, 246, 281 => fn() => $this->semValue = new Expression\PropertyFetchNode($this->semStack[$pos - 2], $this->semStack[$pos], true, $this->startTokenStack[$pos - 2]->position),
1✔
570
                        238, 247, 282 => fn() => $this->semValue = new Expression\PropertyFetchNode(new Expression\BinaryOpNode($this->semStack[$pos - 2], '??', new Scalar\NullNode($this->startTokenStack[$pos - 2]->position), $this->startTokenStack[$pos - 2]->position), $this->semStack[$pos], true, $this->startTokenStack[$pos - 2]->position),
1✔
571
                        240 => fn() => $this->semValue = new Expression\VariableNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position),
1✔
572
                        241 => function () use ($pos) {
1✔
573
                                $var = $this->semStack[$pos]->name;
1✔
574
                                $this->semValue = \is_string($var)
1✔
575
                                        ? new Node\VarLikeIdentifierNode($var, $this->startTokenStack[$pos]->position)
1✔
576
                                        : $var;
1✔
577
                        },
1✔
578
                        242, 248, 249 => fn() => $this->semValue = new Expression\StaticPropertyFetchNode($this->semStack[$pos - 2], $this->semStack[$pos], $this->startTokenStack[$pos - 2]->position),
1✔
579
                        256 => fn() => $this->semValue = $this->convertArrayToList(new Expression\ArrayNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 3]->position)),
1✔
580
                        257 => function () use ($pos) {
1✔
581
                                $this->semValue = $this->semStack[$pos];
1✔
582
                                $end = count($this->semValue) - 1;
1✔
583
                                if (
584
                                        $this->semValue[$end]->value instanceof Expression\TemporaryNode
1✔
585
                                        && !$this->semValue[$end]->value->value
1✔
586
                                ) {
587
                                        array_pop($this->semValue);
1✔
588
                                }
589
                        },
1✔
590
                        261 => fn() => $this->semValue = new Node\ArrayItemNode(new Expression\TemporaryNode($this->semStack[$pos], $this->startTokenStack[$pos]->position), null, false, false, $this->startTokenStack[$pos]->position),
1✔
591
                        262 => fn() => $this->semValue = new Node\ArrayItemNode(new Expression\TemporaryNode($this->semStack[$pos], $this->startTokenStack[$pos - 2]->position), $this->semStack[$pos - 2], false, false, $this->startTokenStack[$pos - 2]->position),
1✔
592
                        263 => fn() => $this->semValue = new Node\ArrayItemNode(new Expression\TemporaryNode(null), null, false, false, $this->startTokenStack[$pos]->position),
1✔
593
                        264 => fn() => $this->semValue = new Node\ArrayItemNode($this->semStack[$pos], null, false, false, $this->startTokenStack[$pos]->position),
1✔
594
                        265 => fn() => $this->semValue = new Node\ArrayItemNode($this->semStack[$pos], null, true, false, $this->startTokenStack[$pos - 1]->position),
1✔
595
                        266, 268 => fn() => $this->semValue = new Node\ArrayItemNode($this->semStack[$pos], $this->semStack[$pos - 2], false, false, $this->startTokenStack[$pos - 2]->position),
1✔
596
                        267, 269 => fn() => $this->semValue = new Node\ArrayItemNode($this->semStack[$pos], $this->semStack[$pos - 3], true, false, $this->startTokenStack[$pos - 3]->position),
1✔
597
                        270, 271 => fn() => $this->semValue = new Node\ArrayItemNode($this->semStack[$pos], null, false, true, $this->startTokenStack[$pos - 1]->position),
1✔
598
                        275 => fn() => $this->semValue = [$this->semStack[$pos - 1], $this->semStack[$pos]],
1✔
599
                        276 => fn() => $this->semValue = new Node\InterpolatedStringPartNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
1✔
UNCOV
600
                        277 => fn() => $this->semValue = new Expression\VariableNode($this->semStack[$pos], $this->startTokenStack[$pos]->position),
×
UNCOV
601
                        283, 284 => fn() => $this->semValue = new Expression\VariableNode($this->semStack[$pos - 1], $this->startTokenStack[$pos - 2]->position),
×
UNCOV
602
                        285 => fn() => $this->semValue = new Expression\ArrayAccessNode($this->semStack[$pos - 4], $this->semStack[$pos - 2], $this->startTokenStack[$pos - 5]->position),
×
603
                        288 => fn() => $this->semValue = TagParser::parseOffset($this->semStack[$pos], $this->startTokenStack[$pos]->position),
1✔
604
                        289 => fn() => $this->semValue = TagParser::parseOffset('-' . $this->semStack[$pos], $this->startTokenStack[$pos - 1]->position),
1✔
605
                })();
1✔
606
        }
1✔
607
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc