1 #include "php_phalcon.h"
2 #if PHP_VERSION_ID < 70000
3 /* Driver template for the LEMON parser generator.
4 ** The author disclaims copyright to this source code.
5 */
6 /* First off, code is include which follows the "include" declaration
7 ** in the input file. */
8 #include <stdio.h>
9 // 42 "parser.php5.lemon"
10 
11 #include "parser.php5.inc.h"
12 
13 // 12 "parser.php5.c"
14 /* Next is all token values, in a form suitable for use by makeheaders.
15 ** This section will be null unless lemon is run with the -m switch.
16 */
17 /*
18 ** These constants (all generated automatically by the parser generator)
19 ** specify the various kinds of tokens (terminals) that the parser
20 ** understands.
21 **
22 ** Each symbol here is a terminal symbol in the grammar.
23 */
24 /* Make sure the INTERFACE macro is defined.
25 */
26 #ifndef INTERFACE
27 # define INTERFACE 1
28 #endif
29 /* The next thing included is series of defines which control
30 ** various aspects of the generated parser.
31 **    VVCODETYPE         is the data type used for storing terminal
32 **                       and nonterminal numbers.  "unsigned char" is
33 **                       used if there are fewer than 250 terminals
34 **                       and nonterminals.  "int" is used otherwise.
35 **    VVNOCODE           is a number of type VVCODETYPE which corresponds
36 **                       to no legal terminal or nonterminal number.  This
37 **                       number is used to fill in empty slots of the hash
38 **                       table.
39 **    VVFALLBACK         If defined, this indicates that one or more tokens
40 **                       have fall-back values which should be used if the
41 **                       original value of the token will not parse.
42 **    VVACTIONTYPE       is the data type used for storing terminal
43 **                       and nonterminal numbers.  "unsigned char" is
44 **                       used if there are fewer than 250 rules and
45 **                       states combined.  "int" is used otherwise.
46 **    phvolt_TOKENTYPE     is the data type used for minor tokens given
47 **                       directly to the parser from the tokenizer.
48 **    VVMINORTYPE        is the data type used for all minor tokens.
49 **                       This is typically a union of many types, one of
50 **                       which is phvolt_TOKENTYPE.  The entry in the union
51 **                       for base tokens is called "vv0".
52 **    VVSTACKDEPTH       is the maximum depth of the parser's stack.
53 **    phvolt_ARG_SDECL     A static variable declaration for the %extra_argument
54 **    phvolt_ARG_PDECL     A parameter declaration for the %extra_argument
55 **    phvolt_ARG_STORE     Code to store %extra_argument into vvpParser
56 **    phvolt_ARG_FETCH     Code to extract %extra_argument from vvpParser
57 **    VVNSTATE           the combined number of states.
58 **    VVNRULE            the number of rules in the grammar
59 **    VVERRORSYMBOL      is the code number of the error symbol.  If not
60 **                       defined, then do no error processing.
61 */
62 #define VVCODETYPE unsigned char
63 #define VVNOCODE 131
64 #define VVACTIONTYPE unsigned short int
65 #define phvolt_TOKENTYPE phvolt_parser_token*
66 typedef union {
67   phvolt_TOKENTYPE vv0;
68   zval* vv228;
69   int vv261;
70 } VVMINORTYPE;
71 #define VVSTACKDEPTH 100
72 #define phvolt_ARG_SDECL phvolt_parser_status *status;
73 #define phvolt_ARG_PDECL ,phvolt_parser_status *status
74 #define phvolt_ARG_FETCH phvolt_parser_status *status = vvpParser->status
75 #define phvolt_ARG_STORE vvpParser->status = status
76 #define VVNSTATE 365
77 #define VVNRULE 158
78 #define VVERRORSYMBOL 89
79 #define VVERRSYMDT vv261
80 #define VV_NO_ACTION      (VVNSTATE+VVNRULE+2)
81 #define VV_ACCEPT_ACTION  (VVNSTATE+VVNRULE+1)
82 #define VV_ERROR_ACTION   (VVNSTATE+VVNRULE)
83 
84 /* Next are that tables used to determine what action to take based on the
85 ** current state and lookahead token.  These tables are used to implement
86 ** functions that take a state number and lookahead value and return an
87 ** action integer.
88 **
89 ** Suppose the action integer is N.  Then the action is determined as
90 ** follows
91 **
92 **   0 <= N < VVNSTATE                  Shift N.  That is, push the lookahead
93 **                                      token onto the stack and goto state N.
94 **
95 **   VVNSTATE <= N < VVNSTATE+VVNRULE   Reduce by rule N-VVNSTATE.
96 **
97 **   N == VVNSTATE+VVNRULE              A syntax error has occurred.
98 **
99 **   N == VVNSTATE+VVNRULE+1            The parser accepts its input.
100 **
101 **   N == VVNSTATE+VVNRULE+2            No such action.  Denotes unused
102 **                                      slots in the vv_action[] table.
103 **
104 ** The action table is constructed as a single large table named vv_action[].
105 ** Given state S and lookahead X, the action is computed as
106 **
107 **      vv_action[ vv_shift_ofst[S] + X ]
108 **
109 ** If the index value vv_shift_ofst[S]+X is out of range or if the value
110 ** vv_lookahead[vv_shift_ofst[S]+X] is not equal to X or if vv_shift_ofst[S]
111 ** is equal to VV_SHIFT_USE_DFLT, it means that the action is not in the table
112 ** and that vv_default[S] should be used instead.
113 **
114 ** The formula above is for computing the action when the lookahead is
115 ** a terminal symbol.  If the lookahead is a non-terminal (as occurs after
116 ** a reduce action) then the vv_reduce_ofst[] array is used in place of
117 ** the vv_shift_ofst[] array and VV_REDUCE_USE_DFLT is used in place of
118 ** VV_SHIFT_USE_DFLT.
119 **
120 ** The following are the tables generated in this section:
121 **
122 **  vv_action[]        A single table containing all actions.
123 **  vv_lookahead[]     A table containing the lookahead for each entry in
124 **                     vv_action.  Used to detect hash collisions.
125 **  vv_shift_ofst[]    For each state, the offset into vv_action for
126 **                     shifting terminals.
127 **  vv_reduce_ofst[]   For each state, the offset into vv_action for
128 **                     shifting non-terminals after a reduce.
129 **  vv_default[]       Default action for each state.
130 */
131 static VVACTIONTYPE vv_action[] = {
132  /*     0 */    85,   95,  111,   63,   55,   57,   69,   65,   67,   75,
133  /*    10 */    77,   79,   81,   71,   73,   51,   49,   53,   46,   43,
134  /*    20 */    59,   92,   61,   87,   90,   91,   99,   83,  365,  245,
135  /*    30 */    87,   90,   91,   99,   83,  300,   51,   49,   53,   46,
136  /*    40 */    43,   59,   92,   61,   87,   90,   91,   99,   83,   33,
137  /*    50 */   110,  299,  194,  215,  198,   85,   95,  196,   63,   55,
138  /*    60 */    57,   69,   65,   67,   75,   77,   79,   81,   71,   73,
139  /*    70 */    51,   49,   53,   46,   43,   59,   92,   61,   87,   90,
140  /*    80 */    91,   99,   83,  331,  176,   85,   95,  195,   63,   55,
141  /*    90 */    57,   69,   65,   67,   75,   77,   79,   81,   71,   73,
142  /*   100 */    51,   49,   53,   46,   43,   59,   92,   61,   87,   90,
143  /*   110 */    91,   99,   83,   35,  265,   85,   95,   39,   63,   55,
144  /*   120 */    57,   69,   65,   67,   75,   77,   79,   81,   71,   73,
145  /*   130 */    51,   49,   53,   46,   43,   59,   92,   61,   87,   90,
146  /*   140 */    91,   99,   83,  347,  342,   92,   61,   87,   90,   91,
147  /*   150 */    99,   83,  338,  174,  266,  197,  198,   88,   85,   95,
148  /*   160 */   139,   63,   55,   57,   69,   65,   67,   75,   77,   79,
149  /*   170 */    81,   71,   73,   51,   49,   53,   46,   43,   59,   92,
150  /*   180 */    61,   87,   90,   91,   99,   83,  118,   29,   85,   95,
151  /*   190 */   140,   63,   55,   57,   69,   65,   67,   75,   77,   79,
152  /*   200 */    81,   71,   73,   51,   49,   53,   46,   43,   59,   92,
153  /*   210 */    61,   87,   90,   91,   99,   83,  134,   42,   85,   95,
154  /*   220 */   503,   63,   55,   57,   69,   65,   67,   75,   77,   79,
155  /*   230 */    81,   71,   73,   51,   49,   53,   46,   43,   59,   92,
156  /*   240 */    61,   87,   90,   91,   99,   83,   46,   43,   59,   92,
157  /*   250 */    61,   87,   90,   91,   99,   83,  321,  322,  323,  324,
158  /*   260 */   325,  326,  504,  111,  144,   94,  309,  327,  146,   85,
159  /*   270 */    95,   97,   63,   55,   57,   69,   65,   67,   75,   77,
160  /*   280 */    79,   81,   71,   73,   51,   49,   53,   46,   43,   59,
161  /*   290 */    92,   61,   87,   90,   91,   99,   83,   85,   95,  147,
162  /*   300 */    63,   55,   57,   69,   65,   67,   75,   77,   79,   81,
163  /*   310 */    71,   73,   51,   49,   53,   46,   43,   59,   92,   61,
164  /*   320 */    87,   90,   91,   99,   83,  100,  503,  142,  142,  504,
165  /*   330 */   107,  171,  129,  276,  287,  173,  107,  120,  137,  109,
166  /*   340 */   145,  116,  120,  141,  141,  114,  105,  116,  120,  115,
167  /*   350 */    85,   95,  180,   63,   55,   57,   69,   65,   67,   75,
168  /*   360 */    77,   79,   81,   71,   73,   51,   49,   53,   46,   43,
169  /*   370 */    59,   92,   61,   87,   90,   91,   99,   83,  187,  183,
170  /*   380 */    85,   95,   26,   63,   55,   57,   69,   65,   67,   75,
171  /*   390 */    77,   79,   81,   71,   73,   51,   49,   53,   46,   43,
172  /*   400 */    59,   92,   61,   87,   90,   91,   99,   83,  192,  190,
173  /*   410 */    85,   95,  213,   63,   55,   57,   69,   65,   67,   75,
174  /*   420 */    77,   79,   81,   71,   73,   51,   49,   53,   46,   43,
175  /*   430 */    59,   92,   61,   87,   90,   91,   99,   83,  100,  217,
176  /*   440 */   220,   28,   93,  252,  165,  228,  214,  107,  218,  318,
177  /*   450 */   120,  137,  143,  120,  120,  224,  120,  211,  128,  120,
178  /*   460 */   259,   85,   95,  219,   63,   55,   57,   69,   65,   67,
179  /*   470 */    75,   77,   79,   81,   71,   73,   51,   49,   53,   46,
180  /*   480 */    43,   59,   92,   61,   87,   90,   91,   99,   83,   85,
181  /*   490 */    95,  230,   63,   55,   57,   69,   65,   67,   75,   77,
182  /*   500 */    79,   81,   71,   73,   51,   49,   53,   46,   43,   59,
183  /*   510 */    92,   61,   87,   90,   91,   99,   83,  234,  262,   85,
184  /*   520 */    95,  254,   63,   55,   57,   69,   65,   67,   75,   77,
185  /*   530 */    79,   81,   71,   73,   51,   49,   53,   46,   43,   59,
186  /*   540 */    92,   61,   87,   90,   91,   99,   83,  237,  268,   85,
187  /*   550 */    95,  238,   63,   55,   57,   69,   65,   67,   75,   77,
188  /*   560 */    79,   81,   71,   73,   51,   49,   53,   46,   43,   59,
189  /*   570 */    92,   61,   87,   90,   91,   99,   83,  242,  271,   85,
190  /*   580 */    95,  293,   63,   55,   57,   69,   65,   67,   75,   77,
191  /*   590 */    79,   81,   71,   73,   51,   49,   53,   46,   43,   59,
192  /*   600 */    92,   61,   87,   90,   91,   99,   83,  249,  274,   85,
193  /*   610 */    95,  251,   63,   55,   57,   69,   65,   67,   75,   77,
194  /*   620 */    79,   81,   71,   73,   51,   49,   53,   46,   43,   59,
195  /*   630 */    92,   61,   87,   90,   91,   99,   83,  257,  333,   85,
196  /*   640 */    95,  256,   63,   55,   57,   69,   65,   67,   75,   77,
197  /*   650 */    79,   81,   71,   73,   51,   49,   53,   46,   43,   59,
198  /*   660 */    92,   61,   87,   90,   91,   99,   83,  318,  349,   85,
199  /*   670 */    95,  258,   63,   55,   57,   69,   65,   67,   75,   77,
200  /*   680 */    79,   81,   71,   73,   51,   49,   53,   46,   43,   59,
201  /*   690 */    92,   61,   87,   90,   91,   99,   83,   85,   95,  277,
202  /*   700 */    63,   55,   57,   69,   65,   67,   75,   77,   79,   81,
203  /*   710 */    71,   73,   51,   49,   53,   46,   43,   59,   92,   61,
204  /*   720 */    87,   90,   91,  227,   83,  524,    1,    2,  286,    4,
205  /*   730 */     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
206  /*   740 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
207  /*   750 */    25,   95,  281,   63,   55,   57,   69,   65,   67,   75,
208  /*   760 */    77,   79,   81,   71,   73,   51,   49,   53,   46,   43,
209  /*   770 */    59,   92,   61,   87,   90,   91,   99,   83,   63,   55,
210  /*   780 */    57,   69,   65,   67,   75,   77,   79,   81,   71,   73,
211  /*   790 */    51,   49,   53,   46,   43,   59,   92,   61,   87,   90,
212  /*   800 */    91,   99,   83,   30,  286,    4,    5,    6,    7,    8,
213  /*   810 */     9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
214  /*   820 */    19,   20,   21,   22,   23,   24,   25,   36,  286,    4,
215  /*   830 */     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
216  /*   840 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
217  /*   850 */    25,   55,   57,   69,   65,   67,   75,   77,   79,   81,
218  /*   860 */    71,   73,   51,   49,   53,   46,   43,   59,   92,   61,
219  /*   870 */    87,   90,   91,   99,   83,  177,  286,    4,    5,    6,
220  /*   880 */     7,    8,    9,   10,   11,   12,   13,   14,   15,   16,
221  /*   890 */    17,   18,   19,   20,   21,   22,   23,   24,   25,  184,
222  /*   900 */   286,    4,    5,    6,    7,    8,    9,   10,   11,   12,
223  /*   910 */    13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
224  /*   920 */    23,   24,   25,  221,  286,    4,    5,    6,    7,    8,
225  /*   930 */     9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
226  /*   940 */    19,   20,   21,   22,   23,   24,   25,  231,  286,    4,
227  /*   950 */     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
228  /*   960 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
229  /*   970 */    25,  239,  286,    4,    5,    6,    7,    8,    9,   10,
230  /*   980 */    11,   12,   13,   14,   15,   16,   17,   18,   19,   20,
231  /*   990 */    21,   22,   23,   24,   25,  246,  286,    4,    5,    6,
232  /*  1000 */     7,    8,    9,   10,   11,   12,   13,   14,   15,   16,
233  /*  1010 */    17,   18,   19,   20,   21,   22,   23,   24,   25,  278,
234  /*  1020 */   286,    4,    5,    6,    7,    8,    9,   10,   11,   12,
235  /*  1030 */    13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
236  /*  1040 */    23,   24,   25,  289,  286,    4,    5,    6,    7,    8,
237  /*  1050 */     9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
238  /*  1060 */    19,   20,   21,   22,   23,   24,   25,  295,  286,    4,
239  /*  1070 */     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
240  /*  1080 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
241  /*  1090 */    25,  312,  286,    4,    5,    6,    7,    8,    9,   10,
242  /*  1100 */    11,   12,   13,   14,   15,   16,   17,   18,   19,   20,
243  /*  1110 */    21,   22,   23,   24,   25,  334,  286,    4,    5,    6,
244  /*  1120 */     7,    8,    9,   10,   11,   12,   13,   14,   15,   16,
245  /*  1130 */    17,   18,   19,   20,   21,   22,   23,   24,   25,  343,
246  /*  1140 */   286,    4,    5,    6,    7,    8,    9,   10,   11,   12,
247  /*  1150 */    13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
248  /*  1160 */    23,   24,   25,  350,  286,    4,    5,    6,    7,    8,
249  /*  1170 */     9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
250  /*  1180 */    19,   20,   21,   22,   23,   24,   25,    3,    4,    5,
251  /*  1190 */     6,    7,    8,    9,   10,   11,   12,   13,   14,   15,
252  /*  1200 */    16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
253  /*  1210 */    27,  235,   32,   34,   40,  170,  172,   41,  283,  181,
254  /*  1220 */   100,  188,  191,  193,  169,   45,  168,  285,  288,  120,
255  /*  1230 */   216,  292,  120,  132,  178,  294,  120,  120,  120,  225,
256  /*  1240 */   366,   26,  298,  236,  437,  243,  438,  250,  131,  260,
257  /*  1250 */   263,  303,  269,  272,  275,  305,  282,  284,  255,    4,
258  /*  1260 */     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
259  /*  1270 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
260  /*  1280 */    25,   27,  235,  358,  360,   40,  170,  172,   48,  357,
261  /*  1290 */   181,   31,  188,  191,  193,  252,  354,   50,  130,   52,
262  /*  1300 */   120,  216,  252,   54,  306,   56,  131,  308,  316,  120,
263  /*  1310 */   225,  120,  259,  307,  236,  120,  243,  120,  250,  259,
264  /*  1320 */   260,  263,  317,  269,  272,  275,  311,  282,  284,   58,
265  /*  1330 */   315,   60,  319,   27,  235,   38,   62,   40,  170,  172,
266  /*  1340 */   320,  120,  181,  120,  188,  191,  193,  330,  120,  337,
267  /*  1350 */   252,  339,  252,  216,   37,  340,  229,  252,  310,  328,
268  /*  1360 */   346,  185,  225,  222,  353,  232,  236,  259,  243,  259,
269  /*  1370 */   250,  356,  260,  263,  259,  269,  272,  275,  359,  282,
270  /*  1380 */   284,  361,   69,   65,   67,   75,   77,   79,   81,   71,
271  /*  1390 */    73,   51,   49,   53,   46,   43,   59,   92,   61,   87,
272  /*  1400 */    90,   91,   99,   83,  362,   27,  235,   64,  363,   40,
273  /*  1410 */   170,  172,  364,  179,  181,  252,  188,  191,  193,  120,
274  /*  1420 */   252,  290,  252,  244,  252,  216,  252,  290,  301,  290,
275  /*  1430 */   240,  290,  259,  290,  225,  120,  290,  259,  236,  259,
276  /*  1440 */   243,  259,  250,  259,  260,  263,  247,  269,  272,  275,
277  /*  1450 */   279,  282,  284,  290,  290,  290,  290,   27,  235,  209,
278  /*  1460 */   290,   40,  170,  172,  290,  212,  181,  186,  188,  191,
279  /*  1470 */   193,  290,  290,  253,  290,  332,  290,  216,  290,  290,
280  /*  1480 */   199,  201,  203,  205,  207,  120,  225,  120,  290,  252,
281  /*  1490 */   236,  252,  243,  296,  250,  290,  260,  263,  313,  269,
282  /*  1500 */   272,  275,  335,  282,  284,  290,  259,  252,  259,   27,
283  /*  1510 */   235,  252,  290,   40,  170,  172,  290,  344,  181,  290,
284  /*  1520 */   188,  191,  193,   66,  259,  290,  290,   68,  259,  216,
285  /*  1530 */   290,  223,  290,  252,  290,  120,  290,  290,  225,  120,
286  /*  1540 */   290,  290,  236,  290,  243,  290,  250,  290,  260,  263,
287  /*  1550 */   259,  269,  272,  275,  252,  282,  284,   70,  290,  252,
288  /*  1560 */   290,   27,  235,  252,  290,   40,  170,  172,  290,  120,
289  /*  1570 */   181,  259,  188,  191,  193,   72,  259,  290,  252,  290,
290  /*  1580 */   259,  216,  290,  290,  290,  290,  290,  120,  290,  290,
291  /*  1590 */   225,  233,  290,  290,  236,  259,  243,  351,  250,   74,
292  /*  1600 */   260,  263,  290,  269,  272,  275,  290,  282,  284,   76,
293  /*  1610 */   290,  120,  290,   27,  235,   78,   80,   40,  170,  172,
294  /*  1620 */    82,  120,  181,   84,  188,  191,  193,  120,  120,  290,
295  /*  1630 */   290,   86,  120,  216,  290,  120,  290,   89,  290,   96,
296  /*  1640 */   290,  290,  225,  120,  290,  290,  236,  241,  243,  120,
297  /*  1650 */   250,  120,  260,  263,  290,  269,  272,  275,  252,  282,
298  /*  1660 */   284,   98,  290,  290,  290,   27,  235,  102,  104,   40,
299  /*  1670 */   170,  172,  119,  120,  181,  259,  188,  191,  193,  120,
300  /*  1680 */   120,  290,  290,  135,  120,  216,  290,  167,  290,  290,
301  /*  1690 */   290,  175,  290,  290,  225,  120,  290,  290,  236,  120,
302  /*  1700 */   243,  248,  250,  120,  260,  263,  290,  269,  272,  275,
303  /*  1710 */   290,  282,  284,  182,  290,  189,  290,   27,  235,  290,
304  /*  1720 */   200,   40,  170,  172,  202,  120,  181,  120,  188,  191,
305  /*  1730 */   193,  204,  120,  206,  290,  208,  120,  216,  290,  210,
306  /*  1740 */   290,  226,  290,  120,  290,  120,  225,  120,  290,  290,
307  /*  1750 */   236,  120,  243,  120,  250,  290,  260,  263,  290,  269,
308  /*  1760 */   272,  275,  280,  282,  284,  261,  290,  264,  290,   27,
309  /*  1770 */   235,  290,  267,   40,  170,  172,  270,  120,  181,  120,
310  /*  1780 */   188,  191,  193,  273,  120,  341,  290,  348,  120,  216,
311  /*  1790 */   290,  290,  290,  290,  290,  120,  290,  120,  225,  120,
312  /*  1800 */   290,  290,  236,  290,  243,  290,  250,  290,  260,  263,
313  /*  1810 */   290,  269,  272,  275,  291,  282,  284,  290,  290,  290,
314  /*  1820 */   290,   27,  235,  290,  290,   40,  170,  172,  290,  290,
315  /*  1830 */   181,  290,  188,  191,  193,  290,  290,  290,  290,  290,
316  /*  1840 */   290,  216,  290,  290,  290,  290,  290,  290,  290,  290,
317  /*  1850 */   225,  290,  290,  290,  236,  290,  243,  297,  250,  290,
318  /*  1860 */   260,  263,  290,  269,  272,  275,  290,  282,  284,  290,
319  /*  1870 */   290,  290,  290,   27,  235,  290,  290,   40,  170,  172,
320  /*  1880 */   290,  290,  181,  290,  188,  191,  193,  290,  290,  290,
321  /*  1890 */   290,  290,  290,  216,  290,  290,  290,  290,  290,  290,
322  /*  1900 */   290,  290,  225,  290,  290,  290,  236,  302,  243,  290,
323  /*  1910 */   250,  290,  260,  263,  290,  269,  272,  275,  290,  282,
324  /*  1920 */   284,  290,  290,  290,  290,   27,  235,  290,  290,   40,
325  /*  1930 */   170,  172,  290,  290,  181,  290,  188,  191,  193,  290,
326  /*  1940 */   290,  290,  290,  290,  290,  216,  290,  314,  290,  290,
327  /*  1950 */   290,  290,  290,  290,  225,  290,  290,  290,  236,  290,
328  /*  1960 */   243,  290,  250,  290,  260,  263,  290,  269,  272,  275,
329  /*  1970 */   290,  282,  284,  290,  290,  290,  290,   27,  235,  290,
330  /*  1980 */   290,   40,  170,  172,  290,  290,  181,  329,  188,  191,
331  /*  1990 */   193,  290,  290,  290,  290,  290,  290,  216,  290,  290,
332  /*  2000 */   290,  290,  290,  290,  290,  290,  225,  290,  290,  290,
333  /*  2010 */   236,  290,  243,  290,  250,  290,  260,  263,  290,  269,
334  /*  2020 */   272,  275,  290,  282,  284,  290,  290,  290,  290,   27,
335  /*  2030 */   235,  290,  290,   40,  170,  172,  290,  336,  181,  290,
336  /*  2040 */   188,  191,  193,  290,  290,  290,  290,  290,  290,  216,
337  /*  2050 */   290,  290,  290,  290,  290,  290,  290,  290,  225,  290,
338  /*  2060 */   290,  290,  236,  290,  243,  290,  250,  290,  260,  263,
339  /*  2070 */   290,  269,  272,  275,  290,  282,  284,  290,  290,  290,
340  /*  2080 */   290,   27,  235,  290,  290,   40,  170,  172,  290,  345,
341  /*  2090 */   181,  290,  188,  191,  193,  290,  290,  290,  290,  290,
342  /*  2100 */   290,  216,  290,  290,  290,  290,  290,  290,  290,  290,
343  /*  2110 */   225,  290,  290,  290,  236,  290,  243,  290,  250,  290,
344  /*  2120 */   260,  263,  290,  269,  272,  275,  290,  282,  284,  290,
345  /*  2130 */   290,  290,  290,   27,  235,  290,  290,   40,  170,  172,
346  /*  2140 */   290,  352,  181,  290,  188,  191,  193,  290,  290,  290,
347  /*  2150 */   290,  290,  290,  216,  290,  290,  290,  290,  290,  290,
348  /*  2160 */   290,  290,  225,  290,  290,  290,  236,  290,  243,  290,
349  /*  2170 */   250,  290,  260,  263,  290,  269,  272,  275,  290,  282,
350  /*  2180 */   284,  290,  290,  290,  290,   27,  235,  355,  290,   40,
351  /*  2190 */   170,  172,  290,  290,  181,  290,  188,  191,  193,  290,
352  /*  2200 */   290,  290,  290,  290,  290,  216,  290,  290,  290,  290,
353  /*  2210 */   290,  290,  290,  290,  225,  290,  290,  290,  236,  290,
354  /*  2220 */   243,  290,  250,  290,  260,  263,  290,  269,  272,  275,
355  /*  2230 */   290,  282,  284,  290,  290,  290,  290,   27,  235,  290,
356  /*  2240 */   290,   40,  170,  172,  290,  290,  181,  290,  188,  191,
357  /*  2250 */   193,  290,  290,  290,  290,  290,  290,  216,  290,  290,
358  /*  2260 */   290,  290,  290,  290,  290,  290,  225,  290,  290,  290,
359  /*  2270 */   236,  290,  243,  290,  250,  290,  260,  263,  290,  269,
360  /*  2280 */   272,  275,  290,  282,  284,  290,  290,  290,   47,   44,
361  /*  2290 */   290,  106,  290,  101,  290,  290,  103,  290,   47,   44,
362  /*  2300 */   290,  106,  290,  101,  290,  121,  103,  290,  290,  290,
363  /*  2310 */   290,  290,  290,  290,  290,  121,  290,  290,  290,  290,
364  /*  2320 */   290,  122,  123,  124,  125,  126,  127,  290,  290,  290,
365  /*  2330 */   290,  122,  123,  124,  125,  126,  127,  290,  290,  290,
366  /*  2340 */   290,  290,  290,  290,  290,  290,  290,  157,  158,  159,
367  /*  2350 */   160,  161,  162,  163,  112,  290,  290,  150,  151,  152,
368  /*  2360 */   153,  154,  155,  156,  112,  290,  290,  166,  290,   47,
369  /*  2370 */    44,  290,  106,  290,  101,  290,  164,  103,  290,   47,
370  /*  2380 */    44,  290,  106,  290,  101,  290,  121,  103,  290,  290,
371  /*  2390 */   290,  290,  290,  290,  290,  290,  121,  290,  290,  290,
372  /*  2400 */   290,  290,  122,  123,  124,  125,  126,  127,  138,  290,
373  /*  2410 */   290,  290,  122,  123,  124,  125,  126,  127,  290,  290,
374  /*  2420 */   290,  290,  290,  290,   47,   44,  290,  106,  290,  101,
375  /*  2430 */   290,  290,  103,  290,  290,  112,  290,  290,  290,   47,
376  /*  2440 */    44,  149,  106,  290,  101,  112,  290,  103,  290,  290,
377  /*  2450 */   290,  290,  290,  290,  290,  290,  121,  148,  123,  124,
378  /*  2460 */   125,  126,  127,   47,   44,  290,  106,  290,  101,  290,
379  /*  2470 */   136,  103,  122,  133,  124,  125,  126,  127,   47,   44,
380  /*  2480 */   121,  106,  290,  101,  290,  290,  103,  290,  290,  290,
381  /*  2490 */   112,  290,  108,  290,  290,  121,  122,  117,  124,  125,
382  /*  2500 */   126,  127,  290,  290,  290,  112,  290,  290,  290,  290,
383  /*  2510 */   290,  122,  117,  124,  125,  126,  127,   47,   44,  290,
384  /*  2520 */   106,  290,  101,   47,   44,  103,  106,  290,  101,  112,
385  /*  2530 */   290,  103,  290,  290,  121,  290,  290,  290,  290,  290,
386  /*  2540 */   121,  290,  290,  290,  112,  113,  290,  290,  304,  290,
387  /*  2550 */   122,  133,  124,  125,  126,  127,  122,  123,  124,  125,
388  /*  2560 */   126,  127,   47,   44,  290,  106,  290,  101,  290,  290,
389  /*  2570 */   103,  290,  290,   47,   44,  290,  106,  290,  101,  121,
390  /*  2580 */   290,  103,  290,  112,  290,  290,  290,  290,  290,  112,
391  /*  2590 */   121,  290,  290,  290,  290,  122,  117,  124,  125,  126,
392  /*  2600 */   127,  290,  290,  290,  290,  290,  122,  133,  124,  125,
393  /*  2610 */   126,  127,  290,  290,  290,  290,  290,  290,  290,  290,
394  /*  2620 */   290,  290,  290,  290,  290,  290,  290,  290,  112,  290,
395  /*  2630 */   290,  290,  290,  290,  290,  290,  290,  290,  290,  112,
396 };
397 static VVCODETYPE vv_lookahead[] = {
398  /*     0 */     3,    4,    2,    6,    7,    8,    9,   10,   11,   12,
399  /*    10 */    13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
400  /*    20 */    23,   24,   25,   26,   27,   28,   29,   30,    0,   32,
401  /*    30 */    26,   27,   28,   29,   30,   38,   18,   19,   20,   21,
402  /*    40 */    22,   23,   24,   25,   26,   27,   28,   29,   30,   32,
403  /*    50 */    50,   54,  117,  118,  119,    3,    4,    2,    6,    7,
404  /*    60 */     8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
405  /*    70 */    18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
406  /*    80 */    28,   29,   30,   31,   32,    3,    4,   32,    6,    7,
407  /*    90 */     8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
408  /*   100 */    18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
409  /*   110 */    28,   29,   30,   32,   32,    3,    4,   32,    6,    7,
410  /*   120 */     8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
411  /*   130 */    18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
412  /*   140 */    28,   29,   30,   31,   32,   24,   25,   26,   27,   28,
413  /*   150 */    29,   30,    2,    3,   72,  118,  119,    3,    3,    4,
414  /*   160 */   126,    6,    7,    8,    9,   10,   11,   12,   13,   14,
415  /*   170 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
416  /*   180 */    25,   26,   27,   28,   29,   30,    5,   32,    3,    4,
417  /*   190 */    50,    6,    7,    8,    9,   10,   11,   12,   13,   14,
418  /*   200 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
419  /*   210 */    25,   26,   27,   28,   29,   30,    5,   32,    3,    4,
420  /*   220 */    50,    6,    7,    8,    9,   10,   11,   12,   13,   14,
421  /*   230 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
422  /*   240 */    25,   26,   27,   28,   29,   30,   21,   22,   23,   24,
423  /*   250 */    25,   26,   27,   28,   29,   30,   54,   55,   56,   57,
424  /*   260 */    58,   59,   50,    2,    5,   50,  120,  121,  126,    3,
425  /*   270 */     4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
426  /*   280 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
427  /*   290 */    24,   25,   26,   27,   28,   29,   30,    3,    4,   50,
428  /*   300 */     6,    7,    8,    9,   10,   11,   12,   13,   14,   15,
429  /*   310 */    16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
430  /*   320 */    26,   27,   28,   29,   30,  116,    5,   38,   38,    5,
431  /*   330 */   116,   32,  123,   58,   59,   38,  116,  128,  129,  125,
432  /*   340 */    50,  127,  128,   54,   54,  125,   52,  127,  128,   88,
433  /*   350 */     3,    4,   32,    6,    7,    8,    9,   10,   11,   12,
434  /*   360 */    13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
435  /*   370 */    23,   24,   25,   26,   27,   28,   29,   30,   32,   32,
436  /*   380 */     3,    4,    1,    6,    7,    8,    9,   10,   11,   12,
437  /*   390 */    13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
438  /*   400 */    23,   24,   25,   26,   27,   28,   29,   30,   32,   32,
439  /*   410 */     3,    4,   38,    6,    7,    8,    9,   10,   11,   12,
440  /*   420 */    13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
441  /*   430 */    23,   24,   25,   26,   27,   28,   29,   30,  116,   38,
442  /*   440 */    32,  116,  116,   62,  116,  123,  119,  116,   29,   38,
443  /*   450 */   128,  129,  126,  128,  128,   32,  128,   50,  127,  128,
444  /*   460 */    79,    3,    4,   52,    6,    7,    8,    9,   10,   11,
445  /*   470 */    12,   13,   14,   15,   16,   17,   18,   19,   20,   21,
446  /*   480 */    22,   23,   24,   25,   26,   27,   28,   29,   30,    3,
447  /*   490 */     4,   32,    6,    7,    8,    9,   10,   11,   12,   13,
448  /*   500 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
449  /*   510 */    24,   25,   26,   27,   28,   29,   30,   32,   32,    3,
450  /*   520 */     4,   63,    6,    7,    8,    9,   10,   11,   12,   13,
451  /*   530 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
452  /*   540 */    24,   25,   26,   27,   28,   29,   30,   38,   32,    3,
453  /*   550 */     4,   32,    6,    7,    8,    9,   10,   11,   12,   13,
454  /*   560 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
455  /*   570 */    24,   25,   26,   27,   28,   29,   30,   32,   32,    3,
456  /*   580 */     4,  124,    6,    7,    8,    9,   10,   11,   12,   13,
457  /*   590 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
458  /*   600 */    24,   25,   26,   27,   28,   29,   30,   32,   32,    3,
459  /*   610 */     4,   32,    6,    7,    8,    9,   10,   11,   12,   13,
460  /*   620 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
461  /*   630 */    24,   25,   26,   27,   28,   29,   30,   69,   32,    3,
462  /*   640 */     4,    1,    6,    7,    8,    9,   10,   11,   12,   13,
463  /*   650 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
464  /*   660 */    24,   25,   26,   27,   28,   29,   30,   38,   32,    3,
465  /*   670 */     4,   32,    6,    7,    8,    9,   10,   11,   12,   13,
466  /*   680 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
467  /*   690 */    24,   25,   26,   27,   28,   29,   30,    3,    4,   32,
468  /*   700 */     6,    7,    8,    9,   10,   11,   12,   13,   14,   15,
469  /*   710 */    16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
470  /*   720 */    26,   27,   28,   29,   30,   90,   91,   92,   93,   94,
471  /*   730 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
472  /*   740 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
473  /*   750 */   115,    4,   32,    6,    7,    8,    9,   10,   11,   12,
474  /*   760 */    13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
475  /*   770 */    23,   24,   25,   26,   27,   28,   29,   30,    6,    7,
476  /*   780 */     8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
477  /*   790 */    18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
478  /*   800 */    28,   29,   30,   92,   93,   94,   95,   96,   97,   98,
479  /*   810 */    99,  100,  101,  102,  103,  104,  105,  106,  107,  108,
480  /*   820 */   109,  110,  111,  112,  113,  114,  115,   92,   93,   94,
481  /*   830 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
482  /*   840 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
483  /*   850 */   115,    7,    8,    9,   10,   11,   12,   13,   14,   15,
484  /*   860 */    16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
485  /*   870 */    26,   27,   28,   29,   30,   92,   93,   94,   95,   96,
486  /*   880 */    97,   98,   99,  100,  101,  102,  103,  104,  105,  106,
487  /*   890 */   107,  108,  109,  110,  111,  112,  113,  114,  115,   92,
488  /*   900 */    93,   94,   95,   96,   97,   98,   99,  100,  101,  102,
489  /*   910 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
490  /*   920 */   113,  114,  115,   92,   93,   94,   95,   96,   97,   98,
491  /*   930 */    99,  100,  101,  102,  103,  104,  105,  106,  107,  108,
492  /*   940 */   109,  110,  111,  112,  113,  114,  115,   92,   93,   94,
493  /*   950 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
494  /*   960 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
495  /*   970 */   115,   92,   93,   94,   95,   96,   97,   98,   99,  100,
496  /*   980 */   101,  102,  103,  104,  105,  106,  107,  108,  109,  110,
497  /*   990 */   111,  112,  113,  114,  115,   92,   93,   94,   95,   96,
498  /*  1000 */    97,   98,   99,  100,  101,  102,  103,  104,  105,  106,
499  /*  1010 */   107,  108,  109,  110,  111,  112,  113,  114,  115,   92,
500  /*  1020 */    93,   94,   95,   96,   97,   98,   99,  100,  101,  102,
501  /*  1030 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
502  /*  1040 */   113,  114,  115,   92,   93,   94,   95,   96,   97,   98,
503  /*  1050 */    99,  100,  101,  102,  103,  104,  105,  106,  107,  108,
504  /*  1060 */   109,  110,  111,  112,  113,  114,  115,   92,   93,   94,
505  /*  1070 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
506  /*  1080 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
507  /*  1090 */   115,   92,   93,   94,   95,   96,   97,   98,   99,  100,
508  /*  1100 */   101,  102,  103,  104,  105,  106,  107,  108,  109,  110,
509  /*  1110 */   111,  112,  113,  114,  115,   92,   93,   94,   95,   96,
510  /*  1120 */    97,   98,   99,  100,  101,  102,  103,  104,  105,  106,
511  /*  1130 */   107,  108,  109,  110,  111,  112,  113,  114,  115,   92,
512  /*  1140 */    93,   94,   95,   96,   97,   98,   99,  100,  101,  102,
513  /*  1150 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
514  /*  1160 */   113,  114,  115,   92,   93,   94,   95,   96,   97,   98,
515  /*  1170 */    99,  100,  101,  102,  103,  104,  105,  106,  107,  108,
516  /*  1180 */   109,  110,  111,  112,  113,  114,  115,   93,   94,   95,
517  /*  1190 */    96,   97,   98,   99,  100,  101,  102,  103,  104,  105,
518  /*  1200 */   106,  107,  108,  109,  110,  111,  112,  113,  114,  115,
519  /*  1210 */    31,   32,   33,   34,   35,   36,   37,  116,   32,   40,
520  /*  1220 */   116,   42,   43,   44,  116,  116,  116,   32,   32,  128,
521  /*  1230 */    51,   32,  128,  129,    1,   32,  128,  128,  128,   60,
522  /*  1240 */     0,    1,   32,   64,   32,   66,   32,   68,    2,   70,
523  /*  1250 */    71,   32,   73,   74,   75,   32,   77,   78,   93,   94,
524  /*  1260 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
525  /*  1270 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
526  /*  1280 */   115,   31,   32,   33,   34,   35,   36,   37,  116,    1,
527  /*  1290 */    40,    1,   42,   43,   44,   62,    1,  116,   52,  116,
528  /*  1300 */   128,   51,   62,  116,    1,  116,    2,   32,    2,  128,
529  /*  1310 */    60,  128,   79,   61,   64,  128,   66,  128,   68,   79,
530  /*  1320 */    70,   71,  121,   73,   74,   75,   32,   77,   78,  116,
531  /*  1330 */    32,  116,   45,   31,   32,   33,  116,   35,   36,   37,
532  /*  1340 */   122,  128,   40,  128,   42,   43,   44,   32,  128,   32,
533  /*  1350 */    62,   38,   62,   51,    1,    3,   52,   62,   52,    1,
534  /*  1360 */    32,    1,   60,    1,   32,    1,   64,   79,   66,   79,
535  /*  1370 */    68,   32,   70,   71,   79,   73,   74,   75,   32,   77,
536  /*  1380 */    78,   32,    9,   10,   11,   12,   13,   14,   15,   16,
537  /*  1390 */    17,   18,   19,   20,   21,   22,   23,   24,   25,   26,
538  /*  1400 */    27,   28,   29,   30,    1,   31,   32,  116,   33,   35,
539  /*  1410 */    36,   37,   32,   39,   40,   62,   42,   43,   44,  128,
540  /*  1420 */    62,  130,   62,  116,   62,   51,   62,  130,    1,  130,
541  /*  1430 */     1,  130,   79,  130,   60,  128,  130,   79,   64,   79,
542  /*  1440 */    66,   79,   68,   79,   70,   71,    1,   73,   74,   75,
543  /*  1450 */     1,   77,   78,  130,  130,  130,  130,   31,   32,   24,
544  /*  1460 */   130,   35,   36,   37,  130,   30,   40,   41,   42,   43,
545  /*  1470 */    44,  130,    1,  116,  130,  116,  130,   51,  130,  130,
546  /*  1480 */    45,   46,   47,   48,   49,  128,   60,  128,  130,   62,
547  /*  1490 */    64,   62,   66,    1,   68,  130,   70,   71,    1,   73,
548  /*  1500 */    74,   75,    1,   77,   78,  130,   79,   62,   79,   31,
549  /*  1510 */    32,   62,  130,   35,   36,   37,  130,    1,   40,  130,
550  /*  1520 */    42,   43,   44,  116,   79,  130,  130,  116,   79,   51,
551  /*  1530 */   130,   53,  130,   62,  130,  128,  130,  130,   60,  128,
552  /*  1540 */   130,  130,   64,  130,   66,  130,   68,  130,   70,   71,
553  /*  1550 */    79,   73,   74,   75,   62,   77,   78,  116,  130,   62,
554  /*  1560 */   130,   31,   32,   62,  130,   35,   36,   37,  130,  128,
555  /*  1570 */    40,   79,   42,   43,   44,  116,   79,  130,   62,  130,
556  /*  1580 */    79,   51,  130,  130,  130,  130,  130,  128,  130,  130,
557  /*  1590 */    60,   61,  130,  130,   64,   79,   66,    1,   68,  116,
558  /*  1600 */    70,   71,  130,   73,   74,   75,  130,   77,   78,  116,
559  /*  1610 */   130,  128,  130,   31,   32,  116,  116,   35,   36,   37,
560  /*  1620 */   116,  128,   40,  116,   42,   43,   44,  128,  128,  130,
561  /*  1630 */   130,  116,  128,   51,  130,  128,  130,  116,  130,  116,
562  /*  1640 */   130,  130,   60,  128,  130,  130,   64,   65,   66,  128,
563  /*  1650 */    68,  128,   70,   71,  130,   73,   74,   75,   62,   77,
564  /*  1660 */    78,  116,  130,  130,  130,   31,   32,  116,  116,   35,
565  /*  1670 */    36,   37,  116,  128,   40,   79,   42,   43,   44,  128,
566  /*  1680 */   128,  130,  130,  116,  128,   51,  130,  116,  130,  130,
567  /*  1690 */   130,  116,  130,  130,   60,  128,  130,  130,   64,  128,
568  /*  1700 */    66,   67,   68,  128,   70,   71,  130,   73,   74,   75,
569  /*  1710 */   130,   77,   78,  116,  130,  116,  130,   31,   32,  130,
570  /*  1720 */   116,   35,   36,   37,  116,  128,   40,  128,   42,   43,
571  /*  1730 */    44,  116,  128,  116,  130,  116,  128,   51,  130,  116,
572  /*  1740 */   130,  116,  130,  128,  130,  128,   60,  128,  130,  130,
573  /*  1750 */    64,  128,   66,  128,   68,  130,   70,   71,  130,   73,
574  /*  1760 */    74,   75,   76,   77,   78,  116,  130,  116,  130,   31,
575  /*  1770 */    32,  130,  116,   35,   36,   37,  116,  128,   40,  128,
576  /*  1780 */    42,   43,   44,  116,  128,  116,  130,  116,  128,   51,
577  /*  1790 */   130,  130,  130,  130,  130,  128,  130,  128,   60,  128,
578  /*  1800 */   130,  130,   64,  130,   66,  130,   68,  130,   70,   71,
579  /*  1810 */   130,   73,   74,   75,   76,   77,   78,  130,  130,  130,
580  /*  1820 */   130,   31,   32,  130,  130,   35,   36,   37,  130,  130,
581  /*  1830 */    40,  130,   42,   43,   44,  130,  130,  130,  130,  130,
582  /*  1840 */   130,   51,  130,  130,  130,  130,  130,  130,  130,  130,
583  /*  1850 */    60,  130,  130,  130,   64,  130,   66,   67,   68,  130,
584  /*  1860 */    70,   71,  130,   73,   74,   75,  130,   77,   78,  130,
585  /*  1870 */   130,  130,  130,   31,   32,  130,  130,   35,   36,   37,
586  /*  1880 */   130,  130,   40,  130,   42,   43,   44,  130,  130,  130,
587  /*  1890 */   130,  130,  130,   51,  130,  130,  130,  130,  130,  130,
588  /*  1900 */   130,  130,   60,  130,  130,  130,   64,   65,   66,  130,
589  /*  1910 */    68,  130,   70,   71,  130,   73,   74,   75,  130,   77,
590  /*  1920 */    78,  130,  130,  130,  130,   31,   32,  130,  130,   35,
591  /*  1930 */    36,   37,  130,  130,   40,  130,   42,   43,   44,  130,
592  /*  1940 */   130,  130,  130,  130,  130,   51,  130,   53,  130,  130,
593  /*  1950 */   130,  130,  130,  130,   60,  130,  130,  130,   64,  130,
594  /*  1960 */    66,  130,   68,  130,   70,   71,  130,   73,   74,   75,
595  /*  1970 */   130,   77,   78,  130,  130,  130,  130,   31,   32,  130,
596  /*  1980 */   130,   35,   36,   37,  130,  130,   40,   41,   42,   43,
597  /*  1990 */    44,  130,  130,  130,  130,  130,  130,   51,  130,  130,
598  /*  2000 */   130,  130,  130,  130,  130,  130,   60,  130,  130,  130,
599  /*  2010 */    64,  130,   66,  130,   68,  130,   70,   71,  130,   73,
600  /*  2020 */    74,   75,  130,   77,   78,  130,  130,  130,  130,   31,
601  /*  2030 */    32,  130,  130,   35,   36,   37,  130,   39,   40,  130,
602  /*  2040 */    42,   43,   44,  130,  130,  130,  130,  130,  130,   51,
603  /*  2050 */   130,  130,  130,  130,  130,  130,  130,  130,   60,  130,
604  /*  2060 */   130,  130,   64,  130,   66,  130,   68,  130,   70,   71,
605  /*  2070 */   130,   73,   74,   75,  130,   77,   78,  130,  130,  130,
606  /*  2080 */   130,   31,   32,  130,  130,   35,   36,   37,  130,   39,
607  /*  2090 */    40,  130,   42,   43,   44,  130,  130,  130,  130,  130,
608  /*  2100 */   130,   51,  130,  130,  130,  130,  130,  130,  130,  130,
609  /*  2110 */    60,  130,  130,  130,   64,  130,   66,  130,   68,  130,
610  /*  2120 */    70,   71,  130,   73,   74,   75,  130,   77,   78,  130,
611  /*  2130 */   130,  130,  130,   31,   32,  130,  130,   35,   36,   37,
612  /*  2140 */   130,   39,   40,  130,   42,   43,   44,  130,  130,  130,
613  /*  2150 */   130,  130,  130,   51,  130,  130,  130,  130,  130,  130,
614  /*  2160 */   130,  130,   60,  130,  130,  130,   64,  130,   66,  130,
615  /*  2170 */    68,  130,   70,   71,  130,   73,   74,   75,  130,   77,
616  /*  2180 */    78,  130,  130,  130,  130,   31,   32,   33,  130,   35,
617  /*  2190 */    36,   37,  130,  130,   40,  130,   42,   43,   44,  130,
618  /*  2200 */   130,  130,  130,  130,  130,   51,  130,  130,  130,  130,
619  /*  2210 */   130,  130,  130,  130,   60,  130,  130,  130,   64,  130,
620  /*  2220 */    66,  130,   68,  130,   70,   71,  130,   73,   74,   75,
621  /*  2230 */   130,   77,   78,  130,  130,  130,  130,   31,   32,  130,
622  /*  2240 */   130,   35,   36,   37,  130,  130,   40,  130,   42,   43,
623  /*  2250 */    44,  130,  130,  130,  130,  130,  130,   51,  130,  130,
624  /*  2260 */   130,  130,  130,  130,  130,  130,   60,  130,  130,  130,
625  /*  2270 */    64,  130,   66,  130,   68,  130,   70,   71,  130,   73,
626  /*  2280 */    74,   75,  130,   77,   78,  130,  130,  130,   21,   22,
627  /*  2290 */   130,   24,  130,   26,  130,  130,   29,  130,   21,   22,
628  /*  2300 */   130,   24,  130,   26,  130,   38,   29,  130,  130,  130,
629  /*  2310 */   130,  130,  130,  130,  130,   38,  130,  130,  130,  130,
630  /*  2320 */   130,   54,   55,   56,   57,   58,   59,  130,  130,  130,
631  /*  2330 */   130,   54,   55,   56,   57,   58,   59,  130,  130,  130,
632  /*  2340 */   130,  130,  130,  130,  130,  130,  130,   80,   81,   82,
633  /*  2350 */    83,   84,   85,   86,   87,  130,  130,   80,   81,   82,
634  /*  2360 */    83,   84,   85,   86,   87,  130,  130,   19,  130,   21,
635  /*  2370 */    22,  130,   24,  130,   26,  130,   18,   29,  130,   21,
636  /*  2380 */    22,  130,   24,  130,   26,  130,   38,   29,  130,  130,
637  /*  2390 */   130,  130,  130,  130,  130,  130,   38,  130,  130,  130,
638  /*  2400 */   130,  130,   54,   55,   56,   57,   58,   59,    5,  130,
639  /*  2410 */   130,  130,   54,   55,   56,   57,   58,   59,  130,  130,
640  /*  2420 */   130,  130,  130,  130,   21,   22,  130,   24,  130,   26,
641  /*  2430 */   130,  130,   29,  130,  130,   87,  130,  130,  130,   21,
642  /*  2440 */    22,   38,   24,  130,   26,   87,  130,   29,  130,  130,
643  /*  2450 */   130,  130,  130,  130,  130,  130,   38,   54,   55,   56,
644  /*  2460 */    57,   58,   59,   21,   22,  130,   24,  130,   26,  130,
645  /*  2470 */    52,   29,   54,   55,   56,   57,   58,   59,   21,   22,
646  /*  2480 */    38,   24,  130,   26,  130,  130,   29,  130,  130,  130,
647  /*  2490 */    87,  130,   50,  130,  130,   38,   54,   55,   56,   57,
648  /*  2500 */    58,   59,  130,  130,  130,   87,  130,  130,  130,  130,
649  /*  2510 */   130,   54,   55,   56,   57,   58,   59,   21,   22,  130,
650  /*  2520 */    24,  130,   26,   21,   22,   29,   24,  130,   26,   87,
651  /*  2530 */   130,   29,  130,  130,   38,  130,  130,  130,  130,  130,
652  /*  2540 */    38,  130,  130,  130,   87,   88,  130,  130,   52,  130,
653  /*  2550 */    54,   55,   56,   57,   58,   59,   54,   55,   56,   57,
654  /*  2560 */    58,   59,   21,   22,  130,   24,  130,   26,  130,  130,
655  /*  2570 */    29,  130,  130,   21,   22,  130,   24,  130,   26,   38,
656  /*  2580 */   130,   29,  130,   87,  130,  130,  130,  130,  130,   87,
657  /*  2590 */    38,  130,  130,  130,  130,   54,   55,   56,   57,   58,
658  /*  2600 */    59,  130,  130,  130,  130,  130,   54,   55,   56,   57,
659  /*  2610 */    58,   59,  130,  130,  130,  130,  130,  130,  130,  130,
660  /*  2620 */   130,  130,  130,  130,  130,  130,  130,  130,   87,  130,
661  /*  2630 */   130,  130,  130,  130,  130,  130,  130,  130,  130,   87,
662 };
663 #define VV_SHIFT_USE_DFLT (-4)
664 static short vv_shift_ofst[] = {
665  /*     0 */   381,   28, 1240,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
666  /*    10 */    -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
667  /*    20 */    -4,   -4,   -4,   -4,   -4,   -4, 2206, 2502,  155, 1288,
668  /*    30 */  1290, 1179,   17,   -4,   81, 1295, 1353, 1302,   85,   -4,
669  /*    40 */  2502,  185,   -4, 2502, 2502,  121, 2502, 2502,  121, 2348,
670  /*    50 */   225, 2358,  225, 2502,  225, 2502, 1373, 2502, 1373, 2502,
671  /*    60 */   121, 2502,    4, 2502,  844, 2502,   18, 2267,   18, 2277,
672  /*    70 */    18, 2502,   18, 2502,   18, 2502,   18, 2502,   18, 2502,
673  /*    80 */    18, 2502,   18, 2502,   -4, 2502,  747,  154, 2502,    4,
674  /*    90 */    -4,   -4, 2403,  215,   -4, 2502,  266, 2502,  772, 2418,
675  /*   100 */   666, 2502,    4, 2502,  294,   -4, 2442,  666,   -4,    0,
676  /*   110 */    -4, 2541, 2457,   -4,  261,   -4,   -4,  181, 2502,  666,
677  /*   120 */    -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4, 1246,
678  /*   130 */    -4, 2552,   -4,  211, 2502,  666,   -4,   -4,  289,  140,
679  /*   140 */    -4,  170,  212,  259,  290,   -4,  249,   -4,  321,  324,
680  /*   150 */    -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
681  /*   160 */    -4,   -4,   -4,   -4, 2502,  225, 2502,  225,  121,  121,
682  /*   170 */   299,   -4,  297,  150, 2502,   52,  381, 1233, 1374,  320,
683  /*   180 */    -4, 2502,  347, 1358, 1360, 1426,  346,   -4, 2502,  377,
684  /*   190 */    -4,  376,   -4,  374,   55,   -4,  374,   -4, 1435, 2502,
685  /*   200 */   666, 2502,  666, 2502,  666, 2502,  666, 2502,  666, 2502,
686  /*   210 */   407,   -4,  374,   -4,   -4,   -4,  401,  419,  411,  408,
687  /*   220 */   381, 1362, 1478,  423,   -4, 2502,  694, 2496, 1304,  459,
688  /*   230 */   381, 1364, 1530,  485,   -4,   -4,  509,  519, 1427, 1429,
689  /*   240 */  1582,  545,   -4, 2502,   -3,  381, 1445, 1634,  575,   -4,
690  /*   250 */   579,  381, 2502,  458,   -4,  640,  568,  639,   -4,   -4,
691  /*   260 */  2502,  486,   -4, 2502,   82,   -4, 2502,  516,   -4, 2502,
692  /*   270 */   546,   -4, 2502,  576,   -4,  275,  667,  381, 1449, 1686,
693  /*   280 */   720,   -4, 1186,   -4, 1195,   -4,   -4, 1196,  381, 1471,
694  /*   290 */  1738, 1199,   -4, 1203,  381, 1492, 1790, 1210,   -4, 1212,
695  /*   300 */  1214, 1842, 1219,   -4, 1223, 1303, 1252, 1275,   -4, 1306,
696  /*   310 */  1294,  381, 1497, 1894, 1298,   -4,  629,   -4, 1287,  202,
697  /*   320 */    -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4, 1946, 1315,
698  /*   330 */    -4, 2502,  606,  381, 1501, 1998, 1317,   -4, 1313, 1352,
699  /*   340 */  2502,  112,  381, 1516, 2050, 1328,   -4, 2502,  636,  381,
700  /*   350 */  1596, 2102, 1332,   -4, 2154, 1339,   -4, 1250, 1346,   -4,
701  /*   360 */  1349, 1403, 1375, 1380,   -4,
702 };
703 #define VV_REDUCE_USE_DFLT (-66)
704 static short vv_reduce_ofst[] = {
705  /*     0 */   635,  -66, 1094,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
706  /*    10 */   -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
707  /*    20 */   -66,  -66,  -66,  -66,  -66,  -66,  -66,  325,  -66,  711,
708  /*    30 */  1094,  -66,  -66,  -66,  -66,  735, 1094,  -66,  -66,  -66,
709  /*    40 */  1101,  -66,  -66, 1108, 1109,  -66, 1110, 1172,  -66, 1181,
710  /*    50 */   -66, 1183,  -66, 1187,  -66, 1189,  -66, 1213,  -66, 1215,
711  /*    60 */   -66, 1220,  -66, 1291,  -66, 1407,  -66, 1411,  -66, 1441,
712  /*    70 */   -66, 1459,  -66, 1483,  -66, 1493,  -66, 1499,  -66, 1500,
713  /*    80 */   -66, 1504,  -66, 1507,  -66, 1515,  -66,  -66, 1521,  -66,
714  /*    90 */   -66,  -66,  326,  -66,  -66, 1523,  -66, 1545,  -66,  209,
715  /*   100 */   -66, 1551,  -66, 1552,  -66,  -66,  214,  -66,  -66,  -66,
716  /*   110 */   -66,  331,  220,  -66,  -66,  -66,  -66,  -66, 1556,  -66,
717  /*   120 */   -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
718  /*   130 */   -66, 1104,  -66,  -66, 1567,  -66,  -66,  -66,   34,  -66,
719  /*   140 */   -66,  -66,  -66,  -66,  142,  -66,  -66,  -66,  -66,  -66,
720  /*   150 */   -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
721  /*   160 */   -66,  -66,  -66,  -66,  328,  -66, 1571,  -66,  -66,  -66,
722  /*   170 */   -66,  -66,  -66,  -66, 1575,  -66,  783, 1094,  -66,  -66,
723  /*   180 */   -66, 1597,  -66,  807, 1094,  -66,  -66,  -66, 1599,  -66,
724  /*   190 */   -66,  -66,  -66,  -65,  -66,  -66,   37,  -66,  -66, 1604,
725  /*   200 */   -66, 1608,  -66, 1615,  -66, 1617,  -66, 1619,  -66, 1623,
726  /*   210 */   -66,  -66,  327,  -66,  -66,  -66,  -66,  -66,  146,  -66,
727  /*   220 */   831, 1094,  -66,  -66,  -66, 1625,  -66,  322,  -66,  -66,
728  /*   230 */   855, 1094,  -66,  -66,  -66,  -66,  -66,  -66,  879, 1094,
729  /*   240 */   -66,  -66,  -66, 1307,  457,  903, 1094,  -66,  -66,  -66,
730  /*   250 */   -66, 1165, 1357,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
731  /*   260 */  1649,  -66,  -66, 1651,  -66,  -66, 1656,  -66,  -66, 1660,
732  /*   270 */   -66,  -66, 1667,  -66,  -66,  -66,  -66,  927, 1094,  -66,
733  /*   280 */   -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  951, 1094,
734  /*   290 */   -66,  -66,  -66,  -66,  975, 1094,  -66,  -66,  -66,  -66,
735  /*   300 */   -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
736  /*   310 */   -66,  999, 1094,  -66,  -66,  -66, 1201,  -66,  -66, 1218,
737  /*   320 */   -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
738  /*   330 */   -66, 1359,  -66, 1023, 1094,  -66,  -66,  -66,  -66,  -66,
739  /*   340 */  1669,  -66, 1047, 1094,  -66,  -66,  -66, 1671,  -66, 1071,
740  /*   350 */  1094,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
741  /*   360 */   -66,  -66,  -66,  -66,  -66,
742 };
743 static VVACTIONTYPE vv_default[] = {
744  /*     0 */   523,  523,  523,  367,  369,  370,  371,  372,  373,  374,
745  /*    10 */   375,  376,  377,  378,  379,  380,  381,  382,  383,  384,
746  /*    20 */   385,  386,  387,  388,  389,  390,  523,  523,  523,  523,
747  /*    30 */   523,  523,  523,  391,  523,  523,  523,  523,  523,  393,
748  /*    40 */   523,  523,  396,  523,  523,  450,  523,  523,  451,  523,
749  /*    50 */   454,  523,  456,  523,  458,  523,  459,  523,  460,  523,
750  /*    60 */   461,  523,  462,  523,  463,  523,  464,  523,  480,  523,
751  /*    70 */   479,  523,  481,  523,  482,  523,  483,  523,  484,  523,
752  /*    80 */   485,  523,  486,  523,  487,  523,  488,  523,  523,  489,
753  /*    90 */   491,  492,  523,  523,  498,  523,  523,  523,  499,  523,
754  /*   100 */   514,  523,  490,  523,  523,  493,  523,  508,  494,  523,
755  /*   110 */   495,  523,  523,  496,  523,  497,  506,  518,  523,  507,
756  /*   120 */   509,  516,  517,  518,  519,  520,  521,  522,  505,  523,
757  /*   130 */   510,  523,  512,  518,  523,  515,  511,  513,  523,  523,
758  /*   140 */   500,  523,  523,  523,  523,  501,  523,  502,  517,  516,
759  /*   150 */   466,  468,  470,  472,  474,  476,  478,  465,  467,  469,
760  /*   160 */   471,  473,  475,  477,  523,  457,  523,  455,  453,  452,
761  /*   170 */   523,  397,  523,  523,  523,  523,  523,  523,  523,  523,
762  /*   180 */   398,  523,  523,  523,  523,  523,  523,  402,  523,  523,
763  /*   190 */   404,  523,  405,  523,  523,  406,  523,  407,  523,  523,
764  /*   200 */   409,  523,  410,  523,  411,  523,  412,  523,  413,  523,
765  /*   210 */   523,  415,  523,  414,  416,  408,  523,  523,  523,  523,
766  /*   220 */   523,  523,  523,  523,  417,  523,  523,  523,  523,  510,
767  /*   230 */   523,  523,  523,  523,  429,  431,  523,  523,  523,  523,
768  /*   240 */   523,  523,  433,  523,  523,  523,  523,  523,  523,  435,
769  /*   250 */   523,  523,  523,  523,  432,  523,  523,  523,  439,  449,
770  /*   260 */   523,  523,  440,  523,  523,  441,  523,  523,  442,  523,
771  /*   270 */   523,  443,  523,  523,  444,  523,  523,  523,  523,  523,
772  /*   280 */   523,  445,  523,  447,  523,  448,  368,  523,  523,  523,
773  /*   290 */   523,  523,  446,  523,  523,  523,  523,  523,  436,  523,
774  /*   300 */   523,  523,  523,  434,  511,  523,  523,  523,  430,  523,
775  /*   310 */   523,  523,  523,  523,  523,  418,  523,  419,  421,  523,
776  /*   320 */   422,  423,  424,  425,  426,  427,  428,  420,  523,  523,
777  /*   330 */   403,  523,  523,  523,  523,  523,  523,  399,  523,  523,
778  /*   340 */   523,  523,  523,  523,  523,  523,  400,  523,  523,  523,
779  /*   350 */   523,  523,  523,  401,  523,  523,  394,  523,  523,  392,
780  /*   360 */   523,  523,  523,  523,  395,
781 };
782 #define VV_SZ_ACTTAB (sizeof(vv_action)/sizeof(vv_action[0]))
783 
784 /* The next table maps tokens into fallback tokens.  If a construct
785 ** like the following:
786 **
787 **      %fallback ID X Y Z.
788 **
789 ** appears in the grammer, then ID becomes a fallback token for X, Y,
790 ** and Z.  Whenever one of the tokens X, Y, or Z is input to the parser
791 ** but it does not parse, the type of the token is changed to ID and
792 ** the parse is retried before an error is thrown.
793 */
794 #ifdef VVFALLBACK
795 static const VVCODETYPE vvFallback[] = {
796 };
797 #endif /* VVFALLBACK */
798 
799 /* The following structure represents a single element of the
800 ** parser's stack.  Information stored includes:
801 **
802 **   +  The state number for the parser at this level of the stack.
803 **
804 **   +  The value of the token stored at this level of the stack.
805 **      (In other words, the "major" token.)
806 **
807 **   +  The semantic value stored at this level of the stack.  This is
808 **      the information used by the action routines in the grammar.
809 **      It is sometimes called the "minor" token.
810 */
811 struct vvStackEntry {
812   int stateno;       /* The state-number */
813   int major;         /* The major token value.  This is the code
814                      ** number for the token at this stack level */
815   VVMINORTYPE minor; /* The user-supplied minor token value.  This
816                      ** is the value of the token  */
817 };
818 typedef struct vvStackEntry vvStackEntry;
819 
820 /* The state of the parser is completely contained in an instance of
821 ** the following structure */
822 struct vvParser {
823   int vvidx;                    /* Index of top element in stack */
824   int vverrcnt;                 /* Shifts left before out of the error */
825   phvolt_ARG_SDECL                /* A place to hold %extra_argument */
826   vvStackEntry vvstack[VVSTACKDEPTH];  /* The parser's stack */
827 };
828 typedef struct vvParser vvParser;
829 
830 #ifndef NDEBUG
831 #include <stdio.h>
832 static FILE *vvTraceFILE = 0;
833 static char *vvTracePrompt = 0;
834 #endif /* NDEBUG */
835 
836 #ifndef NDEBUG
837 /*
838 ** Turn parser tracing on by giving a stream to which to write the trace
839 ** and a prompt to preface each trace message.  Tracing is turned off
840 ** by making either argument NULL
841 **
842 ** Inputs:
843 ** <ul>
844 ** <li> A FILE* to which trace output should be written.
845 **      If NULL, then tracing is turned off.
846 ** <li> A prefix string written at the beginning of every
847 **      line of trace output.  If NULL, then tracing is
848 **      turned off.
849 ** </ul>
850 **
851 ** Outputs:
852 ** None.
853 */
phvolt_Trace(FILE * TraceFILE,char * zTracePrompt)854 void phvolt_Trace(FILE *TraceFILE, char *zTracePrompt){
855   vvTraceFILE = TraceFILE;
856   vvTracePrompt = zTracePrompt;
857   if( vvTraceFILE==0 ) vvTracePrompt = 0;
858   else if( vvTracePrompt==0 ) vvTraceFILE = 0;
859 }
860 #endif /* NDEBUG */
861 
862 #ifndef NDEBUG
863 /* For tracing shifts, the names of all terminals and nonterminals
864 ** are required.  The following table supplies these names */
865 static const char *vvTokenName[] = {
866   "$",             "OPEN_DELIMITER",  "COMMA",         "IN",
867   "QUESTION",      "COLON",         "RANGE",         "AND",
868   "OR",            "IS",            "EQUALS",        "NOTEQUALS",
869   "LESS",          "GREATER",       "GREATEREQUAL",  "LESSEQUAL",
870   "IDENTICAL",     "NOTIDENTICAL",  "DIVIDE",        "TIMES",
871   "MOD",           "PLUS",          "MINUS",         "CONCAT",
872   "SBRACKET_OPEN",  "PIPE",          "NOT",           "INCR",
873   "DECR",          "PARENTHESES_OPEN",  "DOT",           "IF",
874   "CLOSE_DELIMITER",  "ENDIF",         "ELSE",          "ELSEIF",
875   "ELSEFOR",       "FOR",           "IDENTIFIER",    "ENDFOR",
876   "SWITCH",        "ENDSWITCH",     "CASE",          "DEFAULT",
877   "SET",           "ASSIGN",        "ADD_ASSIGN",    "SUB_ASSIGN",
878   "MUL_ASSIGN",    "DIV_ASSIGN",    "SBRACKET_CLOSE",  "MACRO",
879   "PARENTHESES_CLOSE",  "ENDMACRO",      "INTEGER",       "STRING",
880   "DOUBLE",        "NULL",          "FALSE",         "TRUE",
881   "CALL",          "ENDCALL",       "OPEN_EDELIMITER",  "CLOSE_EDELIMITER",
882   "BLOCK",         "ENDBLOCK",      "CACHE",         "ENDCACHE",
883   "RAW",           "ENDRAW",        "EXTENDS",       "INCLUDE",
884   "WITH",          "DO",            "RETURN",        "AUTOESCAPE",
885   "ENDAUTOESCAPE",  "BREAK",         "CONTINUE",      "RAW_FRAGMENT",
886   "DEFINED",       "EMPTY",         "EVEN",          "ODD",
887   "NUMERIC",       "SCALAR",        "ITERABLE",      "CBRACKET_OPEN",
888   "CBRACKET_CLOSE",  "error",         "program",       "volt_language",
889   "statement_list",  "statement",     "raw_fragment",  "if_statement",
890   "elseif_statement",  "elsefor_statement",  "for_statement",  "switch_statement",
891   "case_clause",   "set_statement",  "echo_statement",  "block_statement",
892   "cache_statement",  "extends_statement",  "include_statement",  "do_statement",
893   "return_statement",  "autoescape_statement",  "raw_statement",  "break_statement",
894   "continue_statement",  "macro_statement",  "empty_statement",  "macro_call_statement",
895   "expr",          "set_assignments",  "set_assignment",  "assignable_expr",
896   "macro_parameters",  "macro_parameter",  "macro_parameter_default",  "argument_list",
897   "cache_lifetime",  "array_list",    "slice_offset",  "array_item",
898   "function_call",  "argument_item",
899 };
900 #endif /* NDEBUG */
901 
902 #ifndef NDEBUG
903 /* For tracing reduce actions, the names of all rules are required.
904 */
905 static const char *vvRuleName[] = {
906  /*   0 */ "program ::= volt_language",
907  /*   1 */ "volt_language ::= statement_list",
908  /*   2 */ "statement_list ::= statement_list statement",
909  /*   3 */ "statement_list ::= statement",
910  /*   4 */ "statement ::= raw_fragment",
911  /*   5 */ "statement ::= if_statement",
912  /*   6 */ "statement ::= elseif_statement",
913  /*   7 */ "statement ::= elsefor_statement",
914  /*   8 */ "statement ::= for_statement",
915  /*   9 */ "statement ::= switch_statement",
916  /*  10 */ "statement ::= case_clause",
917  /*  11 */ "statement ::= set_statement",
918  /*  12 */ "statement ::= echo_statement",
919  /*  13 */ "statement ::= block_statement",
920  /*  14 */ "statement ::= cache_statement",
921  /*  15 */ "statement ::= extends_statement",
922  /*  16 */ "statement ::= include_statement",
923  /*  17 */ "statement ::= do_statement",
924  /*  18 */ "statement ::= return_statement",
925  /*  19 */ "statement ::= autoescape_statement",
926  /*  20 */ "statement ::= raw_statement",
927  /*  21 */ "statement ::= break_statement",
928  /*  22 */ "statement ::= continue_statement",
929  /*  23 */ "statement ::= macro_statement",
930  /*  24 */ "statement ::= empty_statement",
931  /*  25 */ "statement ::= macro_call_statement",
932  /*  26 */ "if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDIF CLOSE_DELIMITER",
933  /*  27 */ "if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER OPEN_DELIMITER ENDIF CLOSE_DELIMITER",
934  /*  28 */ "if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ELSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDIF CLOSE_DELIMITER",
935  /*  29 */ "if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ELSE CLOSE_DELIMITER OPEN_DELIMITER ENDIF CLOSE_DELIMITER",
936  /*  30 */ "if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER OPEN_DELIMITER ELSE CLOSE_DELIMITER OPEN_DELIMITER ENDIF CLOSE_DELIMITER",
937  /*  31 */ "elseif_statement ::= OPEN_DELIMITER ELSEIF expr CLOSE_DELIMITER",
938  /*  32 */ "elsefor_statement ::= OPEN_DELIMITER ELSEFOR CLOSE_DELIMITER",
939  /*  33 */ "for_statement ::= OPEN_DELIMITER FOR IDENTIFIER IN expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDFOR CLOSE_DELIMITER",
940  /*  34 */ "for_statement ::= OPEN_DELIMITER FOR IDENTIFIER IN expr IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDFOR CLOSE_DELIMITER",
941  /*  35 */ "for_statement ::= OPEN_DELIMITER FOR IDENTIFIER COMMA IDENTIFIER IN expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDFOR CLOSE_DELIMITER",
942  /*  36 */ "for_statement ::= OPEN_DELIMITER FOR IDENTIFIER COMMA IDENTIFIER IN expr IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDFOR CLOSE_DELIMITER",
943  /*  37 */ "switch_statement ::= OPEN_DELIMITER SWITCH expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDSWITCH CLOSE_DELIMITER",
944  /*  38 */ "switch_statement ::= OPEN_DELIMITER SWITCH expr CLOSE_DELIMITER OPEN_DELIMITER ENDSWITCH CLOSE_DELIMITER",
945  /*  39 */ "case_clause ::= OPEN_DELIMITER CASE expr CLOSE_DELIMITER",
946  /*  40 */ "case_clause ::= OPEN_DELIMITER DEFAULT CLOSE_DELIMITER",
947  /*  41 */ "set_statement ::= OPEN_DELIMITER SET set_assignments CLOSE_DELIMITER",
948  /*  42 */ "set_assignments ::= set_assignments COMMA set_assignment",
949  /*  43 */ "set_assignments ::= set_assignment",
950  /*  44 */ "set_assignment ::= assignable_expr ASSIGN expr",
951  /*  45 */ "set_assignment ::= assignable_expr ADD_ASSIGN expr",
952  /*  46 */ "set_assignment ::= assignable_expr SUB_ASSIGN expr",
953  /*  47 */ "set_assignment ::= assignable_expr MUL_ASSIGN expr",
954  /*  48 */ "set_assignment ::= assignable_expr DIV_ASSIGN expr",
955  /*  49 */ "assignable_expr ::= IDENTIFIER",
956  /*  50 */ "assignable_expr ::= assignable_expr SBRACKET_OPEN expr SBRACKET_CLOSE",
957  /*  51 */ "assignable_expr ::= assignable_expr DOT assignable_expr",
958  /*  52 */ "macro_statement ::= OPEN_DELIMITER MACRO IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDMACRO CLOSE_DELIMITER",
959  /*  53 */ "macro_statement ::= OPEN_DELIMITER MACRO IDENTIFIER PARENTHESES_OPEN macro_parameters PARENTHESES_CLOSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDMACRO CLOSE_DELIMITER",
960  /*  54 */ "macro_parameters ::= macro_parameters COMMA macro_parameter",
961  /*  55 */ "macro_parameters ::= macro_parameter",
962  /*  56 */ "macro_parameter ::= IDENTIFIER",
963  /*  57 */ "macro_parameter ::= IDENTIFIER ASSIGN macro_parameter_default",
964  /*  58 */ "macro_parameter_default ::= INTEGER",
965  /*  59 */ "macro_parameter_default ::= STRING",
966  /*  60 */ "macro_parameter_default ::= DOUBLE",
967  /*  61 */ "macro_parameter_default ::= NULL",
968  /*  62 */ "macro_parameter_default ::= FALSE",
969  /*  63 */ "macro_parameter_default ::= TRUE",
970  /*  64 */ "macro_call_statement ::= OPEN_DELIMITER CALL expr PARENTHESES_OPEN argument_list PARENTHESES_CLOSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDCALL CLOSE_DELIMITER",
971  /*  65 */ "macro_call_statement ::= OPEN_DELIMITER CALL expr PARENTHESES_OPEN PARENTHESES_CLOSE CLOSE_DELIMITER OPEN_DELIMITER ENDCALL CLOSE_DELIMITER",
972  /*  66 */ "empty_statement ::= OPEN_DELIMITER CLOSE_DELIMITER",
973  /*  67 */ "echo_statement ::= OPEN_EDELIMITER expr CLOSE_EDELIMITER",
974  /*  68 */ "block_statement ::= OPEN_DELIMITER BLOCK IDENTIFIER CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDBLOCK CLOSE_DELIMITER",
975  /*  69 */ "block_statement ::= OPEN_DELIMITER BLOCK IDENTIFIER CLOSE_DELIMITER OPEN_DELIMITER ENDBLOCK CLOSE_DELIMITER",
976  /*  70 */ "cache_statement ::= OPEN_DELIMITER CACHE expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDCACHE CLOSE_DELIMITER",
977  /*  71 */ "cache_statement ::= OPEN_DELIMITER CACHE expr cache_lifetime CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDCACHE CLOSE_DELIMITER",
978  /*  72 */ "cache_lifetime ::= INTEGER",
979  /*  73 */ "cache_lifetime ::= IDENTIFIER",
980  /*  74 */ "raw_statement ::= OPEN_DELIMITER RAW CLOSE_DELIMITER statement OPEN_DELIMITER ENDRAW CLOSE_DELIMITER",
981  /*  75 */ "extends_statement ::= OPEN_DELIMITER EXTENDS expr CLOSE_DELIMITER",
982  /*  76 */ "include_statement ::= OPEN_DELIMITER INCLUDE expr CLOSE_DELIMITER",
983  /*  77 */ "include_statement ::= OPEN_DELIMITER INCLUDE expr WITH expr CLOSE_DELIMITER",
984  /*  78 */ "do_statement ::= OPEN_DELIMITER DO expr CLOSE_DELIMITER",
985  /*  79 */ "return_statement ::= OPEN_DELIMITER RETURN expr CLOSE_DELIMITER",
986  /*  80 */ "autoescape_statement ::= OPEN_DELIMITER AUTOESCAPE FALSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDAUTOESCAPE CLOSE_DELIMITER",
987  /*  81 */ "autoescape_statement ::= OPEN_DELIMITER AUTOESCAPE TRUE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDAUTOESCAPE CLOSE_DELIMITER",
988  /*  82 */ "break_statement ::= OPEN_DELIMITER BREAK CLOSE_DELIMITER",
989  /*  83 */ "continue_statement ::= OPEN_DELIMITER CONTINUE CLOSE_DELIMITER",
990  /*  84 */ "raw_fragment ::= RAW_FRAGMENT",
991  /*  85 */ "expr ::= MINUS expr",
992  /*  86 */ "expr ::= PLUS expr",
993  /*  87 */ "expr ::= expr MINUS expr",
994  /*  88 */ "expr ::= expr PLUS expr",
995  /*  89 */ "expr ::= expr TIMES expr",
996  /*  90 */ "expr ::= expr TIMES TIMES expr",
997  /*  91 */ "expr ::= expr DIVIDE expr",
998  /*  92 */ "expr ::= expr DIVIDE DIVIDE expr",
999  /*  93 */ "expr ::= expr MOD expr",
1000  /*  94 */ "expr ::= expr AND expr",
1001  /*  95 */ "expr ::= expr OR expr",
1002  /*  96 */ "expr ::= expr CONCAT expr",
1003  /*  97 */ "expr ::= expr PIPE expr",
1004  /*  98 */ "expr ::= expr RANGE expr",
1005  /*  99 */ "expr ::= expr EQUALS expr",
1006  /* 100 */ "expr ::= expr NOTEQUALS DEFINED",
1007  /* 101 */ "expr ::= expr IS DEFINED",
1008  /* 102 */ "expr ::= expr NOTEQUALS EMPTY",
1009  /* 103 */ "expr ::= expr IS EMPTY",
1010  /* 104 */ "expr ::= expr NOTEQUALS EVEN",
1011  /* 105 */ "expr ::= expr IS EVEN",
1012  /* 106 */ "expr ::= expr NOTEQUALS ODD",
1013  /* 107 */ "expr ::= expr IS ODD",
1014  /* 108 */ "expr ::= expr NOTEQUALS NUMERIC",
1015  /* 109 */ "expr ::= expr IS NUMERIC",
1016  /* 110 */ "expr ::= expr NOTEQUALS SCALAR",
1017  /* 111 */ "expr ::= expr IS SCALAR",
1018  /* 112 */ "expr ::= expr NOTEQUALS ITERABLE",
1019  /* 113 */ "expr ::= expr IS ITERABLE",
1020  /* 114 */ "expr ::= expr IS expr",
1021  /* 115 */ "expr ::= expr NOTEQUALS expr",
1022  /* 116 */ "expr ::= expr IDENTICAL expr",
1023  /* 117 */ "expr ::= expr NOTIDENTICAL expr",
1024  /* 118 */ "expr ::= expr LESS expr",
1025  /* 119 */ "expr ::= expr GREATER expr",
1026  /* 120 */ "expr ::= expr GREATEREQUAL expr",
1027  /* 121 */ "expr ::= expr LESSEQUAL expr",
1028  /* 122 */ "expr ::= expr DOT expr",
1029  /* 123 */ "expr ::= expr IN expr",
1030  /* 124 */ "expr ::= expr NOT IN expr",
1031  /* 125 */ "expr ::= NOT expr",
1032  /* 126 */ "expr ::= expr INCR",
1033  /* 127 */ "expr ::= expr DECR",
1034  /* 128 */ "expr ::= PARENTHESES_OPEN expr PARENTHESES_CLOSE",
1035  /* 129 */ "expr ::= SBRACKET_OPEN SBRACKET_CLOSE",
1036  /* 130 */ "expr ::= SBRACKET_OPEN array_list SBRACKET_CLOSE",
1037  /* 131 */ "expr ::= CBRACKET_OPEN CBRACKET_CLOSE",
1038  /* 132 */ "expr ::= CBRACKET_OPEN array_list CBRACKET_CLOSE",
1039  /* 133 */ "expr ::= expr SBRACKET_OPEN expr SBRACKET_CLOSE",
1040  /* 134 */ "expr ::= expr QUESTION expr COLON expr",
1041  /* 135 */ "expr ::= expr SBRACKET_OPEN COLON slice_offset SBRACKET_CLOSE",
1042  /* 136 */ "expr ::= expr SBRACKET_OPEN slice_offset COLON SBRACKET_CLOSE",
1043  /* 137 */ "expr ::= expr SBRACKET_OPEN slice_offset COLON slice_offset SBRACKET_CLOSE",
1044  /* 138 */ "slice_offset ::= INTEGER",
1045  /* 139 */ "slice_offset ::= IDENTIFIER",
1046  /* 140 */ "array_list ::= array_list COMMA array_item",
1047  /* 141 */ "array_list ::= array_item",
1048  /* 142 */ "array_item ::= STRING COLON expr",
1049  /* 143 */ "array_item ::= expr",
1050  /* 144 */ "expr ::= function_call",
1051  /* 145 */ "function_call ::= expr PARENTHESES_OPEN argument_list PARENTHESES_CLOSE",
1052  /* 146 */ "function_call ::= expr PARENTHESES_OPEN PARENTHESES_CLOSE",
1053  /* 147 */ "argument_list ::= argument_list COMMA argument_item",
1054  /* 148 */ "argument_list ::= argument_item",
1055  /* 149 */ "argument_item ::= expr",
1056  /* 150 */ "argument_item ::= STRING COLON expr",
1057  /* 151 */ "expr ::= IDENTIFIER",
1058  /* 152 */ "expr ::= INTEGER",
1059  /* 153 */ "expr ::= STRING",
1060  /* 154 */ "expr ::= DOUBLE",
1061  /* 155 */ "expr ::= NULL",
1062  /* 156 */ "expr ::= FALSE",
1063  /* 157 */ "expr ::= TRUE",
1064 };
1065 #endif /* NDEBUG */
1066 
1067 /*
1068 ** This function returns the symbolic name associated with a token
1069 ** value.
1070 */
phvolt_TokenName(int tokenType)1071 const char *phvolt_TokenName(int tokenType){
1072 #ifndef NDEBUG
1073   if( tokenType>0 && tokenType<(sizeof(vvTokenName)/sizeof(vvTokenName[0])) ){
1074     return vvTokenName[tokenType];
1075   }else{
1076     return "Unknown";
1077   }
1078 #else
1079   return "";
1080 #endif
1081 }
1082 
1083 /*
1084 ** This function allocates a new parser.
1085 ** The only argument is a pointer to a function which works like
1086 ** malloc.
1087 **
1088 ** Inputs:
1089 ** A pointer to the function used to allocate memory.
1090 **
1091 ** Outputs:
1092 ** A pointer to a parser.  This pointer is used in subsequent calls
1093 ** to phvolt_ and phvolt_Free.
1094 */
phvolt_Alloc(void * (* mallocProc)(size_t))1095 void *phvolt_Alloc(void *(*mallocProc)(size_t)){
1096   vvParser *pParser;
1097   pParser = (vvParser*)(*mallocProc)( (size_t)sizeof(vvParser) );
1098   if( pParser ){
1099     pParser->vvidx = -1;
1100   }
1101   return pParser;
1102 }
1103 
1104 /* The following function deletes the value associated with a
1105 ** symbol.  The symbol can be either a terminal or nonterminal.
1106 ** "vvmajor" is the symbol code, and "vvpminor" is a pointer to
1107 ** the value.
1108 */
vv_destructor(VVCODETYPE vvmajor,VVMINORTYPE * vvpminor)1109 static void vv_destructor(VVCODETYPE vvmajor, VVMINORTYPE *vvpminor){
1110   switch( vvmajor ){
1111     /* Here is inserted the actions which take place when a
1112     ** terminal or non-terminal is destroyed.  This can happen
1113     ** when the symbol is popped from the stack during a
1114     ** reduce or during error processing or when a parser is
1115     ** being destroyed before it is finished parsing.
1116     **
1117     ** Note: during a reduce, the only symbols destroyed are those
1118     ** which appear on the RHS of the rule, but which are not used
1119     ** inside the C code.
1120     */
1121     case 1:
1122     case 2:
1123     case 3:
1124     case 4:
1125     case 5:
1126     case 6:
1127     case 7:
1128     case 8:
1129     case 9:
1130     case 10:
1131     case 11:
1132     case 12:
1133     case 13:
1134     case 14:
1135     case 15:
1136     case 16:
1137     case 17:
1138     case 18:
1139     case 19:
1140     case 20:
1141     case 21:
1142     case 22:
1143     case 23:
1144     case 24:
1145     case 25:
1146     case 26:
1147     case 27:
1148     case 28:
1149     case 29:
1150     case 30:
1151     case 31:
1152     case 32:
1153     case 33:
1154     case 34:
1155     case 35:
1156     case 36:
1157     case 37:
1158     case 38:
1159     case 39:
1160     case 40:
1161     case 41:
1162     case 42:
1163     case 43:
1164     case 44:
1165     case 45:
1166     case 46:
1167     case 47:
1168     case 48:
1169     case 49:
1170     case 50:
1171     case 51:
1172     case 52:
1173     case 53:
1174     case 54:
1175     case 55:
1176     case 56:
1177     case 57:
1178     case 58:
1179     case 59:
1180     case 60:
1181     case 61:
1182     case 62:
1183     case 63:
1184     case 64:
1185     case 65:
1186     case 66:
1187     case 67:
1188     case 68:
1189     case 69:
1190     case 70:
1191     case 71:
1192     case 72:
1193     case 73:
1194     case 74:
1195     case 75:
1196     case 76:
1197     case 77:
1198     case 78:
1199     case 79:
1200     case 80:
1201     case 81:
1202     case 82:
1203     case 83:
1204     case 84:
1205     case 85:
1206     case 86:
1207     case 87:
1208     case 88:
1209 // 161 "parser.php5.lemon"
1210 {
1211 	if ((vvpminor->vv0)) {
1212 		if ((vvpminor->vv0)->free_flag) {
1213 			efree((vvpminor->vv0)->token);
1214 		}
1215 		efree((vvpminor->vv0));
1216 	}
1217 }
1218 // 1217 "parser.php5.c"
1219       break;
1220     case 92:
1221     case 93:
1222     case 94:
1223     case 95:
1224     case 96:
1225     case 97:
1226     case 98:
1227     case 99:
1228     case 100:
1229     case 101:
1230     case 102:
1231     case 103:
1232     case 104:
1233     case 105:
1234     case 106:
1235     case 107:
1236     case 108:
1237     case 109:
1238     case 110:
1239     case 111:
1240     case 112:
1241     case 113:
1242     case 114:
1243     case 115:
1244     case 116:
1245     case 117:
1246     case 118:
1247     case 120:
1248     case 121:
1249     case 123:
1250     case 124:
1251     case 125:
1252     case 126:
1253     case 127:
1254     case 128:
1255     case 129:
1256 // 178 "parser.php5.lemon"
1257 {
1258 #if PHP_VERSION_ID < 70000
1259 	zval_ptr_dtor(&(vvpminor->vv228));
1260 #endif
1261 }
1262 // 1261 "parser.php5.c"
1263       break;
1264     default:  break;   /* If no destructor action specified: do nothing */
1265   }
1266 }
1267 
1268 /*
1269 ** Pop the parser's stack once.
1270 **
1271 ** If there is a destructor routine associated with the token which
1272 ** is popped from the stack, then call it.
1273 **
1274 ** Return the major token number for the symbol popped.
1275 */
vv_pop_parser_stack(vvParser * pParser)1276 static int vv_pop_parser_stack(vvParser *pParser){
1277   VVCODETYPE vvmajor;
1278   vvStackEntry *vvtos = &pParser->vvstack[pParser->vvidx];
1279 
1280   if( pParser->vvidx<0 ) return 0;
1281 #ifndef NDEBUG
1282   if( vvTraceFILE && pParser->vvidx>=0 ){
1283     fprintf(vvTraceFILE,"%sPopping %s\n",
1284       vvTracePrompt,
1285       vvTokenName[vvtos->major]);
1286   }
1287 #endif
1288   vvmajor = vvtos->major;
1289   vv_destructor( vvmajor, &vvtos->minor);
1290   pParser->vvidx--;
1291   return vvmajor;
1292 }
1293 
1294 /*
1295 ** Deallocate and destroy a parser.  Destructors are all called for
1296 ** all stack elements before shutting the parser down.
1297 **
1298 ** Inputs:
1299 ** <ul>
1300 ** <li>  A pointer to the parser.  This should be a pointer
1301 **       obtained from phvolt_Alloc.
1302 ** <li>  A pointer to a function used to reclaim memory obtained
1303 **       from malloc.
1304 ** </ul>
1305 */
phvolt_Free(void * p,void (* freeProc)(void *))1306 void phvolt_Free(
1307   void *p,                    /* The parser to be deleted */
1308   void (*freeProc)(void*)     /* Function used to reclaim memory */
1309 ){
1310   vvParser *pParser = (vvParser*)p;
1311   if( pParser==0 ) return;
1312   while( pParser->vvidx>=0 ) vv_pop_parser_stack(pParser);
1313   (*freeProc)((void*)pParser);
1314 }
1315 
1316 /*
1317 ** Find the appropriate action for a parser given the terminal
1318 ** look-ahead token iLookAhead.
1319 **
1320 ** If the look-ahead token is VVNOCODE, then check to see if the action is
1321 ** independent of the look-ahead.  If it is, return the action, otherwise
1322 ** return VV_NO_ACTION.
1323 */
vv_find_shift_action(vvParser * pParser,int iLookAhead)1324 static int vv_find_shift_action(
1325   vvParser *pParser,        /* The parser */
1326   int iLookAhead            /* The look-ahead token */
1327 ){
1328   int i;
1329   int stateno = pParser->vvstack[pParser->vvidx].stateno;
1330 
1331   /* if( pParser->vvidx<0 ) return VV_NO_ACTION;  */
1332   i = vv_shift_ofst[stateno];
1333   if( i==VV_SHIFT_USE_DFLT ){
1334     return vv_default[stateno];
1335   }
1336   if( iLookAhead==VVNOCODE ){
1337     return VV_NO_ACTION;
1338   }
1339   i += iLookAhead;
1340   if( i<0 || i>=VV_SZ_ACTTAB || vv_lookahead[i]!=iLookAhead ){
1341 #ifdef VVFALLBACK
1342     int iFallback;            /* Fallback token */
1343     if( iLookAhead<sizeof(vvFallback)/sizeof(vvFallback[0])
1344            && (iFallback = vvFallback[iLookAhead])!=0 ){
1345 #ifndef NDEBUG
1346       if( vvTraceFILE ){
1347         fprintf(vvTraceFILE, "%sFALLBACK %s => %s\n",
1348            vvTracePrompt, vvTokenName[iLookAhead], vvTokenName[iFallback]);
1349       }
1350 #endif
1351       return vv_find_shift_action(pParser, iFallback);
1352     }
1353 #endif
1354     return vv_default[stateno];
1355   }else{
1356     return vv_action[i];
1357   }
1358 }
1359 
1360 /*
1361 ** Find the appropriate action for a parser given the non-terminal
1362 ** look-ahead token iLookAhead.
1363 **
1364 ** If the look-ahead token is VVNOCODE, then check to see if the action is
1365 ** independent of the look-ahead.  If it is, return the action, otherwise
1366 ** return VV_NO_ACTION.
1367 */
vv_find_reduce_action(vvParser * pParser,int iLookAhead)1368 static int vv_find_reduce_action(
1369   vvParser *pParser,        /* The parser */
1370   int iLookAhead            /* The look-ahead token */
1371 ){
1372   int i;
1373   int stateno = pParser->vvstack[pParser->vvidx].stateno;
1374 
1375   i = vv_reduce_ofst[stateno];
1376   if( i==VV_REDUCE_USE_DFLT ){
1377     return vv_default[stateno];
1378   }
1379   if( iLookAhead==VVNOCODE ){
1380     return VV_NO_ACTION;
1381   }
1382   i += iLookAhead;
1383   if( i<0 || i>=VV_SZ_ACTTAB || vv_lookahead[i]!=iLookAhead ){
1384     return vv_default[stateno];
1385   }else{
1386     return vv_action[i];
1387   }
1388 }
1389 
1390 /*
1391 ** Perform a shift action.
1392 */
vv_shift(vvParser * vvpParser,int vvNewState,int vvMajor,VVMINORTYPE * vvpMinor)1393 static void vv_shift(
1394   vvParser *vvpParser,          /* The parser to be shifted */
1395   int vvNewState,               /* The new state to shift in */
1396   int vvMajor,                  /* The major token to shift in */
1397   VVMINORTYPE *vvpMinor         /* Pointer ot the minor token to shift in */
1398 ){
1399   vvStackEntry *vvtos;
1400   vvpParser->vvidx++;
1401   if( vvpParser->vvidx>=VVSTACKDEPTH ){
1402      phvolt_ARG_FETCH;
1403      vvpParser->vvidx--;
1404 #ifndef NDEBUG
1405      if( vvTraceFILE ){
1406        fprintf(vvTraceFILE,"%sStack Overflow!\n",vvTracePrompt);
1407      }
1408 #endif
1409      while( vvpParser->vvidx>=0 ) vv_pop_parser_stack(vvpParser);
1410      /* Here code is inserted which will execute if the parser
1411      ** stack every overflows */
1412      phvolt_ARG_STORE; /* Suppress warning about unused %extra_argument var */
1413      return;
1414   }
1415   vvtos = &vvpParser->vvstack[vvpParser->vvidx];
1416   vvtos->stateno = vvNewState;
1417   vvtos->major = vvMajor;
1418   vvtos->minor = *vvpMinor;
1419 #ifndef NDEBUG
1420   if( vvTraceFILE && vvpParser->vvidx>0 ){
1421     int i;
1422     fprintf(vvTraceFILE,"%sShift %d\n",vvTracePrompt,vvNewState);
1423     fprintf(vvTraceFILE,"%sStack:",vvTracePrompt);
1424     for(i=1; i<=vvpParser->vvidx; i++)
1425       fprintf(vvTraceFILE," %s",vvTokenName[vvpParser->vvstack[i].major]);
1426     fprintf(vvTraceFILE,"\n");
1427   }
1428 #endif
1429 }
1430 
1431 /* The following table contains information about every rule that
1432 ** is used during the reduce.
1433 */
1434 static struct {
1435   VVCODETYPE lhs;         /* Symbol on the left-hand side of the rule */
1436   unsigned char nrhs;     /* Number of right-hand side symbols in the rule */
1437 } vvRuleInfo[] = {
1438   { 90, 1 },
1439   { 91, 1 },
1440   { 92, 2 },
1441   { 92, 1 },
1442   { 93, 1 },
1443   { 93, 1 },
1444   { 93, 1 },
1445   { 93, 1 },
1446   { 93, 1 },
1447   { 93, 1 },
1448   { 93, 1 },
1449   { 93, 1 },
1450   { 93, 1 },
1451   { 93, 1 },
1452   { 93, 1 },
1453   { 93, 1 },
1454   { 93, 1 },
1455   { 93, 1 },
1456   { 93, 1 },
1457   { 93, 1 },
1458   { 93, 1 },
1459   { 93, 1 },
1460   { 93, 1 },
1461   { 93, 1 },
1462   { 93, 1 },
1463   { 93, 1 },
1464   { 95, 8 },
1465   { 95, 7 },
1466   { 95, 12 },
1467   { 95, 11 },
1468   { 95, 10 },
1469   { 96, 4 },
1470   { 97, 3 },
1471   { 98, 10 },
1472   { 98, 12 },
1473   { 98, 12 },
1474   { 98, 14 },
1475   { 99, 8 },
1476   { 99, 7 },
1477   { 100, 4 },
1478   { 100, 3 },
1479   { 101, 4 },
1480   { 117, 3 },
1481   { 117, 1 },
1482   { 118, 3 },
1483   { 118, 3 },
1484   { 118, 3 },
1485   { 118, 3 },
1486   { 118, 3 },
1487   { 119, 1 },
1488   { 119, 4 },
1489   { 119, 3 },
1490   { 113, 10 },
1491   { 113, 11 },
1492   { 120, 3 },
1493   { 120, 1 },
1494   { 121, 1 },
1495   { 121, 3 },
1496   { 122, 1 },
1497   { 122, 1 },
1498   { 122, 1 },
1499   { 122, 1 },
1500   { 122, 1 },
1501   { 122, 1 },
1502   { 115, 11 },
1503   { 115, 9 },
1504   { 114, 2 },
1505   { 102, 3 },
1506   { 103, 8 },
1507   { 103, 7 },
1508   { 104, 8 },
1509   { 104, 9 },
1510   { 124, 1 },
1511   { 124, 1 },
1512   { 110, 7 },
1513   { 105, 4 },
1514   { 106, 4 },
1515   { 106, 6 },
1516   { 107, 4 },
1517   { 108, 4 },
1518   { 109, 8 },
1519   { 109, 8 },
1520   { 111, 3 },
1521   { 112, 3 },
1522   { 94, 1 },
1523   { 116, 2 },
1524   { 116, 2 },
1525   { 116, 3 },
1526   { 116, 3 },
1527   { 116, 3 },
1528   { 116, 4 },
1529   { 116, 3 },
1530   { 116, 4 },
1531   { 116, 3 },
1532   { 116, 3 },
1533   { 116, 3 },
1534   { 116, 3 },
1535   { 116, 3 },
1536   { 116, 3 },
1537   { 116, 3 },
1538   { 116, 3 },
1539   { 116, 3 },
1540   { 116, 3 },
1541   { 116, 3 },
1542   { 116, 3 },
1543   { 116, 3 },
1544   { 116, 3 },
1545   { 116, 3 },
1546   { 116, 3 },
1547   { 116, 3 },
1548   { 116, 3 },
1549   { 116, 3 },
1550   { 116, 3 },
1551   { 116, 3 },
1552   { 116, 3 },
1553   { 116, 3 },
1554   { 116, 3 },
1555   { 116, 3 },
1556   { 116, 3 },
1557   { 116, 3 },
1558   { 116, 3 },
1559   { 116, 3 },
1560   { 116, 3 },
1561   { 116, 3 },
1562   { 116, 4 },
1563   { 116, 2 },
1564   { 116, 2 },
1565   { 116, 2 },
1566   { 116, 3 },
1567   { 116, 2 },
1568   { 116, 3 },
1569   { 116, 2 },
1570   { 116, 3 },
1571   { 116, 4 },
1572   { 116, 5 },
1573   { 116, 5 },
1574   { 116, 5 },
1575   { 116, 6 },
1576   { 126, 1 },
1577   { 126, 1 },
1578   { 125, 3 },
1579   { 125, 1 },
1580   { 127, 3 },
1581   { 127, 1 },
1582   { 116, 1 },
1583   { 128, 4 },
1584   { 128, 3 },
1585   { 123, 3 },
1586   { 123, 1 },
1587   { 129, 1 },
1588   { 129, 3 },
1589   { 116, 1 },
1590   { 116, 1 },
1591   { 116, 1 },
1592   { 116, 1 },
1593   { 116, 1 },
1594   { 116, 1 },
1595   { 116, 1 },
1596 };
1597 
1598 static void vv_accept(vvParser*);  /* Forward Declaration */
1599 
1600 /*
1601 ** Perform a reduce action and the shift that must immediately
1602 ** follow the reduce.
1603 */
vv_reduce(vvParser * vvpParser,int vvruleno)1604 static void vv_reduce(
1605   vvParser *vvpParser,         /* The parser */
1606   int vvruleno                 /* Number of the rule by which to reduce */
1607 ){
1608   int vvgoto;                     /* The next state */
1609   int vvact;                      /* The next action */
1610   VVMINORTYPE vvgotominor;        /* The LHS of the rule reduced */
1611   vvStackEntry *vvmsp;            /* The top of the parser's stack */
1612   int vvsize;                     /* Amount to pop the stack */
1613   phvolt_ARG_FETCH;
1614   vvmsp = &vvpParser->vvstack[vvpParser->vvidx];
1615 #ifndef NDEBUG
1616   if( vvTraceFILE && vvruleno>=0
1617         && vvruleno<sizeof(vvRuleName)/sizeof(vvRuleName[0]) ){
1618     fprintf(vvTraceFILE, "%sReduce [%s].\n", vvTracePrompt,
1619       vvRuleName[vvruleno]);
1620   }
1621 #endif /* NDEBUG */
1622 
1623   switch( vvruleno ){
1624   /* Beginning here are the reduction cases.  A typical example
1625   ** follows:
1626   **   case 0:
1627   **  // <lineno> <grammarfile>
1628   **     { ... }           // User supplied code
1629   **  // <lineno> <thisfile>
1630   **     break;
1631   */
1632       case 0:
1633 // 170 "parser.php5.lemon"
1634 {
1635 	status->ret = vvmsp[0].minor.vv228;
1636 }
1637 // 1636 "parser.php5.c"
1638         break;
1639       case 1:
1640       case 4:
1641       case 5:
1642       case 6:
1643       case 7:
1644       case 8:
1645       case 9:
1646       case 10:
1647       case 11:
1648       case 12:
1649       case 13:
1650       case 14:
1651       case 15:
1652       case 16:
1653       case 17:
1654       case 18:
1655       case 19:
1656       case 20:
1657       case 21:
1658       case 22:
1659       case 23:
1660       case 24:
1661       case 25:
1662       case 144:
1663 // 174 "parser.php5.lemon"
1664 {
1665 	vvgotominor.vv228 = vvmsp[0].minor.vv228;
1666 }
1667 // 1666 "parser.php5.c"
1668         break;
1669       case 2:
1670 // 184 "parser.php5.lemon"
1671 {
1672 	vvgotominor.vv228 = phvolt_ret_zval_list(vvmsp[-1].minor.vv228, vvmsp[0].minor.vv228);
1673 }
1674 // 1673 "parser.php5.c"
1675         break;
1676       case 3:
1677       case 43:
1678       case 55:
1679       case 141:
1680       case 148:
1681 // 188 "parser.php5.lemon"
1682 {
1683 	vvgotominor.vv228 = phvolt_ret_zval_list(NULL, vvmsp[0].minor.vv228);
1684 }
1685 // 1684 "parser.php5.c"
1686         break;
1687       case 26:
1688 // 293 "parser.php5.lemon"
1689 {
1690 	vvgotominor.vv228 = phvolt_ret_if_statement(vvmsp[-5].minor.vv228, vvmsp[-3].minor.vv228, NULL, status->scanner_state);
1691   vv_destructor(1,&vvmsp[-7].minor);
1692   vv_destructor(31,&vvmsp[-6].minor);
1693   vv_destructor(32,&vvmsp[-4].minor);
1694   vv_destructor(1,&vvmsp[-2].minor);
1695   vv_destructor(33,&vvmsp[-1].minor);
1696   vv_destructor(32,&vvmsp[0].minor);
1697 }
1698 // 1697 "parser.php5.c"
1699         break;
1700       case 27:
1701 // 298 "parser.php5.lemon"
1702 {
1703 	vvgotominor.vv228 = phvolt_ret_if_statement(vvmsp[-4].minor.vv228, NULL, NULL, status->scanner_state);
1704   vv_destructor(1,&vvmsp[-6].minor);
1705   vv_destructor(31,&vvmsp[-5].minor);
1706   vv_destructor(32,&vvmsp[-3].minor);
1707   vv_destructor(1,&vvmsp[-2].minor);
1708   vv_destructor(33,&vvmsp[-1].minor);
1709   vv_destructor(32,&vvmsp[0].minor);
1710 }
1711 // 1710 "parser.php5.c"
1712         break;
1713       case 28:
1714 // 303 "parser.php5.lemon"
1715 {
1716 	vvgotominor.vv228 = phvolt_ret_if_statement(vvmsp[-9].minor.vv228, vvmsp[-7].minor.vv228, vvmsp[-3].minor.vv228, status->scanner_state);
1717   vv_destructor(1,&vvmsp[-11].minor);
1718   vv_destructor(31,&vvmsp[-10].minor);
1719   vv_destructor(32,&vvmsp[-8].minor);
1720   vv_destructor(1,&vvmsp[-6].minor);
1721   vv_destructor(34,&vvmsp[-5].minor);
1722   vv_destructor(32,&vvmsp[-4].minor);
1723   vv_destructor(1,&vvmsp[-2].minor);
1724   vv_destructor(33,&vvmsp[-1].minor);
1725   vv_destructor(32,&vvmsp[0].minor);
1726 }
1727 // 1726 "parser.php5.c"
1728         break;
1729       case 29:
1730 // 308 "parser.php5.lemon"
1731 {
1732 	vvgotominor.vv228 = phvolt_ret_if_statement(vvmsp[-8].minor.vv228, vvmsp[-6].minor.vv228, NULL, status->scanner_state);
1733   vv_destructor(1,&vvmsp[-10].minor);
1734   vv_destructor(31,&vvmsp[-9].minor);
1735   vv_destructor(32,&vvmsp[-7].minor);
1736   vv_destructor(1,&vvmsp[-5].minor);
1737   vv_destructor(34,&vvmsp[-4].minor);
1738   vv_destructor(32,&vvmsp[-3].minor);
1739   vv_destructor(1,&vvmsp[-2].minor);
1740   vv_destructor(33,&vvmsp[-1].minor);
1741   vv_destructor(32,&vvmsp[0].minor);
1742 }
1743 // 1742 "parser.php5.c"
1744         break;
1745       case 30:
1746 // 313 "parser.php5.lemon"
1747 {
1748 	vvgotominor.vv228 = phvolt_ret_if_statement(vvmsp[-7].minor.vv228, NULL, NULL, status->scanner_state);
1749   vv_destructor(1,&vvmsp[-9].minor);
1750   vv_destructor(31,&vvmsp[-8].minor);
1751   vv_destructor(32,&vvmsp[-6].minor);
1752   vv_destructor(1,&vvmsp[-5].minor);
1753   vv_destructor(34,&vvmsp[-4].minor);
1754   vv_destructor(32,&vvmsp[-3].minor);
1755   vv_destructor(1,&vvmsp[-2].minor);
1756   vv_destructor(33,&vvmsp[-1].minor);
1757   vv_destructor(32,&vvmsp[0].minor);
1758 }
1759 // 1758 "parser.php5.c"
1760         break;
1761       case 31:
1762 // 323 "parser.php5.lemon"
1763 {
1764 	vvgotominor.vv228 = phvolt_ret_elseif_statement(vvmsp[-1].minor.vv228, status->scanner_state);
1765   vv_destructor(1,&vvmsp[-3].minor);
1766   vv_destructor(35,&vvmsp[-2].minor);
1767   vv_destructor(32,&vvmsp[0].minor);
1768 }
1769 // 1768 "parser.php5.c"
1770         break;
1771       case 32:
1772 // 333 "parser.php5.lemon"
1773 {
1774 	vvgotominor.vv228 = phvolt_ret_elsefor_statement(status->scanner_state);
1775   vv_destructor(1,&vvmsp[-2].minor);
1776   vv_destructor(36,&vvmsp[-1].minor);
1777   vv_destructor(32,&vvmsp[0].minor);
1778 }
1779 // 1778 "parser.php5.c"
1780         break;
1781       case 33:
1782 // 343 "parser.php5.lemon"
1783 {
1784 	vvgotominor.vv228 = phvolt_ret_for_statement(vvmsp[-7].minor.vv0, NULL, vvmsp[-5].minor.vv228, NULL, vvmsp[-3].minor.vv228, status->scanner_state);
1785   vv_destructor(1,&vvmsp[-9].minor);
1786   vv_destructor(37,&vvmsp[-8].minor);
1787   vv_destructor(3,&vvmsp[-6].minor);
1788   vv_destructor(32,&vvmsp[-4].minor);
1789   vv_destructor(1,&vvmsp[-2].minor);
1790   vv_destructor(39,&vvmsp[-1].minor);
1791   vv_destructor(32,&vvmsp[0].minor);
1792 }
1793 // 1792 "parser.php5.c"
1794         break;
1795       case 34:
1796 // 347 "parser.php5.lemon"
1797 {
1798 	vvgotominor.vv228 = phvolt_ret_for_statement(vvmsp[-9].minor.vv0, NULL, vvmsp[-7].minor.vv228, vvmsp[-5].minor.vv228, vvmsp[-3].minor.vv228, status->scanner_state);
1799   vv_destructor(1,&vvmsp[-11].minor);
1800   vv_destructor(37,&vvmsp[-10].minor);
1801   vv_destructor(3,&vvmsp[-8].minor);
1802   vv_destructor(31,&vvmsp[-6].minor);
1803   vv_destructor(32,&vvmsp[-4].minor);
1804   vv_destructor(1,&vvmsp[-2].minor);
1805   vv_destructor(39,&vvmsp[-1].minor);
1806   vv_destructor(32,&vvmsp[0].minor);
1807 }
1808 // 1807 "parser.php5.c"
1809         break;
1810       case 35:
1811 // 351 "parser.php5.lemon"
1812 {
1813 	vvgotominor.vv228 = phvolt_ret_for_statement(vvmsp[-7].minor.vv0, vvmsp[-9].minor.vv0, vvmsp[-5].minor.vv228, NULL, vvmsp[-3].minor.vv228, status->scanner_state);
1814   vv_destructor(1,&vvmsp[-11].minor);
1815   vv_destructor(37,&vvmsp[-10].minor);
1816   vv_destructor(2,&vvmsp[-8].minor);
1817   vv_destructor(3,&vvmsp[-6].minor);
1818   vv_destructor(32,&vvmsp[-4].minor);
1819   vv_destructor(1,&vvmsp[-2].minor);
1820   vv_destructor(39,&vvmsp[-1].minor);
1821   vv_destructor(32,&vvmsp[0].minor);
1822 }
1823 // 1822 "parser.php5.c"
1824         break;
1825       case 36:
1826 // 355 "parser.php5.lemon"
1827 {
1828 	vvgotominor.vv228 = phvolt_ret_for_statement(vvmsp[-9].minor.vv0, vvmsp[-11].minor.vv0, vvmsp[-7].minor.vv228, vvmsp[-5].minor.vv228, vvmsp[-3].minor.vv228, status->scanner_state);
1829   vv_destructor(1,&vvmsp[-13].minor);
1830   vv_destructor(37,&vvmsp[-12].minor);
1831   vv_destructor(2,&vvmsp[-10].minor);
1832   vv_destructor(3,&vvmsp[-8].minor);
1833   vv_destructor(31,&vvmsp[-6].minor);
1834   vv_destructor(32,&vvmsp[-4].minor);
1835   vv_destructor(1,&vvmsp[-2].minor);
1836   vv_destructor(39,&vvmsp[-1].minor);
1837   vv_destructor(32,&vvmsp[0].minor);
1838 }
1839 // 1838 "parser.php5.c"
1840         break;
1841       case 37:
1842 // 366 "parser.php5.lemon"
1843 {
1844 	vvgotominor.vv228 = phvolt_ret_switch_statement(vvmsp[-5].minor.vv228, vvmsp[-3].minor.vv228, status->scanner_state);
1845   vv_destructor(1,&vvmsp[-7].minor);
1846   vv_destructor(40,&vvmsp[-6].minor);
1847   vv_destructor(32,&vvmsp[-4].minor);
1848   vv_destructor(1,&vvmsp[-2].minor);
1849   vv_destructor(41,&vvmsp[-1].minor);
1850   vv_destructor(32,&vvmsp[0].minor);
1851 }
1852 // 1851 "parser.php5.c"
1853         break;
1854       case 38:
1855 // 371 "parser.php5.lemon"
1856 {
1857 	vvgotominor.vv228 = phvolt_ret_switch_statement(vvmsp[-4].minor.vv228, NULL, status->scanner_state);
1858   vv_destructor(1,&vvmsp[-6].minor);
1859   vv_destructor(40,&vvmsp[-5].minor);
1860   vv_destructor(32,&vvmsp[-3].minor);
1861   vv_destructor(1,&vvmsp[-2].minor);
1862   vv_destructor(41,&vvmsp[-1].minor);
1863   vv_destructor(32,&vvmsp[0].minor);
1864 }
1865 // 1864 "parser.php5.c"
1866         break;
1867       case 39:
1868 // 382 "parser.php5.lemon"
1869 {
1870 	vvgotominor.vv228 = phvolt_ret_case_clause(vvmsp[-1].minor.vv228, status->scanner_state);
1871   vv_destructor(1,&vvmsp[-3].minor);
1872   vv_destructor(42,&vvmsp[-2].minor);
1873   vv_destructor(32,&vvmsp[0].minor);
1874 }
1875 // 1874 "parser.php5.c"
1876         break;
1877       case 40:
1878 // 387 "parser.php5.lemon"
1879 {
1880 	vvgotominor.vv228 = phvolt_ret_case_clause(NULL, status->scanner_state);
1881   vv_destructor(1,&vvmsp[-2].minor);
1882   vv_destructor(43,&vvmsp[-1].minor);
1883   vv_destructor(32,&vvmsp[0].minor);
1884 }
1885 // 1884 "parser.php5.c"
1886         break;
1887       case 41:
1888 // 397 "parser.php5.lemon"
1889 {
1890 	vvgotominor.vv228 = phvolt_ret_set_statement(vvmsp[-1].minor.vv228);
1891   vv_destructor(1,&vvmsp[-3].minor);
1892   vv_destructor(44,&vvmsp[-2].minor);
1893   vv_destructor(32,&vvmsp[0].minor);
1894 }
1895 // 1894 "parser.php5.c"
1896         break;
1897       case 42:
1898       case 54:
1899       case 140:
1900       case 147:
1901 // 407 "parser.php5.lemon"
1902 {
1903 	vvgotominor.vv228 = phvolt_ret_zval_list(vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228);
1904   vv_destructor(2,&vvmsp[-1].minor);
1905 }
1906 // 1905 "parser.php5.c"
1907         break;
1908       case 44:
1909 // 421 "parser.php5.lemon"
1910 {
1911 	vvgotominor.vv228 = phvolt_ret_set_assignment(vvmsp[-2].minor.vv228, PHVOLT_T_ASSIGN, vvmsp[0].minor.vv228, status->scanner_state);
1912   vv_destructor(45,&vvmsp[-1].minor);
1913 }
1914 // 1913 "parser.php5.c"
1915         break;
1916       case 45:
1917 // 425 "parser.php5.lemon"
1918 {
1919 	vvgotominor.vv228 = phvolt_ret_set_assignment(vvmsp[-2].minor.vv228, PHVOLT_T_ADD_ASSIGN, vvmsp[0].minor.vv228, status->scanner_state);
1920   vv_destructor(46,&vvmsp[-1].minor);
1921 }
1922 // 1921 "parser.php5.c"
1923         break;
1924       case 46:
1925 // 429 "parser.php5.lemon"
1926 {
1927 	vvgotominor.vv228 = phvolt_ret_set_assignment(vvmsp[-2].minor.vv228, PHVOLT_T_SUB_ASSIGN, vvmsp[0].minor.vv228, status->scanner_state);
1928   vv_destructor(47,&vvmsp[-1].minor);
1929 }
1930 // 1929 "parser.php5.c"
1931         break;
1932       case 47:
1933 // 433 "parser.php5.lemon"
1934 {
1935 	vvgotominor.vv228 = phvolt_ret_set_assignment(vvmsp[-2].minor.vv228, PHVOLT_T_MUL_ASSIGN, vvmsp[0].minor.vv228, status->scanner_state);
1936   vv_destructor(48,&vvmsp[-1].minor);
1937 }
1938 // 1937 "parser.php5.c"
1939         break;
1940       case 48:
1941 // 437 "parser.php5.lemon"
1942 {
1943 	vvgotominor.vv228 = phvolt_ret_set_assignment(vvmsp[-2].minor.vv228, PHVOLT_T_DIV_ASSIGN, vvmsp[0].minor.vv228, status->scanner_state);
1944   vv_destructor(49,&vvmsp[-1].minor);
1945 }
1946 // 1945 "parser.php5.c"
1947         break;
1948       case 49:
1949       case 73:
1950       case 139:
1951       case 151:
1952 // 441 "parser.php5.lemon"
1953 {
1954 	vvgotominor.vv228 = phvolt_ret_literal_zval(PHVOLT_T_IDENTIFIER, vvmsp[0].minor.vv0, status->scanner_state);
1955 }
1956 // 1955 "parser.php5.c"
1957         break;
1958       case 50:
1959       case 133:
1960 // 445 "parser.php5.lemon"
1961 {
1962 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_ARRAYACCESS, vvmsp[-3].minor.vv228, vvmsp[-1].minor.vv228, NULL, status->scanner_state);
1963   vv_destructor(24,&vvmsp[-2].minor);
1964   vv_destructor(50,&vvmsp[0].minor);
1965 }
1966 // 1965 "parser.php5.c"
1967         break;
1968       case 51:
1969       case 122:
1970 // 449 "parser.php5.lemon"
1971 {
1972 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_DOT, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
1973   vv_destructor(30,&vvmsp[-1].minor);
1974 }
1975 // 1974 "parser.php5.c"
1976         break;
1977       case 52:
1978 // 459 "parser.php5.lemon"
1979 {
1980 	vvgotominor.vv228 = phvolt_ret_macro_statement(vvmsp[-7].minor.vv0, NULL, vvmsp[-3].minor.vv228, status->scanner_state);
1981   vv_destructor(1,&vvmsp[-9].minor);
1982   vv_destructor(51,&vvmsp[-8].minor);
1983   vv_destructor(29,&vvmsp[-6].minor);
1984   vv_destructor(52,&vvmsp[-5].minor);
1985   vv_destructor(32,&vvmsp[-4].minor);
1986   vv_destructor(1,&vvmsp[-2].minor);
1987   vv_destructor(53,&vvmsp[-1].minor);
1988   vv_destructor(32,&vvmsp[0].minor);
1989 }
1990 // 1989 "parser.php5.c"
1991         break;
1992       case 53:
1993 // 463 "parser.php5.lemon"
1994 {
1995 	vvgotominor.vv228 = phvolt_ret_macro_statement(vvmsp[-8].minor.vv0, vvmsp[-6].minor.vv228, vvmsp[-3].minor.vv228, status->scanner_state);
1996   vv_destructor(1,&vvmsp[-10].minor);
1997   vv_destructor(51,&vvmsp[-9].minor);
1998   vv_destructor(29,&vvmsp[-7].minor);
1999   vv_destructor(52,&vvmsp[-5].minor);
2000   vv_destructor(32,&vvmsp[-4].minor);
2001   vv_destructor(1,&vvmsp[-2].minor);
2002   vv_destructor(53,&vvmsp[-1].minor);
2003   vv_destructor(32,&vvmsp[0].minor);
2004 }
2005 // 2004 "parser.php5.c"
2006         break;
2007       case 56:
2008 // 487 "parser.php5.lemon"
2009 {
2010 	vvgotominor.vv228 = phvolt_ret_macro_parameter(vvmsp[0].minor.vv0, NULL, status->scanner_state);
2011 }
2012 // 2011 "parser.php5.c"
2013         break;
2014       case 57:
2015 // 491 "parser.php5.lemon"
2016 {
2017 	vvgotominor.vv228 = phvolt_ret_macro_parameter(vvmsp[-2].minor.vv0, vvmsp[0].minor.vv228, status->scanner_state);
2018   vv_destructor(45,&vvmsp[-1].minor);
2019 }
2020 // 2019 "parser.php5.c"
2021         break;
2022       case 58:
2023       case 72:
2024       case 138:
2025       case 152:
2026 // 495 "parser.php5.lemon"
2027 {
2028 	vvgotominor.vv228 = phvolt_ret_literal_zval(PHVOLT_T_INTEGER, vvmsp[0].minor.vv0, status->scanner_state);
2029 }
2030 // 2029 "parser.php5.c"
2031         break;
2032       case 59:
2033       case 153:
2034 // 499 "parser.php5.lemon"
2035 {
2036 	vvgotominor.vv228 = phvolt_ret_literal_zval(PHVOLT_T_STRING, vvmsp[0].minor.vv0, status->scanner_state);
2037 }
2038 // 2037 "parser.php5.c"
2039         break;
2040       case 60:
2041       case 154:
2042 // 503 "parser.php5.lemon"
2043 {
2044 	vvgotominor.vv228 = phvolt_ret_literal_zval(PHVOLT_T_DOUBLE, vvmsp[0].minor.vv0, status->scanner_state);
2045 }
2046 // 2045 "parser.php5.c"
2047         break;
2048       case 61:
2049       case 155:
2050 // 507 "parser.php5.lemon"
2051 {
2052 	vvgotominor.vv228 = phvolt_ret_literal_zval(PHVOLT_T_NULL, NULL, status->scanner_state);
2053   vv_destructor(57,&vvmsp[0].minor);
2054 }
2055 // 2054 "parser.php5.c"
2056         break;
2057       case 62:
2058       case 156:
2059 // 511 "parser.php5.lemon"
2060 {
2061 	vvgotominor.vv228 = phvolt_ret_literal_zval(PHVOLT_T_FALSE, NULL, status->scanner_state);
2062   vv_destructor(58,&vvmsp[0].minor);
2063 }
2064 // 2063 "parser.php5.c"
2065         break;
2066       case 63:
2067       case 157:
2068 // 515 "parser.php5.lemon"
2069 {
2070 	vvgotominor.vv228 = phvolt_ret_literal_zval(PHVOLT_T_TRUE, NULL, status->scanner_state);
2071   vv_destructor(59,&vvmsp[0].minor);
2072 }
2073 // 2072 "parser.php5.c"
2074         break;
2075       case 64:
2076 // 525 "parser.php5.lemon"
2077 {
2078 	vvgotominor.vv228 = phvolt_ret_macro_call_statement(vvmsp[-8].minor.vv228, vvmsp[-6].minor.vv228, vvmsp[-3].minor.vv228, status->scanner_state);
2079   vv_destructor(1,&vvmsp[-10].minor);
2080   vv_destructor(60,&vvmsp[-9].minor);
2081   vv_destructor(29,&vvmsp[-7].minor);
2082   vv_destructor(52,&vvmsp[-5].minor);
2083   vv_destructor(32,&vvmsp[-4].minor);
2084   vv_destructor(1,&vvmsp[-2].minor);
2085   vv_destructor(61,&vvmsp[-1].minor);
2086   vv_destructor(32,&vvmsp[0].minor);
2087 }
2088 // 2087 "parser.php5.c"
2089         break;
2090       case 65:
2091 // 529 "parser.php5.lemon"
2092 {
2093 	vvgotominor.vv228 = phvolt_ret_macro_call_statement(vvmsp[-6].minor.vv228, NULL, NULL, status->scanner_state);
2094   vv_destructor(1,&vvmsp[-8].minor);
2095   vv_destructor(60,&vvmsp[-7].minor);
2096   vv_destructor(29,&vvmsp[-5].minor);
2097   vv_destructor(52,&vvmsp[-4].minor);
2098   vv_destructor(32,&vvmsp[-3].minor);
2099   vv_destructor(1,&vvmsp[-2].minor);
2100   vv_destructor(61,&vvmsp[-1].minor);
2101   vv_destructor(32,&vvmsp[0].minor);
2102 }
2103 // 2102 "parser.php5.c"
2104         break;
2105       case 66:
2106 // 539 "parser.php5.lemon"
2107 {
2108 	vvgotominor.vv228 = phvolt_ret_empty_statement(status->scanner_state);
2109   vv_destructor(1,&vvmsp[-1].minor);
2110   vv_destructor(32,&vvmsp[0].minor);
2111 }
2112 // 2111 "parser.php5.c"
2113         break;
2114       case 67:
2115 // 549 "parser.php5.lemon"
2116 {
2117 	vvgotominor.vv228 = phvolt_ret_echo_statement(vvmsp[-1].minor.vv228, status->scanner_state);
2118   vv_destructor(62,&vvmsp[-2].minor);
2119   vv_destructor(63,&vvmsp[0].minor);
2120 }
2121 // 2120 "parser.php5.c"
2122         break;
2123       case 68:
2124 // 559 "parser.php5.lemon"
2125 {
2126 	vvgotominor.vv228 = phvolt_ret_block_statement(vvmsp[-5].minor.vv0, vvmsp[-3].minor.vv228, status->scanner_state);
2127   vv_destructor(1,&vvmsp[-7].minor);
2128   vv_destructor(64,&vvmsp[-6].minor);
2129   vv_destructor(32,&vvmsp[-4].minor);
2130   vv_destructor(1,&vvmsp[-2].minor);
2131   vv_destructor(65,&vvmsp[-1].minor);
2132   vv_destructor(32,&vvmsp[0].minor);
2133 }
2134 // 2133 "parser.php5.c"
2135         break;
2136       case 69:
2137 // 563 "parser.php5.lemon"
2138 {
2139 	vvgotominor.vv228 = phvolt_ret_block_statement(vvmsp[-4].minor.vv0, NULL, status->scanner_state);
2140   vv_destructor(1,&vvmsp[-6].minor);
2141   vv_destructor(64,&vvmsp[-5].minor);
2142   vv_destructor(32,&vvmsp[-3].minor);
2143   vv_destructor(1,&vvmsp[-2].minor);
2144   vv_destructor(65,&vvmsp[-1].minor);
2145   vv_destructor(32,&vvmsp[0].minor);
2146 }
2147 // 2146 "parser.php5.c"
2148         break;
2149       case 70:
2150 // 573 "parser.php5.lemon"
2151 {
2152 	vvgotominor.vv228 = phvolt_ret_cache_statement(vvmsp[-5].minor.vv228, NULL, vvmsp[-3].minor.vv228, status->scanner_state);
2153   vv_destructor(1,&vvmsp[-7].minor);
2154   vv_destructor(66,&vvmsp[-6].minor);
2155   vv_destructor(32,&vvmsp[-4].minor);
2156   vv_destructor(1,&vvmsp[-2].minor);
2157   vv_destructor(67,&vvmsp[-1].minor);
2158   vv_destructor(32,&vvmsp[0].minor);
2159 }
2160 // 2159 "parser.php5.c"
2161         break;
2162       case 71:
2163 // 577 "parser.php5.lemon"
2164 {
2165 	vvgotominor.vv228 = phvolt_ret_cache_statement(vvmsp[-6].minor.vv228, vvmsp[-5].minor.vv228, vvmsp[-3].minor.vv228, status->scanner_state);
2166   vv_destructor(1,&vvmsp[-8].minor);
2167   vv_destructor(66,&vvmsp[-7].minor);
2168   vv_destructor(32,&vvmsp[-4].minor);
2169   vv_destructor(1,&vvmsp[-2].minor);
2170   vv_destructor(67,&vvmsp[-1].minor);
2171   vv_destructor(32,&vvmsp[0].minor);
2172 }
2173 // 2172 "parser.php5.c"
2174         break;
2175       case 74:
2176 // 601 "parser.php5.lemon"
2177 {
2178 	vvgotominor.vv228 = phvolt_ret_raw_statement(vvmsp[-3].minor.vv228, status->scanner_state);
2179   vv_destructor(1,&vvmsp[-6].minor);
2180   vv_destructor(68,&vvmsp[-5].minor);
2181   vv_destructor(32,&vvmsp[-4].minor);
2182   vv_destructor(1,&vvmsp[-2].minor);
2183   vv_destructor(69,&vvmsp[-1].minor);
2184   vv_destructor(32,&vvmsp[0].minor);
2185 }
2186 // 2185 "parser.php5.c"
2187         break;
2188       case 75:
2189 // 611 "parser.php5.lemon"
2190 {
2191 	vvgotominor.vv228 = phvolt_ret_extends_statement(vvmsp[-1].minor.vv228, status->scanner_state);
2192   vv_destructor(1,&vvmsp[-3].minor);
2193   vv_destructor(70,&vvmsp[-2].minor);
2194   vv_destructor(32,&vvmsp[0].minor);
2195 }
2196 // 2195 "parser.php5.c"
2197         break;
2198       case 76:
2199 // 621 "parser.php5.lemon"
2200 {
2201 	vvgotominor.vv228 = phvolt_ret_include_statement(vvmsp[-1].minor.vv228, NULL, status->scanner_state);
2202   vv_destructor(1,&vvmsp[-3].minor);
2203   vv_destructor(71,&vvmsp[-2].minor);
2204   vv_destructor(32,&vvmsp[0].minor);
2205 }
2206 // 2205 "parser.php5.c"
2207         break;
2208       case 77:
2209 // 625 "parser.php5.lemon"
2210 {
2211 	vvgotominor.vv228 = phvolt_ret_include_statement(vvmsp[-3].minor.vv228, vvmsp[-1].minor.vv228, status->scanner_state);
2212   vv_destructor(1,&vvmsp[-5].minor);
2213   vv_destructor(71,&vvmsp[-4].minor);
2214   vv_destructor(72,&vvmsp[-2].minor);
2215   vv_destructor(32,&vvmsp[0].minor);
2216 }
2217 // 2216 "parser.php5.c"
2218         break;
2219       case 78:
2220 // 635 "parser.php5.lemon"
2221 {
2222 	vvgotominor.vv228 = phvolt_ret_do_statement(vvmsp[-1].minor.vv228, status->scanner_state);
2223   vv_destructor(1,&vvmsp[-3].minor);
2224   vv_destructor(73,&vvmsp[-2].minor);
2225   vv_destructor(32,&vvmsp[0].minor);
2226 }
2227 // 2226 "parser.php5.c"
2228         break;
2229       case 79:
2230 // 645 "parser.php5.lemon"
2231 {
2232 	vvgotominor.vv228 = phvolt_ret_return_statement(vvmsp[-1].minor.vv228, status->scanner_state);
2233   vv_destructor(1,&vvmsp[-3].minor);
2234   vv_destructor(74,&vvmsp[-2].minor);
2235   vv_destructor(32,&vvmsp[0].minor);
2236 }
2237 // 2236 "parser.php5.c"
2238         break;
2239       case 80:
2240 // 655 "parser.php5.lemon"
2241 {
2242 	vvgotominor.vv228 = phvolt_ret_autoescape_statement(0, vvmsp[-3].minor.vv228, status->scanner_state);
2243   vv_destructor(1,&vvmsp[-7].minor);
2244   vv_destructor(75,&vvmsp[-6].minor);
2245   vv_destructor(58,&vvmsp[-5].minor);
2246   vv_destructor(32,&vvmsp[-4].minor);
2247   vv_destructor(1,&vvmsp[-2].minor);
2248   vv_destructor(76,&vvmsp[-1].minor);
2249   vv_destructor(32,&vvmsp[0].minor);
2250 }
2251 // 2250 "parser.php5.c"
2252         break;
2253       case 81:
2254 // 659 "parser.php5.lemon"
2255 {
2256 	vvgotominor.vv228 = phvolt_ret_autoescape_statement(1, vvmsp[-3].minor.vv228, status->scanner_state);
2257   vv_destructor(1,&vvmsp[-7].minor);
2258   vv_destructor(75,&vvmsp[-6].minor);
2259   vv_destructor(59,&vvmsp[-5].minor);
2260   vv_destructor(32,&vvmsp[-4].minor);
2261   vv_destructor(1,&vvmsp[-2].minor);
2262   vv_destructor(76,&vvmsp[-1].minor);
2263   vv_destructor(32,&vvmsp[0].minor);
2264 }
2265 // 2264 "parser.php5.c"
2266         break;
2267       case 82:
2268 // 669 "parser.php5.lemon"
2269 {
2270 	vvgotominor.vv228 = phvolt_ret_break_statement(status->scanner_state);
2271   vv_destructor(1,&vvmsp[-2].minor);
2272   vv_destructor(77,&vvmsp[-1].minor);
2273   vv_destructor(32,&vvmsp[0].minor);
2274 }
2275 // 2274 "parser.php5.c"
2276         break;
2277       case 83:
2278 // 679 "parser.php5.lemon"
2279 {
2280 	vvgotominor.vv228 = phvolt_ret_continue_statement(status->scanner_state);
2281   vv_destructor(1,&vvmsp[-2].minor);
2282   vv_destructor(78,&vvmsp[-1].minor);
2283   vv_destructor(32,&vvmsp[0].minor);
2284 }
2285 // 2284 "parser.php5.c"
2286         break;
2287       case 84:
2288 // 689 "parser.php5.lemon"
2289 {
2290 	vvgotominor.vv228 = phvolt_ret_literal_zval(PHVOLT_T_RAW_FRAGMENT, vvmsp[0].minor.vv0, status->scanner_state);
2291 }
2292 // 2291 "parser.php5.c"
2293         break;
2294       case 85:
2295 // 699 "parser.php5.lemon"
2296 {
2297 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_MINUS, NULL, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2298   vv_destructor(22,&vvmsp[-1].minor);
2299 }
2300 // 2299 "parser.php5.c"
2301         break;
2302       case 86:
2303 // 703 "parser.php5.lemon"
2304 {
2305 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_PLUS, NULL, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2306   vv_destructor(21,&vvmsp[-1].minor);
2307 }
2308 // 2307 "parser.php5.c"
2309         break;
2310       case 87:
2311 // 707 "parser.php5.lemon"
2312 {
2313 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_SUB, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2314   vv_destructor(22,&vvmsp[-1].minor);
2315 }
2316 // 2315 "parser.php5.c"
2317         break;
2318       case 88:
2319 // 711 "parser.php5.lemon"
2320 {
2321 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_ADD, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2322   vv_destructor(21,&vvmsp[-1].minor);
2323 }
2324 // 2323 "parser.php5.c"
2325         break;
2326       case 89:
2327 // 715 "parser.php5.lemon"
2328 {
2329 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_MUL, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2330   vv_destructor(19,&vvmsp[-1].minor);
2331 }
2332 // 2331 "parser.php5.c"
2333         break;
2334       case 90:
2335 // 719 "parser.php5.lemon"
2336 {
2337 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_POW, vvmsp[-3].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2338   vv_destructor(19,&vvmsp[-2].minor);
2339   vv_destructor(19,&vvmsp[-1].minor);
2340 }
2341 // 2340 "parser.php5.c"
2342         break;
2343       case 91:
2344 // 723 "parser.php5.lemon"
2345 {
2346 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_DIV, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2347   vv_destructor(18,&vvmsp[-1].minor);
2348 }
2349 // 2348 "parser.php5.c"
2350         break;
2351       case 92:
2352 // 727 "parser.php5.lemon"
2353 {
2354 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_MOD, vvmsp[-3].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2355   vv_destructor(18,&vvmsp[-2].minor);
2356   vv_destructor(18,&vvmsp[-1].minor);
2357 }
2358 // 2357 "parser.php5.c"
2359         break;
2360       case 93:
2361 // 731 "parser.php5.lemon"
2362 {
2363 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_MOD, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2364   vv_destructor(20,&vvmsp[-1].minor);
2365 }
2366 // 2365 "parser.php5.c"
2367         break;
2368       case 94:
2369 // 735 "parser.php5.lemon"
2370 {
2371 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_AND, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2372   vv_destructor(7,&vvmsp[-1].minor);
2373 }
2374 // 2373 "parser.php5.c"
2375         break;
2376       case 95:
2377 // 739 "parser.php5.lemon"
2378 {
2379 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_OR, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2380   vv_destructor(8,&vvmsp[-1].minor);
2381 }
2382 // 2381 "parser.php5.c"
2383         break;
2384       case 96:
2385 // 743 "parser.php5.lemon"
2386 {
2387 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_CONCAT, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2388   vv_destructor(23,&vvmsp[-1].minor);
2389 }
2390 // 2389 "parser.php5.c"
2391         break;
2392       case 97:
2393 // 747 "parser.php5.lemon"
2394 {
2395 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_PIPE, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2396   vv_destructor(25,&vvmsp[-1].minor);
2397 }
2398 // 2397 "parser.php5.c"
2399         break;
2400       case 98:
2401 // 751 "parser.php5.lemon"
2402 {
2403 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_RANGE, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2404   vv_destructor(6,&vvmsp[-1].minor);
2405 }
2406 // 2405 "parser.php5.c"
2407         break;
2408       case 99:
2409 // 755 "parser.php5.lemon"
2410 {
2411 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_EQUALS, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2412   vv_destructor(10,&vvmsp[-1].minor);
2413 }
2414 // 2413 "parser.php5.c"
2415         break;
2416       case 100:
2417 // 759 "parser.php5.lemon"
2418 {
2419 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_NOT_ISSET, vvmsp[-2].minor.vv228, NULL, NULL, status->scanner_state);
2420   vv_destructor(11,&vvmsp[-1].minor);
2421   vv_destructor(80,&vvmsp[0].minor);
2422 }
2423 // 2422 "parser.php5.c"
2424         break;
2425       case 101:
2426 // 763 "parser.php5.lemon"
2427 {
2428 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_ISSET, vvmsp[-2].minor.vv228, NULL, NULL, status->scanner_state);
2429   vv_destructor(9,&vvmsp[-1].minor);
2430   vv_destructor(80,&vvmsp[0].minor);
2431 }
2432 // 2431 "parser.php5.c"
2433         break;
2434       case 102:
2435 // 767 "parser.php5.lemon"
2436 {
2437 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_NOT_ISEMPTY, vvmsp[-2].minor.vv228, NULL, NULL, status->scanner_state);
2438   vv_destructor(11,&vvmsp[-1].minor);
2439   vv_destructor(81,&vvmsp[0].minor);
2440 }
2441 // 2440 "parser.php5.c"
2442         break;
2443       case 103:
2444 // 771 "parser.php5.lemon"
2445 {
2446 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_ISEMPTY, vvmsp[-2].minor.vv228, NULL, NULL, status->scanner_state);
2447   vv_destructor(9,&vvmsp[-1].minor);
2448   vv_destructor(81,&vvmsp[0].minor);
2449 }
2450 // 2449 "parser.php5.c"
2451         break;
2452       case 104:
2453 // 775 "parser.php5.lemon"
2454 {
2455 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_NOT_ISEVEN, vvmsp[-2].minor.vv228, NULL, NULL, status->scanner_state);
2456   vv_destructor(11,&vvmsp[-1].minor);
2457   vv_destructor(82,&vvmsp[0].minor);
2458 }
2459 // 2458 "parser.php5.c"
2460         break;
2461       case 105:
2462 // 779 "parser.php5.lemon"
2463 {
2464 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_ISEVEN, vvmsp[-2].minor.vv228, NULL, NULL, status->scanner_state);
2465   vv_destructor(9,&vvmsp[-1].minor);
2466   vv_destructor(82,&vvmsp[0].minor);
2467 }
2468 // 2467 "parser.php5.c"
2469         break;
2470       case 106:
2471 // 783 "parser.php5.lemon"
2472 {
2473 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_NOT_ISODD, vvmsp[-2].minor.vv228, NULL, NULL, status->scanner_state);
2474   vv_destructor(11,&vvmsp[-1].minor);
2475   vv_destructor(83,&vvmsp[0].minor);
2476 }
2477 // 2476 "parser.php5.c"
2478         break;
2479       case 107:
2480 // 787 "parser.php5.lemon"
2481 {
2482 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_ISODD, vvmsp[-2].minor.vv228, NULL, NULL, status->scanner_state);
2483   vv_destructor(9,&vvmsp[-1].minor);
2484   vv_destructor(83,&vvmsp[0].minor);
2485 }
2486 // 2485 "parser.php5.c"
2487         break;
2488       case 108:
2489 // 791 "parser.php5.lemon"
2490 {
2491 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_NOT_ISNUMERIC, vvmsp[-2].minor.vv228, NULL, NULL, status->scanner_state);
2492   vv_destructor(11,&vvmsp[-1].minor);
2493   vv_destructor(84,&vvmsp[0].minor);
2494 }
2495 // 2494 "parser.php5.c"
2496         break;
2497       case 109:
2498 // 795 "parser.php5.lemon"
2499 {
2500 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_ISNUMERIC, vvmsp[-2].minor.vv228, NULL, NULL, status->scanner_state);
2501   vv_destructor(9,&vvmsp[-1].minor);
2502   vv_destructor(84,&vvmsp[0].minor);
2503 }
2504 // 2503 "parser.php5.c"
2505         break;
2506       case 110:
2507 // 799 "parser.php5.lemon"
2508 {
2509 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_NOT_ISSCALAR, vvmsp[-2].minor.vv228, NULL, NULL, status->scanner_state);
2510   vv_destructor(11,&vvmsp[-1].minor);
2511   vv_destructor(85,&vvmsp[0].minor);
2512 }
2513 // 2512 "parser.php5.c"
2514         break;
2515       case 111:
2516 // 803 "parser.php5.lemon"
2517 {
2518 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_ISSCALAR, vvmsp[-2].minor.vv228, NULL, NULL, status->scanner_state);
2519   vv_destructor(9,&vvmsp[-1].minor);
2520   vv_destructor(85,&vvmsp[0].minor);
2521 }
2522 // 2521 "parser.php5.c"
2523         break;
2524       case 112:
2525 // 807 "parser.php5.lemon"
2526 {
2527 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_NOT_ISITERABLE, vvmsp[-2].minor.vv228, NULL, NULL, status->scanner_state);
2528   vv_destructor(11,&vvmsp[-1].minor);
2529   vv_destructor(86,&vvmsp[0].minor);
2530 }
2531 // 2530 "parser.php5.c"
2532         break;
2533       case 113:
2534 // 811 "parser.php5.lemon"
2535 {
2536 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_ISITERABLE, vvmsp[-2].minor.vv228, NULL, NULL, status->scanner_state);
2537   vv_destructor(9,&vvmsp[-1].minor);
2538   vv_destructor(86,&vvmsp[0].minor);
2539 }
2540 // 2539 "parser.php5.c"
2541         break;
2542       case 114:
2543 // 815 "parser.php5.lemon"
2544 {
2545 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_IS, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2546   vv_destructor(9,&vvmsp[-1].minor);
2547 }
2548 // 2547 "parser.php5.c"
2549         break;
2550       case 115:
2551 // 819 "parser.php5.lemon"
2552 {
2553 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_NOTEQUALS, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2554   vv_destructor(11,&vvmsp[-1].minor);
2555 }
2556 // 2555 "parser.php5.c"
2557         break;
2558       case 116:
2559 // 823 "parser.php5.lemon"
2560 {
2561 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_IDENTICAL, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2562   vv_destructor(16,&vvmsp[-1].minor);
2563 }
2564 // 2563 "parser.php5.c"
2565         break;
2566       case 117:
2567 // 827 "parser.php5.lemon"
2568 {
2569 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_NOTIDENTICAL, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2570   vv_destructor(17,&vvmsp[-1].minor);
2571 }
2572 // 2571 "parser.php5.c"
2573         break;
2574       case 118:
2575 // 831 "parser.php5.lemon"
2576 {
2577 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_LESS, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2578   vv_destructor(12,&vvmsp[-1].minor);
2579 }
2580 // 2579 "parser.php5.c"
2581         break;
2582       case 119:
2583 // 835 "parser.php5.lemon"
2584 {
2585 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_GREATER, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2586   vv_destructor(13,&vvmsp[-1].minor);
2587 }
2588 // 2587 "parser.php5.c"
2589         break;
2590       case 120:
2591 // 839 "parser.php5.lemon"
2592 {
2593 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_GREATEREQUAL, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2594   vv_destructor(14,&vvmsp[-1].minor);
2595 }
2596 // 2595 "parser.php5.c"
2597         break;
2598       case 121:
2599 // 843 "parser.php5.lemon"
2600 {
2601 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_LESSEQUAL, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2602   vv_destructor(15,&vvmsp[-1].minor);
2603 }
2604 // 2603 "parser.php5.c"
2605         break;
2606       case 123:
2607 // 851 "parser.php5.lemon"
2608 {
2609 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_IN, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2610   vv_destructor(3,&vvmsp[-1].minor);
2611 }
2612 // 2611 "parser.php5.c"
2613         break;
2614       case 124:
2615 // 855 "parser.php5.lemon"
2616 {
2617 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_NOT_IN, vvmsp[-3].minor.vv228, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2618   vv_destructor(26,&vvmsp[-2].minor);
2619   vv_destructor(3,&vvmsp[-1].minor);
2620 }
2621 // 2620 "parser.php5.c"
2622         break;
2623       case 125:
2624 // 859 "parser.php5.lemon"
2625 {
2626 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_NOT, NULL, vvmsp[0].minor.vv228, NULL, status->scanner_state);
2627   vv_destructor(26,&vvmsp[-1].minor);
2628 }
2629 // 2628 "parser.php5.c"
2630         break;
2631       case 126:
2632 // 863 "parser.php5.lemon"
2633 {
2634 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_INCR, vvmsp[-1].minor.vv228, NULL, NULL, status->scanner_state);
2635   vv_destructor(27,&vvmsp[0].minor);
2636 }
2637 // 2636 "parser.php5.c"
2638         break;
2639       case 127:
2640 // 867 "parser.php5.lemon"
2641 {
2642 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_DECR, vvmsp[-1].minor.vv228, NULL, NULL, status->scanner_state);
2643   vv_destructor(28,&vvmsp[0].minor);
2644 }
2645 // 2644 "parser.php5.c"
2646         break;
2647       case 128:
2648 // 871 "parser.php5.lemon"
2649 {
2650 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_ENCLOSED, vvmsp[-1].minor.vv228, NULL, NULL, status->scanner_state);
2651   vv_destructor(29,&vvmsp[-2].minor);
2652   vv_destructor(52,&vvmsp[0].minor);
2653 }
2654 // 2653 "parser.php5.c"
2655         break;
2656       case 129:
2657 // 875 "parser.php5.lemon"
2658 {
2659 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_ARRAY, NULL, NULL, NULL, status->scanner_state);
2660   vv_destructor(24,&vvmsp[-1].minor);
2661   vv_destructor(50,&vvmsp[0].minor);
2662 }
2663 // 2662 "parser.php5.c"
2664         break;
2665       case 130:
2666 // 879 "parser.php5.lemon"
2667 {
2668 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_ARRAY, vvmsp[-1].minor.vv228, NULL, NULL, status->scanner_state);
2669   vv_destructor(24,&vvmsp[-2].minor);
2670   vv_destructor(50,&vvmsp[0].minor);
2671 }
2672 // 2671 "parser.php5.c"
2673         break;
2674       case 131:
2675 // 883 "parser.php5.lemon"
2676 {
2677 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_ARRAY, NULL, NULL, NULL, status->scanner_state);
2678   vv_destructor(87,&vvmsp[-1].minor);
2679   vv_destructor(88,&vvmsp[0].minor);
2680 }
2681 // 2680 "parser.php5.c"
2682         break;
2683       case 132:
2684 // 887 "parser.php5.lemon"
2685 {
2686 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_ARRAY, vvmsp[-1].minor.vv228, NULL, NULL, status->scanner_state);
2687   vv_destructor(87,&vvmsp[-2].minor);
2688   vv_destructor(88,&vvmsp[0].minor);
2689 }
2690 // 2689 "parser.php5.c"
2691         break;
2692       case 134:
2693 // 895 "parser.php5.lemon"
2694 {
2695 	vvgotominor.vv228 = phvolt_ret_expr(PHVOLT_T_TERNARY, vvmsp[-2].minor.vv228, vvmsp[0].minor.vv228, vvmsp[-4].minor.vv228, status->scanner_state);
2696   vv_destructor(4,&vvmsp[-3].minor);
2697   vv_destructor(5,&vvmsp[-1].minor);
2698 }
2699 // 2698 "parser.php5.c"
2700         break;
2701       case 135:
2702 // 899 "parser.php5.lemon"
2703 {
2704 	vvgotominor.vv228 = phvolt_ret_slice(vvmsp[-4].minor.vv228, NULL, vvmsp[-1].minor.vv228, status->scanner_state);
2705   vv_destructor(24,&vvmsp[-3].minor);
2706   vv_destructor(5,&vvmsp[-2].minor);
2707   vv_destructor(50,&vvmsp[0].minor);
2708 }
2709 // 2708 "parser.php5.c"
2710         break;
2711       case 136:
2712 // 903 "parser.php5.lemon"
2713 {
2714 	vvgotominor.vv228 = phvolt_ret_slice(vvmsp[-4].minor.vv228, vvmsp[-2].minor.vv228, NULL, status->scanner_state);
2715   vv_destructor(24,&vvmsp[-3].minor);
2716   vv_destructor(5,&vvmsp[-1].minor);
2717   vv_destructor(50,&vvmsp[0].minor);
2718 }
2719 // 2718 "parser.php5.c"
2720         break;
2721       case 137:
2722 // 907 "parser.php5.lemon"
2723 {
2724 	vvgotominor.vv228 = phvolt_ret_slice(vvmsp[-5].minor.vv228, vvmsp[-3].minor.vv228, vvmsp[-1].minor.vv228, status->scanner_state);
2725   vv_destructor(24,&vvmsp[-4].minor);
2726   vv_destructor(5,&vvmsp[-2].minor);
2727   vv_destructor(50,&vvmsp[0].minor);
2728 }
2729 // 2728 "parser.php5.c"
2730         break;
2731       case 142:
2732       case 150:
2733 // 945 "parser.php5.lemon"
2734 {
2735 	vvgotominor.vv228 = phvolt_ret_named_item(vvmsp[-2].minor.vv0, vvmsp[0].minor.vv228, status->scanner_state);
2736   vv_destructor(5,&vvmsp[-1].minor);
2737 }
2738 // 2737 "parser.php5.c"
2739         break;
2740       case 143:
2741       case 149:
2742 // 949 "parser.php5.lemon"
2743 {
2744 	vvgotominor.vv228 = phvolt_ret_named_item(NULL, vvmsp[0].minor.vv228, status->scanner_state);
2745 }
2746 // 2745 "parser.php5.c"
2747         break;
2748       case 145:
2749 // 963 "parser.php5.lemon"
2750 {
2751 	vvgotominor.vv228 = phvolt_ret_func_call(vvmsp[-3].minor.vv228, vvmsp[-1].minor.vv228, status->scanner_state);
2752   vv_destructor(29,&vvmsp[-2].minor);
2753   vv_destructor(52,&vvmsp[0].minor);
2754 }
2755 // 2754 "parser.php5.c"
2756         break;
2757       case 146:
2758 // 967 "parser.php5.lemon"
2759 {
2760 	vvgotominor.vv228 = phvolt_ret_func_call(vvmsp[-2].minor.vv228, NULL, status->scanner_state);
2761   vv_destructor(29,&vvmsp[-1].minor);
2762   vv_destructor(52,&vvmsp[0].minor);
2763 }
2764 // 2763 "parser.php5.c"
2765         break;
2766   };
2767   vvgoto = vvRuleInfo[vvruleno].lhs;
2768   vvsize = vvRuleInfo[vvruleno].nrhs;
2769   vvpParser->vvidx -= vvsize;
2770   vvact = vv_find_reduce_action(vvpParser,vvgoto);
2771   if( vvact < VVNSTATE ){
2772     vv_shift(vvpParser,vvact,vvgoto,&vvgotominor);
2773   }else if( vvact == VVNSTATE + VVNRULE + 1 ){
2774     vv_accept(vvpParser);
2775   }
2776 }
2777 
2778 /*
2779 ** The following code executes when the parse fails
2780 */
vv_parse_failed(vvParser * vvpParser)2781 static void vv_parse_failed(
2782   vvParser *vvpParser           /* The parser */
2783 ){
2784   phvolt_ARG_FETCH;
2785 #ifndef NDEBUG
2786   if( vvTraceFILE ){
2787     fprintf(vvTraceFILE,"%sFail!\n",vvTracePrompt);
2788   }
2789 #endif
2790   while( vvpParser->vvidx>=0 ) vv_pop_parser_stack(vvpParser);
2791   /* Here code is inserted which will be executed whenever the
2792   ** parser fails */
2793   phvolt_ARG_STORE; /* Suppress warning about unused %extra_argument variable */
2794 }
2795 
2796 /*
2797 ** The following code executes when a syntax error first occurs.
2798 */
vv_syntax_error(vvParser * vvpParser,int vvmajor,VVMINORTYPE vvminor)2799 static void vv_syntax_error(
2800   vvParser *vvpParser,           /* The parser */
2801   int vvmajor,                   /* The major type of the error token */
2802   VVMINORTYPE vvminor            /* The minor type of the error token */
2803 ){
2804   phvolt_ARG_FETCH;
2805 #define VTOKEN (vvminor.vv0)
2806 // 46 "parser.php5.lemon"
2807 
2808 	{
2809 
2810 		smart_str error_str = {0};
2811 
2812 		char *token_name = NULL;
2813 		const phvolt_token_names *tokens = phvolt_tokens;
2814 		int token_len = 0;
2815 		int active_token = status->scanner_state->active_token;
2816 
2817 		if (status->scanner_state->start_length) {
2818 
2819 			if (active_token) {
2820 
2821 				do {
2822 					if (tokens->code == active_token) {
2823 						token_name = tokens->name;
2824 						token_len = tokens->len;
2825 						break;
2826 					}
2827 					++tokens;
2828 				} while (tokens[0].code != 0);
2829 
2830 			}
2831 
2832 			smart_str_appendl(&error_str, "Syntax error, unexpected token ", sizeof("Syntax error, unexpected token ") - 1);
2833 			if (!token_name) {
2834 				smart_str_appendl(&error_str, "UNKNOWN", sizeof("UNKNOWN") - 1);
2835 			} else {
2836 				smart_str_appendl(&error_str, token_name, token_len);
2837 			}
2838 
2839 			if (status->token->value) {
2840 				smart_str_appendc(&error_str, '(');
2841 				smart_str_appendl(&error_str, status->token->value, status->token->len);
2842 				smart_str_appendc(&error_str, ')');
2843 			}
2844 
2845 			smart_str_appendl(&error_str, " in ", sizeof(" in ") - 1);
2846 			smart_str_appendl(&error_str, Z_STRVAL_P(status->scanner_state->active_file), Z_STRLEN_P(status->scanner_state->active_file));
2847 			smart_str_appendl(&error_str, " on line ", sizeof(" on line ") - 1);
2848 
2849 			{
2850 				char stmp[MAX_LENGTH_OF_LONG + 1];
2851 				int str_len;
2852 				str_len = slprintf(stmp, sizeof(stmp), "%ld", status->scanner_state->active_line);
2853 				smart_str_appendl(&error_str, stmp, str_len);
2854 			}
2855 
2856 		} else {
2857 
2858 			smart_str_appendl(&error_str, "Syntax error, unexpected EOF in ", sizeof("Syntax error, unexpected EOF in ") - 1);
2859 			smart_str_appendl(&error_str, Z_STRVAL_P(status->scanner_state->active_file), Z_STRLEN_P(status->scanner_state->active_file));
2860 
2861 			/* Report unclosed 'if' blocks */
2862 			if ((status->scanner_state->if_level + status->scanner_state->old_if_level) > 0) {
2863 				if ((status->scanner_state->if_level + status->scanner_state->old_if_level) == 1) {
2864 					smart_str_appendl(&error_str, ", there is one 'if' block without close", sizeof(", there is one 'if' block without close") - 1);
2865 				} else {
2866 					smart_str_appendl(&error_str, ", there are ", sizeof(", there are ") - 1);
2867 					{
2868 						char stmp[MAX_LENGTH_OF_LONG + 1];
2869 						int str_len;
2870 						str_len = slprintf(stmp, sizeof(stmp), "%ld", status->scanner_state->if_level + status->scanner_state->old_if_level);
2871 						smart_str_appendl(&error_str, stmp, str_len);
2872 					}
2873 					smart_str_appendl(&error_str, " 'if' blocks without close", sizeof(" 'if' blocks without close") - 1);
2874 				}
2875 			}
2876 
2877 			/* Report unclosed 'for' blocks */
2878 			if (status->scanner_state->for_level > 0) {
2879 				if (status->scanner_state->for_level == 1) {
2880 					smart_str_appendl(&error_str, ", there is one 'for' block without close", sizeof(", there is one 'for' block without close") - 1);
2881 				} else {
2882 					smart_str_appendl(&error_str, ", there are ", sizeof(", there are ") - 1);
2883 					{
2884 						char stmp[MAX_LENGTH_OF_LONG + 1];
2885 						int str_len;
2886 						str_len = slprintf(stmp, sizeof(stmp), "%ld", status->scanner_state->if_level);
2887 						smart_str_appendl(&error_str, stmp, str_len);
2888 					}
2889 					smart_str_appendl(&error_str, " 'for' blocks without close", sizeof(" 'for' blocks without close") - 1);
2890 				}
2891 			}
2892 
2893 			/* Report unclosed 'switch' blocks */
2894 			if (status->scanner_state->switch_level > 0) {
2895 				smart_str_appendl(&error_str, ", there is a 'switch' block without 'endswitch'", sizeof(", there is a 'switch' block without 'endswitch'") - 1);
2896 			}
2897 
2898 		}
2899 
2900 		smart_str_0(&error_str);
2901 
2902 #if PHP_VERSION_ID < 70000
2903 		if (error_str.len) {
2904 			status->syntax_error = error_str.c;
2905 			status->syntax_error_len = error_str.len;
2906 		} else {
2907 			status->syntax_error = NULL;
2908 		}
2909 #else
2910 		if (error_str.s) {
2911 			status->syntax_error = estrndup(ZSTR_VAL(error_str.s), ZSTR_LEN(error_str.s));
2912 			status->syntax_error_len = ZSTR_LEN(error_str.s);
2913 		} else {
2914 			status->syntax_error = NULL;
2915 		}
2916 #endif
2917 	}
2918 
2919 	status->status = PHVOLT_PARSING_FAILED;
2920 
2921 // 2920 "parser.php5.c"
2922   phvolt_ARG_STORE; /* Suppress warning about unused %extra_argument variable */
2923 }
2924 
2925 /*
2926 ** The following is executed when the parser accepts
2927 */
vv_accept(vvParser * vvpParser)2928 static void vv_accept(
2929   vvParser *vvpParser           /* The parser */
2930 ){
2931   phvolt_ARG_FETCH;
2932 #ifndef NDEBUG
2933   if( vvTraceFILE ){
2934     fprintf(vvTraceFILE,"%sAccept!\n",vvTracePrompt);
2935   }
2936 #endif
2937   while( vvpParser->vvidx>=0 ) vv_pop_parser_stack(vvpParser);
2938   /* Here code is inserted which will be executed whenever the
2939   ** parser accepts */
2940   phvolt_ARG_STORE; /* Suppress warning about unused %extra_argument variable */
2941 }
2942 
2943 /* The main parser program.
2944 ** The first argument is a pointer to a structure obtained from
2945 ** "phvolt_Alloc" which describes the current state of the parser.
2946 ** The second argument is the major token number.  The third is
2947 ** the minor token.  The fourth optional argument is whatever the
2948 ** user wants (and specified in the grammar) and is available for
2949 ** use by the action routines.
2950 **
2951 ** Inputs:
2952 ** <ul>
2953 ** <li> A pointer to the parser (an opaque structure.)
2954 ** <li> The major token number.
2955 ** <li> The minor token number.
2956 ** <li> An option argument of a grammar-specified type.
2957 ** </ul>
2958 **
2959 ** Outputs:
2960 ** None.
2961 */
phvolt_(void * vvp,int vvmajor,phvolt_TOKENTYPE vvminor phvolt_ARG_PDECL)2962 void phvolt_(
2963   void *vvp,                   /* The parser */
2964   int vvmajor,                 /* The major token code number */
2965   phvolt_TOKENTYPE vvminor       /* The value for the token */
2966   phvolt_ARG_PDECL               /* Optional %extra_argument parameter */
2967 ){
2968   VVMINORTYPE vvminorunion;
2969   int vvact;            /* The parser action. */
2970   int vvendofinput;     /* True if we are at the end of input */
2971   int vverrorhit = 0;   /* True if vvmajor has invoked an error */
2972   vvParser *vvpParser;  /* The parser */
2973 
2974   /* (re)initialize the parser, if necessary */
2975   vvpParser = (vvParser*)vvp;
2976   if( vvpParser->vvidx<0 ){
2977     if( vvmajor==0 ) return;
2978     vvpParser->vvidx = 0;
2979     vvpParser->vverrcnt = -1;
2980     vvpParser->vvstack[0].stateno = 0;
2981     vvpParser->vvstack[0].major = 0;
2982   }
2983   vvminorunion.vv0 = vvminor;
2984   vvendofinput = (vvmajor==0);
2985   phvolt_ARG_STORE;
2986 
2987 #ifndef NDEBUG
2988   if( vvTraceFILE ){
2989     fprintf(vvTraceFILE,"%sInput %s\n",vvTracePrompt,vvTokenName[vvmajor]);
2990   }
2991 #endif
2992 
2993   do{
2994     vvact = vv_find_shift_action(vvpParser,vvmajor);
2995     if( vvact<VVNSTATE ){
2996       vv_shift(vvpParser,vvact,vvmajor,&vvminorunion);
2997       vvpParser->vverrcnt--;
2998       if( vvendofinput && vvpParser->vvidx>=0 ){
2999         vvmajor = 0;
3000       }else{
3001         vvmajor = VVNOCODE;
3002       }
3003     }else if( vvact < VVNSTATE + VVNRULE ){
3004       vv_reduce(vvpParser,vvact-VVNSTATE);
3005     }else if( vvact == VV_ERROR_ACTION ){
3006       int vvmx;
3007 #ifndef NDEBUG
3008       if( vvTraceFILE ){
3009         fprintf(vvTraceFILE,"%sSyntax Error!\n",vvTracePrompt);
3010       }
3011 #endif
3012 #ifdef VVERRORSYMBOL
3013       /* A syntax error has occurred.
3014       ** The response to an error depends upon whether or not the
3015       ** grammar defines an error token "ERROR".
3016       **
3017       ** This is what we do if the grammar does define ERROR:
3018       **
3019       **  * Call the %syntax_error function.
3020       **
3021       **  * Begin popping the stack until we enter a state where
3022       **    it is legal to shift the error symbol, then shift
3023       **    the error symbol.
3024       **
3025       **  * Set the error count to three.
3026       **
3027       **  * Begin accepting and shifting new tokens.  No new error
3028       **    processing will occur until three tokens have been
3029       **    shifted successfully.
3030       **
3031       */
3032       if( vvpParser->vverrcnt<0 ){
3033         vv_syntax_error(vvpParser,vvmajor,vvminorunion);
3034       }
3035       vvmx = vvpParser->vvstack[vvpParser->vvidx].major;
3036       if( vvmx==VVERRORSYMBOL || vverrorhit ){
3037 #ifndef NDEBUG
3038         if( vvTraceFILE ){
3039           fprintf(vvTraceFILE,"%sDiscard input token %s\n",
3040              vvTracePrompt,vvTokenName[vvmajor]);
3041         }
3042 #endif
3043         vv_destructor(vvmajor,&vvminorunion);
3044         vvmajor = VVNOCODE;
3045       }else{
3046          while(
3047           vvpParser->vvidx >= 0 &&
3048           vvmx != VVERRORSYMBOL &&
3049           (vvact = vv_find_shift_action(vvpParser,VVERRORSYMBOL)) >= VVNSTATE
3050         ){
3051           vv_pop_parser_stack(vvpParser);
3052         }
3053         if( vvpParser->vvidx < 0 || vvmajor==0 ){
3054           vv_destructor(vvmajor,&vvminorunion);
3055           vv_parse_failed(vvpParser);
3056           vvmajor = VVNOCODE;
3057         }else if( vvmx!=VVERRORSYMBOL ){
3058           VVMINORTYPE u2;
3059           u2.VVERRSYMDT = 0;
3060           vv_shift(vvpParser,vvact,VVERRORSYMBOL,&u2);
3061         }
3062       }
3063       vvpParser->vverrcnt = 3;
3064       vverrorhit = 1;
3065 #else  /* VVERRORSYMBOL is not defined */
3066       /* This is what we do if the grammar does not define ERROR:
3067       **
3068       **  * Report an error message, and throw away the input token.
3069       **
3070       **  * If the input token is $, then fail the parse.
3071       **
3072       ** As before, subsequent error messages are suppressed until
3073       ** three input tokens have been successfully shifted.
3074       */
3075       if( vvpParser->vverrcnt<=0 ){
3076         vv_syntax_error(vvpParser,vvmajor,vvminorunion);
3077       }
3078       vvpParser->vverrcnt = 3;
3079       vv_destructor(vvmajor,&vvminorunion);
3080       if( vvendofinput ){
3081         vv_parse_failed(vvpParser);
3082       }
3083       vvmajor = VVNOCODE;
3084 #endif
3085     }else{
3086       vv_accept(vvpParser);
3087       vvmajor = VVNOCODE;
3088     }
3089   }while( vvmajor!=VVNOCODE && vvpParser->vvidx>=0 );
3090   return;
3091 }
3092 #else
3093 /* Driver template for the LEMON parser generator.
3094 ** The author disclaims copyright to this source code.
3095 */
3096 /* First off, code is include which follows the "include" declaration
3097 ** in the input file. */
3098 #include <stdio.h>
3099 // 42 "parser.php7.lemon"
3100 
3101 #include "parser.php7.inc.h"
3102 
3103 // 12 "parser.php7.c"
3104 /* Next is all token values, in a form suitable for use by makeheaders.
3105 ** This section will be null unless lemon is run with the -m switch.
3106 */
3107 /*
3108 ** These constants (all generated automatically by the parser generator)
3109 ** specify the various kinds of tokens (terminals) that the parser
3110 ** understands.
3111 **
3112 ** Each symbol here is a terminal symbol in the grammar.
3113 */
3114 /* Make sure the INTERFACE macro is defined.
3115 */
3116 #ifndef INTERFACE
3117 # define INTERFACE 1
3118 #endif
3119 /* The next thing included is series of defines which control
3120 ** various aspects of the generated parser.
3121 **    VVCODETYPE         is the data type used for storing terminal
3122 **                       and nonterminal numbers.  "unsigned char" is
3123 **                       used if there are fewer than 250 terminals
3124 **                       and nonterminals.  "int" is used otherwise.
3125 **    VVNOCODE           is a number of type VVCODETYPE which corresponds
3126 **                       to no legal terminal or nonterminal number.  This
3127 **                       number is used to fill in empty slots of the hash
3128 **                       table.
3129 **    VVFALLBACK         If defined, this indicates that one or more tokens
3130 **                       have fall-back values which should be used if the
3131 **                       original value of the token will not parse.
3132 **    VVACTIONTYPE       is the data type used for storing terminal
3133 **                       and nonterminal numbers.  "unsigned char" is
3134 **                       used if there are fewer than 250 rules and
3135 **                       states combined.  "int" is used otherwise.
3136 **    phvolt_TOKENTYPE     is the data type used for minor tokens given
3137 **                       directly to the parser from the tokenizer.
3138 **    VVMINORTYPE        is the data type used for all minor tokens.
3139 **                       This is typically a union of many types, one of
3140 **                       which is phvolt_TOKENTYPE.  The entry in the union
3141 **                       for base tokens is called "vv0".
3142 **    VVSTACKDEPTH       is the maximum depth of the parser's stack.
3143 **    phvolt_ARG_SDECL     A static variable declaration for the %extra_argument
3144 **    phvolt_ARG_PDECL     A parameter declaration for the %extra_argument
3145 **    phvolt_ARG_STORE     Code to store %extra_argument into vvpParser
3146 **    phvolt_ARG_FETCH     Code to extract %extra_argument from vvpParser
3147 **    VVNSTATE           the combined number of states.
3148 **    VVNRULE            the number of rules in the grammar
3149 **    VVERRORSYMBOL      is the code number of the error symbol.  If not
3150 **                       defined, then do no error processing.
3151 */
3152 #define VVCODETYPE unsigned char
3153 #define VVNOCODE 131
3154 #define VVACTIONTYPE unsigned short int
3155 #define phvolt_TOKENTYPE phvolt_parser_token*
3156 typedef union {
3157   phvolt_TOKENTYPE vv0;
3158   zval vv186;
3159   int vv261;
3160 } VVMINORTYPE;
3161 #define VVSTACKDEPTH 100
3162 #define phvolt_ARG_SDECL phvolt_parser_status *status;
3163 #define phvolt_ARG_PDECL ,phvolt_parser_status *status
3164 #define phvolt_ARG_FETCH phvolt_parser_status *status = vvpParser->status
3165 #define phvolt_ARG_STORE vvpParser->status = status
3166 #define VVNSTATE 365
3167 #define VVNRULE 158
3168 #define VVERRORSYMBOL 89
3169 #define VVERRSYMDT vv261
3170 #define VV_NO_ACTION      (VVNSTATE+VVNRULE+2)
3171 #define VV_ACCEPT_ACTION  (VVNSTATE+VVNRULE+1)
3172 #define VV_ERROR_ACTION   (VVNSTATE+VVNRULE)
3173 
3174 /* Next are that tables used to determine what action to take based on the
3175 ** current state and lookahead token.  These tables are used to implement
3176 ** functions that take a state number and lookahead value and return an
3177 ** action integer.
3178 **
3179 ** Suppose the action integer is N.  Then the action is determined as
3180 ** follows
3181 **
3182 **   0 <= N < VVNSTATE                  Shift N.  That is, push the lookahead
3183 **                                      token onto the stack and goto state N.
3184 **
3185 **   VVNSTATE <= N < VVNSTATE+VVNRULE   Reduce by rule N-VVNSTATE.
3186 **
3187 **   N == VVNSTATE+VVNRULE              A syntax error has occurred.
3188 **
3189 **   N == VVNSTATE+VVNRULE+1            The parser accepts its input.
3190 **
3191 **   N == VVNSTATE+VVNRULE+2            No such action.  Denotes unused
3192 **                                      slots in the vv_action[] table.
3193 **
3194 ** The action table is constructed as a single large table named vv_action[].
3195 ** Given state S and lookahead X, the action is computed as
3196 **
3197 **      vv_action[ vv_shift_ofst[S] + X ]
3198 **
3199 ** If the index value vv_shift_ofst[S]+X is out of range or if the value
3200 ** vv_lookahead[vv_shift_ofst[S]+X] is not equal to X or if vv_shift_ofst[S]
3201 ** is equal to VV_SHIFT_USE_DFLT, it means that the action is not in the table
3202 ** and that vv_default[S] should be used instead.
3203 **
3204 ** The formula above is for computing the action when the lookahead is
3205 ** a terminal symbol.  If the lookahead is a non-terminal (as occurs after
3206 ** a reduce action) then the vv_reduce_ofst[] array is used in place of
3207 ** the vv_shift_ofst[] array and VV_REDUCE_USE_DFLT is used in place of
3208 ** VV_SHIFT_USE_DFLT.
3209 **
3210 ** The following are the tables generated in this section:
3211 **
3212 **  vv_action[]        A single table containing all actions.
3213 **  vv_lookahead[]     A table containing the lookahead for each entry in
3214 **                     vv_action.  Used to detect hash collisions.
3215 **  vv_shift_ofst[]    For each state, the offset into vv_action for
3216 **                     shifting terminals.
3217 **  vv_reduce_ofst[]   For each state, the offset into vv_action for
3218 **                     shifting non-terminals after a reduce.
3219 **  vv_default[]       Default action for each state.
3220 */
3221 static VVACTIONTYPE vv_action[] = {
3222  /*     0 */    85,   95,  111,   63,   55,   57,   69,   65,   67,   75,
3223  /*    10 */    77,   79,   81,   71,   73,   51,   49,   53,   46,   43,
3224  /*    20 */    59,   92,   61,   87,   90,   91,   99,   83,  365,  245,
3225  /*    30 */    87,   90,   91,   99,   83,  300,   51,   49,   53,   46,
3226  /*    40 */    43,   59,   92,   61,   87,   90,   91,   99,   83,   33,
3227  /*    50 */   110,  299,  194,  215,  198,   85,   95,  196,   63,   55,
3228  /*    60 */    57,   69,   65,   67,   75,   77,   79,   81,   71,   73,
3229  /*    70 */    51,   49,   53,   46,   43,   59,   92,   61,   87,   90,
3230  /*    80 */    91,   99,   83,  331,  176,   85,   95,  195,   63,   55,
3231  /*    90 */    57,   69,   65,   67,   75,   77,   79,   81,   71,   73,
3232  /*   100 */    51,   49,   53,   46,   43,   59,   92,   61,   87,   90,
3233  /*   110 */    91,   99,   83,   35,  265,   85,   95,   39,   63,   55,
3234  /*   120 */    57,   69,   65,   67,   75,   77,   79,   81,   71,   73,
3235  /*   130 */    51,   49,   53,   46,   43,   59,   92,   61,   87,   90,
3236  /*   140 */    91,   99,   83,  347,  342,   92,   61,   87,   90,   91,
3237  /*   150 */    99,   83,  338,  174,  266,  197,  198,   88,   85,   95,
3238  /*   160 */   139,   63,   55,   57,   69,   65,   67,   75,   77,   79,
3239  /*   170 */    81,   71,   73,   51,   49,   53,   46,   43,   59,   92,
3240  /*   180 */    61,   87,   90,   91,   99,   83,  118,   29,   85,   95,
3241  /*   190 */   140,   63,   55,   57,   69,   65,   67,   75,   77,   79,
3242  /*   200 */    81,   71,   73,   51,   49,   53,   46,   43,   59,   92,
3243  /*   210 */    61,   87,   90,   91,   99,   83,  134,   42,   85,   95,
3244  /*   220 */   503,   63,   55,   57,   69,   65,   67,   75,   77,   79,
3245  /*   230 */    81,   71,   73,   51,   49,   53,   46,   43,   59,   92,
3246  /*   240 */    61,   87,   90,   91,   99,   83,   46,   43,   59,   92,
3247  /*   250 */    61,   87,   90,   91,   99,   83,  321,  322,  323,  324,
3248  /*   260 */   325,  326,  504,  111,  144,   94,  309,  327,  146,   85,
3249  /*   270 */    95,   97,   63,   55,   57,   69,   65,   67,   75,   77,
3250  /*   280 */    79,   81,   71,   73,   51,   49,   53,   46,   43,   59,
3251  /*   290 */    92,   61,   87,   90,   91,   99,   83,   85,   95,  147,
3252  /*   300 */    63,   55,   57,   69,   65,   67,   75,   77,   79,   81,
3253  /*   310 */    71,   73,   51,   49,   53,   46,   43,   59,   92,   61,
3254  /*   320 */    87,   90,   91,   99,   83,  100,  503,  142,  142,  504,
3255  /*   330 */   107,  171,  129,  276,  287,  173,  107,  120,  137,  109,
3256  /*   340 */   145,  116,  120,  141,  141,  114,  105,  116,  120,  115,
3257  /*   350 */    85,   95,  180,   63,   55,   57,   69,   65,   67,   75,
3258  /*   360 */    77,   79,   81,   71,   73,   51,   49,   53,   46,   43,
3259  /*   370 */    59,   92,   61,   87,   90,   91,   99,   83,  187,  183,
3260  /*   380 */    85,   95,   26,   63,   55,   57,   69,   65,   67,   75,
3261  /*   390 */    77,   79,   81,   71,   73,   51,   49,   53,   46,   43,
3262  /*   400 */    59,   92,   61,   87,   90,   91,   99,   83,  192,  190,
3263  /*   410 */    85,   95,  213,   63,   55,   57,   69,   65,   67,   75,
3264  /*   420 */    77,   79,   81,   71,   73,   51,   49,   53,   46,   43,
3265  /*   430 */    59,   92,   61,   87,   90,   91,   99,   83,  100,  217,
3266  /*   440 */   220,   28,   93,  252,  165,  228,  214,  107,  218,  318,
3267  /*   450 */   120,  137,  143,  120,  120,  224,  120,  211,  128,  120,
3268  /*   460 */   259,   85,   95,  219,   63,   55,   57,   69,   65,   67,
3269  /*   470 */    75,   77,   79,   81,   71,   73,   51,   49,   53,   46,
3270  /*   480 */    43,   59,   92,   61,   87,   90,   91,   99,   83,   85,
3271  /*   490 */    95,  230,   63,   55,   57,   69,   65,   67,   75,   77,
3272  /*   500 */    79,   81,   71,   73,   51,   49,   53,   46,   43,   59,
3273  /*   510 */    92,   61,   87,   90,   91,   99,   83,  234,  262,   85,
3274  /*   520 */    95,  254,   63,   55,   57,   69,   65,   67,   75,   77,
3275  /*   530 */    79,   81,   71,   73,   51,   49,   53,   46,   43,   59,
3276  /*   540 */    92,   61,   87,   90,   91,   99,   83,  237,  268,   85,
3277  /*   550 */    95,  238,   63,   55,   57,   69,   65,   67,   75,   77,
3278  /*   560 */    79,   81,   71,   73,   51,   49,   53,   46,   43,   59,
3279  /*   570 */    92,   61,   87,   90,   91,   99,   83,  242,  271,   85,
3280  /*   580 */    95,  293,   63,   55,   57,   69,   65,   67,   75,   77,
3281  /*   590 */    79,   81,   71,   73,   51,   49,   53,   46,   43,   59,
3282  /*   600 */    92,   61,   87,   90,   91,   99,   83,  249,  274,   85,
3283  /*   610 */    95,  251,   63,   55,   57,   69,   65,   67,   75,   77,
3284  /*   620 */    79,   81,   71,   73,   51,   49,   53,   46,   43,   59,
3285  /*   630 */    92,   61,   87,   90,   91,   99,   83,  257,  333,   85,
3286  /*   640 */    95,  256,   63,   55,   57,   69,   65,   67,   75,   77,
3287  /*   650 */    79,   81,   71,   73,   51,   49,   53,   46,   43,   59,
3288  /*   660 */    92,   61,   87,   90,   91,   99,   83,  318,  349,   85,
3289  /*   670 */    95,  258,   63,   55,   57,   69,   65,   67,   75,   77,
3290  /*   680 */    79,   81,   71,   73,   51,   49,   53,   46,   43,   59,
3291  /*   690 */    92,   61,   87,   90,   91,   99,   83,   85,   95,  277,
3292  /*   700 */    63,   55,   57,   69,   65,   67,   75,   77,   79,   81,
3293  /*   710 */    71,   73,   51,   49,   53,   46,   43,   59,   92,   61,
3294  /*   720 */    87,   90,   91,  227,   83,  524,    1,    2,  286,    4,
3295  /*   730 */     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
3296  /*   740 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
3297  /*   750 */    25,   95,  281,   63,   55,   57,   69,   65,   67,   75,
3298  /*   760 */    77,   79,   81,   71,   73,   51,   49,   53,   46,   43,
3299  /*   770 */    59,   92,   61,   87,   90,   91,   99,   83,   63,   55,
3300  /*   780 */    57,   69,   65,   67,   75,   77,   79,   81,   71,   73,
3301  /*   790 */    51,   49,   53,   46,   43,   59,   92,   61,   87,   90,
3302  /*   800 */    91,   99,   83,   30,  286,    4,    5,    6,    7,    8,
3303  /*   810 */     9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
3304  /*   820 */    19,   20,   21,   22,   23,   24,   25,   36,  286,    4,
3305  /*   830 */     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
3306  /*   840 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
3307  /*   850 */    25,   55,   57,   69,   65,   67,   75,   77,   79,   81,
3308  /*   860 */    71,   73,   51,   49,   53,   46,   43,   59,   92,   61,
3309  /*   870 */    87,   90,   91,   99,   83,  177,  286,    4,    5,    6,
3310  /*   880 */     7,    8,    9,   10,   11,   12,   13,   14,   15,   16,
3311  /*   890 */    17,   18,   19,   20,   21,   22,   23,   24,   25,  184,
3312  /*   900 */   286,    4,    5,    6,    7,    8,    9,   10,   11,   12,
3313  /*   910 */    13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
3314  /*   920 */    23,   24,   25,  221,  286,    4,    5,    6,    7,    8,
3315  /*   930 */     9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
3316  /*   940 */    19,   20,   21,   22,   23,   24,   25,  231,  286,    4,
3317  /*   950 */     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
3318  /*   960 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
3319  /*   970 */    25,  239,  286,    4,    5,    6,    7,    8,    9,   10,
3320  /*   980 */    11,   12,   13,   14,   15,   16,   17,   18,   19,   20,
3321  /*   990 */    21,   22,   23,   24,   25,  246,  286,    4,    5,    6,
3322  /*  1000 */     7,    8,    9,   10,   11,   12,   13,   14,   15,   16,
3323  /*  1010 */    17,   18,   19,   20,   21,   22,   23,   24,   25,  278,
3324  /*  1020 */   286,    4,    5,    6,    7,    8,    9,   10,   11,   12,
3325  /*  1030 */    13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
3326  /*  1040 */    23,   24,   25,  289,  286,    4,    5,    6,    7,    8,
3327  /*  1050 */     9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
3328  /*  1060 */    19,   20,   21,   22,   23,   24,   25,  295,  286,    4,
3329  /*  1070 */     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
3330  /*  1080 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
3331  /*  1090 */    25,  312,  286,    4,    5,    6,    7,    8,    9,   10,
3332  /*  1100 */    11,   12,   13,   14,   15,   16,   17,   18,   19,   20,
3333  /*  1110 */    21,   22,   23,   24,   25,  334,  286,    4,    5,    6,
3334  /*  1120 */     7,    8,    9,   10,   11,   12,   13,   14,   15,   16,
3335  /*  1130 */    17,   18,   19,   20,   21,   22,   23,   24,   25,  343,
3336  /*  1140 */   286,    4,    5,    6,    7,    8,    9,   10,   11,   12,
3337  /*  1150 */    13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
3338  /*  1160 */    23,   24,   25,  350,  286,    4,    5,    6,    7,    8,
3339  /*  1170 */     9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
3340  /*  1180 */    19,   20,   21,   22,   23,   24,   25,    3,    4,    5,
3341  /*  1190 */     6,    7,    8,    9,   10,   11,   12,   13,   14,   15,
3342  /*  1200 */    16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
3343  /*  1210 */    27,  235,   32,   34,   40,  170,  172,   41,  283,  181,
3344  /*  1220 */   100,  188,  191,  193,  169,   45,  168,  285,  288,  120,
3345  /*  1230 */   216,  292,  120,  132,  178,  294,  120,  120,  120,  225,
3346  /*  1240 */   366,   26,  298,  236,  437,  243,  438,  250,  131,  260,
3347  /*  1250 */   263,  303,  269,  272,  275,  305,  282,  284,  255,    4,
3348  /*  1260 */     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
3349  /*  1270 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
3350  /*  1280 */    25,   27,  235,  358,  360,   40,  170,  172,   48,  357,
3351  /*  1290 */   181,   31,  188,  191,  193,  252,  354,   50,  130,   52,
3352  /*  1300 */   120,  216,  252,   54,  306,   56,  131,  308,  316,  120,
3353  /*  1310 */   225,  120,  259,  307,  236,  120,  243,  120,  250,  259,
3354  /*  1320 */   260,  263,  317,  269,  272,  275,  311,  282,  284,   58,
3355  /*  1330 */   315,   60,  319,   27,  235,   38,   62,   40,  170,  172,
3356  /*  1340 */   320,  120,  181,  120,  188,  191,  193,  330,  120,  337,
3357  /*  1350 */   252,  339,  252,  216,   37,  340,  229,  252,  310,  328,
3358  /*  1360 */   346,  185,  225,  222,  353,  232,  236,  259,  243,  259,
3359  /*  1370 */   250,  356,  260,  263,  259,  269,  272,  275,  359,  282,
3360  /*  1380 */   284,  361,   69,   65,   67,   75,   77,   79,   81,   71,
3361  /*  1390 */    73,   51,   49,   53,   46,   43,   59,   92,   61,   87,
3362  /*  1400 */    90,   91,   99,   83,  362,   27,  235,   64,  363,   40,
3363  /*  1410 */   170,  172,  364,  179,  181,  252,  188,  191,  193,  120,
3364  /*  1420 */   252,  290,  252,  244,  252,  216,  252,  290,  301,  290,
3365  /*  1430 */   240,  290,  259,  290,  225,  120,  290,  259,  236,  259,
3366  /*  1440 */   243,  259,  250,  259,  260,  263,  247,  269,  272,  275,
3367  /*  1450 */   279,  282,  284,  290,  290,  290,  290,   27,  235,  209,
3368  /*  1460 */   290,   40,  170,  172,  290,  212,  181,  186,  188,  191,
3369  /*  1470 */   193,  290,  290,  253,  290,  332,  290,  216,  290,  290,
3370  /*  1480 */   199,  201,  203,  205,  207,  120,  225,  120,  290,  252,
3371  /*  1490 */   236,  252,  243,  296,  250,  290,  260,  263,  313,  269,
3372  /*  1500 */   272,  275,  335,  282,  284,  290,  259,  252,  259,   27,
3373  /*  1510 */   235,  252,  290,   40,  170,  172,  290,  344,  181,  290,
3374  /*  1520 */   188,  191,  193,   66,  259,  290,  290,   68,  259,  216,
3375  /*  1530 */   290,  223,  290,  252,  290,  120,  290,  290,  225,  120,
3376  /*  1540 */   290,  290,  236,  290,  243,  290,  250,  290,  260,  263,
3377  /*  1550 */   259,  269,  272,  275,  252,  282,  284,   70,  290,  252,
3378  /*  1560 */   290,   27,  235,  252,  290,   40,  170,  172,  290,  120,
3379  /*  1570 */   181,  259,  188,  191,  193,   72,  259,  290,  252,  290,
3380  /*  1580 */   259,  216,  290,  290,  290,  290,  290,  120,  290,  290,
3381  /*  1590 */   225,  233,  290,  290,  236,  259,  243,  351,  250,   74,
3382  /*  1600 */   260,  263,  290,  269,  272,  275,  290,  282,  284,   76,
3383  /*  1610 */   290,  120,  290,   27,  235,   78,   80,   40,  170,  172,
3384  /*  1620 */    82,  120,  181,   84,  188,  191,  193,  120,  120,  290,
3385  /*  1630 */   290,   86,  120,  216,  290,  120,  290,   89,  290,   96,
3386  /*  1640 */   290,  290,  225,  120,  290,  290,  236,  241,  243,  120,
3387  /*  1650 */   250,  120,  260,  263,  290,  269,  272,  275,  252,  282,
3388  /*  1660 */   284,   98,  290,  290,  290,   27,  235,  102,  104,   40,
3389  /*  1670 */   170,  172,  119,  120,  181,  259,  188,  191,  193,  120,
3390  /*  1680 */   120,  290,  290,  135,  120,  216,  290,  167,  290,  290,
3391  /*  1690 */   290,  175,  290,  290,  225,  120,  290,  290,  236,  120,
3392  /*  1700 */   243,  248,  250,  120,  260,  263,  290,  269,  272,  275,
3393  /*  1710 */   290,  282,  284,  182,  290,  189,  290,   27,  235,  290,
3394  /*  1720 */   200,   40,  170,  172,  202,  120,  181,  120,  188,  191,
3395  /*  1730 */   193,  204,  120,  206,  290,  208,  120,  216,  290,  210,
3396  /*  1740 */   290,  226,  290,  120,  290,  120,  225,  120,  290,  290,
3397  /*  1750 */   236,  120,  243,  120,  250,  290,  260,  263,  290,  269,
3398  /*  1760 */   272,  275,  280,  282,  284,  261,  290,  264,  290,   27,
3399  /*  1770 */   235,  290,  267,   40,  170,  172,  270,  120,  181,  120,
3400  /*  1780 */   188,  191,  193,  273,  120,  341,  290,  348,  120,  216,
3401  /*  1790 */   290,  290,  290,  290,  290,  120,  290,  120,  225,  120,
3402  /*  1800 */   290,  290,  236,  290,  243,  290,  250,  290,  260,  263,
3403  /*  1810 */   290,  269,  272,  275,  291,  282,  284,  290,  290,  290,
3404  /*  1820 */   290,   27,  235,  290,  290,   40,  170,  172,  290,  290,
3405  /*  1830 */   181,  290,  188,  191,  193,  290,  290,  290,  290,  290,
3406  /*  1840 */   290,  216,  290,  290,  290,  290,  290,  290,  290,  290,
3407  /*  1850 */   225,  290,  290,  290,  236,  290,  243,  297,  250,  290,
3408  /*  1860 */   260,  263,  290,  269,  272,  275,  290,  282,  284,  290,
3409  /*  1870 */   290,  290,  290,   27,  235,  290,  290,   40,  170,  172,
3410  /*  1880 */   290,  290,  181,  290,  188,  191,  193,  290,  290,  290,
3411  /*  1890 */   290,  290,  290,  216,  290,  290,  290,  290,  290,  290,
3412  /*  1900 */   290,  290,  225,  290,  290,  290,  236,  302,  243,  290,
3413  /*  1910 */   250,  290,  260,  263,  290,  269,  272,  275,  290,  282,
3414  /*  1920 */   284,  290,  290,  290,  290,   27,  235,  290,  290,   40,
3415  /*  1930 */   170,  172,  290,  290,  181,  290,  188,  191,  193,  290,
3416  /*  1940 */   290,  290,  290,  290,  290,  216,  290,  314,  290,  290,
3417  /*  1950 */   290,  290,  290,  290,  225,  290,  290,  290,  236,  290,
3418  /*  1960 */   243,  290,  250,  290,  260,  263,  290,  269,  272,  275,
3419  /*  1970 */   290,  282,  284,  290,  290,  290,  290,   27,  235,  290,
3420  /*  1980 */   290,   40,  170,  172,  290,  290,  181,  329,  188,  191,
3421  /*  1990 */   193,  290,  290,  290,  290,  290,  290,  216,  290,  290,
3422  /*  2000 */   290,  290,  290,  290,  290,  290,  225,  290,  290,  290,
3423  /*  2010 */   236,  290,  243,  290,  250,  290,  260,  263,  290,  269,
3424  /*  2020 */   272,  275,  290,  282,  284,  290,  290,  290,  290,   27,
3425  /*  2030 */   235,  290,  290,   40,  170,  172,  290,  336,  181,  290,
3426  /*  2040 */   188,  191,  193,  290,  290,  290,  290,  290,  290,  216,
3427  /*  2050 */   290,  290,  290,  290,  290,  290,  290,  290,  225,  290,
3428  /*  2060 */   290,  290,  236,  290,  243,  290,  250,  290,  260,  263,
3429  /*  2070 */   290,  269,  272,  275,  290,  282,  284,  290,  290,  290,
3430  /*  2080 */   290,   27,  235,  290,  290,   40,  170,  172,  290,  345,
3431  /*  2090 */   181,  290,  188,  191,  193,  290,  290,  290,  290,  290,
3432  /*  2100 */   290,  216,  290,  290,  290,  290,  290,  290,  290,  290,
3433  /*  2110 */   225,  290,  290,  290,  236,  290,  243,  290,  250,  290,
3434  /*  2120 */   260,  263,  290,  269,  272,  275,  290,  282,  284,  290,
3435  /*  2130 */   290,  290,  290,   27,  235,  290,  290,   40,  170,  172,
3436  /*  2140 */   290,  352,  181,  290,  188,  191,  193,  290,  290,  290,
3437  /*  2150 */   290,  290,  290,  216,  290,  290,  290,  290,  290,  290,
3438  /*  2160 */   290,  290,  225,  290,  290,  290,  236,  290,  243,  290,
3439  /*  2170 */   250,  290,  260,  263,  290,  269,  272,  275,  290,  282,
3440  /*  2180 */   284,  290,  290,  290,  290,   27,  235,  355,  290,   40,
3441  /*  2190 */   170,  172,  290,  290,  181,  290,  188,  191,  193,  290,
3442  /*  2200 */   290,  290,  290,  290,  290,  216,  290,  290,  290,  290,
3443  /*  2210 */   290,  290,  290,  290,  225,  290,  290,  290,  236,  290,
3444  /*  2220 */   243,  290,  250,  290,  260,  263,  290,  269,  272,  275,
3445  /*  2230 */   290,  282,  284,  290,  290,  290,  290,   27,  235,  290,
3446  /*  2240 */   290,   40,  170,  172,  290,  290,  181,  290,  188,  191,
3447  /*  2250 */   193,  290,  290,  290,  290,  290,  290,  216,  290,  290,
3448  /*  2260 */   290,  290,  290,  290,  290,  290,  225,  290,  290,  290,
3449  /*  2270 */   236,  290,  243,  290,  250,  290,  260,  263,  290,  269,
3450  /*  2280 */   272,  275,  290,  282,  284,  290,  290,  290,   47,   44,
3451  /*  2290 */   290,  106,  290,  101,  290,  290,  103,  290,   47,   44,
3452  /*  2300 */   290,  106,  290,  101,  290,  121,  103,  290,  290,  290,
3453  /*  2310 */   290,  290,  290,  290,  290,  121,  290,  290,  290,  290,
3454  /*  2320 */   290,  122,  123,  124,  125,  126,  127,  290,  290,  290,
3455  /*  2330 */   290,  122,  123,  124,  125,  126,  127,  290,  290,  290,
3456  /*  2340 */   290,  290,  290,  290,  290,  290,  290,  157,  158,  159,
3457  /*  2350 */   160,  161,  162,  163,  112,  290,  290,  150,  151,  152,
3458  /*  2360 */   153,  154,  155,  156,  112,  290,  290,  166,  290,   47,
3459  /*  2370 */    44,  290,  106,  290,  101,  290,  164,  103,  290,   47,
3460  /*  2380 */    44,  290,  106,  290,  101,  290,  121,  103,  290,  290,
3461  /*  2390 */   290,  290,  290,  290,  290,  290,  121,  290,  290,  290,
3462  /*  2400 */   290,  290,  122,  123,  124,  125,  126,  127,  138,  290,
3463  /*  2410 */   290,  290,  122,  123,  124,  125,  126,  127,  290,  290,
3464  /*  2420 */   290,  290,  290,  290,   47,   44,  290,  106,  290,  101,
3465  /*  2430 */   290,  290,  103,  290,  290,  112,  290,  290,  290,   47,
3466  /*  2440 */    44,  149,  106,  290,  101,  112,  290,  103,  290,  290,
3467  /*  2450 */   290,  290,  290,  290,  290,  290,  121,  148,  123,  124,
3468  /*  2460 */   125,  126,  127,   47,   44,  290,  106,  290,  101,  290,
3469  /*  2470 */   136,  103,  122,  133,  124,  125,  126,  127,   47,   44,
3470  /*  2480 */   121,  106,  290,  101,  290,  290,  103,  290,  290,  290,
3471  /*  2490 */   112,  290,  108,  290,  290,  121,  122,  117,  124,  125,
3472  /*  2500 */   126,  127,  290,  290,  290,  112,  290,  290,  290,  290,
3473  /*  2510 */   290,  122,  117,  124,  125,  126,  127,   47,   44,  290,
3474  /*  2520 */   106,  290,  101,   47,   44,  103,  106,  290,  101,  112,
3475  /*  2530 */   290,  103,  290,  290,  121,  290,  290,  290,  290,  290,
3476  /*  2540 */   121,  290,  290,  290,  112,  113,  290,  290,  304,  290,
3477  /*  2550 */   122,  133,  124,  125,  126,  127,  122,  123,  124,  125,
3478  /*  2560 */   126,  127,   47,   44,  290,  106,  290,  101,  290,  290,
3479  /*  2570 */   103,  290,  290,   47,   44,  290,  106,  290,  101,  121,
3480  /*  2580 */   290,  103,  290,  112,  290,  290,  290,  290,  290,  112,
3481  /*  2590 */   121,  290,  290,  290,  290,  122,  117,  124,  125,  126,
3482  /*  2600 */   127,  290,  290,  290,  290,  290,  122,  133,  124,  125,
3483  /*  2610 */   126,  127,  290,  290,  290,  290,  290,  290,  290,  290,
3484  /*  2620 */   290,  290,  290,  290,  290,  290,  290,  290,  112,  290,
3485  /*  2630 */   290,  290,  290,  290,  290,  290,  290,  290,  290,  112,
3486 };
3487 static VVCODETYPE vv_lookahead[] = {
3488  /*     0 */     3,    4,    2,    6,    7,    8,    9,   10,   11,   12,
3489  /*    10 */    13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
3490  /*    20 */    23,   24,   25,   26,   27,   28,   29,   30,    0,   32,
3491  /*    30 */    26,   27,   28,   29,   30,   38,   18,   19,   20,   21,
3492  /*    40 */    22,   23,   24,   25,   26,   27,   28,   29,   30,   32,
3493  /*    50 */    50,   54,  117,  118,  119,    3,    4,    2,    6,    7,
3494  /*    60 */     8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
3495  /*    70 */    18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
3496  /*    80 */    28,   29,   30,   31,   32,    3,    4,   32,    6,    7,
3497  /*    90 */     8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
3498  /*   100 */    18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
3499  /*   110 */    28,   29,   30,   32,   32,    3,    4,   32,    6,    7,
3500  /*   120 */     8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
3501  /*   130 */    18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
3502  /*   140 */    28,   29,   30,   31,   32,   24,   25,   26,   27,   28,
3503  /*   150 */    29,   30,    2,    3,   72,  118,  119,    3,    3,    4,
3504  /*   160 */   126,    6,    7,    8,    9,   10,   11,   12,   13,   14,
3505  /*   170 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
3506  /*   180 */    25,   26,   27,   28,   29,   30,    5,   32,    3,    4,
3507  /*   190 */    50,    6,    7,    8,    9,   10,   11,   12,   13,   14,
3508  /*   200 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
3509  /*   210 */    25,   26,   27,   28,   29,   30,    5,   32,    3,    4,
3510  /*   220 */    50,    6,    7,    8,    9,   10,   11,   12,   13,   14,
3511  /*   230 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
3512  /*   240 */    25,   26,   27,   28,   29,   30,   21,   22,   23,   24,
3513  /*   250 */    25,   26,   27,   28,   29,   30,   54,   55,   56,   57,
3514  /*   260 */    58,   59,   50,    2,    5,   50,  120,  121,  126,    3,
3515  /*   270 */     4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
3516  /*   280 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
3517  /*   290 */    24,   25,   26,   27,   28,   29,   30,    3,    4,   50,
3518  /*   300 */     6,    7,    8,    9,   10,   11,   12,   13,   14,   15,
3519  /*   310 */    16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
3520  /*   320 */    26,   27,   28,   29,   30,  116,    5,   38,   38,    5,
3521  /*   330 */   116,   32,  123,   58,   59,   38,  116,  128,  129,  125,
3522  /*   340 */    50,  127,  128,   54,   54,  125,   52,  127,  128,   88,
3523  /*   350 */     3,    4,   32,    6,    7,    8,    9,   10,   11,   12,
3524  /*   360 */    13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
3525  /*   370 */    23,   24,   25,   26,   27,   28,   29,   30,   32,   32,
3526  /*   380 */     3,    4,    1,    6,    7,    8,    9,   10,   11,   12,
3527  /*   390 */    13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
3528  /*   400 */    23,   24,   25,   26,   27,   28,   29,   30,   32,   32,
3529  /*   410 */     3,    4,   38,    6,    7,    8,    9,   10,   11,   12,
3530  /*   420 */    13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
3531  /*   430 */    23,   24,   25,   26,   27,   28,   29,   30,  116,   38,
3532  /*   440 */    32,  116,  116,   62,  116,  123,  119,  116,   29,   38,
3533  /*   450 */   128,  129,  126,  128,  128,   32,  128,   50,  127,  128,
3534  /*   460 */    79,    3,    4,   52,    6,    7,    8,    9,   10,   11,
3535  /*   470 */    12,   13,   14,   15,   16,   17,   18,   19,   20,   21,
3536  /*   480 */    22,   23,   24,   25,   26,   27,   28,   29,   30,    3,
3537  /*   490 */     4,   32,    6,    7,    8,    9,   10,   11,   12,   13,
3538  /*   500 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
3539  /*   510 */    24,   25,   26,   27,   28,   29,   30,   32,   32,    3,
3540  /*   520 */     4,   63,    6,    7,    8,    9,   10,   11,   12,   13,
3541  /*   530 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
3542  /*   540 */    24,   25,   26,   27,   28,   29,   30,   38,   32,    3,
3543  /*   550 */     4,   32,    6,    7,    8,    9,   10,   11,   12,   13,
3544  /*   560 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
3545  /*   570 */    24,   25,   26,   27,   28,   29,   30,   32,   32,    3,
3546  /*   580 */     4,  124,    6,    7,    8,    9,   10,   11,   12,   13,
3547  /*   590 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
3548  /*   600 */    24,   25,   26,   27,   28,   29,   30,   32,   32,    3,
3549  /*   610 */     4,   32,    6,    7,    8,    9,   10,   11,   12,   13,
3550  /*   620 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
3551  /*   630 */    24,   25,   26,   27,   28,   29,   30,   69,   32,    3,
3552  /*   640 */     4,    1,    6,    7,    8,    9,   10,   11,   12,   13,
3553  /*   650 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
3554  /*   660 */    24,   25,   26,   27,   28,   29,   30,   38,   32,    3,
3555  /*   670 */     4,   32,    6,    7,    8,    9,   10,   11,   12,   13,
3556  /*   680 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
3557  /*   690 */    24,   25,   26,   27,   28,   29,   30,    3,    4,   32,
3558  /*   700 */     6,    7,    8,    9,   10,   11,   12,   13,   14,   15,
3559  /*   710 */    16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
3560  /*   720 */    26,   27,   28,   29,   30,   90,   91,   92,   93,   94,
3561  /*   730 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
3562  /*   740 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
3563  /*   750 */   115,    4,   32,    6,    7,    8,    9,   10,   11,   12,
3564  /*   760 */    13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
3565  /*   770 */    23,   24,   25,   26,   27,   28,   29,   30,    6,    7,
3566  /*   780 */     8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
3567  /*   790 */    18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
3568  /*   800 */    28,   29,   30,   92,   93,   94,   95,   96,   97,   98,
3569  /*   810 */    99,  100,  101,  102,  103,  104,  105,  106,  107,  108,
3570  /*   820 */   109,  110,  111,  112,  113,  114,  115,   92,   93,   94,
3571  /*   830 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
3572  /*   840 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
3573  /*   850 */   115,    7,    8,    9,   10,   11,   12,   13,   14,   15,
3574  /*   860 */    16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
3575  /*   870 */    26,   27,   28,   29,   30,   92,   93,   94,   95,   96,
3576  /*   880 */    97,   98,   99,  100,  101,  102,  103,  104,  105,  106,
3577  /*   890 */   107,  108,  109,  110,  111,  112,  113,  114,  115,   92,
3578  /*   900 */    93,   94,   95,   96,   97,   98,   99,  100,  101,  102,
3579  /*   910 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
3580  /*   920 */   113,  114,  115,   92,   93,   94,   95,   96,   97,   98,
3581  /*   930 */    99,  100,  101,  102,  103,  104,  105,  106,  107,  108,
3582  /*   940 */   109,  110,  111,  112,  113,  114,  115,   92,   93,   94,
3583  /*   950 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
3584  /*   960 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
3585  /*   970 */   115,   92,   93,   94,   95,   96,   97,   98,   99,  100,
3586  /*   980 */   101,  102,  103,  104,  105,  106,  107,  108,  109,  110,
3587  /*   990 */   111,  112,  113,  114,  115,   92,   93,   94,   95,   96,
3588  /*  1000 */    97,   98,   99,  100,  101,  102,  103,  104,  105,  106,
3589  /*  1010 */   107,  108,  109,  110,  111,  112,  113,  114,  115,   92,
3590  /*  1020 */    93,   94,   95,   96,   97,   98,   99,  100,  101,  102,
3591  /*  1030 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
3592  /*  1040 */   113,  114,  115,   92,   93,   94,   95,   96,   97,   98,
3593  /*  1050 */    99,  100,  101,  102,  103,  104,  105,  106,  107,  108,
3594  /*  1060 */   109,  110,  111,  112,  113,  114,  115,   92,   93,   94,
3595  /*  1070 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
3596  /*  1080 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
3597  /*  1090 */   115,   92,   93,   94,   95,   96,   97,   98,   99,  100,
3598  /*  1100 */   101,  102,  103,  104,  105,  106,  107,  108,  109,  110,
3599  /*  1110 */   111,  112,  113,  114,  115,   92,   93,   94,   95,   96,
3600  /*  1120 */    97,   98,   99,  100,  101,  102,  103,  104,  105,  106,
3601  /*  1130 */   107,  108,  109,  110,  111,  112,  113,  114,  115,   92,
3602  /*  1140 */    93,   94,   95,   96,   97,   98,   99,  100,  101,  102,
3603  /*  1150 */   103,  104,  105,  106,  107,  108,  109,  110,  111,  112,
3604  /*  1160 */   113,  114,  115,   92,   93,   94,   95,   96,   97,   98,
3605  /*  1170 */    99,  100,  101,  102,  103,  104,  105,  106,  107,  108,
3606  /*  1180 */   109,  110,  111,  112,  113,  114,  115,   93,   94,   95,
3607  /*  1190 */    96,   97,   98,   99,  100,  101,  102,  103,  104,  105,
3608  /*  1200 */   106,  107,  108,  109,  110,  111,  112,  113,  114,  115,
3609  /*  1210 */    31,   32,   33,   34,   35,   36,   37,  116,   32,   40,
3610  /*  1220 */   116,   42,   43,   44,  116,  116,  116,   32,   32,  128,
3611  /*  1230 */    51,   32,  128,  129,    1,   32,  128,  128,  128,   60,
3612  /*  1240 */     0,    1,   32,   64,   32,   66,   32,   68,    2,   70,
3613  /*  1250 */    71,   32,   73,   74,   75,   32,   77,   78,   93,   94,
3614  /*  1260 */    95,   96,   97,   98,   99,  100,  101,  102,  103,  104,
3615  /*  1270 */   105,  106,  107,  108,  109,  110,  111,  112,  113,  114,
3616  /*  1280 */   115,   31,   32,   33,   34,   35,   36,   37,  116,    1,
3617  /*  1290 */    40,    1,   42,   43,   44,   62,    1,  116,   52,  116,
3618  /*  1300 */   128,   51,   62,  116,    1,  116,    2,   32,    2,  128,
3619  /*  1310 */    60,  128,   79,   61,   64,  128,   66,  128,   68,   79,
3620  /*  1320 */    70,   71,  121,   73,   74,   75,   32,   77,   78,  116,
3621  /*  1330 */    32,  116,   45,   31,   32,   33,  116,   35,   36,   37,
3622  /*  1340 */   122,  128,   40,  128,   42,   43,   44,   32,  128,   32,
3623  /*  1350 */    62,   38,   62,   51,    1,    3,   52,   62,   52,    1,
3624  /*  1360 */    32,    1,   60,    1,   32,    1,   64,   79,   66,   79,
3625  /*  1370 */    68,   32,   70,   71,   79,   73,   74,   75,   32,   77,
3626  /*  1380 */    78,   32,    9,   10,   11,   12,   13,   14,   15,   16,
3627  /*  1390 */    17,   18,   19,   20,   21,   22,   23,   24,   25,   26,
3628  /*  1400 */    27,   28,   29,   30,    1,   31,   32,  116,   33,   35,
3629  /*  1410 */    36,   37,   32,   39,   40,   62,   42,   43,   44,  128,
3630  /*  1420 */    62,  130,   62,  116,   62,   51,   62,  130,    1,  130,
3631  /*  1430 */     1,  130,   79,  130,   60,  128,  130,   79,   64,   79,
3632  /*  1440 */    66,   79,   68,   79,   70,   71,    1,   73,   74,   75,
3633  /*  1450 */     1,   77,   78,  130,  130,  130,  130,   31,   32,   24,
3634  /*  1460 */   130,   35,   36,   37,  130,   30,   40,   41,   42,   43,
3635  /*  1470 */    44,  130,    1,  116,  130,  116,  130,   51,  130,  130,
3636  /*  1480 */    45,   46,   47,   48,   49,  128,   60,  128,  130,   62,
3637  /*  1490 */    64,   62,   66,    1,   68,  130,   70,   71,    1,   73,
3638  /*  1500 */    74,   75,    1,   77,   78,  130,   79,   62,   79,   31,
3639  /*  1510 */    32,   62,  130,   35,   36,   37,  130,    1,   40,  130,
3640  /*  1520 */    42,   43,   44,  116,   79,  130,  130,  116,   79,   51,
3641  /*  1530 */   130,   53,  130,   62,  130,  128,  130,  130,   60,  128,
3642  /*  1540 */   130,  130,   64,  130,   66,  130,   68,  130,   70,   71,
3643  /*  1550 */    79,   73,   74,   75,   62,   77,   78,  116,  130,   62,
3644  /*  1560 */   130,   31,   32,   62,  130,   35,   36,   37,  130,  128,
3645  /*  1570 */    40,   79,   42,   43,   44,  116,   79,  130,   62,  130,
3646  /*  1580 */    79,   51,  130,  130,  130,  130,  130,  128,  130,  130,
3647  /*  1590 */    60,   61,  130,  130,   64,   79,   66,    1,   68,  116,
3648  /*  1600 */    70,   71,  130,   73,   74,   75,  130,   77,   78,  116,
3649  /*  1610 */   130,  128,  130,   31,   32,  116,  116,   35,   36,   37,
3650  /*  1620 */   116,  128,   40,  116,   42,   43,   44,  128,  128,  130,
3651  /*  1630 */   130,  116,  128,   51,  130,  128,  130,  116,  130,  116,
3652  /*  1640 */   130,  130,   60,  128,  130,  130,   64,   65,   66,  128,
3653  /*  1650 */    68,  128,   70,   71,  130,   73,   74,   75,   62,   77,
3654  /*  1660 */    78,  116,  130,  130,  130,   31,   32,  116,  116,   35,
3655  /*  1670 */    36,   37,  116,  128,   40,   79,   42,   43,   44,  128,
3656  /*  1680 */   128,  130,  130,  116,  128,   51,  130,  116,  130,  130,
3657  /*  1690 */   130,  116,  130,  130,   60,  128,  130,  130,   64,  128,
3658  /*  1700 */    66,   67,   68,  128,   70,   71,  130,   73,   74,   75,
3659  /*  1710 */   130,   77,   78,  116,  130,  116,  130,   31,   32,  130,
3660  /*  1720 */   116,   35,   36,   37,  116,  128,   40,  128,   42,   43,
3661  /*  1730 */    44,  116,  128,  116,  130,  116,  128,   51,  130,  116,
3662  /*  1740 */   130,  116,  130,  128,  130,  128,   60,  128,  130,  130,
3663  /*  1750 */    64,  128,   66,  128,   68,  130,   70,   71,  130,   73,
3664  /*  1760 */    74,   75,   76,   77,   78,  116,  130,  116,  130,   31,
3665  /*  1770 */    32,  130,  116,   35,   36,   37,  116,  128,   40,  128,
3666  /*  1780 */    42,   43,   44,  116,  128,  116,  130,  116,  128,   51,
3667  /*  1790 */   130,  130,  130,  130,  130,  128,  130,  128,   60,  128,
3668  /*  1800 */   130,  130,   64,  130,   66,  130,   68,  130,   70,   71,
3669  /*  1810 */   130,   73,   74,   75,   76,   77,   78,  130,  130,  130,
3670  /*  1820 */   130,   31,   32,  130,  130,   35,   36,   37,  130,  130,
3671  /*  1830 */    40,  130,   42,   43,   44,  130,  130,  130,  130,  130,
3672  /*  1840 */   130,   51,  130,  130,  130,  130,  130,  130,  130,  130,
3673  /*  1850 */    60,  130,  130,  130,   64,  130,   66,   67,   68,  130,
3674  /*  1860 */    70,   71,  130,   73,   74,   75,  130,   77,   78,  130,
3675  /*  1870 */   130,  130,  130,   31,   32,  130,  130,   35,   36,   37,
3676  /*  1880 */   130,  130,   40,  130,   42,   43,   44,  130,  130,  130,
3677  /*  1890 */   130,  130,  130,   51,  130,  130,  130,  130,  130,  130,
3678  /*  1900 */   130,  130,   60,  130,  130,  130,   64,   65,   66,  130,
3679  /*  1910 */    68,  130,   70,   71,  130,   73,   74,   75,  130,   77,
3680  /*  1920 */    78,  130,  130,  130,  130,   31,   32,  130,  130,   35,
3681  /*  1930 */    36,   37,  130,  130,   40,  130,   42,   43,   44,  130,
3682  /*  1940 */   130,  130,  130,  130,  130,   51,  130,   53,  130,  130,
3683  /*  1950 */   130,  130,  130,  130,   60,  130,  130,  130,   64,  130,
3684  /*  1960 */    66,  130,   68,  130,   70,   71,  130,   73,   74,   75,
3685  /*  1970 */   130,   77,   78,  130,  130,  130,  130,   31,   32,  130,
3686  /*  1980 */   130,   35,   36,   37,  130,  130,   40,   41,   42,   43,
3687  /*  1990 */    44,  130,  130,  130,  130,  130,  130,   51,  130,  130,
3688  /*  2000 */   130,  130,  130,  130,  130,  130,   60,  130,  130,  130,
3689  /*  2010 */    64,  130,   66,  130,   68,  130,   70,   71,  130,   73,
3690  /*  2020 */    74,   75,  130,   77,   78,  130,  130,  130,  130,   31,
3691  /*  2030 */    32,  130,  130,   35,   36,   37,  130,   39,   40,  130,
3692  /*  2040 */    42,   43,   44,  130,  130,  130,  130,  130,  130,   51,
3693  /*  2050 */   130,  130,  130,  130,  130,  130,  130,  130,   60,  130,
3694  /*  2060 */   130,  130,   64,  130,   66,  130,   68,  130,   70,   71,
3695  /*  2070 */   130,   73,   74,   75,  130,   77,   78,  130,  130,  130,
3696  /*  2080 */   130,   31,   32,  130,  130,   35,   36,   37,  130,   39,
3697  /*  2090 */    40,  130,   42,   43,   44,  130,  130,  130,  130,  130,
3698  /*  2100 */   130,   51,  130,  130,  130,  130,  130,  130,  130,  130,
3699  /*  2110 */    60,  130,  130,  130,   64,  130,   66,  130,   68,  130,
3700  /*  2120 */    70,   71,  130,   73,   74,   75,  130,   77,   78,  130,
3701  /*  2130 */   130,  130,  130,   31,   32,  130,  130,   35,   36,   37,
3702  /*  2140 */   130,   39,   40,  130,   42,   43,   44,  130,  130,  130,
3703  /*  2150 */   130,  130,  130,   51,  130,  130,  130,  130,  130,  130,
3704  /*  2160 */   130,  130,   60,  130,  130,  130,   64,  130,   66,  130,
3705  /*  2170 */    68,  130,   70,   71,  130,   73,   74,   75,  130,   77,
3706  /*  2180 */    78,  130,  130,  130,  130,   31,   32,   33,  130,   35,
3707  /*  2190 */    36,   37,  130,  130,   40,  130,   42,   43,   44,  130,
3708  /*  2200 */   130,  130,  130,  130,  130,   51,  130,  130,  130,  130,
3709  /*  2210 */   130,  130,  130,  130,   60,  130,  130,  130,   64,  130,
3710  /*  2220 */    66,  130,   68,  130,   70,   71,  130,   73,   74,   75,
3711  /*  2230 */   130,   77,   78,  130,  130,  130,  130,   31,   32,  130,
3712  /*  2240 */   130,   35,   36,   37,  130,  130,   40,  130,   42,   43,
3713  /*  2250 */    44,  130,  130,  130,  130,  130,  130,   51,  130,  130,
3714  /*  2260 */   130,  130,  130,  130,  130,  130,   60,  130,  130,  130,
3715  /*  2270 */    64,  130,   66,  130,   68,  130,   70,   71,  130,   73,
3716  /*  2280 */    74,   75,  130,   77,   78,  130,  130,  130,   21,   22,
3717  /*  2290 */   130,   24,  130,   26,  130,  130,   29,  130,   21,   22,
3718  /*  2300 */   130,   24,  130,   26,  130,   38,   29,  130,  130,  130,
3719  /*  2310 */   130,  130,  130,  130,  130,   38,  130,  130,  130,  130,
3720  /*  2320 */   130,   54,   55,   56,   57,   58,   59,  130,  130,  130,
3721  /*  2330 */   130,   54,   55,   56,   57,   58,   59,  130,  130,  130,
3722  /*  2340 */   130,  130,  130,  130,  130,  130,  130,   80,   81,   82,
3723  /*  2350 */    83,   84,   85,   86,   87,  130,  130,   80,   81,   82,
3724  /*  2360 */    83,   84,   85,   86,   87,  130,  130,   19,  130,   21,
3725  /*  2370 */    22,  130,   24,  130,   26,  130,   18,   29,  130,   21,
3726  /*  2380 */    22,  130,   24,  130,   26,  130,   38,   29,  130,  130,
3727  /*  2390 */   130,  130,  130,  130,  130,  130,   38,  130,  130,  130,
3728  /*  2400 */   130,  130,   54,   55,   56,   57,   58,   59,    5,  130,
3729  /*  2410 */   130,  130,   54,   55,   56,   57,   58,   59,  130,  130,
3730  /*  2420 */   130,  130,  130,  130,   21,   22,  130,   24,  130,   26,
3731  /*  2430 */   130,  130,   29,  130,  130,   87,  130,  130,  130,   21,
3732  /*  2440 */    22,   38,   24,  130,   26,   87,  130,   29,  130,  130,
3733  /*  2450 */   130,  130,  130,  130,  130,  130,   38,   54,   55,   56,
3734  /*  2460 */    57,   58,   59,   21,   22,  130,   24,  130,   26,  130,
3735  /*  2470 */    52,   29,   54,   55,   56,   57,   58,   59,   21,   22,
3736  /*  2480 */    38,   24,  130,   26,  130,  130,   29,  130,  130,  130,
3737  /*  2490 */    87,  130,   50,  130,  130,   38,   54,   55,   56,   57,
3738  /*  2500 */    58,   59,  130,  130,  130,   87,  130,  130,  130,  130,
3739  /*  2510 */   130,   54,   55,   56,   57,   58,   59,   21,   22,  130,
3740  /*  2520 */    24,  130,   26,   21,   22,   29,   24,  130,   26,   87,
3741  /*  2530 */   130,   29,  130,  130,   38,  130,  130,  130,  130,  130,
3742  /*  2540 */    38,  130,  130,  130,   87,   88,  130,  130,   52,  130,
3743  /*  2550 */    54,   55,   56,   57,   58,   59,   54,   55,   56,   57,
3744  /*  2560 */    58,   59,   21,   22,  130,   24,  130,   26,  130,  130,
3745  /*  2570 */    29,  130,  130,   21,   22,  130,   24,  130,   26,   38,
3746  /*  2580 */   130,   29,  130,   87,  130,  130,  130,  130,  130,   87,
3747  /*  2590 */    38,  130,  130,  130,  130,   54,   55,   56,   57,   58,
3748  /*  2600 */    59,  130,  130,  130,  130,  130,   54,   55,   56,   57,
3749  /*  2610 */    58,   59,  130,  130,  130,  130,  130,  130,  130,  130,
3750  /*  2620 */   130,  130,  130,  130,  130,  130,  130,  130,   87,  130,
3751  /*  2630 */   130,  130,  130,  130,  130,  130,  130,  130,  130,   87,
3752 };
3753 #define VV_SHIFT_USE_DFLT (-4)
3754 static short vv_shift_ofst[] = {
3755  /*     0 */   381,   28, 1240,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
3756  /*    10 */    -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
3757  /*    20 */    -4,   -4,   -4,   -4,   -4,   -4, 2206, 2502,  155, 1288,
3758  /*    30 */  1290, 1179,   17,   -4,   81, 1295, 1353, 1302,   85,   -4,
3759  /*    40 */  2502,  185,   -4, 2502, 2502,  121, 2502, 2502,  121, 2348,
3760  /*    50 */   225, 2358,  225, 2502,  225, 2502, 1373, 2502, 1373, 2502,
3761  /*    60 */   121, 2502,    4, 2502,  844, 2502,   18, 2267,   18, 2277,
3762  /*    70 */    18, 2502,   18, 2502,   18, 2502,   18, 2502,   18, 2502,
3763  /*    80 */    18, 2502,   18, 2502,   -4, 2502,  747,  154, 2502,    4,
3764  /*    90 */    -4,   -4, 2403,  215,   -4, 2502,  266, 2502,  772, 2418,
3765  /*   100 */   666, 2502,    4, 2502,  294,   -4, 2442,  666,   -4,    0,
3766  /*   110 */    -4, 2541, 2457,   -4,  261,   -4,   -4,  181, 2502,  666,
3767  /*   120 */    -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4, 1246,
3768  /*   130 */    -4, 2552,   -4,  211, 2502,  666,   -4,   -4,  289,  140,
3769  /*   140 */    -4,  170,  212,  259,  290,   -4,  249,   -4,  321,  324,
3770  /*   150 */    -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
3771  /*   160 */    -4,   -4,   -4,   -4, 2502,  225, 2502,  225,  121,  121,
3772  /*   170 */   299,   -4,  297,  150, 2502,   52,  381, 1233, 1374,  320,
3773  /*   180 */    -4, 2502,  347, 1358, 1360, 1426,  346,   -4, 2502,  377,
3774  /*   190 */    -4,  376,   -4,  374,   55,   -4,  374,   -4, 1435, 2502,
3775  /*   200 */   666, 2502,  666, 2502,  666, 2502,  666, 2502,  666, 2502,
3776  /*   210 */   407,   -4,  374,   -4,   -4,   -4,  401,  419,  411,  408,
3777  /*   220 */   381, 1362, 1478,  423,   -4, 2502,  694, 2496, 1304,  459,
3778  /*   230 */   381, 1364, 1530,  485,   -4,   -4,  509,  519, 1427, 1429,
3779  /*   240 */  1582,  545,   -4, 2502,   -3,  381, 1445, 1634,  575,   -4,
3780  /*   250 */   579,  381, 2502,  458,   -4,  640,  568,  639,   -4,   -4,
3781  /*   260 */  2502,  486,   -4, 2502,   82,   -4, 2502,  516,   -4, 2502,
3782  /*   270 */   546,   -4, 2502,  576,   -4,  275,  667,  381, 1449, 1686,
3783  /*   280 */   720,   -4, 1186,   -4, 1195,   -4,   -4, 1196,  381, 1471,
3784  /*   290 */  1738, 1199,   -4, 1203,  381, 1492, 1790, 1210,   -4, 1212,
3785  /*   300 */  1214, 1842, 1219,   -4, 1223, 1303, 1252, 1275,   -4, 1306,
3786  /*   310 */  1294,  381, 1497, 1894, 1298,   -4,  629,   -4, 1287,  202,
3787  /*   320 */    -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4, 1946, 1315,
3788  /*   330 */    -4, 2502,  606,  381, 1501, 1998, 1317,   -4, 1313, 1352,
3789  /*   340 */  2502,  112,  381, 1516, 2050, 1328,   -4, 2502,  636,  381,
3790  /*   350 */  1596, 2102, 1332,   -4, 2154, 1339,   -4, 1250, 1346,   -4,
3791  /*   360 */  1349, 1403, 1375, 1380,   -4,
3792 };
3793 #define VV_REDUCE_USE_DFLT (-66)
3794 static short vv_reduce_ofst[] = {
3795  /*     0 */   635,  -66, 1094,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
3796  /*    10 */   -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
3797  /*    20 */   -66,  -66,  -66,  -66,  -66,  -66,  -66,  325,  -66,  711,
3798  /*    30 */  1094,  -66,  -66,  -66,  -66,  735, 1094,  -66,  -66,  -66,
3799  /*    40 */  1101,  -66,  -66, 1108, 1109,  -66, 1110, 1172,  -66, 1181,
3800  /*    50 */   -66, 1183,  -66, 1187,  -66, 1189,  -66, 1213,  -66, 1215,
3801  /*    60 */   -66, 1220,  -66, 1291,  -66, 1407,  -66, 1411,  -66, 1441,
3802  /*    70 */   -66, 1459,  -66, 1483,  -66, 1493,  -66, 1499,  -66, 1500,
3803  /*    80 */   -66, 1504,  -66, 1507,  -66, 1515,  -66,  -66, 1521,  -66,
3804  /*    90 */   -66,  -66,  326,  -66,  -66, 1523,  -66, 1545,  -66,  209,
3805  /*   100 */   -66, 1551,  -66, 1552,  -66,  -66,  214,  -66,  -66,  -66,
3806  /*   110 */   -66,  331,  220,  -66,  -66,  -66,  -66,  -66, 1556,  -66,
3807  /*   120 */   -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
3808  /*   130 */   -66, 1104,  -66,  -66, 1567,  -66,  -66,  -66,   34,  -66,
3809  /*   140 */   -66,  -66,  -66,  -66,  142,  -66,  -66,  -66,  -66,  -66,
3810  /*   150 */   -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
3811  /*   160 */   -66,  -66,  -66,  -66,  328,  -66, 1571,  -66,  -66,  -66,
3812  /*   170 */   -66,  -66,  -66,  -66, 1575,  -66,  783, 1094,  -66,  -66,
3813  /*   180 */   -66, 1597,  -66,  807, 1094,  -66,  -66,  -66, 1599,  -66,
3814  /*   190 */   -66,  -66,  -66,  -65,  -66,  -66,   37,  -66,  -66, 1604,
3815  /*   200 */   -66, 1608,  -66, 1615,  -66, 1617,  -66, 1619,  -66, 1623,
3816  /*   210 */   -66,  -66,  327,  -66,  -66,  -66,  -66,  -66,  146,  -66,
3817  /*   220 */   831, 1094,  -66,  -66,  -66, 1625,  -66,  322,  -66,  -66,
3818  /*   230 */   855, 1094,  -66,  -66,  -66,  -66,  -66,  -66,  879, 1094,
3819  /*   240 */   -66,  -66,  -66, 1307,  457,  903, 1094,  -66,  -66,  -66,
3820  /*   250 */   -66, 1165, 1357,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
3821  /*   260 */  1649,  -66,  -66, 1651,  -66,  -66, 1656,  -66,  -66, 1660,
3822  /*   270 */   -66,  -66, 1667,  -66,  -66,  -66,  -66,  927, 1094,  -66,
3823  /*   280 */   -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  951, 1094,
3824  /*   290 */   -66,  -66,  -66,  -66,  975, 1094,  -66,  -66,  -66,  -66,
3825  /*   300 */   -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
3826  /*   310 */   -66,  999, 1094,  -66,  -66,  -66, 1201,  -66,  -66, 1218,
3827  /*   320 */   -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
3828  /*   330 */   -66, 1359,  -66, 1023, 1094,  -66,  -66,  -66,  -66,  -66,
3829  /*   340 */  1669,  -66, 1047, 1094,  -66,  -66,  -66, 1671,  -66, 1071,
3830  /*   350 */  1094,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
3831  /*   360 */   -66,  -66,  -66,  -66,  -66,
3832 };
3833 static VVACTIONTYPE vv_default[] = {
3834  /*     0 */   523,  523,  523,  367,  369,  370,  371,  372,  373,  374,
3835  /*    10 */   375,  376,  377,  378,  379,  380,  381,  382,  383,  384,
3836  /*    20 */   385,  386,  387,  388,  389,  390,  523,  523,  523,  523,
3837  /*    30 */   523,  523,  523,  391,  523,  523,  523,  523,  523,  393,
3838  /*    40 */   523,  523,  396,  523,  523,  450,  523,  523,  451,  523,
3839  /*    50 */   454,  523,  456,  523,  458,  523,  459,  523,  460,  523,
3840  /*    60 */   461,  523,  462,  523,  463,  523,  464,  523,  480,  523,
3841  /*    70 */   479,  523,  481,  523,  482,  523,  483,  523,  484,  523,
3842  /*    80 */   485,  523,  486,  523,  487,  523,  488,  523,  523,  489,
3843  /*    90 */   491,  492,  523,  523,  498,  523,  523,  523,  499,  523,
3844  /*   100 */   514,  523,  490,  523,  523,  493,  523,  508,  494,  523,
3845  /*   110 */   495,  523,  523,  496,  523,  497,  506,  518,  523,  507,
3846  /*   120 */   509,  516,  517,  518,  519,  520,  521,  522,  505,  523,
3847  /*   130 */   510,  523,  512,  518,  523,  515,  511,  513,  523,  523,
3848  /*   140 */   500,  523,  523,  523,  523,  501,  523,  502,  517,  516,
3849  /*   150 */   466,  468,  470,  472,  474,  476,  478,  465,  467,  469,
3850  /*   160 */   471,  473,  475,  477,  523,  457,  523,  455,  453,  452,
3851  /*   170 */   523,  397,  523,  523,  523,  523,  523,  523,  523,  523,
3852  /*   180 */   398,  523,  523,  523,  523,  523,  523,  402,  523,  523,
3853  /*   190 */   404,  523,  405,  523,  523,  406,  523,  407,  523,  523,
3854  /*   200 */   409,  523,  410,  523,  411,  523,  412,  523,  413,  523,
3855  /*   210 */   523,  415,  523,  414,  416,  408,  523,  523,  523,  523,
3856  /*   220 */   523,  523,  523,  523,  417,  523,  523,  523,  523,  510,
3857  /*   230 */   523,  523,  523,  523,  429,  431,  523,  523,  523,  523,
3858  /*   240 */   523,  523,  433,  523,  523,  523,  523,  523,  523,  435,
3859  /*   250 */   523,  523,  523,  523,  432,  523,  523,  523,  439,  449,
3860  /*   260 */   523,  523,  440,  523,  523,  441,  523,  523,  442,  523,
3861  /*   270 */   523,  443,  523,  523,  444,  523,  523,  523,  523,  523,
3862  /*   280 */   523,  445,  523,  447,  523,  448,  368,  523,  523,  523,
3863  /*   290 */   523,  523,  446,  523,  523,  523,  523,  523,  436,  523,
3864  /*   300 */   523,  523,  523,  434,  511,  523,  523,  523,  430,  523,
3865  /*   310 */   523,  523,  523,  523,  523,  418,  523,  419,  421,  523,
3866  /*   320 */   422,  423,  424,  425,  426,  427,  428,  420,  523,  523,
3867  /*   330 */   403,  523,  523,  523,  523,  523,  523,  399,  523,  523,
3868  /*   340 */   523,  523,  523,  523,  523,  523,  400,  523,  523,  523,
3869  /*   350 */   523,  523,  523,  401,  523,  523,  394,  523,  523,  392,
3870  /*   360 */   523,  523,  523,  523,  395,
3871 };
3872 #define VV_SZ_ACTTAB (sizeof(vv_action)/sizeof(vv_action[0]))
3873 
3874 /* The next table maps tokens into fallback tokens.  If a construct
3875 ** like the following:
3876 **
3877 **      %fallback ID X Y Z.
3878 **
3879 ** appears in the grammer, then ID becomes a fallback token for X, Y,
3880 ** and Z.  Whenever one of the tokens X, Y, or Z is input to the parser
3881 ** but it does not parse, the type of the token is changed to ID and
3882 ** the parse is retried before an error is thrown.
3883 */
3884 #ifdef VVFALLBACK
3885 static const VVCODETYPE vvFallback[] = {
3886 };
3887 #endif /* VVFALLBACK */
3888 
3889 /* The following structure represents a single element of the
3890 ** parser's stack.  Information stored includes:
3891 **
3892 **   +  The state number for the parser at this level of the stack.
3893 **
3894 **   +  The value of the token stored at this level of the stack.
3895 **      (In other words, the "major" token.)
3896 **
3897 **   +  The semantic value stored at this level of the stack.  This is
3898 **      the information used by the action routines in the grammar.
3899 **      It is sometimes called the "minor" token.
3900 */
3901 struct vvStackEntry {
3902   int stateno;       /* The state-number */
3903   int major;         /* The major token value.  This is the code
3904                      ** number for the token at this stack level */
3905   VVMINORTYPE minor; /* The user-supplied minor token value.  This
3906                      ** is the value of the token  */
3907 };
3908 typedef struct vvStackEntry vvStackEntry;
3909 
3910 /* The state of the parser is completely contained in an instance of
3911 ** the following structure */
3912 struct vvParser {
3913   int vvidx;                    /* Index of top element in stack */
3914   int vverrcnt;                 /* Shifts left before out of the error */
3915   phvolt_ARG_SDECL                /* A place to hold %extra_argument */
3916   vvStackEntry vvstack[VVSTACKDEPTH];  /* The parser's stack */
3917 };
3918 typedef struct vvParser vvParser;
3919 
3920 #ifndef NDEBUG
3921 #include <stdio.h>
3922 static FILE *vvTraceFILE = 0;
3923 static char *vvTracePrompt = 0;
3924 #endif /* NDEBUG */
3925 
3926 #ifndef NDEBUG
3927 /*
3928 ** Turn parser tracing on by giving a stream to which to write the trace
3929 ** and a prompt to preface each trace message.  Tracing is turned off
3930 ** by making either argument NULL
3931 **
3932 ** Inputs:
3933 ** <ul>
3934 ** <li> A FILE* to which trace output should be written.
3935 **      If NULL, then tracing is turned off.
3936 ** <li> A prefix string written at the beginning of every
3937 **      line of trace output.  If NULL, then tracing is
3938 **      turned off.
3939 ** </ul>
3940 **
3941 ** Outputs:
3942 ** None.
3943 */
phvolt_Trace(FILE * TraceFILE,char * zTracePrompt)3944 void phvolt_Trace(FILE *TraceFILE, char *zTracePrompt){
3945   vvTraceFILE = TraceFILE;
3946   vvTracePrompt = zTracePrompt;
3947   if( vvTraceFILE==0 ) vvTracePrompt = 0;
3948   else if( vvTracePrompt==0 ) vvTraceFILE = 0;
3949 }
3950 #endif /* NDEBUG */
3951 
3952 #ifndef NDEBUG
3953 /* For tracing shifts, the names of all terminals and nonterminals
3954 ** are required.  The following table supplies these names */
3955 static const char *vvTokenName[] = {
3956   "$",             "OPEN_DELIMITER",  "COMMA",         "IN",
3957   "QUESTION",      "COLON",         "RANGE",         "AND",
3958   "OR",            "IS",            "EQUALS",        "NOTEQUALS",
3959   "LESS",          "GREATER",       "GREATEREQUAL",  "LESSEQUAL",
3960   "IDENTICAL",     "NOTIDENTICAL",  "DIVIDE",        "TIMES",
3961   "MOD",           "PLUS",          "MINUS",         "CONCAT",
3962   "SBRACKET_OPEN",  "PIPE",          "NOT",           "INCR",
3963   "DECR",          "PARENTHESES_OPEN",  "DOT",           "IF",
3964   "CLOSE_DELIMITER",  "ENDIF",         "ELSE",          "ELSEIF",
3965   "ELSEFOR",       "FOR",           "IDENTIFIER",    "ENDFOR",
3966   "SWITCH",        "ENDSWITCH",     "CASE",          "DEFAULT",
3967   "SET",           "ASSIGN",        "ADD_ASSIGN",    "SUB_ASSIGN",
3968   "MUL_ASSIGN",    "DIV_ASSIGN",    "SBRACKET_CLOSE",  "MACRO",
3969   "PARENTHESES_CLOSE",  "ENDMACRO",      "INTEGER",       "STRING",
3970   "DOUBLE",        "NULL",          "FALSE",         "TRUE",
3971   "CALL",          "ENDCALL",       "OPEN_EDELIMITER",  "CLOSE_EDELIMITER",
3972   "BLOCK",         "ENDBLOCK",      "CACHE",         "ENDCACHE",
3973   "RAW",           "ENDRAW",        "EXTENDS",       "INCLUDE",
3974   "WITH",          "DO",            "RETURN",        "AUTOESCAPE",
3975   "ENDAUTOESCAPE",  "BREAK",         "CONTINUE",      "RAW_FRAGMENT",
3976   "DEFINED",       "EMPTY",         "EVEN",          "ODD",
3977   "NUMERIC",       "SCALAR",        "ITERABLE",      "CBRACKET_OPEN",
3978   "CBRACKET_CLOSE",  "error",         "program",       "volt_language",
3979   "statement_list",  "statement",     "raw_fragment",  "if_statement",
3980   "elseif_statement",  "elsefor_statement",  "for_statement",  "switch_statement",
3981   "case_clause",   "set_statement",  "echo_statement",  "block_statement",
3982   "cache_statement",  "extends_statement",  "include_statement",  "do_statement",
3983   "return_statement",  "autoescape_statement",  "raw_statement",  "break_statement",
3984   "continue_statement",  "macro_statement",  "empty_statement",  "macro_call_statement",
3985   "expr",          "set_assignments",  "set_assignment",  "assignable_expr",
3986   "macro_parameters",  "macro_parameter",  "macro_parameter_default",  "argument_list",
3987   "cache_lifetime",  "array_list",    "slice_offset",  "array_item",
3988   "function_call",  "argument_item",
3989 };
3990 #endif /* NDEBUG */
3991 
3992 #ifndef NDEBUG
3993 /* For tracing reduce actions, the names of all rules are required.
3994 */
3995 static const char *vvRuleName[] = {
3996  /*   0 */ "program ::= volt_language",
3997  /*   1 */ "volt_language ::= statement_list",
3998  /*   2 */ "statement_list ::= statement_list statement",
3999  /*   3 */ "statement_list ::= statement",
4000  /*   4 */ "statement ::= raw_fragment",
4001  /*   5 */ "statement ::= if_statement",
4002  /*   6 */ "statement ::= elseif_statement",
4003  /*   7 */ "statement ::= elsefor_statement",
4004  /*   8 */ "statement ::= for_statement",
4005  /*   9 */ "statement ::= switch_statement",
4006  /*  10 */ "statement ::= case_clause",
4007  /*  11 */ "statement ::= set_statement",
4008  /*  12 */ "statement ::= echo_statement",
4009  /*  13 */ "statement ::= block_statement",
4010  /*  14 */ "statement ::= cache_statement",
4011  /*  15 */ "statement ::= extends_statement",
4012  /*  16 */ "statement ::= include_statement",
4013  /*  17 */ "statement ::= do_statement",
4014  /*  18 */ "statement ::= return_statement",
4015  /*  19 */ "statement ::= autoescape_statement",
4016  /*  20 */ "statement ::= raw_statement",
4017  /*  21 */ "statement ::= break_statement",
4018  /*  22 */ "statement ::= continue_statement",
4019  /*  23 */ "statement ::= macro_statement",
4020  /*  24 */ "statement ::= empty_statement",
4021  /*  25 */ "statement ::= macro_call_statement",
4022  /*  26 */ "if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDIF CLOSE_DELIMITER",
4023  /*  27 */ "if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER OPEN_DELIMITER ENDIF CLOSE_DELIMITER",
4024  /*  28 */ "if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ELSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDIF CLOSE_DELIMITER",
4025  /*  29 */ "if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ELSE CLOSE_DELIMITER OPEN_DELIMITER ENDIF CLOSE_DELIMITER",
4026  /*  30 */ "if_statement ::= OPEN_DELIMITER IF expr CLOSE_DELIMITER OPEN_DELIMITER ELSE CLOSE_DELIMITER OPEN_DELIMITER ENDIF CLOSE_DELIMITER",
4027  /*  31 */ "elseif_statement ::= OPEN_DELIMITER ELSEIF expr CLOSE_DELIMITER",
4028  /*  32 */ "elsefor_statement ::= OPEN_DELIMITER ELSEFOR CLOSE_DELIMITER",
4029  /*  33 */ "for_statement ::= OPEN_DELIMITER FOR IDENTIFIER IN expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDFOR CLOSE_DELIMITER",
4030  /*  34 */ "for_statement ::= OPEN_DELIMITER FOR IDENTIFIER IN expr IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDFOR CLOSE_DELIMITER",
4031  /*  35 */ "for_statement ::= OPEN_DELIMITER FOR IDENTIFIER COMMA IDENTIFIER IN expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDFOR CLOSE_DELIMITER",
4032  /*  36 */ "for_statement ::= OPEN_DELIMITER FOR IDENTIFIER COMMA IDENTIFIER IN expr IF expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDFOR CLOSE_DELIMITER",
4033  /*  37 */ "switch_statement ::= OPEN_DELIMITER SWITCH expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDSWITCH CLOSE_DELIMITER",
4034  /*  38 */ "switch_statement ::= OPEN_DELIMITER SWITCH expr CLOSE_DELIMITER OPEN_DELIMITER ENDSWITCH CLOSE_DELIMITER",
4035  /*  39 */ "case_clause ::= OPEN_DELIMITER CASE expr CLOSE_DELIMITER",
4036  /*  40 */ "case_clause ::= OPEN_DELIMITER DEFAULT CLOSE_DELIMITER",
4037  /*  41 */ "set_statement ::= OPEN_DELIMITER SET set_assignments CLOSE_DELIMITER",
4038  /*  42 */ "set_assignments ::= set_assignments COMMA set_assignment",
4039  /*  43 */ "set_assignments ::= set_assignment",
4040  /*  44 */ "set_assignment ::= assignable_expr ASSIGN expr",
4041  /*  45 */ "set_assignment ::= assignable_expr ADD_ASSIGN expr",
4042  /*  46 */ "set_assignment ::= assignable_expr SUB_ASSIGN expr",
4043  /*  47 */ "set_assignment ::= assignable_expr MUL_ASSIGN expr",
4044  /*  48 */ "set_assignment ::= assignable_expr DIV_ASSIGN expr",
4045  /*  49 */ "assignable_expr ::= IDENTIFIER",
4046  /*  50 */ "assignable_expr ::= assignable_expr SBRACKET_OPEN expr SBRACKET_CLOSE",
4047  /*  51 */ "assignable_expr ::= assignable_expr DOT assignable_expr",
4048  /*  52 */ "macro_statement ::= OPEN_DELIMITER MACRO IDENTIFIER PARENTHESES_OPEN PARENTHESES_CLOSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDMACRO CLOSE_DELIMITER",
4049  /*  53 */ "macro_statement ::= OPEN_DELIMITER MACRO IDENTIFIER PARENTHESES_OPEN macro_parameters PARENTHESES_CLOSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDMACRO CLOSE_DELIMITER",
4050  /*  54 */ "macro_parameters ::= macro_parameters COMMA macro_parameter",
4051  /*  55 */ "macro_parameters ::= macro_parameter",
4052  /*  56 */ "macro_parameter ::= IDENTIFIER",
4053  /*  57 */ "macro_parameter ::= IDENTIFIER ASSIGN macro_parameter_default",
4054  /*  58 */ "macro_parameter_default ::= INTEGER",
4055  /*  59 */ "macro_parameter_default ::= STRING",
4056  /*  60 */ "macro_parameter_default ::= DOUBLE",
4057  /*  61 */ "macro_parameter_default ::= NULL",
4058  /*  62 */ "macro_parameter_default ::= FALSE",
4059  /*  63 */ "macro_parameter_default ::= TRUE",
4060  /*  64 */ "macro_call_statement ::= OPEN_DELIMITER CALL expr PARENTHESES_OPEN argument_list PARENTHESES_CLOSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDCALL CLOSE_DELIMITER",
4061  /*  65 */ "macro_call_statement ::= OPEN_DELIMITER CALL expr PARENTHESES_OPEN PARENTHESES_CLOSE CLOSE_DELIMITER OPEN_DELIMITER ENDCALL CLOSE_DELIMITER",
4062  /*  66 */ "empty_statement ::= OPEN_DELIMITER CLOSE_DELIMITER",
4063  /*  67 */ "echo_statement ::= OPEN_EDELIMITER expr CLOSE_EDELIMITER",
4064  /*  68 */ "block_statement ::= OPEN_DELIMITER BLOCK IDENTIFIER CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDBLOCK CLOSE_DELIMITER",
4065  /*  69 */ "block_statement ::= OPEN_DELIMITER BLOCK IDENTIFIER CLOSE_DELIMITER OPEN_DELIMITER ENDBLOCK CLOSE_DELIMITER",
4066  /*  70 */ "cache_statement ::= OPEN_DELIMITER CACHE expr CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDCACHE CLOSE_DELIMITER",
4067  /*  71 */ "cache_statement ::= OPEN_DELIMITER CACHE expr cache_lifetime CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDCACHE CLOSE_DELIMITER",
4068  /*  72 */ "cache_lifetime ::= INTEGER",
4069  /*  73 */ "cache_lifetime ::= IDENTIFIER",
4070  /*  74 */ "raw_statement ::= OPEN_DELIMITER RAW CLOSE_DELIMITER statement OPEN_DELIMITER ENDRAW CLOSE_DELIMITER",
4071  /*  75 */ "extends_statement ::= OPEN_DELIMITER EXTENDS expr CLOSE_DELIMITER",
4072  /*  76 */ "include_statement ::= OPEN_DELIMITER INCLUDE expr CLOSE_DELIMITER",
4073  /*  77 */ "include_statement ::= OPEN_DELIMITER INCLUDE expr WITH expr CLOSE_DELIMITER",
4074  /*  78 */ "do_statement ::= OPEN_DELIMITER DO expr CLOSE_DELIMITER",
4075  /*  79 */ "return_statement ::= OPEN_DELIMITER RETURN expr CLOSE_DELIMITER",
4076  /*  80 */ "autoescape_statement ::= OPEN_DELIMITER AUTOESCAPE FALSE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDAUTOESCAPE CLOSE_DELIMITER",
4077  /*  81 */ "autoescape_statement ::= OPEN_DELIMITER AUTOESCAPE TRUE CLOSE_DELIMITER statement_list OPEN_DELIMITER ENDAUTOESCAPE CLOSE_DELIMITER",
4078  /*  82 */ "break_statement ::= OPEN_DELIMITER BREAK CLOSE_DELIMITER",
4079  /*  83 */ "continue_statement ::= OPEN_DELIMITER CONTINUE CLOSE_DELIMITER",
4080  /*  84 */ "raw_fragment ::= RAW_FRAGMENT",
4081  /*  85 */ "expr ::= MINUS expr",
4082  /*  86 */ "expr ::= PLUS expr",
4083  /*  87 */ "expr ::= expr MINUS expr",
4084  /*  88 */ "expr ::= expr PLUS expr",
4085  /*  89 */ "expr ::= expr TIMES expr",
4086  /*  90 */ "expr ::= expr TIMES TIMES expr",
4087  /*  91 */ "expr ::= expr DIVIDE expr",
4088  /*  92 */ "expr ::= expr DIVIDE DIVIDE expr",
4089  /*  93 */ "expr ::= expr MOD expr",
4090  /*  94 */ "expr ::= expr AND expr",
4091  /*  95 */ "expr ::= expr OR expr",
4092  /*  96 */ "expr ::= expr CONCAT expr",
4093  /*  97 */ "expr ::= expr PIPE expr",
4094  /*  98 */ "expr ::= expr RANGE expr",
4095  /*  99 */ "expr ::= expr EQUALS expr",
4096  /* 100 */ "expr ::= expr NOTEQUALS DEFINED",
4097  /* 101 */ "expr ::= expr IS DEFINED",
4098  /* 102 */ "expr ::= expr NOTEQUALS EMPTY",
4099  /* 103 */ "expr ::= expr IS EMPTY",
4100  /* 104 */ "expr ::= expr NOTEQUALS EVEN",
4101  /* 105 */ "expr ::= expr IS EVEN",
4102  /* 106 */ "expr ::= expr NOTEQUALS ODD",
4103  /* 107 */ "expr ::= expr IS ODD",
4104  /* 108 */ "expr ::= expr NOTEQUALS NUMERIC",
4105  /* 109 */ "expr ::= expr IS NUMERIC",
4106  /* 110 */ "expr ::= expr NOTEQUALS SCALAR",
4107  /* 111 */ "expr ::= expr IS SCALAR",
4108  /* 112 */ "expr ::= expr NOTEQUALS ITERABLE",
4109  /* 113 */ "expr ::= expr IS ITERABLE",
4110  /* 114 */ "expr ::= expr IS expr",
4111  /* 115 */ "expr ::= expr NOTEQUALS expr",
4112  /* 116 */ "expr ::= expr IDENTICAL expr",
4113  /* 117 */ "expr ::= expr NOTIDENTICAL expr",
4114  /* 118 */ "expr ::= expr LESS expr",
4115  /* 119 */ "expr ::= expr GREATER expr",
4116  /* 120 */ "expr ::= expr GREATEREQUAL expr",
4117  /* 121 */ "expr ::= expr LESSEQUAL expr",
4118  /* 122 */ "expr ::= expr DOT expr",
4119  /* 123 */ "expr ::= expr IN expr",
4120  /* 124 */ "expr ::= expr NOT IN expr",
4121  /* 125 */ "expr ::= NOT expr",
4122  /* 126 */ "expr ::= expr INCR",
4123  /* 127 */ "expr ::= expr DECR",
4124  /* 128 */ "expr ::= PARENTHESES_OPEN expr PARENTHESES_CLOSE",
4125  /* 129 */ "expr ::= SBRACKET_OPEN SBRACKET_CLOSE",
4126  /* 130 */ "expr ::= SBRACKET_OPEN array_list SBRACKET_CLOSE",
4127  /* 131 */ "expr ::= CBRACKET_OPEN CBRACKET_CLOSE",
4128  /* 132 */ "expr ::= CBRACKET_OPEN array_list CBRACKET_CLOSE",
4129  /* 133 */ "expr ::= expr SBRACKET_OPEN expr SBRACKET_CLOSE",
4130  /* 134 */ "expr ::= expr QUESTION expr COLON expr",
4131  /* 135 */ "expr ::= expr SBRACKET_OPEN COLON slice_offset SBRACKET_CLOSE",
4132  /* 136 */ "expr ::= expr SBRACKET_OPEN slice_offset COLON SBRACKET_CLOSE",
4133  /* 137 */ "expr ::= expr SBRACKET_OPEN slice_offset COLON slice_offset SBRACKET_CLOSE",
4134  /* 138 */ "slice_offset ::= INTEGER",
4135  /* 139 */ "slice_offset ::= IDENTIFIER",
4136  /* 140 */ "array_list ::= array_list COMMA array_item",
4137  /* 141 */ "array_list ::= array_item",
4138  /* 142 */ "array_item ::= STRING COLON expr",
4139  /* 143 */ "array_item ::= expr",
4140  /* 144 */ "expr ::= function_call",
4141  /* 145 */ "function_call ::= expr PARENTHESES_OPEN argument_list PARENTHESES_CLOSE",
4142  /* 146 */ "function_call ::= expr PARENTHESES_OPEN PARENTHESES_CLOSE",
4143  /* 147 */ "argument_list ::= argument_list COMMA argument_item",
4144  /* 148 */ "argument_list ::= argument_item",
4145  /* 149 */ "argument_item ::= expr",
4146  /* 150 */ "argument_item ::= STRING COLON expr",
4147  /* 151 */ "expr ::= IDENTIFIER",
4148  /* 152 */ "expr ::= INTEGER",
4149  /* 153 */ "expr ::= STRING",
4150  /* 154 */ "expr ::= DOUBLE",
4151  /* 155 */ "expr ::= NULL",
4152  /* 156 */ "expr ::= FALSE",
4153  /* 157 */ "expr ::= TRUE",
4154 };
4155 #endif /* NDEBUG */
4156 
4157 /*
4158 ** This function returns the symbolic name associated with a token
4159 ** value.
4160 */
phvolt_TokenName(int tokenType)4161 const char *phvolt_TokenName(int tokenType){
4162 #ifndef NDEBUG
4163   if( tokenType>0 && tokenType<(sizeof(vvTokenName)/sizeof(vvTokenName[0])) ){
4164     return vvTokenName[tokenType];
4165   }else{
4166     return "Unknown";
4167   }
4168 #else
4169   return "";
4170 #endif
4171 }
4172 
4173 /*
4174 ** This function allocates a new parser.
4175 ** The only argument is a pointer to a function which works like
4176 ** malloc.
4177 **
4178 ** Inputs:
4179 ** A pointer to the function used to allocate memory.
4180 **
4181 ** Outputs:
4182 ** A pointer to a parser.  This pointer is used in subsequent calls
4183 ** to phvolt_ and phvolt_Free.
4184 */
phvolt_Alloc(void * (* mallocProc)(size_t))4185 void *phvolt_Alloc(void *(*mallocProc)(size_t)){
4186   vvParser *pParser;
4187   pParser = (vvParser*)(*mallocProc)( (size_t)sizeof(vvParser) );
4188   if( pParser ){
4189     pParser->vvidx = -1;
4190   }
4191   return pParser;
4192 }
4193 
4194 /* The following function deletes the value associated with a
4195 ** symbol.  The symbol can be either a terminal or nonterminal.
4196 ** "vvmajor" is the symbol code, and "vvpminor" is a pointer to
4197 ** the value.
4198 */
vv_destructor(VVCODETYPE vvmajor,VVMINORTYPE * vvpminor)4199 static void vv_destructor(VVCODETYPE vvmajor, VVMINORTYPE *vvpminor){
4200   switch( vvmajor ){
4201     /* Here is inserted the actions which take place when a
4202     ** terminal or non-terminal is destroyed.  This can happen
4203     ** when the symbol is popped from the stack during a
4204     ** reduce or during error processing or when a parser is
4205     ** being destroyed before it is finished parsing.
4206     **
4207     ** Note: during a reduce, the only symbols destroyed are those
4208     ** which appear on the RHS of the rule, but which are not used
4209     ** inside the C code.
4210     */
4211     case 1:
4212     case 2:
4213     case 3:
4214     case 4:
4215     case 5:
4216     case 6:
4217     case 7:
4218     case 8:
4219     case 9:
4220     case 10:
4221     case 11:
4222     case 12:
4223     case 13:
4224     case 14:
4225     case 15:
4226     case 16:
4227     case 17:
4228     case 18:
4229     case 19:
4230     case 20:
4231     case 21:
4232     case 22:
4233     case 23:
4234     case 24:
4235     case 25:
4236     case 26:
4237     case 27:
4238     case 28:
4239     case 29:
4240     case 30:
4241     case 31:
4242     case 32:
4243     case 33:
4244     case 34:
4245     case 35:
4246     case 36:
4247     case 37:
4248     case 38:
4249     case 39:
4250     case 40:
4251     case 41:
4252     case 42:
4253     case 43:
4254     case 44:
4255     case 45:
4256     case 46:
4257     case 47:
4258     case 48:
4259     case 49:
4260     case 50:
4261     case 51:
4262     case 52:
4263     case 53:
4264     case 54:
4265     case 55:
4266     case 56:
4267     case 57:
4268     case 58:
4269     case 59:
4270     case 60:
4271     case 61:
4272     case 62:
4273     case 63:
4274     case 64:
4275     case 65:
4276     case 66:
4277     case 67:
4278     case 68:
4279     case 69:
4280     case 70:
4281     case 71:
4282     case 72:
4283     case 73:
4284     case 74:
4285     case 75:
4286     case 76:
4287     case 77:
4288     case 78:
4289     case 79:
4290     case 80:
4291     case 81:
4292     case 82:
4293     case 83:
4294     case 84:
4295     case 85:
4296     case 86:
4297     case 87:
4298     case 88:
4299 // 151 "parser.php7.lemon"
4300 {
4301 	if ((vvpminor->vv0)) {
4302 		if ((vvpminor->vv0)->free_flag) {
4303 			efree((vvpminor->vv0)->token);
4304 		}
4305 		efree((vvpminor->vv0));
4306 	}
4307 }
4308 // 1217 "parser.php7.c"
4309       break;
4310     case 92:
4311     case 93:
4312     case 94:
4313     case 95:
4314     case 96:
4315     case 97:
4316     case 98:
4317     case 99:
4318     case 100:
4319     case 101:
4320     case 102:
4321     case 103:
4322     case 104:
4323     case 105:
4324     case 106:
4325     case 107:
4326     case 108:
4327     case 109:
4328     case 110:
4329     case 111:
4330     case 112:
4331     case 113:
4332     case 114:
4333     case 115:
4334     case 116:
4335     case 117:
4336     case 118:
4337     case 120:
4338     case 121:
4339     case 123:
4340     case 124:
4341     case 125:
4342     case 126:
4343     case 127:
4344     case 128:
4345     case 129:
4346 // 168 "parser.php7.lemon"
4347 {
4348 	zval_ptr_dtor(&(vvpminor->vv186));
4349 }
4350 // 1259 "parser.php7.c"
4351       break;
4352     default:  break;   /* If no destructor action specified: do nothing */
4353   }
4354 }
4355 
4356 /*
4357 ** Pop the parser's stack once.
4358 **
4359 ** If there is a destructor routine associated with the token which
4360 ** is popped from the stack, then call it.
4361 **
4362 ** Return the major token number for the symbol popped.
4363 */
vv_pop_parser_stack(vvParser * pParser)4364 static int vv_pop_parser_stack(vvParser *pParser){
4365   VVCODETYPE vvmajor;
4366   vvStackEntry *vvtos = &pParser->vvstack[pParser->vvidx];
4367 
4368   if( pParser->vvidx<0 ) return 0;
4369 #ifndef NDEBUG
4370   if( vvTraceFILE && pParser->vvidx>=0 ){
4371     fprintf(vvTraceFILE,"%sPopping %s\n",
4372       vvTracePrompt,
4373       vvTokenName[vvtos->major]);
4374   }
4375 #endif
4376   vvmajor = vvtos->major;
4377   vv_destructor( vvmajor, &vvtos->minor);
4378   pParser->vvidx--;
4379   return vvmajor;
4380 }
4381 
4382 /*
4383 ** Deallocate and destroy a parser.  Destructors are all called for
4384 ** all stack elements before shutting the parser down.
4385 **
4386 ** Inputs:
4387 ** <ul>
4388 ** <li>  A pointer to the parser.  This should be a pointer
4389 **       obtained from phvolt_Alloc.
4390 ** <li>  A pointer to a function used to reclaim memory obtained
4391 **       from malloc.
4392 ** </ul>
4393 */
phvolt_Free(void * p,void (* freeProc)(void *))4394 void phvolt_Free(
4395   void *p,                    /* The parser to be deleted */
4396   void (*freeProc)(void*)     /* Function used to reclaim memory */
4397 ){
4398   vvParser *pParser = (vvParser*)p;
4399   if( pParser==0 ) return;
4400   while( pParser->vvidx>=0 ) vv_pop_parser_stack(pParser);
4401   (*freeProc)((void*)pParser);
4402 }
4403 
4404 /*
4405 ** Find the appropriate action for a parser given the terminal
4406 ** look-ahead token iLookAhead.
4407 **
4408 ** If the look-ahead token is VVNOCODE, then check to see if the action is
4409 ** independent of the look-ahead.  If it is, return the action, otherwise
4410 ** return VV_NO_ACTION.
4411 */
vv_find_shift_action(vvParser * pParser,int iLookAhead)4412 static int vv_find_shift_action(
4413   vvParser *pParser,        /* The parser */
4414   int iLookAhead            /* The look-ahead token */
4415 ){
4416   int i;
4417   int stateno = pParser->vvstack[pParser->vvidx].stateno;
4418 
4419   /* if( pParser->vvidx<0 ) return VV_NO_ACTION;  */
4420   i = vv_shift_ofst[stateno];
4421   if( i==VV_SHIFT_USE_DFLT ){
4422     return vv_default[stateno];
4423   }
4424   if( iLookAhead==VVNOCODE ){
4425     return VV_NO_ACTION;
4426   }
4427   i += iLookAhead;
4428   if( i<0 || i>=VV_SZ_ACTTAB || vv_lookahead[i]!=iLookAhead ){
4429 #ifdef VVFALLBACK
4430     int iFallback;            /* Fallback token */
4431     if( iLookAhead<sizeof(vvFallback)/sizeof(vvFallback[0])
4432            && (iFallback = vvFallback[iLookAhead])!=0 ){
4433 #ifndef NDEBUG
4434       if( vvTraceFILE ){
4435         fprintf(vvTraceFILE, "%sFALLBACK %s => %s\n",
4436            vvTracePrompt, vvTokenName[iLookAhead], vvTokenName[iFallback]);
4437       }
4438 #endif
4439       return vv_find_shift_action(pParser, iFallback);
4440     }
4441 #endif
4442     return vv_default[stateno];
4443   }else{
4444     return vv_action[i];
4445   }
4446 }
4447 
4448 /*
4449 ** Find the appropriate action for a parser given the non-terminal
4450 ** look-ahead token iLookAhead.
4451 **
4452 ** If the look-ahead token is VVNOCODE, then check to see if the action is
4453 ** independent of the look-ahead.  If it is, return the action, otherwise
4454 ** return VV_NO_ACTION.
4455 */
vv_find_reduce_action(vvParser * pParser,int iLookAhead)4456 static int vv_find_reduce_action(
4457   vvParser *pParser,        /* The parser */
4458   int iLookAhead            /* The look-ahead token */
4459 ){
4460   int i;
4461   int stateno = pParser->vvstack[pParser->vvidx].stateno;
4462 
4463   i = vv_reduce_ofst[stateno];
4464   if( i==VV_REDUCE_USE_DFLT ){
4465     return vv_default[stateno];
4466   }
4467   if( iLookAhead==VVNOCODE ){
4468     return VV_NO_ACTION;
4469   }
4470   i += iLookAhead;
4471   if( i<0 || i>=VV_SZ_ACTTAB || vv_lookahead[i]!=iLookAhead ){
4472     return vv_default[stateno];
4473   }else{
4474     return vv_action[i];
4475   }
4476 }
4477 
4478 /*
4479 ** Perform a shift action.
4480 */
vv_shift(vvParser * vvpParser,int vvNewState,int vvMajor,VVMINORTYPE * vvpMinor)4481 static void vv_shift(
4482   vvParser *vvpParser,          /* The parser to be shifted */
4483   int vvNewState,               /* The new state to shift in */
4484   int vvMajor,                  /* The major token to shift in */
4485   VVMINORTYPE *vvpMinor         /* Pointer ot the minor token to shift in */
4486 ){
4487   vvStackEntry *vvtos;
4488   vvpParser->vvidx++;
4489   if( vvpParser->vvidx>=VVSTACKDEPTH ){
4490      phvolt_ARG_FETCH;
4491      vvpParser->vvidx--;
4492 #ifndef NDEBUG
4493      if( vvTraceFILE ){
4494        fprintf(vvTraceFILE,"%sStack Overflow!\n",vvTracePrompt);
4495      }
4496 #endif
4497      while( vvpParser->vvidx>=0 ) vv_pop_parser_stack(vvpParser);
4498      /* Here code is inserted which will execute if the parser
4499      ** stack every overflows */
4500      phvolt_ARG_STORE; /* Suppress warning about unused %extra_argument var */
4501      return;
4502   }
4503   vvtos = &vvpParser->vvstack[vvpParser->vvidx];
4504   vvtos->stateno = vvNewState;
4505   vvtos->major = vvMajor;
4506   vvtos->minor = *vvpMinor;
4507 #ifndef NDEBUG
4508   if( vvTraceFILE && vvpParser->vvidx>0 ){
4509     int i;
4510     fprintf(vvTraceFILE,"%sShift %d\n",vvTracePrompt,vvNewState);
4511     fprintf(vvTraceFILE,"%sStack:",vvTracePrompt);
4512     for(i=1; i<=vvpParser->vvidx; i++)
4513       fprintf(vvTraceFILE," %s",vvTokenName[vvpParser->vvstack[i].major]);
4514     fprintf(vvTraceFILE,"\n");
4515   }
4516 #endif
4517 }
4518 
4519 /* The following table contains information about every rule that
4520 ** is used during the reduce.
4521 */
4522 static struct {
4523   VVCODETYPE lhs;         /* Symbol on the left-hand side of the rule */
4524   unsigned char nrhs;     /* Number of right-hand side symbols in the rule */
4525 } vvRuleInfo[] = {
4526   { 90, 1 },
4527   { 91, 1 },
4528   { 92, 2 },
4529   { 92, 1 },
4530   { 93, 1 },
4531   { 93, 1 },
4532   { 93, 1 },
4533   { 93, 1 },
4534   { 93, 1 },
4535   { 93, 1 },
4536   { 93, 1 },
4537   { 93, 1 },
4538   { 93, 1 },
4539   { 93, 1 },
4540   { 93, 1 },
4541   { 93, 1 },
4542   { 93, 1 },
4543   { 93, 1 },
4544   { 93, 1 },
4545   { 93, 1 },
4546   { 93, 1 },
4547   { 93, 1 },
4548   { 93, 1 },
4549   { 93, 1 },
4550   { 93, 1 },
4551   { 93, 1 },
4552   { 95, 8 },
4553   { 95, 7 },
4554   { 95, 12 },
4555   { 95, 11 },
4556   { 95, 10 },
4557   { 96, 4 },
4558   { 97, 3 },
4559   { 98, 10 },
4560   { 98, 12 },
4561   { 98, 12 },
4562   { 98, 14 },
4563   { 99, 8 },
4564   { 99, 7 },
4565   { 100, 4 },
4566   { 100, 3 },
4567   { 101, 4 },
4568   { 117, 3 },
4569   { 117, 1 },
4570   { 118, 3 },
4571   { 118, 3 },
4572   { 118, 3 },
4573   { 118, 3 },
4574   { 118, 3 },
4575   { 119, 1 },
4576   { 119, 4 },
4577   { 119, 3 },
4578   { 113, 10 },
4579   { 113, 11 },
4580   { 120, 3 },
4581   { 120, 1 },
4582   { 121, 1 },
4583   { 121, 3 },
4584   { 122, 1 },
4585   { 122, 1 },
4586   { 122, 1 },
4587   { 122, 1 },
4588   { 122, 1 },
4589   { 122, 1 },
4590   { 115, 11 },
4591   { 115, 9 },
4592   { 114, 2 },
4593   { 102, 3 },
4594   { 103, 8 },
4595   { 103, 7 },
4596   { 104, 8 },
4597   { 104, 9 },
4598   { 124, 1 },
4599   { 124, 1 },
4600   { 110, 7 },
4601   { 105, 4 },
4602   { 106, 4 },
4603   { 106, 6 },
4604   { 107, 4 },
4605   { 108, 4 },
4606   { 109, 8 },
4607   { 109, 8 },
4608   { 111, 3 },
4609   { 112, 3 },
4610   { 94, 1 },
4611   { 116, 2 },
4612   { 116, 2 },
4613   { 116, 3 },
4614   { 116, 3 },
4615   { 116, 3 },
4616   { 116, 4 },
4617   { 116, 3 },
4618   { 116, 4 },
4619   { 116, 3 },
4620   { 116, 3 },
4621   { 116, 3 },
4622   { 116, 3 },
4623   { 116, 3 },
4624   { 116, 3 },
4625   { 116, 3 },
4626   { 116, 3 },
4627   { 116, 3 },
4628   { 116, 3 },
4629   { 116, 3 },
4630   { 116, 3 },
4631   { 116, 3 },
4632   { 116, 3 },
4633   { 116, 3 },
4634   { 116, 3 },
4635   { 116, 3 },
4636   { 116, 3 },
4637   { 116, 3 },
4638   { 116, 3 },
4639   { 116, 3 },
4640   { 116, 3 },
4641   { 116, 3 },
4642   { 116, 3 },
4643   { 116, 3 },
4644   { 116, 3 },
4645   { 116, 3 },
4646   { 116, 3 },
4647   { 116, 3 },
4648   { 116, 3 },
4649   { 116, 3 },
4650   { 116, 4 },
4651   { 116, 2 },
4652   { 116, 2 },
4653   { 116, 2 },
4654   { 116, 3 },
4655   { 116, 2 },
4656   { 116, 3 },
4657   { 116, 2 },
4658   { 116, 3 },
4659   { 116, 4 },
4660   { 116, 5 },
4661   { 116, 5 },
4662   { 116, 5 },
4663   { 116, 6 },
4664   { 126, 1 },
4665   { 126, 1 },
4666   { 125, 3 },
4667   { 125, 1 },
4668   { 127, 3 },
4669   { 127, 1 },
4670   { 116, 1 },
4671   { 128, 4 },
4672   { 128, 3 },
4673   { 123, 3 },
4674   { 123, 1 },
4675   { 129, 1 },
4676   { 129, 3 },
4677   { 116, 1 },
4678   { 116, 1 },
4679   { 116, 1 },
4680   { 116, 1 },
4681   { 116, 1 },
4682   { 116, 1 },
4683   { 116, 1 },
4684 };
4685 
4686 static void vv_accept(vvParser*);  /* Forward Declaration */
4687 
4688 /*
4689 ** Perform a reduce action and the shift that must immediately
4690 ** follow the reduce.
4691 */
vv_reduce(vvParser * vvpParser,int vvruleno)4692 static void vv_reduce(
4693   vvParser *vvpParser,         /* The parser */
4694   int vvruleno                 /* Number of the rule by which to reduce */
4695 ){
4696   int vvgoto;                     /* The next state */
4697   int vvact;                      /* The next action */
4698   VVMINORTYPE vvgotominor;        /* The LHS of the rule reduced */
4699   vvStackEntry *vvmsp;            /* The top of the parser's stack */
4700   int vvsize;                     /* Amount to pop the stack */
4701   phvolt_ARG_FETCH;
4702   vvmsp = &vvpParser->vvstack[vvpParser->vvidx];
4703 #ifndef NDEBUG
4704   if( vvTraceFILE && vvruleno>=0
4705         && vvruleno<sizeof(vvRuleName)/sizeof(vvRuleName[0]) ){
4706     fprintf(vvTraceFILE, "%sReduce [%s].\n", vvTracePrompt,
4707       vvRuleName[vvruleno]);
4708   }
4709 #endif /* NDEBUG */
4710 
4711   switch( vvruleno ){
4712   /* Beginning here are the reduction cases.  A typical example
4713   ** follows:
4714   **   case 0:
4715   **  // <lineno> <grammarfile>
4716   **     { ... }           // User supplied code
4717   **  // <lineno> <thisfile>
4718   **     break;
4719   */
4720       case 0:
4721 // 160 "parser.php7.lemon"
4722 {
4723 	ZVAL_ZVAL(&status->ret, &vvmsp[0].minor.vv186, 1, 1);
4724 }
4725 // 1634 "parser.php7.c"
4726         break;
4727       case 1:
4728       case 4:
4729       case 5:
4730       case 6:
4731       case 7:
4732       case 8:
4733       case 9:
4734       case 10:
4735       case 11:
4736       case 12:
4737       case 13:
4738       case 14:
4739       case 15:
4740       case 16:
4741       case 17:
4742       case 18:
4743       case 19:
4744       case 20:
4745       case 21:
4746       case 22:
4747       case 23:
4748       case 24:
4749       case 25:
4750       case 144:
4751 // 164 "parser.php7.lemon"
4752 {
4753 	vvgotominor.vv186 = vvmsp[0].minor.vv186;
4754 }
4755 // 1664 "parser.php7.c"
4756         break;
4757       case 2:
4758 // 172 "parser.php7.lemon"
4759 {
4760 	phvolt_ret_zval_list(&vvgotominor.vv186, &vvmsp[-1].minor.vv186, &vvmsp[0].minor.vv186);
4761 }
4762 // 1671 "parser.php7.c"
4763         break;
4764       case 3:
4765       case 43:
4766       case 55:
4767       case 141:
4768       case 148:
4769 // 176 "parser.php7.lemon"
4770 {
4771 	phvolt_ret_zval_list(&vvgotominor.vv186, NULL, &vvmsp[0].minor.vv186);
4772 }
4773 // 1682 "parser.php7.c"
4774         break;
4775       case 26:
4776 // 277 "parser.php7.lemon"
4777 {
4778 	phvolt_ret_if_statement(&vvgotominor.vv186, &vvmsp[-5].minor.vv186, &vvmsp[-3].minor.vv186, NULL, status->scanner_state);
4779   vv_destructor(1,&vvmsp[-7].minor);
4780   vv_destructor(31,&vvmsp[-6].minor);
4781   vv_destructor(32,&vvmsp[-4].minor);
4782   vv_destructor(1,&vvmsp[-2].minor);
4783   vv_destructor(33,&vvmsp[-1].minor);
4784   vv_destructor(32,&vvmsp[0].minor);
4785 }
4786 // 1695 "parser.php7.c"
4787         break;
4788       case 27:
4789 // 282 "parser.php7.lemon"
4790 {
4791 	phvolt_ret_if_statement(&vvgotominor.vv186, &vvmsp[-4].minor.vv186, NULL, NULL, status->scanner_state);
4792   vv_destructor(1,&vvmsp[-6].minor);
4793   vv_destructor(31,&vvmsp[-5].minor);
4794   vv_destructor(32,&vvmsp[-3].minor);
4795   vv_destructor(1,&vvmsp[-2].minor);
4796   vv_destructor(33,&vvmsp[-1].minor);
4797   vv_destructor(32,&vvmsp[0].minor);
4798 }
4799 // 1708 "parser.php7.c"
4800         break;
4801       case 28:
4802 // 287 "parser.php7.lemon"
4803 {
4804 	phvolt_ret_if_statement(&vvgotominor.vv186, &vvmsp[-9].minor.vv186, &vvmsp[-7].minor.vv186, &vvmsp[-3].minor.vv186, status->scanner_state);
4805   vv_destructor(1,&vvmsp[-11].minor);
4806   vv_destructor(31,&vvmsp[-10].minor);
4807   vv_destructor(32,&vvmsp[-8].minor);
4808   vv_destructor(1,&vvmsp[-6].minor);
4809   vv_destructor(34,&vvmsp[-5].minor);
4810   vv_destructor(32,&vvmsp[-4].minor);
4811   vv_destructor(1,&vvmsp[-2].minor);
4812   vv_destructor(33,&vvmsp[-1].minor);
4813   vv_destructor(32,&vvmsp[0].minor);
4814 }
4815 // 1724 "parser.php7.c"
4816         break;
4817       case 29:
4818 // 292 "parser.php7.lemon"
4819 {
4820 	phvolt_ret_if_statement(&vvgotominor.vv186, &vvmsp[-8].minor.vv186, &vvmsp[-6].minor.vv186, NULL, status->scanner_state);
4821   vv_destructor(1,&vvmsp[-10].minor);
4822   vv_destructor(31,&vvmsp[-9].minor);
4823   vv_destructor(32,&vvmsp[-7].minor);
4824   vv_destructor(1,&vvmsp[-5].minor);
4825   vv_destructor(34,&vvmsp[-4].minor);
4826   vv_destructor(32,&vvmsp[-3].minor);
4827   vv_destructor(1,&vvmsp[-2].minor);
4828   vv_destructor(33,&vvmsp[-1].minor);
4829   vv_destructor(32,&vvmsp[0].minor);
4830 }
4831 // 1740 "parser.php7.c"
4832         break;
4833       case 30:
4834 // 297 "parser.php7.lemon"
4835 {
4836 	phvolt_ret_if_statement(&vvgotominor.vv186, &vvmsp[-7].minor.vv186, NULL, NULL, status->scanner_state);
4837   vv_destructor(1,&vvmsp[-9].minor);
4838   vv_destructor(31,&vvmsp[-8].minor);
4839   vv_destructor(32,&vvmsp[-6].minor);
4840   vv_destructor(1,&vvmsp[-5].minor);
4841   vv_destructor(34,&vvmsp[-4].minor);
4842   vv_destructor(32,&vvmsp[-3].minor);
4843   vv_destructor(1,&vvmsp[-2].minor);
4844   vv_destructor(33,&vvmsp[-1].minor);
4845   vv_destructor(32,&vvmsp[0].minor);
4846 }
4847 // 1756 "parser.php7.c"
4848         break;
4849       case 31:
4850 // 305 "parser.php7.lemon"
4851 {
4852 	phvolt_ret_elseif_statement(&vvgotominor.vv186, &vvmsp[-1].minor.vv186, status->scanner_state);
4853   vv_destructor(1,&vvmsp[-3].minor);
4854   vv_destructor(35,&vvmsp[-2].minor);
4855   vv_destructor(32,&vvmsp[0].minor);
4856 }
4857 // 1766 "parser.php7.c"
4858         break;
4859       case 32:
4860 // 313 "parser.php7.lemon"
4861 {
4862 	phvolt_ret_elsefor_statement(&vvgotominor.vv186, status->scanner_state);
4863   vv_destructor(1,&vvmsp[-2].minor);
4864   vv_destructor(36,&vvmsp[-1].minor);
4865   vv_destructor(32,&vvmsp[0].minor);
4866 }
4867 // 1776 "parser.php7.c"
4868         break;
4869       case 33:
4870 // 321 "parser.php7.lemon"
4871 {
4872 	phvolt_ret_for_statement(&vvgotominor.vv186, vvmsp[-7].minor.vv0, NULL, &vvmsp[-5].minor.vv186, NULL, &vvmsp[-3].minor.vv186, status->scanner_state);
4873   vv_destructor(1,&vvmsp[-9].minor);
4874   vv_destructor(37,&vvmsp[-8].minor);
4875   vv_destructor(3,&vvmsp[-6].minor);
4876   vv_destructor(32,&vvmsp[-4].minor);
4877   vv_destructor(1,&vvmsp[-2].minor);
4878   vv_destructor(39,&vvmsp[-1].minor);
4879   vv_destructor(32,&vvmsp[0].minor);
4880 }
4881 // 1790 "parser.php7.c"
4882         break;
4883       case 34:
4884 // 325 "parser.php7.lemon"
4885 {
4886 	phvolt_ret_for_statement(&vvgotominor.vv186, vvmsp[-9].minor.vv0, NULL, &vvmsp[-7].minor.vv186, &vvmsp[-5].minor.vv186, &vvmsp[-3].minor.vv186, status->scanner_state);
4887   vv_destructor(1,&vvmsp[-11].minor);
4888   vv_destructor(37,&vvmsp[-10].minor);
4889   vv_destructor(3,&vvmsp[-8].minor);
4890   vv_destructor(31,&vvmsp[-6].minor);
4891   vv_destructor(32,&vvmsp[-4].minor);
4892   vv_destructor(1,&vvmsp[-2].minor);
4893   vv_destructor(39,&vvmsp[-1].minor);
4894   vv_destructor(32,&vvmsp[0].minor);
4895 }
4896 // 1805 "parser.php7.c"
4897         break;
4898       case 35:
4899 // 329 "parser.php7.lemon"
4900 {
4901 	phvolt_ret_for_statement(&vvgotominor.vv186, vvmsp[-7].minor.vv0, vvmsp[-9].minor.vv0, &vvmsp[-5].minor.vv186, NULL, &vvmsp[-3].minor.vv186, status->scanner_state);
4902   vv_destructor(1,&vvmsp[-11].minor);
4903   vv_destructor(37,&vvmsp[-10].minor);
4904   vv_destructor(2,&vvmsp[-8].minor);
4905   vv_destructor(3,&vvmsp[-6].minor);
4906   vv_destructor(32,&vvmsp[-4].minor);
4907   vv_destructor(1,&vvmsp[-2].minor);
4908   vv_destructor(39,&vvmsp[-1].minor);
4909   vv_destructor(32,&vvmsp[0].minor);
4910 }
4911 // 1820 "parser.php7.c"
4912         break;
4913       case 36:
4914 // 333 "parser.php7.lemon"
4915 {
4916 	phvolt_ret_for_statement(&vvgotominor.vv186, vvmsp[-9].minor.vv0, vvmsp[-11].minor.vv0, &vvmsp[-7].minor.vv186, &vvmsp[-5].minor.vv186, &vvmsp[-3].minor.vv186, status->scanner_state);
4917   vv_destructor(1,&vvmsp[-13].minor);
4918   vv_destructor(37,&vvmsp[-12].minor);
4919   vv_destructor(2,&vvmsp[-10].minor);
4920   vv_destructor(3,&vvmsp[-8].minor);
4921   vv_destructor(31,&vvmsp[-6].minor);
4922   vv_destructor(32,&vvmsp[-4].minor);
4923   vv_destructor(1,&vvmsp[-2].minor);
4924   vv_destructor(39,&vvmsp[-1].minor);
4925   vv_destructor(32,&vvmsp[0].minor);
4926 }
4927 // 1836 "parser.php7.c"
4928         break;
4929       case 37:
4930 // 342 "parser.php7.lemon"
4931 {
4932 	phvolt_ret_switch_statement(&vvgotominor.vv186, &vvmsp[-5].minor.vv186, &vvmsp[-3].minor.vv186, status->scanner_state);
4933   vv_destructor(1,&vvmsp[-7].minor);
4934   vv_destructor(40,&vvmsp[-6].minor);
4935   vv_destructor(32,&vvmsp[-4].minor);
4936   vv_destructor(1,&vvmsp[-2].minor);
4937   vv_destructor(41,&vvmsp[-1].minor);
4938   vv_destructor(32,&vvmsp[0].minor);
4939 }
4940 // 1849 "parser.php7.c"
4941         break;
4942       case 38:
4943 // 347 "parser.php7.lemon"
4944 {
4945 	phvolt_ret_switch_statement(&vvgotominor.vv186, &vvmsp[-4].minor.vv186, NULL, status->scanner_state);
4946   vv_destructor(1,&vvmsp[-6].minor);
4947   vv_destructor(40,&vvmsp[-5].minor);
4948   vv_destructor(32,&vvmsp[-3].minor);
4949   vv_destructor(1,&vvmsp[-2].minor);
4950   vv_destructor(41,&vvmsp[-1].minor);
4951   vv_destructor(32,&vvmsp[0].minor);
4952 }
4953 // 1862 "parser.php7.c"
4954         break;
4955       case 39:
4956 // 356 "parser.php7.lemon"
4957 {
4958 	phvolt_ret_case_clause(&vvgotominor.vv186, &vvmsp[-1].minor.vv186, status->scanner_state);
4959   vv_destructor(1,&vvmsp[-3].minor);
4960   vv_destructor(42,&vvmsp[-2].minor);
4961   vv_destructor(32,&vvmsp[0].minor);
4962 }
4963 // 1872 "parser.php7.c"
4964         break;
4965       case 40:
4966 // 361 "parser.php7.lemon"
4967 {
4968 	phvolt_ret_case_clause(&vvgotominor.vv186, NULL, status->scanner_state);
4969   vv_destructor(1,&vvmsp[-2].minor);
4970   vv_destructor(43,&vvmsp[-1].minor);
4971   vv_destructor(32,&vvmsp[0].minor);
4972 }
4973 // 1882 "parser.php7.c"
4974         break;
4975       case 41:
4976 // 369 "parser.php7.lemon"
4977 {
4978 	phvolt_ret_set_statement(&vvgotominor.vv186, &vvmsp[-1].minor.vv186);
4979   vv_destructor(1,&vvmsp[-3].minor);
4980   vv_destructor(44,&vvmsp[-2].minor);
4981   vv_destructor(32,&vvmsp[0].minor);
4982 }
4983 // 1892 "parser.php7.c"
4984         break;
4985       case 42:
4986       case 54:
4987       case 140:
4988       case 147:
4989 // 377 "parser.php7.lemon"
4990 {
4991 	phvolt_ret_zval_list(&vvgotominor.vv186, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186);
4992   vv_destructor(2,&vvmsp[-1].minor);
4993 }
4994 // 1903 "parser.php7.c"
4995         break;
4996       case 44:
4997 // 389 "parser.php7.lemon"
4998 {
4999 	phvolt_ret_set_assignment(&vvgotominor.vv186, &vvmsp[-2].minor.vv186, PHVOLT_T_ASSIGN, &vvmsp[0].minor.vv186, status->scanner_state);
5000   vv_destructor(45,&vvmsp[-1].minor);
5001 }
5002 // 1911 "parser.php7.c"
5003         break;
5004       case 45:
5005 // 393 "parser.php7.lemon"
5006 {
5007 	phvolt_ret_set_assignment(&vvgotominor.vv186, &vvmsp[-2].minor.vv186, PHVOLT_T_ADD_ASSIGN, &vvmsp[0].minor.vv186, status->scanner_state);
5008   vv_destructor(46,&vvmsp[-1].minor);
5009 }
5010 // 1919 "parser.php7.c"
5011         break;
5012       case 46:
5013 // 397 "parser.php7.lemon"
5014 {
5015 	phvolt_ret_set_assignment(&vvgotominor.vv186, &vvmsp[-2].minor.vv186, PHVOLT_T_SUB_ASSIGN, &vvmsp[0].minor.vv186, status->scanner_state);
5016   vv_destructor(47,&vvmsp[-1].minor);
5017 }
5018 // 1927 "parser.php7.c"
5019         break;
5020       case 47:
5021 // 401 "parser.php7.lemon"
5022 {
5023 	phvolt_ret_set_assignment(&vvgotominor.vv186, &vvmsp[-2].minor.vv186, PHVOLT_T_MUL_ASSIGN, &vvmsp[0].minor.vv186, status->scanner_state);
5024   vv_destructor(48,&vvmsp[-1].minor);
5025 }
5026 // 1935 "parser.php7.c"
5027         break;
5028       case 48:
5029 // 405 "parser.php7.lemon"
5030 {
5031 	phvolt_ret_set_assignment(&vvgotominor.vv186, &vvmsp[-2].minor.vv186, PHVOLT_T_DIV_ASSIGN, &vvmsp[0].minor.vv186, status->scanner_state);
5032   vv_destructor(49,&vvmsp[-1].minor);
5033 }
5034 // 1943 "parser.php7.c"
5035         break;
5036       case 49:
5037       case 73:
5038       case 139:
5039       case 151:
5040 // 409 "parser.php7.lemon"
5041 {
5042 	phvolt_ret_literal_zval(&vvgotominor.vv186, PHVOLT_T_IDENTIFIER, vvmsp[0].minor.vv0, status->scanner_state);
5043 }
5044 // 1953 "parser.php7.c"
5045         break;
5046       case 50:
5047       case 133:
5048 // 413 "parser.php7.lemon"
5049 {
5050 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_ARRAYACCESS, &vvmsp[-3].minor.vv186, &vvmsp[-1].minor.vv186, NULL, status->scanner_state);
5051   vv_destructor(24,&vvmsp[-2].minor);
5052   vv_destructor(50,&vvmsp[0].minor);
5053 }
5054 // 1963 "parser.php7.c"
5055         break;
5056       case 51:
5057       case 122:
5058 // 417 "parser.php7.lemon"
5059 {
5060 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_DOT, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5061   vv_destructor(30,&vvmsp[-1].minor);
5062 }
5063 // 1972 "parser.php7.c"
5064         break;
5065       case 52:
5066 // 425 "parser.php7.lemon"
5067 {
5068 	phvolt_ret_macro_statement(&vvgotominor.vv186, vvmsp[-7].minor.vv0, NULL, &vvmsp[-3].minor.vv186, status->scanner_state);
5069   vv_destructor(1,&vvmsp[-9].minor);
5070   vv_destructor(51,&vvmsp[-8].minor);
5071   vv_destructor(29,&vvmsp[-6].minor);
5072   vv_destructor(52,&vvmsp[-5].minor);
5073   vv_destructor(32,&vvmsp[-4].minor);
5074   vv_destructor(1,&vvmsp[-2].minor);
5075   vv_destructor(53,&vvmsp[-1].minor);
5076   vv_destructor(32,&vvmsp[0].minor);
5077 }
5078 // 1987 "parser.php7.c"
5079         break;
5080       case 53:
5081 // 429 "parser.php7.lemon"
5082 {
5083 	phvolt_ret_macro_statement(&vvgotominor.vv186, vvmsp[-8].minor.vv0, &vvmsp[-6].minor.vv186, &vvmsp[-3].minor.vv186, status->scanner_state);
5084   vv_destructor(1,&vvmsp[-10].minor);
5085   vv_destructor(51,&vvmsp[-9].minor);
5086   vv_destructor(29,&vvmsp[-7].minor);
5087   vv_destructor(52,&vvmsp[-5].minor);
5088   vv_destructor(32,&vvmsp[-4].minor);
5089   vv_destructor(1,&vvmsp[-2].minor);
5090   vv_destructor(53,&vvmsp[-1].minor);
5091   vv_destructor(32,&vvmsp[0].minor);
5092 }
5093 // 2002 "parser.php7.c"
5094         break;
5095       case 56:
5096 // 449 "parser.php7.lemon"
5097 {
5098 	phvolt_ret_macro_parameter(&vvgotominor.vv186, vvmsp[0].minor.vv0, NULL, status->scanner_state);
5099 }
5100 // 2009 "parser.php7.c"
5101         break;
5102       case 57:
5103 // 453 "parser.php7.lemon"
5104 {
5105 	phvolt_ret_macro_parameter(&vvgotominor.vv186, vvmsp[-2].minor.vv0, &vvmsp[0].minor.vv186, status->scanner_state);
5106   vv_destructor(45,&vvmsp[-1].minor);
5107 }
5108 // 2017 "parser.php7.c"
5109         break;
5110       case 58:
5111       case 72:
5112       case 138:
5113       case 152:
5114 // 457 "parser.php7.lemon"
5115 {
5116 	phvolt_ret_literal_zval(&vvgotominor.vv186, PHVOLT_T_INTEGER, vvmsp[0].minor.vv0, status->scanner_state);
5117 }
5118 // 2027 "parser.php7.c"
5119         break;
5120       case 59:
5121       case 153:
5122 // 461 "parser.php7.lemon"
5123 {
5124 	phvolt_ret_literal_zval(&vvgotominor.vv186, PHVOLT_T_STRING, vvmsp[0].minor.vv0, status->scanner_state);
5125 }
5126 // 2035 "parser.php7.c"
5127         break;
5128       case 60:
5129       case 154:
5130 // 465 "parser.php7.lemon"
5131 {
5132 	phvolt_ret_literal_zval(&vvgotominor.vv186, PHVOLT_T_DOUBLE, vvmsp[0].minor.vv0, status->scanner_state);
5133 }
5134 // 2043 "parser.php7.c"
5135         break;
5136       case 61:
5137       case 155:
5138 // 469 "parser.php7.lemon"
5139 {
5140 	phvolt_ret_literal_zval(&vvgotominor.vv186, PHVOLT_T_NULL, NULL, status->scanner_state);
5141   vv_destructor(57,&vvmsp[0].minor);
5142 }
5143 // 2052 "parser.php7.c"
5144         break;
5145       case 62:
5146       case 156:
5147 // 473 "parser.php7.lemon"
5148 {
5149 	phvolt_ret_literal_zval(&vvgotominor.vv186, PHVOLT_T_FALSE, NULL, status->scanner_state);
5150   vv_destructor(58,&vvmsp[0].minor);
5151 }
5152 // 2061 "parser.php7.c"
5153         break;
5154       case 63:
5155       case 157:
5156 // 477 "parser.php7.lemon"
5157 {
5158 	phvolt_ret_literal_zval(&vvgotominor.vv186, PHVOLT_T_TRUE, NULL, status->scanner_state);
5159   vv_destructor(59,&vvmsp[0].minor);
5160 }
5161 // 2070 "parser.php7.c"
5162         break;
5163       case 64:
5164 // 485 "parser.php7.lemon"
5165 {
5166 	phvolt_ret_macro_call_statement(&vvgotominor.vv186, &vvmsp[-8].minor.vv186, &vvmsp[-6].minor.vv186, &vvmsp[-3].minor.vv186, status->scanner_state);
5167   vv_destructor(1,&vvmsp[-10].minor);
5168   vv_destructor(60,&vvmsp[-9].minor);
5169   vv_destructor(29,&vvmsp[-7].minor);
5170   vv_destructor(52,&vvmsp[-5].minor);
5171   vv_destructor(32,&vvmsp[-4].minor);
5172   vv_destructor(1,&vvmsp[-2].minor);
5173   vv_destructor(61,&vvmsp[-1].minor);
5174   vv_destructor(32,&vvmsp[0].minor);
5175 }
5176 // 2085 "parser.php7.c"
5177         break;
5178       case 65:
5179 // 489 "parser.php7.lemon"
5180 {
5181 	phvolt_ret_macro_call_statement(&vvgotominor.vv186, &vvmsp[-6].minor.vv186, NULL, NULL, status->scanner_state);
5182   vv_destructor(1,&vvmsp[-8].minor);
5183   vv_destructor(60,&vvmsp[-7].minor);
5184   vv_destructor(29,&vvmsp[-5].minor);
5185   vv_destructor(52,&vvmsp[-4].minor);
5186   vv_destructor(32,&vvmsp[-3].minor);
5187   vv_destructor(1,&vvmsp[-2].minor);
5188   vv_destructor(61,&vvmsp[-1].minor);
5189   vv_destructor(32,&vvmsp[0].minor);
5190 }
5191 // 2100 "parser.php7.c"
5192         break;
5193       case 66:
5194 // 497 "parser.php7.lemon"
5195 {
5196 	phvolt_ret_empty_statement(&vvgotominor.vv186, status->scanner_state);
5197   vv_destructor(1,&vvmsp[-1].minor);
5198   vv_destructor(32,&vvmsp[0].minor);
5199 }
5200 // 2109 "parser.php7.c"
5201         break;
5202       case 67:
5203 // 505 "parser.php7.lemon"
5204 {
5205 	phvolt_ret_echo_statement(&vvgotominor.vv186, &vvmsp[-1].minor.vv186, status->scanner_state);
5206   vv_destructor(62,&vvmsp[-2].minor);
5207   vv_destructor(63,&vvmsp[0].minor);
5208 }
5209 // 2118 "parser.php7.c"
5210         break;
5211       case 68:
5212 // 513 "parser.php7.lemon"
5213 {
5214 	phvolt_ret_block_statement(&vvgotominor.vv186, vvmsp[-5].minor.vv0, &vvmsp[-3].minor.vv186, status->scanner_state);
5215   vv_destructor(1,&vvmsp[-7].minor);
5216   vv_destructor(64,&vvmsp[-6].minor);
5217   vv_destructor(32,&vvmsp[-4].minor);
5218   vv_destructor(1,&vvmsp[-2].minor);
5219   vv_destructor(65,&vvmsp[-1].minor);
5220   vv_destructor(32,&vvmsp[0].minor);
5221 }
5222 // 2131 "parser.php7.c"
5223         break;
5224       case 69:
5225 // 517 "parser.php7.lemon"
5226 {
5227 	phvolt_ret_block_statement(&vvgotominor.vv186, vvmsp[-4].minor.vv0, NULL, status->scanner_state);
5228   vv_destructor(1,&vvmsp[-6].minor);
5229   vv_destructor(64,&vvmsp[-5].minor);
5230   vv_destructor(32,&vvmsp[-3].minor);
5231   vv_destructor(1,&vvmsp[-2].minor);
5232   vv_destructor(65,&vvmsp[-1].minor);
5233   vv_destructor(32,&vvmsp[0].minor);
5234 }
5235 // 2144 "parser.php7.c"
5236         break;
5237       case 70:
5238 // 525 "parser.php7.lemon"
5239 {
5240 	phvolt_ret_cache_statement(&vvgotominor.vv186, &vvmsp[-5].minor.vv186, NULL, &vvmsp[-3].minor.vv186, status->scanner_state);
5241   vv_destructor(1,&vvmsp[-7].minor);
5242   vv_destructor(66,&vvmsp[-6].minor);
5243   vv_destructor(32,&vvmsp[-4].minor);
5244   vv_destructor(1,&vvmsp[-2].minor);
5245   vv_destructor(67,&vvmsp[-1].minor);
5246   vv_destructor(32,&vvmsp[0].minor);
5247 }
5248 // 2157 "parser.php7.c"
5249         break;
5250       case 71:
5251 // 529 "parser.php7.lemon"
5252 {
5253 	phvolt_ret_cache_statement(&vvgotominor.vv186, &vvmsp[-6].minor.vv186, &vvmsp[-5].minor.vv186, &vvmsp[-3].minor.vv186, status->scanner_state);
5254   vv_destructor(1,&vvmsp[-8].minor);
5255   vv_destructor(66,&vvmsp[-7].minor);
5256   vv_destructor(32,&vvmsp[-4].minor);
5257   vv_destructor(1,&vvmsp[-2].minor);
5258   vv_destructor(67,&vvmsp[-1].minor);
5259   vv_destructor(32,&vvmsp[0].minor);
5260 }
5261 // 2170 "parser.php7.c"
5262         break;
5263       case 74:
5264 // 549 "parser.php7.lemon"
5265 {
5266 	phvolt_ret_raw_statement(&vvgotominor.vv186, &vvmsp[-3].minor.vv186, status->scanner_state);
5267   vv_destructor(1,&vvmsp[-6].minor);
5268   vv_destructor(68,&vvmsp[-5].minor);
5269   vv_destructor(32,&vvmsp[-4].minor);
5270   vv_destructor(1,&vvmsp[-2].minor);
5271   vv_destructor(69,&vvmsp[-1].minor);
5272   vv_destructor(32,&vvmsp[0].minor);
5273 }
5274 // 2183 "parser.php7.c"
5275         break;
5276       case 75:
5277 // 557 "parser.php7.lemon"
5278 {
5279 	phvolt_ret_extends_statement(&vvgotominor.vv186, &vvmsp[-1].minor.vv186, status->scanner_state);
5280   vv_destructor(1,&vvmsp[-3].minor);
5281   vv_destructor(70,&vvmsp[-2].minor);
5282   vv_destructor(32,&vvmsp[0].minor);
5283 }
5284 // 2193 "parser.php7.c"
5285         break;
5286       case 76:
5287 // 565 "parser.php7.lemon"
5288 {
5289 	phvolt_ret_include_statement(&vvgotominor.vv186, &vvmsp[-1].minor.vv186, NULL, status->scanner_state);
5290   vv_destructor(1,&vvmsp[-3].minor);
5291   vv_destructor(71,&vvmsp[-2].minor);
5292   vv_destructor(32,&vvmsp[0].minor);
5293 }
5294 // 2203 "parser.php7.c"
5295         break;
5296       case 77:
5297 // 569 "parser.php7.lemon"
5298 {
5299 	phvolt_ret_include_statement(&vvgotominor.vv186, &vvmsp[-3].minor.vv186, &vvmsp[-1].minor.vv186, status->scanner_state);
5300   vv_destructor(1,&vvmsp[-5].minor);
5301   vv_destructor(71,&vvmsp[-4].minor);
5302   vv_destructor(72,&vvmsp[-2].minor);
5303   vv_destructor(32,&vvmsp[0].minor);
5304 }
5305 // 2214 "parser.php7.c"
5306         break;
5307       case 78:
5308 // 577 "parser.php7.lemon"
5309 {
5310 	phvolt_ret_do_statement(&vvgotominor.vv186, &vvmsp[-1].minor.vv186, status->scanner_state);
5311   vv_destructor(1,&vvmsp[-3].minor);
5312   vv_destructor(73,&vvmsp[-2].minor);
5313   vv_destructor(32,&vvmsp[0].minor);
5314 }
5315 // 2224 "parser.php7.c"
5316         break;
5317       case 79:
5318 // 585 "parser.php7.lemon"
5319 {
5320 	phvolt_ret_return_statement(&vvgotominor.vv186, &vvmsp[-1].minor.vv186, status->scanner_state);
5321   vv_destructor(1,&vvmsp[-3].minor);
5322   vv_destructor(74,&vvmsp[-2].minor);
5323   vv_destructor(32,&vvmsp[0].minor);
5324 }
5325 // 2234 "parser.php7.c"
5326         break;
5327       case 80:
5328 // 593 "parser.php7.lemon"
5329 {
5330 	phvolt_ret_autoescape_statement(&vvgotominor.vv186, 0, &vvmsp[-3].minor.vv186, status->scanner_state);
5331   vv_destructor(1,&vvmsp[-7].minor);
5332   vv_destructor(75,&vvmsp[-6].minor);
5333   vv_destructor(58,&vvmsp[-5].minor);
5334   vv_destructor(32,&vvmsp[-4].minor);
5335   vv_destructor(1,&vvmsp[-2].minor);
5336   vv_destructor(76,&vvmsp[-1].minor);
5337   vv_destructor(32,&vvmsp[0].minor);
5338 }
5339 // 2248 "parser.php7.c"
5340         break;
5341       case 81:
5342 // 597 "parser.php7.lemon"
5343 {
5344 	phvolt_ret_autoescape_statement(&vvgotominor.vv186, 1, &vvmsp[-3].minor.vv186, status->scanner_state);
5345   vv_destructor(1,&vvmsp[-7].minor);
5346   vv_destructor(75,&vvmsp[-6].minor);
5347   vv_destructor(59,&vvmsp[-5].minor);
5348   vv_destructor(32,&vvmsp[-4].minor);
5349   vv_destructor(1,&vvmsp[-2].minor);
5350   vv_destructor(76,&vvmsp[-1].minor);
5351   vv_destructor(32,&vvmsp[0].minor);
5352 }
5353 // 2262 "parser.php7.c"
5354         break;
5355       case 82:
5356 // 605 "parser.php7.lemon"
5357 {
5358 	phvolt_ret_break_statement(&vvgotominor.vv186, status->scanner_state);
5359   vv_destructor(1,&vvmsp[-2].minor);
5360   vv_destructor(77,&vvmsp[-1].minor);
5361   vv_destructor(32,&vvmsp[0].minor);
5362 }
5363 // 2272 "parser.php7.c"
5364         break;
5365       case 83:
5366 // 613 "parser.php7.lemon"
5367 {
5368 	phvolt_ret_continue_statement(&vvgotominor.vv186, status->scanner_state);
5369   vv_destructor(1,&vvmsp[-2].minor);
5370   vv_destructor(78,&vvmsp[-1].minor);
5371   vv_destructor(32,&vvmsp[0].minor);
5372 }
5373 // 2282 "parser.php7.c"
5374         break;
5375       case 84:
5376 // 621 "parser.php7.lemon"
5377 {
5378 	phvolt_ret_literal_zval(&vvgotominor.vv186, PHVOLT_T_RAW_FRAGMENT, vvmsp[0].minor.vv0, status->scanner_state);
5379 }
5380 // 2289 "parser.php7.c"
5381         break;
5382       case 85:
5383 // 629 "parser.php7.lemon"
5384 {
5385 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_MINUS, NULL, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5386   vv_destructor(22,&vvmsp[-1].minor);
5387 }
5388 // 2297 "parser.php7.c"
5389         break;
5390       case 86:
5391 // 633 "parser.php7.lemon"
5392 {
5393 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_PLUS, NULL, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5394   vv_destructor(21,&vvmsp[-1].minor);
5395 }
5396 // 2305 "parser.php7.c"
5397         break;
5398       case 87:
5399 // 637 "parser.php7.lemon"
5400 {
5401 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_SUB, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5402   vv_destructor(22,&vvmsp[-1].minor);
5403 }
5404 // 2313 "parser.php7.c"
5405         break;
5406       case 88:
5407 // 641 "parser.php7.lemon"
5408 {
5409 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_ADD, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5410   vv_destructor(21,&vvmsp[-1].minor);
5411 }
5412 // 2321 "parser.php7.c"
5413         break;
5414       case 89:
5415 // 645 "parser.php7.lemon"
5416 {
5417 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_MUL, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5418   vv_destructor(19,&vvmsp[-1].minor);
5419 }
5420 // 2329 "parser.php7.c"
5421         break;
5422       case 90:
5423 // 649 "parser.php7.lemon"
5424 {
5425 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_POW, &vvmsp[-3].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5426   vv_destructor(19,&vvmsp[-2].minor);
5427   vv_destructor(19,&vvmsp[-1].minor);
5428 }
5429 // 2338 "parser.php7.c"
5430         break;
5431       case 91:
5432 // 653 "parser.php7.lemon"
5433 {
5434 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_DIV, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5435   vv_destructor(18,&vvmsp[-1].minor);
5436 }
5437 // 2346 "parser.php7.c"
5438         break;
5439       case 92:
5440 // 657 "parser.php7.lemon"
5441 {
5442 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_MOD, &vvmsp[-3].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5443   vv_destructor(18,&vvmsp[-2].minor);
5444   vv_destructor(18,&vvmsp[-1].minor);
5445 }
5446 // 2355 "parser.php7.c"
5447         break;
5448       case 93:
5449 // 661 "parser.php7.lemon"
5450 {
5451 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_MOD, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5452   vv_destructor(20,&vvmsp[-1].minor);
5453 }
5454 // 2363 "parser.php7.c"
5455         break;
5456       case 94:
5457 // 665 "parser.php7.lemon"
5458 {
5459 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_AND, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5460   vv_destructor(7,&vvmsp[-1].minor);
5461 }
5462 // 2371 "parser.php7.c"
5463         break;
5464       case 95:
5465 // 669 "parser.php7.lemon"
5466 {
5467 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_OR, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5468   vv_destructor(8,&vvmsp[-1].minor);
5469 }
5470 // 2379 "parser.php7.c"
5471         break;
5472       case 96:
5473 // 673 "parser.php7.lemon"
5474 {
5475 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_CONCAT, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5476   vv_destructor(23,&vvmsp[-1].minor);
5477 }
5478 // 2387 "parser.php7.c"
5479         break;
5480       case 97:
5481 // 677 "parser.php7.lemon"
5482 {
5483 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_PIPE, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5484   vv_destructor(25,&vvmsp[-1].minor);
5485 }
5486 // 2395 "parser.php7.c"
5487         break;
5488       case 98:
5489 // 681 "parser.php7.lemon"
5490 {
5491 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_RANGE, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5492   vv_destructor(6,&vvmsp[-1].minor);
5493 }
5494 // 2403 "parser.php7.c"
5495         break;
5496       case 99:
5497 // 685 "parser.php7.lemon"
5498 {
5499 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_EQUALS, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5500   vv_destructor(10,&vvmsp[-1].minor);
5501 }
5502 // 2411 "parser.php7.c"
5503         break;
5504       case 100:
5505 // 689 "parser.php7.lemon"
5506 {
5507 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_NOT_ISSET, &vvmsp[-2].minor.vv186, NULL, NULL, status->scanner_state);
5508   vv_destructor(11,&vvmsp[-1].minor);
5509   vv_destructor(80,&vvmsp[0].minor);
5510 }
5511 // 2420 "parser.php7.c"
5512         break;
5513       case 101:
5514 // 693 "parser.php7.lemon"
5515 {
5516 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_ISSET, &vvmsp[-2].minor.vv186, NULL, NULL, status->scanner_state);
5517   vv_destructor(9,&vvmsp[-1].minor);
5518   vv_destructor(80,&vvmsp[0].minor);
5519 }
5520 // 2429 "parser.php7.c"
5521         break;
5522       case 102:
5523 // 697 "parser.php7.lemon"
5524 {
5525 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_NOT_ISEMPTY, &vvmsp[-2].minor.vv186, NULL, NULL, status->scanner_state);
5526   vv_destructor(11,&vvmsp[-1].minor);
5527   vv_destructor(81,&vvmsp[0].minor);
5528 }
5529 // 2438 "parser.php7.c"
5530         break;
5531       case 103:
5532 // 701 "parser.php7.lemon"
5533 {
5534 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_ISEMPTY, &vvmsp[-2].minor.vv186, NULL, NULL, status->scanner_state);
5535   vv_destructor(9,&vvmsp[-1].minor);
5536   vv_destructor(81,&vvmsp[0].minor);
5537 }
5538 // 2447 "parser.php7.c"
5539         break;
5540       case 104:
5541 // 705 "parser.php7.lemon"
5542 {
5543 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_NOT_ISEVEN, &vvmsp[-2].minor.vv186, NULL, NULL, status->scanner_state);
5544   vv_destructor(11,&vvmsp[-1].minor);
5545   vv_destructor(82,&vvmsp[0].minor);
5546 }
5547 // 2456 "parser.php7.c"
5548         break;
5549       case 105:
5550 // 709 "parser.php7.lemon"
5551 {
5552 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_ISEVEN, &vvmsp[-2].minor.vv186, NULL, NULL, status->scanner_state);
5553   vv_destructor(9,&vvmsp[-1].minor);
5554   vv_destructor(82,&vvmsp[0].minor);
5555 }
5556 // 2465 "parser.php7.c"
5557         break;
5558       case 106:
5559 // 713 "parser.php7.lemon"
5560 {
5561 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_NOT_ISODD, &vvmsp[-2].minor.vv186, NULL, NULL, status->scanner_state);
5562   vv_destructor(11,&vvmsp[-1].minor);
5563   vv_destructor(83,&vvmsp[0].minor);
5564 }
5565 // 2474 "parser.php7.c"
5566         break;
5567       case 107:
5568 // 717 "parser.php7.lemon"
5569 {
5570 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_ISODD, &vvmsp[-2].minor.vv186, NULL, NULL, status->scanner_state);
5571   vv_destructor(9,&vvmsp[-1].minor);
5572   vv_destructor(83,&vvmsp[0].minor);
5573 }
5574 // 2483 "parser.php7.c"
5575         break;
5576       case 108:
5577 // 721 "parser.php7.lemon"
5578 {
5579 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_NOT_ISNUMERIC, &vvmsp[-2].minor.vv186, NULL, NULL, status->scanner_state);
5580   vv_destructor(11,&vvmsp[-1].minor);
5581   vv_destructor(84,&vvmsp[0].minor);
5582 }
5583 // 2492 "parser.php7.c"
5584         break;
5585       case 109:
5586 // 725 "parser.php7.lemon"
5587 {
5588 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_ISNUMERIC, &vvmsp[-2].minor.vv186, NULL, NULL, status->scanner_state);
5589   vv_destructor(9,&vvmsp[-1].minor);
5590   vv_destructor(84,&vvmsp[0].minor);
5591 }
5592 // 2501 "parser.php7.c"
5593         break;
5594       case 110:
5595 // 729 "parser.php7.lemon"
5596 {
5597 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_NOT_ISSCALAR, &vvmsp[-2].minor.vv186, NULL, NULL, status->scanner_state);
5598   vv_destructor(11,&vvmsp[-1].minor);
5599   vv_destructor(85,&vvmsp[0].minor);
5600 }
5601 // 2510 "parser.php7.c"
5602         break;
5603       case 111:
5604 // 733 "parser.php7.lemon"
5605 {
5606 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_ISSCALAR, &vvmsp[-2].minor.vv186, NULL, NULL, status->scanner_state);
5607   vv_destructor(9,&vvmsp[-1].minor);
5608   vv_destructor(85,&vvmsp[0].minor);
5609 }
5610 // 2519 "parser.php7.c"
5611         break;
5612       case 112:
5613 // 737 "parser.php7.lemon"
5614 {
5615 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_NOT_ISITERABLE, &vvmsp[-2].minor.vv186, NULL, NULL, status->scanner_state);
5616   vv_destructor(11,&vvmsp[-1].minor);
5617   vv_destructor(86,&vvmsp[0].minor);
5618 }
5619 // 2528 "parser.php7.c"
5620         break;
5621       case 113:
5622 // 741 "parser.php7.lemon"
5623 {
5624 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_ISITERABLE, &vvmsp[-2].minor.vv186, NULL, NULL, status->scanner_state);
5625   vv_destructor(9,&vvmsp[-1].minor);
5626   vv_destructor(86,&vvmsp[0].minor);
5627 }
5628 // 2537 "parser.php7.c"
5629         break;
5630       case 114:
5631 // 745 "parser.php7.lemon"
5632 {
5633 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_IS, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5634   vv_destructor(9,&vvmsp[-1].minor);
5635 }
5636 // 2545 "parser.php7.c"
5637         break;
5638       case 115:
5639 // 749 "parser.php7.lemon"
5640 {
5641 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_NOTEQUALS, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5642   vv_destructor(11,&vvmsp[-1].minor);
5643 }
5644 // 2553 "parser.php7.c"
5645         break;
5646       case 116:
5647 // 753 "parser.php7.lemon"
5648 {
5649 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_IDENTICAL, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5650   vv_destructor(16,&vvmsp[-1].minor);
5651 }
5652 // 2561 "parser.php7.c"
5653         break;
5654       case 117:
5655 // 757 "parser.php7.lemon"
5656 {
5657 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_NOTIDENTICAL, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5658   vv_destructor(17,&vvmsp[-1].minor);
5659 }
5660 // 2569 "parser.php7.c"
5661         break;
5662       case 118:
5663 // 761 "parser.php7.lemon"
5664 {
5665 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_LESS, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5666   vv_destructor(12,&vvmsp[-1].minor);
5667 }
5668 // 2577 "parser.php7.c"
5669         break;
5670       case 119:
5671 // 765 "parser.php7.lemon"
5672 {
5673 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_GREATER, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5674   vv_destructor(13,&vvmsp[-1].minor);
5675 }
5676 // 2585 "parser.php7.c"
5677         break;
5678       case 120:
5679 // 769 "parser.php7.lemon"
5680 {
5681 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_GREATEREQUAL, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5682   vv_destructor(14,&vvmsp[-1].minor);
5683 }
5684 // 2593 "parser.php7.c"
5685         break;
5686       case 121:
5687 // 773 "parser.php7.lemon"
5688 {
5689 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_LESSEQUAL, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5690   vv_destructor(15,&vvmsp[-1].minor);
5691 }
5692 // 2601 "parser.php7.c"
5693         break;
5694       case 123:
5695 // 781 "parser.php7.lemon"
5696 {
5697 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_IN, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5698   vv_destructor(3,&vvmsp[-1].minor);
5699 }
5700 // 2609 "parser.php7.c"
5701         break;
5702       case 124:
5703 // 785 "parser.php7.lemon"
5704 {
5705 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_NOT_IN, &vvmsp[-3].minor.vv186, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5706   vv_destructor(26,&vvmsp[-2].minor);
5707   vv_destructor(3,&vvmsp[-1].minor);
5708 }
5709 // 2618 "parser.php7.c"
5710         break;
5711       case 125:
5712 // 789 "parser.php7.lemon"
5713 {
5714 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_NOT, NULL, &vvmsp[0].minor.vv186, NULL, status->scanner_state);
5715   vv_destructor(26,&vvmsp[-1].minor);
5716 }
5717 // 2626 "parser.php7.c"
5718         break;
5719       case 126:
5720 // 793 "parser.php7.lemon"
5721 {
5722 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_INCR, &vvmsp[-1].minor.vv186, NULL, NULL, status->scanner_state);
5723   vv_destructor(27,&vvmsp[0].minor);
5724 }
5725 // 2634 "parser.php7.c"
5726         break;
5727       case 127:
5728 // 797 "parser.php7.lemon"
5729 {
5730 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_DECR, &vvmsp[-1].minor.vv186, NULL, NULL, status->scanner_state);
5731   vv_destructor(28,&vvmsp[0].minor);
5732 }
5733 // 2642 "parser.php7.c"
5734         break;
5735       case 128:
5736 // 801 "parser.php7.lemon"
5737 {
5738 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_ENCLOSED, &vvmsp[-1].minor.vv186, NULL, NULL, status->scanner_state);
5739   vv_destructor(29,&vvmsp[-2].minor);
5740   vv_destructor(52,&vvmsp[0].minor);
5741 }
5742 // 2651 "parser.php7.c"
5743         break;
5744       case 129:
5745 // 805 "parser.php7.lemon"
5746 {
5747 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_ARRAY, NULL, NULL, NULL, status->scanner_state);
5748   vv_destructor(24,&vvmsp[-1].minor);
5749   vv_destructor(50,&vvmsp[0].minor);
5750 }
5751 // 2660 "parser.php7.c"
5752         break;
5753       case 130:
5754 // 809 "parser.php7.lemon"
5755 {
5756 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_ARRAY, &vvmsp[-1].minor.vv186, NULL, NULL, status->scanner_state);
5757   vv_destructor(24,&vvmsp[-2].minor);
5758   vv_destructor(50,&vvmsp[0].minor);
5759 }
5760 // 2669 "parser.php7.c"
5761         break;
5762       case 131:
5763 // 813 "parser.php7.lemon"
5764 {
5765 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_ARRAY, NULL, NULL, NULL, status->scanner_state);
5766   vv_destructor(87,&vvmsp[-1].minor);
5767   vv_destructor(88,&vvmsp[0].minor);
5768 }
5769 // 2678 "parser.php7.c"
5770         break;
5771       case 132:
5772 // 817 "parser.php7.lemon"
5773 {
5774 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_ARRAY, &vvmsp[-1].minor.vv186, NULL, NULL, status->scanner_state);
5775   vv_destructor(87,&vvmsp[-2].minor);
5776   vv_destructor(88,&vvmsp[0].minor);
5777 }
5778 // 2687 "parser.php7.c"
5779         break;
5780       case 134:
5781 // 825 "parser.php7.lemon"
5782 {
5783 	phvolt_ret_expr(&vvgotominor.vv186, PHVOLT_T_TERNARY, &vvmsp[-2].minor.vv186, &vvmsp[0].minor.vv186, &vvmsp[-4].minor.vv186, status->scanner_state);
5784   vv_destructor(4,&vvmsp[-3].minor);
5785   vv_destructor(5,&vvmsp[-1].minor);
5786 }
5787 // 2696 "parser.php7.c"
5788         break;
5789       case 135:
5790 // 829 "parser.php7.lemon"
5791 {
5792 	phvolt_ret_slice(&vvgotominor.vv186, &vvmsp[-4].minor.vv186, NULL, &vvmsp[-1].minor.vv186, status->scanner_state);
5793   vv_destructor(24,&vvmsp[-3].minor);
5794   vv_destructor(5,&vvmsp[-2].minor);
5795   vv_destructor(50,&vvmsp[0].minor);
5796 }
5797 // 2706 "parser.php7.c"
5798         break;
5799       case 136:
5800 // 833 "parser.php7.lemon"
5801 {
5802 	phvolt_ret_slice(&vvgotominor.vv186, &vvmsp[-4].minor.vv186, &vvmsp[-2].minor.vv186, NULL, status->scanner_state);
5803   vv_destructor(24,&vvmsp[-3].minor);
5804   vv_destructor(5,&vvmsp[-1].minor);
5805   vv_destructor(50,&vvmsp[0].minor);
5806 }
5807 // 2716 "parser.php7.c"
5808         break;
5809       case 137:
5810 // 837 "parser.php7.lemon"
5811 {
5812 	phvolt_ret_slice(&vvgotominor.vv186, &vvmsp[-5].minor.vv186, &vvmsp[-3].minor.vv186, &vvmsp[-1].minor.vv186, status->scanner_state);
5813   vv_destructor(24,&vvmsp[-4].minor);
5814   vv_destructor(5,&vvmsp[-2].minor);
5815   vv_destructor(50,&vvmsp[0].minor);
5816 }
5817 // 2726 "parser.php7.c"
5818         break;
5819       case 142:
5820       case 150:
5821 // 869 "parser.php7.lemon"
5822 {
5823 	phvolt_ret_named_item(&vvgotominor.vv186, vvmsp[-2].minor.vv0, &vvmsp[0].minor.vv186, status->scanner_state);
5824   vv_destructor(5,&vvmsp[-1].minor);
5825 }
5826 // 2735 "parser.php7.c"
5827         break;
5828       case 143:
5829       case 149:
5830 // 873 "parser.php7.lemon"
5831 {
5832 	phvolt_ret_named_item(&vvgotominor.vv186, NULL, &vvmsp[0].minor.vv186, status->scanner_state);
5833 }
5834 // 2743 "parser.php7.c"
5835         break;
5836       case 145:
5837 // 885 "parser.php7.lemon"
5838 {
5839 	phvolt_ret_func_call(&vvgotominor.vv186, &vvmsp[-3].minor.vv186, &vvmsp[-1].minor.vv186, status->scanner_state);
5840   vv_destructor(29,&vvmsp[-2].minor);
5841   vv_destructor(52,&vvmsp[0].minor);
5842 }
5843 // 2752 "parser.php7.c"
5844         break;
5845       case 146:
5846 // 889 "parser.php7.lemon"
5847 {
5848 	phvolt_ret_func_call(&vvgotominor.vv186, &vvmsp[-2].minor.vv186, NULL, status->scanner_state);
5849   vv_destructor(29,&vvmsp[-1].minor);
5850   vv_destructor(52,&vvmsp[0].minor);
5851 }
5852 // 2761 "parser.php7.c"
5853         break;
5854   };
5855   vvgoto = vvRuleInfo[vvruleno].lhs;
5856   vvsize = vvRuleInfo[vvruleno].nrhs;
5857   vvpParser->vvidx -= vvsize;
5858   vvact = vv_find_reduce_action(vvpParser,vvgoto);
5859   if( vvact < VVNSTATE ){
5860     vv_shift(vvpParser,vvact,vvgoto,&vvgotominor);
5861   }else if( vvact == VVNSTATE + VVNRULE + 1 ){
5862     vv_accept(vvpParser);
5863   }
5864 }
5865 
5866 /*
5867 ** The following code executes when the parse fails
5868 */
vv_parse_failed(vvParser * vvpParser)5869 static void vv_parse_failed(
5870   vvParser *vvpParser           /* The parser */
5871 ){
5872   phvolt_ARG_FETCH;
5873 #ifndef NDEBUG
5874   if( vvTraceFILE ){
5875     fprintf(vvTraceFILE,"%sFail!\n",vvTracePrompt);
5876   }
5877 #endif
5878   while( vvpParser->vvidx>=0 ) vv_pop_parser_stack(vvpParser);
5879   /* Here code is inserted which will be executed whenever the
5880   ** parser fails */
5881   phvolt_ARG_STORE; /* Suppress warning about unused %extra_argument variable */
5882 }
5883 
5884 /*
5885 ** The following code executes when a syntax error first occurs.
5886 */
vv_syntax_error(vvParser * vvpParser,int vvmajor,VVMINORTYPE vvminor)5887 static void vv_syntax_error(
5888   vvParser *vvpParser,           /* The parser */
5889   int vvmajor,                   /* The major type of the error token */
5890   VVMINORTYPE vvminor            /* The minor type of the error token */
5891 ){
5892   phvolt_ARG_FETCH;
5893 #define VTOKEN (vvminor.vv0)
5894 // 46 "parser.php7.lemon"
5895 
5896 	{
5897 
5898 		smart_str error_str = {0};
5899 
5900 		char *token_name = NULL;
5901 		const phvolt_token_names *tokens = phvolt_tokens;
5902 		int token_len = 0;
5903 		int active_token = status->scanner_state->active_token;
5904 
5905 		if (status->scanner_state->start_length) {
5906 
5907 			if (active_token) {
5908 
5909 				do {
5910 					if (tokens->code == active_token) {
5911 						token_name = tokens->name;
5912 						token_len = tokens->len;
5913 						break;
5914 					}
5915 					++tokens;
5916 				} while (tokens[0].code != 0);
5917 
5918 			}
5919 
5920 			smart_str_appendl(&error_str, "Syntax error, unexpected token ", sizeof("Syntax error, unexpected token ") - 1);
5921 			if (!token_name) {
5922 				smart_str_appendl(&error_str, "UNKNOWN", sizeof("UNKNOWN") - 1);
5923 			} else {
5924 				smart_str_appendl(&error_str, token_name, token_len);
5925 			}
5926 
5927 			if (status->token->value) {
5928 				smart_str_appendc(&error_str, '(');
5929 				smart_str_appendl(&error_str, status->token->value, status->token->len);
5930 				smart_str_appendc(&error_str, ')');
5931 			}
5932 
5933 			smart_str_appendl(&error_str, " in ", sizeof(" in ") - 1);
5934 			smart_str_appendl(&error_str, Z_STRVAL_P(status->scanner_state->active_file), Z_STRLEN_P(status->scanner_state->active_file));
5935 			smart_str_appendl(&error_str, " on line ", sizeof(" on line ") - 1);
5936 
5937 			{
5938 				char stmp[MAX_LENGTH_OF_LONG + 1];
5939 				int str_len;
5940 				str_len = slprintf(stmp, sizeof(stmp), "%ld", status->scanner_state->active_line);
5941 				smart_str_appendl(&error_str, stmp, str_len);
5942 			}
5943 
5944 		} else {
5945 
5946 			smart_str_appendl(&error_str, "Syntax error, unexpected EOF in ", sizeof("Syntax error, unexpected EOF in ") - 1);
5947 			smart_str_appendl(&error_str, Z_STRVAL_P(status->scanner_state->active_file), Z_STRLEN_P(status->scanner_state->active_file));
5948 
5949 			/* Report unclosed 'if' blocks */
5950 			if ((status->scanner_state->if_level + status->scanner_state->old_if_level) > 0) {
5951 				if ((status->scanner_state->if_level + status->scanner_state->old_if_level) == 1) {
5952 					smart_str_appendl(&error_str, ", there is one 'if' block without close", sizeof(", there is one 'if' block without close") - 1);
5953 				} else {
5954 					smart_str_appendl(&error_str, ", there are ", sizeof(", there are ") - 1);
5955 					{
5956 						char stmp[MAX_LENGTH_OF_LONG + 1];
5957 						int str_len;
5958 						str_len = slprintf(stmp, sizeof(stmp), "%ld", status->scanner_state->if_level + status->scanner_state->old_if_level);
5959 						smart_str_appendl(&error_str, stmp, str_len);
5960 					}
5961 					smart_str_appendl(&error_str, " 'if' blocks without close", sizeof(" 'if' blocks without close") - 1);
5962 				}
5963 			}
5964 
5965 			/* Report unclosed 'for' blocks */
5966 			if (status->scanner_state->for_level > 0) {
5967 				if (status->scanner_state->for_level == 1) {
5968 					smart_str_appendl(&error_str, ", there is one 'for' block without close", sizeof(", there is one 'for' block without close") - 1);
5969 				} else {
5970 					smart_str_appendl(&error_str, ", there are ", sizeof(", there are ") - 1);
5971 					{
5972 						char stmp[MAX_LENGTH_OF_LONG + 1];
5973 						int str_len;
5974 						str_len = slprintf(stmp, sizeof(stmp), "%ld", status->scanner_state->if_level);
5975 						smart_str_appendl(&error_str, stmp, str_len);
5976 					}
5977 					smart_str_appendl(&error_str, " 'for' blocks without close", sizeof(" 'for' blocks without close") - 1);
5978 				}
5979 			}
5980 
5981 			/* Report unclosed 'switch' blocks */
5982 			if (status->scanner_state->switch_level > 0) {
5983 				smart_str_appendl(&error_str, ", there is a 'switch' block without 'endswitch'", sizeof(", there is a 'switch' block without 'endswitch'") - 1);
5984 			}
5985 		}
5986 
5987 		smart_str_0(&error_str);
5988 
5989 		if (error_str.s) {
5990 			status->syntax_error = estrndup(ZSTR_VAL(error_str.s), ZSTR_LEN(error_str.s));
5991 			status->syntax_error_len = ZSTR_LEN(error_str.s);
5992 		} else {
5993 			status->syntax_error = NULL;
5994 		}
5995 	}
5996 
5997 	status->status = PHVOLT_PARSING_FAILED;
5998 
5999 // 2908 "parser.php7.c"
6000   phvolt_ARG_STORE; /* Suppress warning about unused %extra_argument variable */
6001 }
6002 
6003 /*
6004 ** The following is executed when the parser accepts
6005 */
vv_accept(vvParser * vvpParser)6006 static void vv_accept(
6007   vvParser *vvpParser           /* The parser */
6008 ){
6009   phvolt_ARG_FETCH;
6010 #ifndef NDEBUG
6011   if( vvTraceFILE ){
6012     fprintf(vvTraceFILE,"%sAccept!\n",vvTracePrompt);
6013   }
6014 #endif
6015   while( vvpParser->vvidx>=0 ) vv_pop_parser_stack(vvpParser);
6016   /* Here code is inserted which will be executed whenever the
6017   ** parser accepts */
6018   phvolt_ARG_STORE; /* Suppress warning about unused %extra_argument variable */
6019 }
6020 
6021 /* The main parser program.
6022 ** The first argument is a pointer to a structure obtained from
6023 ** "phvolt_Alloc" which describes the current state of the parser.
6024 ** The second argument is the major token number.  The third is
6025 ** the minor token.  The fourth optional argument is whatever the
6026 ** user wants (and specified in the grammar) and is available for
6027 ** use by the action routines.
6028 **
6029 ** Inputs:
6030 ** <ul>
6031 ** <li> A pointer to the parser (an opaque structure.)
6032 ** <li> The major token number.
6033 ** <li> The minor token number.
6034 ** <li> An option argument of a grammar-specified type.
6035 ** </ul>
6036 **
6037 ** Outputs:
6038 ** None.
6039 */
phvolt_(void * vvp,int vvmajor,phvolt_TOKENTYPE vvminor phvolt_ARG_PDECL)6040 void phvolt_(
6041   void *vvp,                   /* The parser */
6042   int vvmajor,                 /* The major token code number */
6043   phvolt_TOKENTYPE vvminor       /* The value for the token */
6044   phvolt_ARG_PDECL               /* Optional %extra_argument parameter */
6045 ){
6046   VVMINORTYPE vvminorunion;
6047   int vvact;            /* The parser action. */
6048   int vvendofinput;     /* True if we are at the end of input */
6049   int vverrorhit = 0;   /* True if vvmajor has invoked an error */
6050   vvParser *vvpParser;  /* The parser */
6051 
6052   /* (re)initialize the parser, if necessary */
6053   vvpParser = (vvParser*)vvp;
6054   if( vvpParser->vvidx<0 ){
6055     if( vvmajor==0 ) return;
6056     vvpParser->vvidx = 0;
6057     vvpParser->vverrcnt = -1;
6058     vvpParser->vvstack[0].stateno = 0;
6059     vvpParser->vvstack[0].major = 0;
6060   }
6061   vvminorunion.vv0 = vvminor;
6062   vvendofinput = (vvmajor==0);
6063   phvolt_ARG_STORE;
6064 
6065 #ifndef NDEBUG
6066   if( vvTraceFILE ){
6067     fprintf(vvTraceFILE,"%sInput %s\n",vvTracePrompt,vvTokenName[vvmajor]);
6068   }
6069 #endif
6070 
6071   do{
6072     vvact = vv_find_shift_action(vvpParser,vvmajor);
6073     if( vvact<VVNSTATE ){
6074       vv_shift(vvpParser,vvact,vvmajor,&vvminorunion);
6075       vvpParser->vverrcnt--;
6076       if( vvendofinput && vvpParser->vvidx>=0 ){
6077         vvmajor = 0;
6078       }else{
6079         vvmajor = VVNOCODE;
6080       }
6081     }else if( vvact < VVNSTATE + VVNRULE ){
6082       vv_reduce(vvpParser,vvact-VVNSTATE);
6083     }else if( vvact == VV_ERROR_ACTION ){
6084       int vvmx;
6085 #ifndef NDEBUG
6086       if( vvTraceFILE ){
6087         fprintf(vvTraceFILE,"%sSyntax Error!\n",vvTracePrompt);
6088       }
6089 #endif
6090 #ifdef VVERRORSYMBOL
6091       /* A syntax error has occurred.
6092       ** The response to an error depends upon whether or not the
6093       ** grammar defines an error token "ERROR".
6094       **
6095       ** This is what we do if the grammar does define ERROR:
6096       **
6097       **  * Call the %syntax_error function.
6098       **
6099       **  * Begin popping the stack until we enter a state where
6100       **    it is legal to shift the error symbol, then shift
6101       **    the error symbol.
6102       **
6103       **  * Set the error count to three.
6104       **
6105       **  * Begin accepting and shifting new tokens.  No new error
6106       **    processing will occur until three tokens have been
6107       **    shifted successfully.
6108       **
6109       */
6110       if( vvpParser->vverrcnt<0 ){
6111         vv_syntax_error(vvpParser,vvmajor,vvminorunion);
6112       }
6113       vvmx = vvpParser->vvstack[vvpParser->vvidx].major;
6114       if( vvmx==VVERRORSYMBOL || vverrorhit ){
6115 #ifndef NDEBUG
6116         if( vvTraceFILE ){
6117           fprintf(vvTraceFILE,"%sDiscard input token %s\n",
6118              vvTracePrompt,vvTokenName[vvmajor]);
6119         }
6120 #endif
6121         vv_destructor(vvmajor,&vvminorunion);
6122         vvmajor = VVNOCODE;
6123       }else{
6124          while(
6125           vvpParser->vvidx >= 0 &&
6126           vvmx != VVERRORSYMBOL &&
6127           (vvact = vv_find_shift_action(vvpParser,VVERRORSYMBOL)) >= VVNSTATE
6128         ){
6129           vv_pop_parser_stack(vvpParser);
6130         }
6131         if( vvpParser->vvidx < 0 || vvmajor==0 ){
6132           vv_destructor(vvmajor,&vvminorunion);
6133           vv_parse_failed(vvpParser);
6134           vvmajor = VVNOCODE;
6135         }else if( vvmx!=VVERRORSYMBOL ){
6136           VVMINORTYPE u2;
6137           u2.VVERRSYMDT = 0;
6138           vv_shift(vvpParser,vvact,VVERRORSYMBOL,&u2);
6139         }
6140       }
6141       vvpParser->vverrcnt = 3;
6142       vverrorhit = 1;
6143 #else  /* VVERRORSYMBOL is not defined */
6144       /* This is what we do if the grammar does not define ERROR:
6145       **
6146       **  * Report an error message, and throw away the input token.
6147       **
6148       **  * If the input token is $, then fail the parse.
6149       **
6150       ** As before, subsequent error messages are suppressed until
6151       ** three input tokens have been successfully shifted.
6152       */
6153       if( vvpParser->vverrcnt<=0 ){
6154         vv_syntax_error(vvpParser,vvmajor,vvminorunion);
6155       }
6156       vvpParser->vverrcnt = 3;
6157       vv_destructor(vvmajor,&vvminorunion);
6158       if( vvendofinput ){
6159         vv_parse_failed(vvpParser);
6160       }
6161       vvmajor = VVNOCODE;
6162 #endif
6163     }else{
6164       vv_accept(vvpParser);
6165       vvmajor = VVNOCODE;
6166     }
6167   }while( vvmajor!=VVNOCODE && vvpParser->vvidx>=0 );
6168   return;
6169 }
6170 #endif
6171 
6172 /*
6173   +------------------------------------------------------------------------+
6174   | Phalcon Framework													   |
6175   +------------------------------------------------------------------------+
6176   | Copyright (c) 2011-present Phalcon Team (http://www.phalconphp.com)    |
6177   +------------------------------------------------------------------------+
6178   | This source file is subject to the New BSD License that is bundled	   |
6179   | with this package in the file docs/LICENSE.txt.					       |
6180   |																	       |
6181   | If you did not receive a copy of the license and are unable to		   |
6182   | obtain it through the world-wide-web, please send an email			   |
6183   | to license@phalconphp.com so we can send you a copy immediately.	   |
6184   +------------------------------------------------------------------------+
6185   | Authors: Andres Gutierrez <andres@phalconphp.com>					   |
6186   |		  Eduar Carvajal <eduar@phalconphp.com>						       |
6187   +------------------------------------------------------------------------+
6188 */
6189 
6190 const phvolt_token_names phvolt_tokens[] =
6191 {
6192   { SL("INTEGER"),		PHVOLT_T_INTEGER },
6193   { SL("DOUBLE"),		 PHVOLT_T_DOUBLE },
6194   { SL("STRING"),		 PHVOLT_T_STRING },
6195   { SL("IDENTIFIER"),	 PHVOLT_T_IDENTIFIER },
6196   { SL("MINUS"),		  PHVOLT_T_MINUS },
6197   { SL("+"),			  PHVOLT_T_ADD },
6198   { SL("-"),			  PHVOLT_T_SUB },
6199   { SL("*"),			  PHVOLT_T_MUL },
6200   { SL("/"),			  PHVOLT_T_DIV },
6201   { SL("%%"),			 PHVOLT_T_MOD },
6202   { SL("!"),			  PHVOLT_T_NOT },
6203   { SL("~"),			  PHVOLT_T_CONCAT },
6204   { SL("AND"),			PHVOLT_T_AND },
6205   { SL("OR"),			 PHVOLT_T_OR },
6206   { SL("DOT"),			PHVOLT_T_DOT },
6207   { SL("COMMA"),		  PHVOLT_T_COMMA },
6208   { SL("EQUALS"),		 PHVOLT_T_EQUALS },
6209   { SL("NOT EQUALS"),	 PHVOLT_T_NOTEQUALS },
6210   { SL("IDENTICAL"),	  PHVOLT_T_IDENTICAL },
6211   { SL("NOT IDENTICAL"),  PHVOLT_T_NOTIDENTICAL },
6212   { SL("NOT"),			PHVOLT_T_NOT },
6213   { SL("RANGE"),		  PHVOLT_T_RANGE },
6214   { SL("COLON"),		  PHVOLT_T_COLON },
6215   { SL("QUESTION MARK"),  PHVOLT_T_QUESTION },
6216   { SL("<"),			  PHVOLT_T_LESS },
6217   { SL("<="),			 PHVOLT_T_LESSEQUAL },
6218   { SL(">"),			  PHVOLT_T_GREATER },
6219   { SL(">="),			 PHVOLT_T_GREATEREQUAL },
6220   { SL("("),			  PHVOLT_T_PARENTHESES_OPEN },
6221   { SL(")"),			  PHVOLT_T_PARENTHESES_CLOSE },
6222   { SL("["),			  PHVOLT_T_SBRACKET_OPEN },
6223   { SL("]"),			  PHVOLT_T_SBRACKET_CLOSE },
6224   { SL("{"),			  PHVOLT_T_CBRACKET_OPEN },
6225   { SL("}"),			  PHVOLT_T_CBRACKET_CLOSE },
6226   { SL("{%"),			 PHVOLT_T_OPEN_DELIMITER },
6227   { SL("%}"),			 PHVOLT_T_CLOSE_DELIMITER },
6228   { SL("{{"),			 PHVOLT_T_OPEN_EDELIMITER },
6229   { SL("}}"),			 PHVOLT_T_CLOSE_EDELIMITER },
6230   { SL("IF"),			 PHVOLT_T_IF },
6231   { SL("ELSE"),		   PHVOLT_T_ELSE },
6232   { SL("ELSEIF"),		 PHVOLT_T_ELSEIF },
6233   { SL("ELSEFOR"),		PHVOLT_T_ELSEFOR },
6234   { SL("ENDIF"),		  PHVOLT_T_ENDIF },
6235   { SL("FOR"),			PHVOLT_T_FOR },
6236   { SL("SWITCH"),		PHVOLT_T_SWITCH },
6237   { SL("CASE"),			PHVOLT_T_CASE },
6238   { SL("DEFAULT"),		PHVOLT_T_DEFAULT },
6239   { SL("ENDSWITCH"),	PHVOLT_T_ENDSWITCH },
6240   { SL("IN"),			 PHVOLT_T_IN },
6241   { SL("ENDFOR"),		 PHVOLT_T_ENDFOR },
6242   { SL("SET"),			PHVOLT_T_SET },
6243   { SL("ASSIGN"),		 PHVOLT_T_ASSIGN },
6244   { SL("+="),			 PHVOLT_T_ADD_ASSIGN },
6245   { SL("-="),			 PHVOLT_T_SUB_ASSIGN },
6246   { SL("*="),			 PHVOLT_T_MUL_ASSIGN },
6247   { SL("/="),			 PHVOLT_T_DIV_ASSIGN },
6248   { SL("++"),			 PHVOLT_T_INCR },
6249   { SL("--"),			 PHVOLT_T_DECR },
6250   { SL("BLOCK"),		  PHVOLT_T_BLOCK },
6251   { SL("ENDBLOCK"),	   PHVOLT_T_ENDBLOCK },
6252   { SL("CACHE"),		  PHVOLT_T_CACHE },
6253   { SL("ENDCACHE"),	   PHVOLT_T_ENDCACHE },
6254   { SL("EXTENDS"),		PHVOLT_T_EXTENDS },
6255   { SL("IS"),			 PHVOLT_T_IS },
6256   { SL("DEFINED"),		PHVOLT_T_DEFINED },
6257   { SL("EMPTY"),		  PHVOLT_T_EMPTY },
6258   { SL("EVEN"),		   PHVOLT_T_EVEN },
6259   { SL("ODD"),			PHVOLT_T_ODD },
6260   { SL("NUMERIC"),		PHVOLT_T_NUMERIC },
6261   { SL("SCALAR"),		 PHVOLT_T_SCALAR },
6262   { SL("ITERABLE"),	   PHVOLT_T_ITERABLE },
6263   { SL("INCLUDE"),		PHVOLT_T_INCLUDE },
6264   { SL("DO"),			 PHVOLT_T_DO },
6265   { SL("WHITESPACE"),	 PHVOLT_T_IGNORE },
6266   { SL("AUTOESCAPE"),	 PHVOLT_T_AUTOESCAPE },
6267   { SL("ENDAUTOESCAPE"),  PHVOLT_T_ENDAUTOESCAPE },
6268   { SL("CONTINUE"),	   PHVOLT_T_CONTINUE },
6269   { SL("BREAK"),		  PHVOLT_T_BREAK },
6270   { SL("WITH"),		   PHVOLT_T_WITH },
6271   { SL("RETURN"),		 PHVOLT_T_RETURN },
6272   { SL("MACRO"),		  PHVOLT_T_MACRO },
6273   { SL("ENDMACRO"),	   PHVOLT_T_ENDMACRO },
6274   { SL("CALL"),		   PHVOLT_T_CALL },
6275   { SL("WITH"),		   PHVOLT_T_WITH },
6276   { NULL, 0, 0 }
6277 };
6278 
6279 /**
6280  * Wrapper to alloc memory within the parser
6281  */
phvolt_wrapper_alloc(size_t bytes)6282 static void *phvolt_wrapper_alloc(size_t bytes){
6283 	return emalloc(bytes);
6284 }
6285 
6286 /**
6287  * Wrapper to free memory within the parser
6288  */
phvolt_wrapper_free(void * pointer)6289 static void phvolt_wrapper_free(void *pointer){
6290 	efree(pointer);
6291 }
6292 
6293 /**
6294  * Creates a parser_token to be passed to the parser
6295  */
phvolt_parse_with_token(void * phvolt_parser,int opcode,int parsercode,phvolt_scanner_token * token,phvolt_parser_status * parser_status)6296 static void phvolt_parse_with_token(void* phvolt_parser, int opcode, int parsercode, phvolt_scanner_token *token, phvolt_parser_status *parser_status){
6297 
6298 	phvolt_parser_token *pToken;
6299 
6300 	pToken = emalloc(sizeof(phvolt_parser_token));
6301 	pToken->opcode = opcode;
6302 	pToken->token = token->value;
6303 	pToken->token_len = token->len;
6304 	pToken->free_flag = 1;
6305 
6306 	phvolt_(phvolt_parser, parsercode, pToken, parser_status);
6307 
6308 	token->value = NULL;
6309 	token->len = 0;
6310 }
6311 
6312 /**
6313  * Creates an error message
6314  */
phvolt_create_error_msg(phvolt_parser_status * parser_status,char * message)6315 static void phvolt_create_error_msg(phvolt_parser_status *parser_status, char *message){
6316 
6317 	unsigned int length = (128 + Z_STRLEN_P(parser_status->scanner_state->active_file));
6318 	char *str = emalloc(sizeof(char) * length);
6319 
6320 	snprintf(str, length, "%s in %s on line %d", message, Z_STRVAL_P(parser_status->scanner_state->active_file), parser_status->scanner_state->active_line);
6321 	str[length - 1] = '\0';
6322 
6323 	parser_status->syntax_error = estrndup(str, strlen(str));
6324 	efree(str);
6325 }
6326 
6327 /**
6328  * Creates an error message when it's triggered by the scanner
6329  */
phvolt_scanner_error_msg(phvolt_parser_status * parser_status,zval ** error_msg TSRMLS_DC)6330 static void phvolt_scanner_error_msg(phvolt_parser_status *parser_status, zval **error_msg TSRMLS_DC){
6331 
6332 	char *error, *error_part;
6333 	int length;
6334 	phvolt_scanner_state *state = parser_status->scanner_state;
6335 
6336 #if PHP_VERSION_ID < 70000
6337 	MAKE_STD_ZVAL(*error_msg);
6338 #else
6339 	ZVAL_NULL(*error_msg);
6340 #endif
6341 
6342 	if (state->start) {
6343 		error = emalloc(sizeof(char) * 72 + state->start_length +  Z_STRLEN_P(state->active_file));
6344 		if (state->start_length > 16) {
6345 			length = 72 + Z_STRLEN_P(state->active_file);
6346 			error_part = estrndup(state->start, 16);
6347 			snprintf(error, length, "Scanning error before '%s...' in %s on line %d", error_part, Z_STRVAL_P(state->active_file), state->active_line);
6348 			error[length - 1] = '\0';
6349 			efree(error_part);
6350 		} else {
6351 			length = 48 + state->start_length + Z_STRLEN_P(state->active_file);
6352 			snprintf(error, length, "Scanning error before '%s' in %s on line %d", state->start, Z_STRVAL_P(state->active_file), state->active_line);
6353 		}
6354 	} else {
6355 		error = emalloc(sizeof(char) * (32 + Z_STRLEN_P(state->active_file)));
6356 		length = 32 + Z_STRLEN_P(state->active_file);
6357 		snprintf(error, length, "Scanning error near to EOF in %s", Z_STRVAL_P(state->active_file));
6358 	}
6359 
6360 	error[length - 1] = '\0';
6361 #if PHP_VERSION_ID < 70000
6362 	ZVAL_STRING(*error_msg, error, 1);
6363 #else
6364 	ZVAL_STRING(*error_msg, error);
6365 #endif
6366 
6367 	efree(error);
6368 }
6369 
6370 /**
6371  * Receives the volt code tokenizes and parses it
6372  */
phvolt_parse_view(zval * result,zval * view_code,zval * template_path TSRMLS_DC)6373 int phvolt_parse_view(zval *result, zval *view_code, zval *template_path TSRMLS_DC){
6374 
6375 #if PHP_VERSION_ID < 70000
6376 	zval *error_msg = NULL;
6377 #else
6378 	zval em, *error_msg = &em;
6379 #endif
6380 
6381 	ZVAL_NULL(result);
6382 
6383 #if PHP_VERSION_ID >= 70000
6384 	ZVAL_NULL(error_msg);
6385 #endif
6386 
6387 	if (Z_TYPE_P(view_code) != IS_STRING) {
6388 		ZEPHIR_THROW_EXCEPTION_STRW(phalcon_mvc_view_exception_ce, "View code must be a string");
6389 		return FAILURE;
6390 	}
6391 
6392 	if (phvolt_internal_parse_view(&result, view_code, template_path, &error_msg TSRMLS_CC) == FAILURE) {
6393 		ZEPHIR_THROW_EXCEPTION_STRW(phalcon_mvc_view_exception_ce, Z_STRVAL_P(error_msg));
6394 #if PHP_VERSION_ID < 70000
6395 		zval_ptr_dtor(&error_msg);
6396 #else
6397 		zval_dtor(error_msg);
6398 #endif
6399 		return FAILURE;
6400 	}
6401 
6402 	return SUCCESS;
6403 }
6404 
6405 /**
6406  * Checks whether the token has only blank characters
6407  */
phvolt_is_blank_string(phvolt_scanner_token * token)6408 int phvolt_is_blank_string(phvolt_scanner_token *token){
6409 
6410 	char *marker = token->value;
6411 	unsigned int ch, i;
6412 
6413 	for (i = 0; i < token->len; i++) {
6414 		ch = *marker;
6415 		if (ch != ' ' && ch != '\t' && ch != '\n' && ch != '\r' && ch != 11) {
6416 			return 0;
6417 		}
6418 		marker++;
6419 	}
6420 
6421 	return 1;
6422 }
6423 
6424 /**
6425  * Parses a volt template returning an intermediate array representation
6426  */
phvolt_internal_parse_view(zval ** result,zval * view_code,zval * template_path,zval ** error_msg TSRMLS_DC)6427 int phvolt_internal_parse_view(zval **result, zval *view_code, zval *template_path, zval **error_msg TSRMLS_DC) {
6428 
6429 	char *error;
6430 	phvolt_scanner_state *state;
6431 	phvolt_scanner_token token;
6432 	int scanner_status, status = SUCCESS;
6433 	phvolt_parser_status *parser_status = NULL;
6434 	void* phvolt_parser;
6435 
6436 	/** Check if the view has code */
6437 	if (!Z_STRVAL_P(view_code)) {
6438 #if PHP_VERSION_ID < 70000
6439 		MAKE_STD_ZVAL(*error_msg);
6440 		ZVAL_STRING(*error_msg, "View code cannot be null", 1);
6441 #else
6442 		ZVAL_STRING(*error_msg, "View code cannot be null");
6443 #endif
6444 		return FAILURE;
6445 	}
6446 
6447 	if (!Z_STRLEN_P(view_code)) {
6448 		array_init(*result);
6449 		return SUCCESS;
6450 	}
6451 
6452 	/** Start the reentrant parser */
6453 	phvolt_parser = phvolt_Alloc(phvolt_wrapper_alloc);
6454 	if (unlikely(!phvolt_parser)) {
6455 #if PHP_VERSION_ID < 70000
6456 		MAKE_STD_ZVAL(*error_msg);
6457 		ZVAL_STRING(*error_msg, "Memory allocation error", 1);
6458 #else
6459 		ZVAL_STRING(*error_msg, "Memory allocation error");
6460 #endif
6461 		return FAILURE;
6462 	}
6463 
6464 	parser_status = emalloc(sizeof(phvolt_parser_status));
6465 	state = emalloc(sizeof(phvolt_scanner_state));
6466 
6467 	parser_status->status = PHVOLT_PARSING_OK;
6468 	parser_status->scanner_state = state;
6469 #if PHP_VERSION_ID < 70000
6470 	parser_status->ret = NULL;
6471 #else
6472 	ZVAL_UNDEF(&parser_status->ret);
6473 #endif
6474 	parser_status->token = &token;
6475 	parser_status->syntax_error = NULL;
6476 
6477 	/** Initialize the scanner state */
6478 	state->active_token = 0;
6479 	state->start = Z_STRVAL_P(view_code);
6480 	state->mode = PHVOLT_MODE_RAW;
6481 	state->raw_buffer = emalloc(sizeof(char) * PHVOLT_RAW_BUFFER_SIZE);
6482 	state->raw_buffer_size = PHVOLT_RAW_BUFFER_SIZE;
6483 	state->raw_buffer_cursor = 0;
6484 	state->active_file = template_path;
6485 	state->active_line = 1;
6486 	state->statement_position = 0;
6487 	state->extends_mode = 0;
6488 	state->block_level = 0;
6489 	state->macro_level = 0;
6490 	state->start_length = 0;
6491 	state->old_if_level = 0;
6492 	state->if_level = 0;
6493 	state->for_level = 0;
6494 	state->switch_level = 0;
6495 	state->whitespace_control = 0;
6496 	state->forced_raw_state = 0;
6497 
6498 	state->end = state->start;
6499 
6500 	token.value = NULL;
6501 	token.len = 0;
6502 
6503 	while (0 <= (scanner_status = phvolt_get_token(state, &token))) {
6504 
6505 		state->active_token = token.opcode;
6506 
6507 		state->start_length = (Z_STRVAL_P(view_code) + Z_STRLEN_P(view_code) - state->start);
6508 
6509 		switch (token.opcode) {
6510 
6511 			case PHVOLT_T_IGNORE:
6512 				break;
6513 
6514 			case PHVOLT_T_ADD:
6515 				phvolt_(phvolt_parser, PHVOLT_PLUS, NULL, parser_status);
6516 				break;
6517 			case PHVOLT_T_SUB:
6518 				phvolt_(phvolt_parser, PHVOLT_MINUS, NULL, parser_status);
6519 				break;
6520 			case PHVOLT_T_MUL:
6521 				phvolt_(phvolt_parser, PHVOLT_TIMES, NULL, parser_status);
6522 				break;
6523 			case PHVOLT_T_DIV:
6524 				phvolt_(phvolt_parser, PHVOLT_DIVIDE, NULL, parser_status);
6525 				break;
6526 			case PHVOLT_T_MOD:
6527 				phvolt_(phvolt_parser, PHVOLT_MOD, NULL, parser_status);
6528 				break;
6529 			case PHVOLT_T_AND:
6530 				phvolt_(phvolt_parser, PHVOLT_AND, NULL, parser_status);
6531 				break;
6532 			case PHVOLT_T_OR:
6533 				phvolt_(phvolt_parser, PHVOLT_OR, NULL, parser_status);
6534 				break;
6535 			case PHVOLT_T_IS:
6536 				phvolt_(phvolt_parser, PHVOLT_IS, NULL, parser_status);
6537 				break;
6538 			case PHVOLT_T_EQUALS:
6539 				phvolt_(phvolt_parser, PHVOLT_EQUALS, NULL, parser_status);
6540 				break;
6541 			case PHVOLT_T_NOTEQUALS:
6542 				phvolt_(phvolt_parser, PHVOLT_NOTEQUALS, NULL, parser_status);
6543 				break;
6544 			case PHVOLT_T_LESS:
6545 				phvolt_(phvolt_parser, PHVOLT_LESS, NULL, parser_status);
6546 				break;
6547 			case PHVOLT_T_GREATER:
6548 				phvolt_(phvolt_parser, PHVOLT_GREATER, NULL, parser_status);
6549 				break;
6550 			case PHVOLT_T_GREATEREQUAL:
6551 				phvolt_(phvolt_parser, PHVOLT_GREATEREQUAL, NULL, parser_status);
6552 				break;
6553 			case PHVOLT_T_LESSEQUAL:
6554 				phvolt_(phvolt_parser, PHVOLT_LESSEQUAL, NULL, parser_status);
6555 				break;
6556 			case PHVOLT_T_IDENTICAL:
6557 				phvolt_(phvolt_parser, PHVOLT_IDENTICAL, NULL, parser_status);
6558 				break;
6559 			case PHVOLT_T_NOTIDENTICAL:
6560 				phvolt_(phvolt_parser, PHVOLT_NOTIDENTICAL, NULL, parser_status);
6561 				break;
6562 			case PHVOLT_T_NOT:
6563 				phvolt_(phvolt_parser, PHVOLT_NOT, NULL, parser_status);
6564 				break;
6565 			case PHVOLT_T_DOT:
6566 				phvolt_(phvolt_parser, PHVOLT_DOT, NULL, parser_status);
6567 				break;
6568 			case PHVOLT_T_CONCAT:
6569 				phvolt_(phvolt_parser, PHVOLT_CONCAT, NULL, parser_status);
6570 				break;
6571 			case PHVOLT_T_RANGE:
6572 				phvolt_(phvolt_parser, PHVOLT_RANGE, NULL, parser_status);
6573 				break;
6574 			case PHVOLT_T_PIPE:
6575 				phvolt_(phvolt_parser, PHVOLT_PIPE, NULL, parser_status);
6576 				break;
6577 			case PHVOLT_T_COMMA:
6578 				phvolt_(phvolt_parser, PHVOLT_COMMA, NULL, parser_status);
6579 				break;
6580 			case PHVOLT_T_COLON:
6581 				phvolt_(phvolt_parser, PHVOLT_COLON, NULL, parser_status);
6582 				break;
6583 			case PHVOLT_T_QUESTION:
6584 				phvolt_(phvolt_parser, PHVOLT_QUESTION, NULL, parser_status);
6585 				break;
6586 
6587 			case PHVOLT_T_PARENTHESES_OPEN:
6588 				phvolt_(phvolt_parser, PHVOLT_PARENTHESES_OPEN, NULL, parser_status);
6589 				break;
6590 			case PHVOLT_T_PARENTHESES_CLOSE:
6591 				phvolt_(phvolt_parser, PHVOLT_PARENTHESES_CLOSE, NULL, parser_status);
6592 				break;
6593 			case PHVOLT_T_SBRACKET_OPEN:
6594 				phvolt_(phvolt_parser, PHVOLT_SBRACKET_OPEN, NULL, parser_status);
6595 				break;
6596 			case PHVOLT_T_SBRACKET_CLOSE:
6597 				phvolt_(phvolt_parser, PHVOLT_SBRACKET_CLOSE, NULL, parser_status);
6598 				break;
6599 			case PHVOLT_T_CBRACKET_OPEN:
6600 				phvolt_(phvolt_parser, PHVOLT_CBRACKET_OPEN, NULL, parser_status);
6601 				break;
6602 			case PHVOLT_T_CBRACKET_CLOSE:
6603 				phvolt_(phvolt_parser, PHVOLT_CBRACKET_CLOSE, NULL, parser_status);
6604 				break;
6605 
6606 			case PHVOLT_T_OPEN_DELIMITER:
6607 				phvolt_(phvolt_parser, PHVOLT_OPEN_DELIMITER, NULL, parser_status);
6608 				break;
6609 			case PHVOLT_T_CLOSE_DELIMITER:
6610 				phvolt_(phvolt_parser, PHVOLT_CLOSE_DELIMITER, NULL, parser_status);
6611 				break;
6612 
6613 			case PHVOLT_T_OPEN_EDELIMITER:
6614 				if (state->extends_mode == 1 && state->block_level == 0) {
6615 					phvolt_create_error_msg(parser_status, "Child templates only may contain blocks");
6616 					parser_status->status = PHVOLT_PARSING_FAILED;
6617 					break;
6618 				}
6619 				phvolt_(phvolt_parser, PHVOLT_OPEN_EDELIMITER, NULL, parser_status);
6620 				break;
6621 			case PHVOLT_T_CLOSE_EDELIMITER:
6622 				phvolt_(phvolt_parser, PHVOLT_CLOSE_EDELIMITER, NULL, parser_status);
6623 				break;
6624 
6625 			case PHVOLT_T_NULL:
6626 				phvolt_(phvolt_parser, PHVOLT_NULL, NULL, parser_status);
6627 				break;
6628 			case PHVOLT_T_TRUE:
6629 				phvolt_(phvolt_parser, PHVOLT_TRUE, NULL, parser_status);
6630 				break;
6631 			case PHVOLT_T_FALSE:
6632 				phvolt_(phvolt_parser, PHVOLT_FALSE, NULL, parser_status);
6633 				break;
6634 
6635 			case PHVOLT_T_INTEGER:
6636 				phvolt_parse_with_token(phvolt_parser, PHVOLT_T_INTEGER, PHVOLT_INTEGER, &token, parser_status);
6637 				break;
6638 			case PHVOLT_T_DOUBLE:
6639 				phvolt_parse_with_token(phvolt_parser, PHVOLT_T_DOUBLE, PHVOLT_DOUBLE, &token, parser_status);
6640 				break;
6641 			case PHVOLT_T_STRING:
6642 				phvolt_parse_with_token(phvolt_parser, PHVOLT_T_STRING, PHVOLT_STRING, &token, parser_status);
6643 				break;
6644 			case PHVOLT_T_IDENTIFIER:
6645 				phvolt_parse_with_token(phvolt_parser, PHVOLT_T_IDENTIFIER, PHVOLT_IDENTIFIER, &token, parser_status);
6646 				break;
6647 
6648 			case PHVOLT_T_IF:
6649 				if (state->extends_mode == 1 && state->block_level == 0){
6650 					phvolt_create_error_msg(parser_status, "Child templates only may contain blocks");
6651 					parser_status->status = PHVOLT_PARSING_FAILED;
6652 					break;
6653 				} else {
6654 					state->if_level++;
6655 					state->block_level++;
6656 				}
6657 				phvolt_(phvolt_parser, PHVOLT_IF, NULL, parser_status);
6658 				break;
6659 
6660 			case PHVOLT_T_ELSE:
6661 				if (state->if_level == 0 && state->for_level > 0) {
6662 					phvolt_(phvolt_parser, PHVOLT_ELSEFOR, NULL, parser_status);
6663 				} else {
6664 					phvolt_(phvolt_parser, PHVOLT_ELSE, NULL, parser_status);
6665 				}
6666 				break;
6667 
6668 			case PHVOLT_T_ELSEFOR:
6669 				phvolt_(phvolt_parser, PHVOLT_ELSEFOR, NULL, parser_status);
6670 				break;
6671 
6672 			case PHVOLT_T_ELSEIF:
6673 				if (state->if_level == 0) {
6674 					phvolt_create_error_msg(parser_status, "Unexpected ENDIF");
6675 					parser_status->status = PHVOLT_PARSING_FAILED;
6676 					break;
6677 				}
6678 				phvolt_(phvolt_parser, PHVOLT_ELSEIF, NULL, parser_status);
6679 				break;
6680 
6681 			case PHVOLT_T_ENDIF:
6682 				state->block_level--;
6683 				state->if_level--;
6684 				phvolt_(phvolt_parser, PHVOLT_ENDIF, NULL, parser_status);
6685 				break;
6686 
6687 			case PHVOLT_T_FOR:
6688 				if (state->extends_mode == 1 && state->block_level == 0){
6689 					phvolt_create_error_msg(parser_status, "Child templates only may contain blocks");
6690 					parser_status->status = PHVOLT_PARSING_FAILED;
6691 					break;
6692 				} else {
6693 					state->old_if_level = state->if_level;
6694 					state->if_level = 0;
6695 					state->for_level++;
6696 					state->block_level++;
6697 				}
6698 				phvolt_(phvolt_parser, PHVOLT_FOR, NULL, parser_status);
6699 				break;
6700 
6701 			case PHVOLT_T_IN:
6702 				phvolt_(phvolt_parser, PHVOLT_IN, NULL, parser_status);
6703 				break;
6704 
6705 			case PHVOLT_T_ENDFOR:
6706 				state->block_level--;
6707 				state->for_level--;
6708 				state->if_level = state->old_if_level;
6709 				phvolt_(phvolt_parser, PHVOLT_ENDFOR, NULL, parser_status);
6710 				break;
6711 
6712 			case PHVOLT_T_SWITCH:
6713 				if (state->extends_mode == 1 && state->block_level == 0){
6714 					phvolt_create_error_msg(parser_status, "Child templates only may contain blocks");
6715 					parser_status->status = PHVOLT_PARSING_FAILED;
6716 					break;
6717 				} else if (state->switch_level > 0) {
6718 					phvolt_create_error_msg(parser_status, "A nested switch detected. There is no nested switch-case statements support");
6719 					parser_status->status = PHVOLT_PARSING_FAILED;
6720 					break;
6721 				}  else {
6722 					state->switch_level = 1;
6723 					state->block_level++;
6724 				}
6725 				phvolt_(phvolt_parser, PHVOLT_SWITCH, NULL, parser_status);
6726 				break;
6727 
6728 			case PHVOLT_T_CASE:
6729 				if (state->switch_level == 0) {
6730 					phvolt_create_error_msg(parser_status, "Unexpected CASE");
6731 					parser_status->status = PHVOLT_PARSING_FAILED;
6732 					break;
6733 				}
6734 				phvolt_(phvolt_parser, PHVOLT_CASE, NULL, parser_status);
6735 				break;
6736 
6737 			/* only for switch-case statements */
6738 			case PHVOLT_T_DEFAULT:
6739 				if (state->switch_level != 0) {
6740 					phvolt_(phvolt_parser, PHVOLT_DEFAULT, NULL, parser_status);
6741 				} else {
6742 					// TODO: Make this better
6743 
6744 					// {
6745 					// 	phvolt_parser_token *pToken;
6746 					// 	unsigned int length = 8; // "default" + \0
6747 					// 	char *token = emalloc(sizeof(char) * length);
6748 
6749 					// 	snprintf(token, length, "default");
6750 					// 	token[length - 1] = '\0';
6751 
6752 					// 	pToken = emalloc(sizeof(phvolt_parser_token));
6753 					// 	pToken->opcode = PHVOLT_T_IDENTIFIER;
6754 					// 	pToken->token = token;
6755 					// 	pToken->token_len = strlen(token);
6756 					// 	pToken->free_flag = 1;
6757 
6758 					// 	phvolt_(phvolt_parser, PHVOLT_IDENTIFIER, pToken, parser_status);
6759 
6760 					// 	efree(pToken);
6761 					// 	efree(token);
6762 					// }
6763 
6764 					//token.value = "default";
6765 					//token.len = strlen("default") + 1;
6766 					//printf("token->value: '%s', token->len: %d, token->opcode: %d\n", token.value, token.len, token.opcode);
6767 					phvolt_parse_with_token(phvolt_parser, PHVOLT_T_IDENTIFIER, PHVOLT_IDENTIFIER, &token, parser_status);
6768 				}
6769 
6770 				break;
6771 
6772 			case PHVOLT_T_ENDSWITCH:
6773 				if (state->switch_level == 0) {
6774 					phvolt_create_error_msg(parser_status, "Unexpected ENDSWITCH");
6775 					parser_status->status = PHVOLT_PARSING_FAILED;
6776 					break;
6777 				} else {
6778 					state->switch_level = 0;
6779 					state->block_level--;
6780 				}
6781 
6782 				phvolt_(phvolt_parser, PHVOLT_ENDSWITCH, NULL, parser_status);
6783 				break;
6784 
6785 			case PHVOLT_T_RAW_FRAGMENT:
6786 				if (token.len > 0) {
6787 					if (state->extends_mode == 1 && state->block_level == 0){
6788 						if (!phvolt_is_blank_string(&token)) {
6789 							phvolt_create_error_msg(parser_status, "Child templates only may contain blocks");
6790 							parser_status->status = PHVOLT_PARSING_FAILED;
6791 						}
6792 						efree(token.value);
6793 						break;
6794 					} else {
6795 						if (!phvolt_is_blank_string(&token)) {
6796 							state->statement_position++;
6797 						}
6798 					}
6799 					phvolt_parse_with_token(phvolt_parser, PHVOLT_T_RAW_FRAGMENT, PHVOLT_RAW_FRAGMENT, &token, parser_status);
6800 				} else {
6801 					efree(token.value);
6802 				}
6803 				break;
6804 
6805 			case PHVOLT_T_SET:
6806 				if (state->extends_mode == 1 && state->block_level == 0){
6807 					phvolt_create_error_msg(parser_status, "Child templates only may contain blocks");
6808 					parser_status->status = PHVOLT_PARSING_FAILED;
6809 					break;
6810 				}
6811 				phvolt_(phvolt_parser, PHVOLT_SET, NULL, parser_status);
6812 				break;
6813 			case PHVOLT_T_ASSIGN:
6814 				phvolt_(phvolt_parser, PHVOLT_ASSIGN, NULL, parser_status);
6815 				break;
6816 			case PHVOLT_T_ADD_ASSIGN:
6817 				phvolt_(phvolt_parser, PHVOLT_ADD_ASSIGN, NULL, parser_status);
6818 				break;
6819 			case PHVOLT_T_SUB_ASSIGN:
6820 				phvolt_(phvolt_parser, PHVOLT_SUB_ASSIGN, NULL, parser_status);
6821 				break;
6822 			case PHVOLT_T_MUL_ASSIGN:
6823 				phvolt_(phvolt_parser, PHVOLT_MUL_ASSIGN, NULL, parser_status);
6824 				break;
6825 			case PHVOLT_T_DIV_ASSIGN:
6826 				phvolt_(phvolt_parser, PHVOLT_DIV_ASSIGN, NULL, parser_status);
6827 				break;
6828 
6829 			case PHVOLT_T_INCR:
6830 				phvolt_(phvolt_parser, PHVOLT_INCR, NULL, parser_status);
6831 				break;
6832 			case PHVOLT_T_DECR:
6833 				phvolt_(phvolt_parser, PHVOLT_DECR, NULL, parser_status);
6834 				break;
6835 
6836 			case PHVOLT_T_BLOCK:
6837 				if (state->block_level > 0) {
6838 					phvolt_create_error_msg(parser_status, "Embedding blocks into other blocks is not supported");
6839 					parser_status->status = PHVOLT_PARSING_FAILED;
6840 					break;
6841 				} else {
6842 					state->block_level++;
6843 				}
6844 				phvolt_(phvolt_parser, PHVOLT_BLOCK, NULL, parser_status);
6845 				break;
6846 			case PHVOLT_T_ENDBLOCK:
6847 				state->block_level--;
6848 				phvolt_(phvolt_parser, PHVOLT_ENDBLOCK, NULL, parser_status);
6849 				break;
6850 
6851 			case PHVOLT_T_MACRO:
6852 				if (state->macro_level > 0) {
6853 					phvolt_create_error_msg(parser_status, "Embedding macros into other macros is not allowed");
6854 					parser_status->status = PHVOLT_PARSING_FAILED;
6855 					break;
6856 				} else {
6857 					state->macro_level++;
6858 				}
6859 				phvolt_(phvolt_parser, PHVOLT_MACRO, NULL, parser_status);
6860 				break;
6861 			case PHVOLT_T_ENDMACRO:
6862 				state->macro_level--;
6863 				phvolt_(phvolt_parser, PHVOLT_ENDMACRO, NULL, parser_status);
6864 				break;
6865 
6866 			case PHVOLT_T_CALL:
6867 				phvolt_(phvolt_parser, PHVOLT_CALL, NULL, parser_status);
6868 				break;
6869 			case PHVOLT_T_ENDCALL:
6870 				phvolt_(phvolt_parser, PHVOLT_ENDCALL, NULL, parser_status);
6871 				break;
6872 
6873 			case PHVOLT_T_CACHE:
6874 				phvolt_(phvolt_parser, PHVOLT_CACHE, NULL, parser_status);
6875 				break;
6876 			case PHVOLT_T_ENDCACHE:
6877 				phvolt_(phvolt_parser, PHVOLT_ENDCACHE, NULL, parser_status);
6878 				break;
6879 
6880 			case PHVOLT_T_RAW:
6881 				phvolt_(phvolt_parser, PHVOLT_RAW, NULL, parser_status);
6882 				state->forced_raw_state++;
6883 				break;
6884 			case PHVOLT_T_ENDRAW:
6885 				phvolt_(phvolt_parser, PHVOLT_ENDRAW, NULL, parser_status);
6886 				state->forced_raw_state--;
6887 				break;
6888 
6889 			case PHVOLT_T_INCLUDE:
6890 				phvolt_(phvolt_parser, PHVOLT_INCLUDE, NULL, parser_status);
6891 				break;
6892 
6893 			case PHVOLT_T_WITH:
6894 				phvolt_(phvolt_parser, PHVOLT_WITH, NULL, parser_status);
6895 				break;
6896 
6897 			case PHVOLT_T_DEFINED:
6898 				phvolt_(phvolt_parser, PHVOLT_DEFINED, NULL, parser_status);
6899 				break;
6900 
6901 			case PHVOLT_T_EMPTY:
6902 				phvolt_(phvolt_parser, PHVOLT_EMPTY, NULL, parser_status);
6903 				break;
6904 
6905 			case PHVOLT_T_EVEN:
6906 				phvolt_(phvolt_parser, PHVOLT_EVEN, NULL, parser_status);
6907 				break;
6908 
6909 			case PHVOLT_T_ODD:
6910 				phvolt_(phvolt_parser, PHVOLT_ODD, NULL, parser_status);
6911 				break;
6912 
6913 			case PHVOLT_T_NUMERIC:
6914 				phvolt_(phvolt_parser, PHVOLT_NUMERIC, NULL, parser_status);
6915 				break;
6916 
6917 			case PHVOLT_T_SCALAR:
6918 				phvolt_(phvolt_parser, PHVOLT_SCALAR, NULL, parser_status);
6919 				break;
6920 
6921 			case PHVOLT_T_ITERABLE:
6922 				phvolt_(phvolt_parser, PHVOLT_ITERABLE, NULL, parser_status);
6923 				break;
6924 
6925 			case PHVOLT_T_DO:
6926 				phvolt_(phvolt_parser, PHVOLT_DO, NULL, parser_status);
6927 				break;
6928 			case PHVOLT_T_RETURN:
6929 				phvolt_(phvolt_parser, PHVOLT_RETURN, NULL, parser_status);
6930 				break;
6931 
6932 			case PHVOLT_T_AUTOESCAPE:
6933 				phvolt_(phvolt_parser, PHVOLT_AUTOESCAPE, NULL, parser_status);
6934 				break;
6935 
6936 			case PHVOLT_T_ENDAUTOESCAPE:
6937 				phvolt_(phvolt_parser, PHVOLT_ENDAUTOESCAPE, NULL, parser_status);
6938 				break;
6939 
6940 			case PHVOLT_T_BREAK:
6941 				phvolt_(phvolt_parser, PHVOLT_BREAK, NULL, parser_status);
6942 				break;
6943 
6944 			case PHVOLT_T_CONTINUE:
6945 				phvolt_(phvolt_parser, PHVOLT_CONTINUE, NULL, parser_status);
6946 				break;
6947 
6948 			case PHVOLT_T_EXTENDS:
6949 				if (state->statement_position != 1) {
6950 					phvolt_create_error_msg(parser_status, "Extends statement must be placed at the first line in the template");
6951 					parser_status->status = PHVOLT_PARSING_FAILED;
6952 					break;
6953 				} else {
6954 					state->extends_mode = 1;
6955 				}
6956 				phvolt_(phvolt_parser, PHVOLT_EXTENDS, NULL, parser_status);
6957 				break;
6958 
6959 			default:
6960 				parser_status->status = PHVOLT_PARSING_FAILED;
6961 				error = emalloc(sizeof(char) * (48 + Z_STRLEN_P(state->active_file)));
6962 				snprintf(error, 48 + Z_STRLEN_P(state->active_file) + state->active_line, "Scanner: unknown opcode %d on in %s line %d", token.opcode, Z_STRVAL_P(state->active_file), state->active_line);
6963 #if PHP_VERSION_ID < 70000
6964 				if (!*error_msg) {
6965 					MAKE_STD_ZVAL(*error_msg);
6966 					ZVAL_STRING(*error_msg, error, 1);
6967 				}
6968 #else
6969 				if (Z_TYPE_P(*error_msg) == IS_NULL) {
6970 					ZVAL_STRING((*error_msg), error);
6971 				}
6972 #endif
6973 				efree(error);
6974 				break;
6975 		}
6976 
6977 		if (parser_status->status != PHVOLT_PARSING_OK) {
6978 			status = FAILURE;
6979 			break;
6980 		}
6981 
6982 		state->end = state->start;
6983 	}
6984 
6985 	if (status != FAILURE) {
6986 		switch (scanner_status) {
6987 			case PHVOLT_SCANNER_RETCODE_ERR:
6988 			case PHVOLT_SCANNER_RETCODE_IMPOSSIBLE:
6989 				if (!*error_msg) {
6990 					phvolt_scanner_error_msg(parser_status, error_msg TSRMLS_CC);
6991 				} else {
6992 					if (Z_TYPE_P(*error_msg) == IS_NULL) {
6993 						phvolt_scanner_error_msg(parser_status, error_msg TSRMLS_CC);
6994 					}
6995 				}
6996 				status = FAILURE;
6997 				break;
6998 			default:
6999 				phvolt_(phvolt_parser, 0, NULL, parser_status);
7000 		}
7001 	}
7002 
7003 	state->active_token = 0;
7004 	state->start = NULL;
7005 	efree(state->raw_buffer);
7006 
7007 	if (parser_status->status != PHVOLT_PARSING_OK) {
7008 		status = FAILURE;
7009 		if (parser_status->syntax_error) {
7010 #if PHP_VERSION_ID < 70000
7011 			if (!*error_msg) {
7012 				MAKE_STD_ZVAL(*error_msg);
7013 				ZVAL_STRING(*error_msg, parser_status->syntax_error, 1);
7014 			}
7015 #else
7016 			ZVAL_STRING(*error_msg, parser_status->syntax_error);
7017 #endif
7018 			efree(parser_status->syntax_error);
7019 		}
7020 	}
7021 
7022 	phvolt_Free(phvolt_parser, phvolt_wrapper_free);
7023 
7024 	if (status != FAILURE) {
7025 		if (parser_status->status == PHVOLT_PARSING_OK) {
7026 #if PHP_VERSION_ID < 70000
7027 			if (parser_status->ret) {
7028 				ZVAL_ZVAL(*result, parser_status->ret, 0, 0);
7029 				ZVAL_NULL(parser_status->ret);
7030 				zval_ptr_dtor(&parser_status->ret);
7031 			} else {
7032 				array_init(*result);
7033 			}
7034 #else
7035 			if (Z_TYPE(parser_status->ret) != IS_UNDEF) {
7036 				ZVAL_ZVAL(*result, &parser_status->ret, 1, 1);
7037 			} else {
7038 				array_init(*result);
7039 			}
7040 #endif
7041 		}
7042 	}
7043 
7044 	efree(parser_status);
7045 	efree(state);
7046 
7047 	return status;
7048 }
7049