Smarty_Internal_Templateparser   F
last analyzed

Complexity

Total Complexity 310

Size/Duplication

Total Lines 3603
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2466
c 1
b 0
f 0
dl 0
loc 3603
rs 0.8
wmc 310

161 Methods

Rating   Name   Duplication   Size   Complexity  
A yy_r168() 0 3 1
A mergePrefixCode() 0 9 2
A yy_r112() 0 6 1
A yy_r116() 0 3 1
A yy_r159() 0 3 1
A yy_r75() 0 8 1
A yy_r134() 0 6 1
A yy_r122() 0 12 1
A yy_r39() 0 8 1
A yy_r79() 0 3 1
A yy_r177() 0 4 1
A yy_r59() 0 4 1
A yy_r16() 0 3 1
A yy_r182() 0 6 1
A yy_r85() 0 3 1
A yy_r167() 0 10 1
A yy_r111() 0 6 1
A yy_r46() 0 3 1
A yy_r87() 0 3 1
A yy_r49() 0 6 1
A tokenName() 0 9 4
A yy_r5() 0 4 1
A yy_r73() 0 3 1
A yy_r150() 0 5 1
A yy_r105() 0 7 1
A yy_r21() 0 3 1
A yy_r41() 0 7 1
A errorRunDown() 0 7 3
A yy_r139() 0 7 3
A yy_r91() 0 6 1
A yy_accept() 0 12 3
A yy_r17() 0 5 1
A yy_r118() 0 3 1
A yy_r121() 0 7 1
A yy_r146() 0 13 2
B yy_reduce() 0 36 10
A yy_r65() 0 3 1
A yy_r29() 0 7 1
A yy_r2() 0 9 2
A yy_r1() 0 14 4
A yy_r9() 0 3 1
A insertPhpCode() 0 3 1
A yy_r138() 0 3 1
A yy_r119() 0 3 1
A yy_r40() 0 6 1
A yy_r135() 0 3 1
A yy_r186() 0 3 1
A yy_r64() 0 6 1
A yy_r104() 0 14 2
A yy_r117() 0 8 1
A yy_r110() 0 8 1
A yy_r163() 0 6 1
A yy_r174() 0 4 1
A yy_r180() 0 3 1
A yy_r97() 0 6 1
A yy_r62() 0 6 1
A yy_r48() 0 5 1
A yy_r10() 0 8 2
A yy_r95() 0 25 4
A yy_r80() 0 3 1
A yy_r27() 0 17 3
A yy_r52() 0 3 1
A yy_r71() 0 8 1
A yy_r7() 0 3 1
A yy_r0() 0 5 1
A __destruct() 0 7 3
A yy_r166() 0 12 1
A yy_r143() 0 3 1
A yy_r30() 0 5 1
A yy_r120() 0 3 1
A yy_r171() 0 3 1
A yy_r160() 0 4 1
A yy_r76() 0 8 1
A yy_r28() 0 6 1
A yy_r86() 0 3 1
A yy_destructor() 0 5 1
A yy_r144() 0 5 1
A yy_r115() 0 6 1
A yy_r19() 0 9 1
A yy_r72() 0 6 1
B yy_find_shift_action() 0 30 11
A yy_r107() 0 4 1
A yy_r178() 0 4 1
A yy_r100() 0 23 5
A yy_r153() 0 3 1
A yy_r18() 0 7 1
A yy_r142() 0 12 2
A yy_r109() 0 3 1
A yy_r51() 0 3 1
A yy_r132() 0 3 1
A yy_r88() 0 9 3
A yy_r74() 0 8 1
A yy_r69() 0 6 1
A yy_pop_parser_stack() 0 15 4
A yy_r14() 0 11 2
A yy_r32() 0 7 2
A yy_r56() 0 3 1
A yy_r20() 0 3 1
A yy_r185() 0 3 1
A yy_r131() 0 3 1
A yy_r90() 0 3 1
A yy_r162() 0 4 1
A yy_r50() 0 4 1
A yy_r42() 0 3 1
A yy_r47() 0 5 1
A yy_syntax_error() 0 6 1
A yy_r129() 0 3 1
A yy_r137() 0 3 1
A yy_r77() 0 8 1
A yy_r53() 0 14 3
A yy_r123() 0 3 1
A __construct() 0 8 2
A yy_r125() 0 6 1
A yy_r157() 0 4 1
A yy_r43() 0 7 1
A yy_r164() 0 3 1
A PrintTrace() 0 4 1
A yy_r114() 0 3 1
A yy_r44() 0 10 1
A yy_r140() 0 10 2
A yy_r26() 0 11 3
C yy_get_expected_tokens() 0 82 16
A yy_r130() 0 3 1
A yy_r61() 0 4 1
A yy_r145() 0 10 3
A yy_r151() 0 4 1
A yy_r108() 0 8 1
A yy_r173() 0 4 1
A yy_r45() 0 10 2
A yy_r25() 0 13 3
A yy_r54() 0 6 1
A yy_r154() 0 4 1
A yy_r102() 0 3 1
A yy_r165() 0 19 1
A yy_r35() 0 9 1
A yy_r181() 0 4 1
A yy_r147() 0 4 1
A yy_r13() 0 20 5
A yy_r96() 0 6 1
A yy_r3() 0 3 1
A yy_r31() 0 6 2
A yy_r15() 0 3 1
B yy_find_reduce_action() 0 19 7
A yy_r179() 0 3 1
A yy_r161() 0 3 1
A yy_r6() 0 3 1
B yy_shift() 0 30 7
A yy_r8() 0 3 1
A yy_r103() 0 4 1
A yy_r36() 0 3 1
A yy_r136() 0 12 2
A Trace() 0 9 3
F doParse() 0 85 27
D yy_is_expected_token() 0 86 18
A yy_r141() 0 7 2
A yy_r4() 0 3 1
A yy_r33() 0 6 2
A yy_parse_failed() 0 7 3
A yy_r68() 0 8 1
A yy_r12() 0 13 2
A yy_r38() 0 7 1

How to fix   Complexity   

Complex Class

Complex classes like Smarty_Internal_Templateparser often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

While breaking up the class, it is a good idea to analyze how other classes use Smarty_Internal_Templateparser, and based on these observations, apply Extract Interface, too.

1
<?php
2
3
class TP_yyStackEntry
4
{
5
    public $stateno;       /* The state-number */
6
    public $major;         /* The major token value.  This is the code
7
                     ** number for the token at this stack level */
8
    public $minor; /* The user-supplied minor token value.  This
9
                     ** is the value of the token  */
10
}
11
12
// line 11 "../smarty/lexer/smarty_internal_templateparser.y"
13
14
/**
15
 * Smarty Template Parser Class
16
 *
17
 * This is the template parser.
18
 * It is generated from the smarty_internal_templateparser.y file
19
 *
20
 * @author Uwe Tews <[email protected]>
21
 */
22
class Smarty_Internal_Templateparser
23
{
24
    // line 23 "../smarty/lexer/smarty_internal_templateparser.y"
25
    const ERR1                      = 'Security error: Call to private object member not allowed';
26
    const ERR2                      = 'Security error: Call to dynamic object member not allowed';
27
    const ERR3                      = 'PHP in template not allowed. Use SmartyBC to enable it';
28
    const TP_VERT                   = 1;
29
    const TP_COLON                  = 2;
30
    const TP_PHP                    = 3;
31
    const TP_TEXT                   = 4;
32
    const TP_STRIPON                = 5;
33
    const TP_STRIPOFF               = 6;
34
    const TP_LITERALSTART           = 7;
35
    const TP_LITERALEND             = 8;
36
    const TP_LITERAL                = 9;
37
    const TP_SIMPELOUTPUT           = 10;
38
    const TP_SIMPLETAG              = 11;
39
    const TP_SMARTYBLOCKCHILDPARENT = 12;
40
    const TP_LDEL                   = 13;
41
    const TP_RDEL                   = 14;
42
    const TP_DOLLARID               = 15;
43
    const TP_EQUAL                  = 16;
44
    const TP_ID                     = 17;
45
    const TP_PTR                    = 18;
46
    const TP_LDELMAKENOCACHE        = 19;
47
    const TP_LDELIF                 = 20;
48
    const TP_LDELFOR                = 21;
49
    const TP_SEMICOLON              = 22;
50
    const TP_INCDEC                 = 23;
51
    const TP_TO                     = 24;
52
    const TP_STEP                   = 25;
53
    const TP_LDELFOREACH            = 26;
54
    const TP_SPACE                  = 27;
55
    const TP_AS                     = 28;
56
    const TP_APTR                   = 29;
57
    const TP_LDELSETFILTER          = 30;
58
    const TP_CLOSETAG               = 31;
59
    const TP_LDELSLASH              = 32;
60
    const TP_ATTR                   = 33;
61
    const TP_INTEGER                = 34;
62
    const TP_COMMA                  = 35;
63
    const TP_OPENP                  = 36;
64
    const TP_CLOSEP                 = 37;
65
    const TP_MATH                   = 38;
66
    const TP_UNIMATH                = 39;
67
    const TP_ISIN                   = 40;
68
    const TP_QMARK                  = 41;
69
    const TP_NOT                    = 42;
70
    const TP_TYPECAST               = 43;
71
    const TP_HEX                    = 44;
72
    const TP_DOT                    = 45;
73
    const TP_INSTANCEOF             = 46;
74
    const TP_SINGLEQUOTESTRING      = 47;
75
    const TP_DOUBLECOLON            = 48;
76
    const TP_NAMESPACE              = 49;
77
    const TP_AT                     = 50;
78
    const TP_HATCH                  = 51;
79
    const TP_OPENB                  = 52;
80
    const TP_CLOSEB                 = 53;
81
    const TP_DOLLAR                 = 54;
82
    const TP_LOGOP                  = 55;
83
    const TP_SLOGOP                 = 56;
84
    const TP_TLOGOP                 = 57;
85
    const TP_SINGLECOND             = 58;
86
    const TP_ARRAYOPEN              = 59;
87
    const TP_QUOTE                  = 60;
88
    const TP_BACKTICK               = 61;
89
    const YY_NO_ACTION              = 516;
90
    const YY_ACCEPT_ACTION          = 515;
91
    const YY_ERROR_ACTION           = 514;
92
    const YY_SZ_ACTTAB              = 2071;
93
    const YY_SHIFT_USE_DFLT         = -31;
94
    const YY_SHIFT_MAX              = 230;
95
    const YY_REDUCE_USE_DFLT        = -91;
96
    const YY_REDUCE_MAX             = 178;
97
    const YYNOCODE                  = 110;
98
    const YYSTACKDEPTH              = 500;
99
    const YYNSTATE                  = 327;
100
    const YYNRULE                   = 187;
101
    const YYERRORSYMBOL             = 62;
102
    const YYERRSYMDT                = 'yy0';
103
    const YYFALLBACK                = 0;
104
105
    public static $yy_action        = array(
106
        251, 234, 237, 1, 144, 127, 428, 184, 199, 212,
107
        10, 54, 19, 175, 282, 215, 109, 389, 428, 428,
108
        224, 321, 223, 303, 203, 389, 13, 389, 281, 43,
109
        389, 428, 41, 40, 266, 225, 389, 213, 389, 194,
110
        389, 52, 4, 308, 301, 383, 34, 209, 222, 3,
111
        50, 153, 251, 234, 237, 1, 199, 131, 383, 198,
112
        305, 212, 10, 54, 383, 16, 199, 428, 109, 385,
113
        132, 18, 224, 321, 223, 222, 221, 12, 32, 428,
114
        116, 43, 385, 262, 41, 40, 266, 225, 385, 233,
115
        95, 194, 16, 52, 4, 131, 301, 252, 18, 265,
116
        164, 3, 50, 324, 251, 234, 237, 1, 23, 130,
117
        229, 198, 150, 212, 10, 54, 326, 11, 170, 284,
118
        109, 42, 22, 239, 224, 321, 223, 193, 221, 261,
119
        13, 52, 157, 43, 301, 286, 41, 40, 266, 225,
120
        205, 233, 5, 194, 96, 52, 4, 263, 301, 301,
121
        99, 349, 96, 3, 50, 199, 251, 234, 237, 1,
122
        238, 130, 241, 181, 349, 212, 10, 54, 382, 240,
123
        349, 36, 109, 185, 104, 256, 224, 321, 223, 132,
124
        191, 382, 13, 49, 91, 43, 12, 382, 41, 40,
125
        266, 225, 257, 233, 152, 194, 457, 52, 4, 457,
126
        301, 301, 228, 457, 282, 3, 50, 285, 251, 234,
127
        237, 1, 301, 131, 441, 198, 238, 212, 10, 54,
128
        349, 441, 325, 175, 109, 30, 349, 273, 224, 321,
129
        223, 20, 221, 295, 32, 211, 457, 39, 166, 49,
130
        41, 40, 266, 225, 87, 233, 205, 194, 279, 52,
131
        4, 24, 301, 204, 200, 280, 99, 3, 50, 199,
132
        251, 234, 237, 1, 31, 130, 96, 198, 205, 212,
133
        10, 54, 350, 55, 293, 207, 109, 283, 99, 96,
134
        224, 321, 223, 199, 180, 350, 13, 134, 230, 43,
135
        222, 350, 41, 40, 266, 225, 104, 233, 316, 194,
136
        279, 52, 4, 24, 301, 165, 284, 280, 85, 3,
137
        50, 25, 251, 234, 237, 1, 131, 129, 210, 198,
138
        14, 212, 10, 54, 269, 270, 301, 116, 109, 295,
139
        216, 211, 224, 321, 223, 171, 221, 95, 13, 28,
140
        219, 43, 323, 9, 41, 40, 266, 225, 151, 233,
141
        324, 194, 52, 52, 4, 301, 301, 30, 282, 302,
142
        178, 3, 50, 7, 251, 234, 237, 1, 136, 130,
143
        304, 179, 238, 212, 10, 54, 279, 175, 282, 24,
144
        109, 238, 429, 280, 224, 321, 223, 177, 221, 270,
145
        13, 255, 281, 43, 429, 49, 41, 40, 266, 225,
146
        275, 233, 318, 194, 49, 52, 4, 276, 301, 163,
147
        26, 199, 8, 3, 50, 119, 251, 234, 237, 1,
148
        11, 93, 291, 51, 107, 212, 10, 54, 226, 428,
149
        206, 201, 109, 148, 178, 322, 224, 321, 223, 441,
150
        221, 428, 13, 282, 9, 43, 441, 115, 41, 40,
151
        266, 225, 167, 233, 227, 194, 457, 52, 4, 457,
152
        301, 96, 158, 457, 101, 3, 50, 271, 251, 234,
153
        237, 1, 282, 130, 235, 186, 135, 212, 10, 54,
154
        199, 37, 119, 315, 109, 165, 284, 176, 224, 321,
155
        223, 104, 221, 149, 13, 281, 146, 43, 281, 300,
156
        41, 40, 266, 225, 30, 233, 289, 194, 21, 52,
157
        4, 272, 301, 211, 18, 301, 161, 3, 50, 110,
158
        251, 234, 237, 1, 137, 128, 282, 198, 268, 212,
159
        10, 54, 222, 169, 515, 92, 109, 172, 284, 31,
160
        224, 321, 223, 29, 221, 238, 6, 260, 53, 43,
161
        232, 139, 41, 40, 266, 225, 154, 233, 178, 194,
162
        168, 52, 4, 214, 301, 145, 99, 33, 49, 3,
163
        50, 245, 208, 211, 320, 282, 90, 111, 311, 183,
164
        98, 70, 309, 297, 236, 178, 95, 319, 142, 258,
165
        247, 267, 249, 264, 250, 195, 231, 199, 246, 324,
166
        317, 253, 254, 259, 126, 137, 133, 251, 234, 237,
167
        1, 326, 290, 105, 143, 156, 212, 10, 54, 88,
168
        84, 83, 484, 109, 322, 282, 37, 224, 321, 223,
169
        245, 208, 211, 320, 281, 90, 111, 298, 182, 98,
170
        56, 245, 298, 211, 178, 95, 103, 147, 258, 197,
171
        102, 75, 141, 250, 195, 231, 95, 246, 324, 258,
172
        279, 242, 89, 24, 250, 195, 231, 280, 246, 324,
173
        298, 298, 298, 298, 298, 298, 298, 16, 298, 192,
174
        277, 298, 298, 18, 294, 44, 45, 38, 298, 298,
175
        251, 234, 237, 2, 298, 296, 298, 298, 298, 212,
176
        10, 54, 310, 312, 313, 314, 109, 162, 298, 298,
177
        224, 321, 223, 298, 298, 298, 294, 282, 298, 42,
178
        22, 239, 251, 234, 237, 2, 298, 296, 298, 298,
179
        298, 212, 10, 54, 298, 159, 298, 298, 109, 298,
180
        298, 17, 224, 321, 223, 282, 298, 42, 22, 239,
181
        298, 298, 245, 298, 211, 278, 298, 103, 111, 298,
182
        183, 98, 70, 298, 298, 298, 298, 95, 298, 298,
183
        258, 298, 292, 17, 298, 250, 195, 231, 279, 246,
184
        324, 24, 298, 395, 245, 280, 211, 298, 298, 103,
185
        298, 298, 197, 102, 75, 16, 298, 140, 298, 95,
186
        298, 18, 258, 298, 298, 298, 298, 250, 195, 231,
187
        298, 246, 324, 298, 298, 298, 298, 428, 298, 395,
188
        395, 395, 202, 277, 298, 245, 298, 211, 298, 428,
189
        103, 298, 298, 197, 120, 69, 395, 395, 395, 395,
190
        95, 298, 298, 258, 298, 298, 298, 160, 250, 195,
191
        231, 86, 246, 324, 245, 16, 211, 282, 298, 103,
192
        196, 18, 197, 120, 69, 298, 44, 45, 38, 95,
193
        298, 298, 258, 298, 298, 298, 178, 250, 195, 231,
194
        298, 246, 324, 310, 312, 313, 314, 298, 298, 190,
195
        245, 298, 211, 298, 298, 103, 298, 298, 197, 102,
196
        75, 298, 298, 298, 298, 95, 298, 298, 258, 298,
197
        298, 298, 298, 250, 195, 231, 298, 246, 324, 298,
198
        298, 298, 245, 298, 211, 298, 199, 100, 298, 288,
199
        197, 120, 47, 298, 106, 298, 298, 95, 298, 353,
200
        258, 155, 298, 218, 298, 250, 195, 231, 298, 246,
201
        324, 282, 16, 42, 22, 239, 298, 245, 18, 211,
202
        298, 428, 103, 298, 298, 197, 120, 69, 298, 298,
203
        298, 298, 95, 428, 298, 258, 298, 298, 298, 298,
204
        250, 195, 231, 298, 246, 324, 245, 298, 211, 298,
205
        298, 100, 189, 298, 197, 120, 59, 245, 207, 211,
206
        298, 95, 103, 298, 258, 197, 120, 81, 298, 250,
207
        195, 231, 95, 246, 324, 258, 298, 298, 298, 298,
208
        250, 195, 231, 298, 246, 324, 298, 245, 298, 211,
209
        298, 298, 103, 298, 298, 197, 120, 80, 298, 298,
210
        298, 298, 95, 298, 298, 258, 298, 298, 298, 298,
211
        250, 195, 231, 298, 246, 324, 245, 298, 211, 298,
212
        298, 103, 298, 298, 197, 120, 67, 245, 298, 211,
213
        298, 95, 103, 298, 258, 197, 120, 57, 298, 250,
214
        195, 231, 95, 246, 324, 258, 298, 298, 298, 298,
215
        250, 195, 231, 298, 246, 324, 298, 245, 298, 211,
216
        298, 298, 103, 298, 298, 197, 120, 58, 298, 298,
217
        298, 298, 95, 298, 298, 258, 298, 298, 298, 298,
218
        250, 195, 231, 298, 246, 324, 245, 298, 211, 298,
219
        298, 103, 298, 298, 197, 120, 82, 245, 298, 211,
220
        298, 95, 103, 298, 258, 197, 97, 76, 298, 250,
221
        195, 231, 95, 246, 324, 258, 298, 298, 298, 298,
222
        250, 195, 231, 298, 246, 324, 298, 245, 298, 211,
223
        298, 298, 103, 298, 298, 197, 120, 71, 298, 298,
224
        298, 298, 95, 298, 298, 258, 298, 298, 298, 298,
225
        250, 195, 231, 298, 246, 324, 245, 298, 211, 298,
226
        298, 103, 298, 298, 187, 120, 61, 245, 298, 211,
227
        298, 95, 103, 298, 258, 197, 120, 63, 298, 250,
228
        195, 231, 95, 246, 324, 258, 298, 298, 298, 298,
229
        250, 195, 231, 298, 246, 324, 298, 245, 298, 211,
230
        298, 298, 103, 298, 298, 197, 94, 79, 298, 298,
231
        298, 298, 95, 298, 298, 258, 298, 298, 298, 298,
232
        250, 195, 231, 298, 246, 324, 245, 298, 211, 298,
233
        298, 103, 298, 298, 197, 120, 59, 245, 298, 211,
234
        298, 95, 103, 298, 258, 197, 120, 77, 298, 250,
235
        195, 231, 95, 246, 324, 258, 298, 298, 298, 298,
236
        250, 195, 231, 298, 246, 324, 298, 245, 298, 211,
237
        298, 298, 103, 298, 298, 188, 108, 64, 298, 298,
238
        298, 298, 95, 298, 298, 258, 298, 298, 298, 298,
239
        250, 195, 231, 298, 246, 324, 245, 298, 211, 298,
240
        298, 103, 298, 298, 197, 120, 65, 245, 298, 211,
241
        298, 95, 103, 298, 258, 197, 97, 66, 298, 250,
242
        195, 231, 95, 246, 324, 258, 298, 298, 298, 298,
243
        250, 195, 231, 298, 246, 324, 298, 245, 298, 211,
244
        298, 298, 103, 298, 298, 197, 120, 68, 298, 298,
245
        298, 298, 95, 298, 298, 258, 298, 298, 298, 298,
246
        250, 195, 231, 298, 246, 324, 245, 298, 211, 298,
247
        298, 103, 298, 298, 197, 120, 62, 245, 298, 211,
248
        298, 95, 103, 298, 258, 197, 120, 60, 298, 250,
249
        195, 231, 95, 246, 324, 258, 298, 298, 298, 298,
250
        250, 195, 231, 298, 246, 324, 298, 245, 298, 211,
251
        298, 298, 103, 298, 298, 197, 120, 74, 298, 298,
252
        298, 298, 95, 298, 298, 258, 298, 298, 298, 298,
253
        250, 195, 231, 298, 246, 324, 245, 298, 211, 298,
254
        298, 103, 298, 298, 197, 120, 72, 245, 298, 211,
255
        298, 95, 103, 298, 258, 197, 120, 48, 298, 250,
256
        195, 231, 95, 246, 324, 258, 298, 298, 298, 298,
257
        250, 195, 231, 298, 246, 324, 298, 245, 298, 211,
258
        298, 298, 103, 298, 298, 197, 120, 46, 298, 298,
259
        298, 298, 95, 298, 298, 258, 298, 298, 298, 298,
260
        250, 195, 231, 298, 246, 324, 245, 298, 211, 298,
261
        298, 103, 298, 298, 197, 120, 78, 245, 298, 211,
262
        298, 95, 103, 298, 258, 197, 120, 73, 298, 250,
263
        195, 231, 95, 246, 324, 258, 298, 298, 298, 298,
264
        250, 195, 231, 298, 246, 324, 298, 245, 298, 211,
265
        298, 298, 103, 298, 298, 197, 125, 298, 298, 298,
266
        298, 298, 95, 298, 298, 298, 298, 298, 298, 244,
267
        250, 195, 231, 298, 246, 324, 245, 298, 211, 298,
268
        298, 103, 298, 298, 197, 114, 298, 245, 298, 211,
269
        298, 95, 103, 298, 298, 197, 122, 298, 243, 250,
270
        195, 231, 95, 246, 324, 298, 298, 298, 298, 298,
271
        250, 195, 231, 298, 246, 324, 298, 245, 298, 211,
272
        298, 298, 103, 298, 298, 197, 117, 298, 298, 298,
273
        298, 298, 95, 298, 298, 298, 298, 298, 298, 298,
274
        250, 195, 231, 298, 246, 324, 245, 298, 211, 298,
275
        298, 103, 298, 298, 197, 121, 298, 245, 298, 211,
276
        298, 95, 103, 298, 298, 197, 124, 298, 298, 250,
277
        195, 231, 95, 246, 324, 298, 298, 298, 298, 298,
278
        250, 195, 231, 298, 246, 324, 298, 245, 298, 211,
279
        298, 298, 103, 298, 298, 197, 118, 298, 298, 298,
280
        298, 298, 95, 298, 298, 298, 298, 298, 298, 298,
281
        250, 195, 231, 298, 246, 324, 245, 298, 211, 298,
282
        298, 103, 298, 298, 197, 123, 298, 245, 298, 211,
283
        298, 95, 103, 298, 298, 197, 113, 298, 298, 250,
284
        195, 231, 95, 246, 324, 298, 298, 298, 298, 298,
285
        250, 195, 231, 220, 246, 324, 298, 27, 298, 16,
286
        298, 457, 298, 298, 457, 18, 298, 26, 457, 441,
287
        44, 45, 38, 217, 44, 45, 38, 298, 298, 298,
288
        298, 298, 298, 298, 298, 298, 298, 310, 312, 313,
289
        314, 310, 312, 313, 314, 298, 441, 298, 298, 441,
290
        298, 457, 220, 441, 457, 298, 298, 457, 298, 298,
291
        457, 457, 441, 457, 298, 298, 220, 457, 441, 298,
292
        298, 298, 298, 298, 457, 298, 298, 457, 298, 298,
293
        5, 457, 441, 298, 298, 298, 298, 298, 298, 441,
294
        298, 298, 441, 298, 457, 441, 441, 298, 441, 298,
295
        457, 298, 441, 306, 298, 298, 298, 298, 298, 441,
296
        298, 298, 441, 298, 457, 220, 441, 298, 298, 298,
297
        298, 298, 298, 457, 298, 298, 457, 298, 298, 15,
298
        457, 441, 35, 274, 44, 45, 38, 457, 298, 298,
299
        457, 298, 298, 298, 457, 441, 298, 298, 298, 298,
300
        298, 310, 312, 313, 314, 298, 298, 298, 441, 298,
301
        298, 441, 298, 457, 298, 441, 287, 298, 44, 45,
302
        38, 298, 441, 298, 298, 441, 298, 457, 298, 441,
303
        248, 298, 298, 298, 298, 310, 312, 313, 314, 298,
304
        44, 45, 38, 298, 298, 112, 298, 44, 45, 38,
305
        298, 173, 298, 298, 44, 45, 38, 310, 312, 313,
306
        314, 44, 45, 38, 310, 312, 313, 314, 298, 298,
307
        299, 310, 312, 313, 314, 44, 45, 38, 310, 312,
308
        313, 314, 174, 298, 298, 298, 138, 298, 298, 298,
309
        298, 298, 310, 312, 313, 314, 44, 45, 38, 298,
310
        298, 298, 44, 45, 38, 298, 44, 45, 38, 298,
311
        44, 45, 38, 310, 312, 313, 314, 307, 298, 310,
312
        312, 313, 314, 310, 312, 313, 314, 310, 312, 313,
313
        314,
314
    );
315
316
    public static $yy_lookahead     = array(
317
        10, 11, 12, 13, 74, 15, 36, 17, 1, 19,
318
        20, 21, 29, 103, 84, 45, 26, 14, 48, 36,
319
        30, 31, 32, 53, 34, 22, 36, 24, 98, 39,
320
        27, 48, 42, 43, 44, 45, 33, 47, 35, 49,
321
        37, 51, 52, 53, 54, 14, 16, 16, 45, 59,
322
        60, 96, 10, 11, 12, 13, 1, 15, 27, 17,
323
        53, 19, 20, 21, 33, 27, 1, 36, 26, 14,
324
        45, 33, 30, 31, 32, 45, 34, 52, 36, 48,
325
        72, 39, 27, 75, 42, 43, 44, 45, 33, 47,
326
        82, 49, 27, 51, 52, 15, 54, 17, 33, 91,
327
        83, 59, 60, 95, 10, 11, 12, 13, 13, 15,
328
        15, 17, 17, 19, 20, 21, 97, 35, 99, 100,
329
        26, 86, 87, 88, 30, 31, 32, 66, 34, 49,
330
        36, 51, 96, 39, 54, 53, 42, 43, 44, 45,
331
        72, 47, 16, 49, 18, 51, 52, 79, 54, 54,
332
        82, 14, 18, 59, 60, 1, 10, 11, 12, 13,
333
        23, 15, 15, 17, 27, 19, 20, 21, 14, 17,
334
        33, 13, 26, 15, 48, 17, 30, 31, 32, 45,
335
        34, 27, 36, 46, 83, 39, 52, 33, 42, 43,
336
        44, 45, 34, 47, 74, 49, 10, 51, 52, 13,
337
        54, 54, 50, 17, 84, 59, 60, 14, 10, 11,
338
        12, 13, 54, 15, 45, 17, 23, 19, 20, 21,
339
        27, 52, 100, 103, 26, 35, 33, 37, 30, 31,
340
        32, 22, 34, 67, 36, 69, 50, 39, 83, 46,
341
        42, 43, 44, 45, 35, 47, 72, 49, 10, 51,
342
        52, 13, 54, 79, 80, 17, 82, 59, 60, 1,
343
        10, 11, 12, 13, 16, 15, 18, 17, 72, 19,
344
        20, 21, 14, 107, 108, 79, 26, 71, 82, 18,
345
        30, 31, 32, 1, 34, 27, 36, 15, 50, 39,
346
        45, 33, 42, 43, 44, 45, 48, 47, 53, 49,
347
        10, 51, 52, 13, 54, 99, 100, 17, 36, 59,
348
        60, 29, 10, 11, 12, 13, 15, 15, 17, 17,
349
        13, 19, 20, 21, 8, 9, 54, 72, 26, 67,
350
        75, 69, 30, 31, 32, 78, 34, 82, 36, 24,
351
        50, 39, 17, 36, 42, 43, 44, 45, 74, 47,
352
        95, 49, 51, 51, 52, 54, 54, 35, 84, 37,
353
        103, 59, 60, 36, 10, 11, 12, 13, 74, 15,
354
        108, 17, 23, 19, 20, 21, 10, 103, 84, 13,
355
        26, 23, 36, 17, 30, 31, 32, 7, 34, 9,
356
        36, 17, 98, 39, 48, 46, 42, 43, 44, 45,
357
        17, 47, 53, 49, 46, 51, 52, 93, 54, 78,
358
        16, 1, 36, 59, 60, 101, 10, 11, 12, 13,
359
        35, 15, 37, 17, 48, 19, 20, 21, 18, 36,
360
        65, 66, 26, 74, 103, 104, 30, 31, 32, 45,
361
        34, 48, 36, 84, 36, 39, 52, 17, 42, 43,
362
        44, 45, 15, 47, 17, 49, 10, 51, 52, 13,
363
        54, 18, 74, 17, 82, 59, 60, 34, 10, 11,
364
        12, 13, 84, 15, 93, 17, 15, 19, 20, 21,
365
        1, 2, 101, 101, 26, 99, 100, 17, 30, 31,
366
        32, 48, 34, 96, 36, 98, 96, 39, 98, 71,
367
        42, 43, 44, 45, 35, 47, 37, 49, 27, 51,
368
        52, 67, 54, 69, 33, 54, 74, 59, 60, 17,
369
        10, 11, 12, 13, 96, 15, 84, 17, 34, 19,
370
        20, 21, 45, 78, 63, 64, 26, 99, 100, 16,
371
        30, 31, 32, 16, 34, 23, 36, 17, 17, 39,
372
        23, 51, 42, 43, 44, 45, 72, 47, 103, 49,
373
        78, 51, 52, 17, 54, 74, 82, 41, 46, 59,
374
        60, 67, 68, 69, 70, 84, 72, 73, 53, 75,
375
        76, 77, 53, 61, 15, 103, 82, 14, 51, 85,
376
        14, 37, 17, 8, 90, 91, 92, 1, 94, 95,
377
        3, 4, 5, 6, 7, 96, 82, 10, 11, 12,
378
        13, 97, 84, 81, 96, 74, 19, 20, 21, 78,
379
        82, 82, 1, 26, 104, 84, 2, 30, 31, 32,
380
        67, 68, 69, 70, 98, 72, 73, 109, 75, 76,
381
        77, 67, 109, 69, 103, 82, 72, 96, 85, 75,
382
        76, 77, 96, 90, 91, 92, 82, 94, 95, 85,
383
        10, 14, 96, 13, 90, 91, 92, 17, 94, 95,
384
        109, 109, 109, 109, 109, 109, 109, 27, 109, 105,
385
        106, 109, 109, 33, 4, 38, 39, 40, 109, 109,
386
        10, 11, 12, 13, 109, 15, 109, 109, 109, 19,
387
        20, 21, 55, 56, 57, 58, 26, 74, 109, 109,
388
        30, 31, 32, 109, 109, 109, 4, 84, 109, 86,
389
        87, 88, 10, 11, 12, 13, 109, 15, 109, 109,
390
        109, 19, 20, 21, 109, 74, 109, 109, 26, 109,
391
        60, 61, 30, 31, 32, 84, 109, 86, 87, 88,
392
        109, 109, 67, 109, 69, 70, 109, 72, 73, 109,
393
        75, 76, 77, 109, 109, 109, 109, 82, 109, 109,
394
        85, 109, 60, 61, 109, 90, 91, 92, 10, 94,
395
        95, 13, 109, 2, 67, 17, 69, 109, 109, 72,
396
        109, 109, 75, 76, 77, 27, 109, 29, 109, 82,
397
        109, 33, 85, 109, 109, 109, 109, 90, 91, 92,
398
        109, 94, 95, 109, 109, 109, 109, 36, 109, 38,
399
        39, 40, 105, 106, 109, 67, 109, 69, 109, 48,
400
        72, 109, 109, 75, 76, 77, 55, 56, 57, 58,
401
        82, 109, 109, 85, 109, 109, 109, 74, 90, 91,
402
        92, 78, 94, 95, 67, 27, 69, 84, 109, 72,
403
        102, 33, 75, 76, 77, 109, 38, 39, 40, 82,
404
        109, 109, 85, 109, 109, 109, 103, 90, 91, 92,
405
        109, 94, 95, 55, 56, 57, 58, 109, 109, 102,
406
        67, 109, 69, 109, 109, 72, 109, 109, 75, 76,
407
        77, 109, 109, 109, 109, 82, 109, 109, 85, 109,
408
        109, 109, 109, 90, 91, 92, 109, 94, 95, 109,
409
        109, 109, 67, 109, 69, 109, 1, 72, 109, 106,
410
        75, 76, 77, 109, 79, 109, 109, 82, 109, 14,
411
        85, 74, 109, 18, 109, 90, 91, 92, 109, 94,
412
        95, 84, 27, 86, 87, 88, 109, 67, 33, 69,
413
        109, 36, 72, 109, 109, 75, 76, 77, 109, 109,
414
        109, 109, 82, 48, 109, 85, 109, 109, 109, 109,
415
        90, 91, 92, 109, 94, 95, 67, 109, 69, 109,
416
        109, 72, 102, 109, 75, 76, 77, 67, 79, 69,
417
        109, 82, 72, 109, 85, 75, 76, 77, 109, 90,
418
        91, 92, 82, 94, 95, 85, 109, 109, 109, 109,
419
        90, 91, 92, 109, 94, 95, 109, 67, 109, 69,
420
        109, 109, 72, 109, 109, 75, 76, 77, 109, 109,
421
        109, 109, 82, 109, 109, 85, 109, 109, 109, 109,
422
        90, 91, 92, 109, 94, 95, 67, 109, 69, 109,
423
        109, 72, 109, 109, 75, 76, 77, 67, 109, 69,
424
        109, 82, 72, 109, 85, 75, 76, 77, 109, 90,
425
        91, 92, 82, 94, 95, 85, 109, 109, 109, 109,
426
        90, 91, 92, 109, 94, 95, 109, 67, 109, 69,
427
        109, 109, 72, 109, 109, 75, 76, 77, 109, 109,
428
        109, 109, 82, 109, 109, 85, 109, 109, 109, 109,
429
        90, 91, 92, 109, 94, 95, 67, 109, 69, 109,
430
        109, 72, 109, 109, 75, 76, 77, 67, 109, 69,
431
        109, 82, 72, 109, 85, 75, 76, 77, 109, 90,
432
        91, 92, 82, 94, 95, 85, 109, 109, 109, 109,
433
        90, 91, 92, 109, 94, 95, 109, 67, 109, 69,
434
        109, 109, 72, 109, 109, 75, 76, 77, 109, 109,
435
        109, 109, 82, 109, 109, 85, 109, 109, 109, 109,
436
        90, 91, 92, 109, 94, 95, 67, 109, 69, 109,
437
        109, 72, 109, 109, 75, 76, 77, 67, 109, 69,
438
        109, 82, 72, 109, 85, 75, 76, 77, 109, 90,
439
        91, 92, 82, 94, 95, 85, 109, 109, 109, 109,
440
        90, 91, 92, 109, 94, 95, 109, 67, 109, 69,
441
        109, 109, 72, 109, 109, 75, 76, 77, 109, 109,
442
        109, 109, 82, 109, 109, 85, 109, 109, 109, 109,
443
        90, 91, 92, 109, 94, 95, 67, 109, 69, 109,
444
        109, 72, 109, 109, 75, 76, 77, 67, 109, 69,
445
        109, 82, 72, 109, 85, 75, 76, 77, 109, 90,
446
        91, 92, 82, 94, 95, 85, 109, 109, 109, 109,
447
        90, 91, 92, 109, 94, 95, 109, 67, 109, 69,
448
        109, 109, 72, 109, 109, 75, 76, 77, 109, 109,
449
        109, 109, 82, 109, 109, 85, 109, 109, 109, 109,
450
        90, 91, 92, 109, 94, 95, 67, 109, 69, 109,
451
        109, 72, 109, 109, 75, 76, 77, 67, 109, 69,
452
        109, 82, 72, 109, 85, 75, 76, 77, 109, 90,
453
        91, 92, 82, 94, 95, 85, 109, 109, 109, 109,
454
        90, 91, 92, 109, 94, 95, 109, 67, 109, 69,
455
        109, 109, 72, 109, 109, 75, 76, 77, 109, 109,
456
        109, 109, 82, 109, 109, 85, 109, 109, 109, 109,
457
        90, 91, 92, 109, 94, 95, 67, 109, 69, 109,
458
        109, 72, 109, 109, 75, 76, 77, 67, 109, 69,
459
        109, 82, 72, 109, 85, 75, 76, 77, 109, 90,
460
        91, 92, 82, 94, 95, 85, 109, 109, 109, 109,
461
        90, 91, 92, 109, 94, 95, 109, 67, 109, 69,
462
        109, 109, 72, 109, 109, 75, 76, 77, 109, 109,
463
        109, 109, 82, 109, 109, 85, 109, 109, 109, 109,
464
        90, 91, 92, 109, 94, 95, 67, 109, 69, 109,
465
        109, 72, 109, 109, 75, 76, 77, 67, 109, 69,
466
        109, 82, 72, 109, 85, 75, 76, 77, 109, 90,
467
        91, 92, 82, 94, 95, 85, 109, 109, 109, 109,
468
        90, 91, 92, 109, 94, 95, 109, 67, 109, 69,
469
        109, 109, 72, 109, 109, 75, 76, 77, 109, 109,
470
        109, 109, 82, 109, 109, 85, 109, 109, 109, 109,
471
        90, 91, 92, 109, 94, 95, 67, 109, 69, 109,
472
        109, 72, 109, 109, 75, 76, 77, 67, 109, 69,
473
        109, 82, 72, 109, 85, 75, 76, 77, 109, 90,
474
        91, 92, 82, 94, 95, 85, 109, 109, 109, 109,
475
        90, 91, 92, 109, 94, 95, 109, 67, 109, 69,
476
        109, 109, 72, 109, 109, 75, 76, 109, 109, 109,
477
        109, 109, 82, 109, 109, 109, 109, 109, 109, 89,
478
        90, 91, 92, 109, 94, 95, 67, 109, 69, 109,
479
        109, 72, 109, 109, 75, 76, 109, 67, 109, 69,
480
        109, 82, 72, 109, 109, 75, 76, 109, 89, 90,
481
        91, 92, 82, 94, 95, 109, 109, 109, 109, 109,
482
        90, 91, 92, 109, 94, 95, 109, 67, 109, 69,
483
        109, 109, 72, 109, 109, 75, 76, 109, 109, 109,
484
        109, 109, 82, 109, 109, 109, 109, 109, 109, 109,
485
        90, 91, 92, 109, 94, 95, 67, 109, 69, 109,
486
        109, 72, 109, 109, 75, 76, 109, 67, 109, 69,
487
        109, 82, 72, 109, 109, 75, 76, 109, 109, 90,
488
        91, 92, 82, 94, 95, 109, 109, 109, 109, 109,
489
        90, 91, 92, 109, 94, 95, 109, 67, 109, 69,
490
        109, 109, 72, 109, 109, 75, 76, 109, 109, 109,
491
        109, 109, 82, 109, 109, 109, 109, 109, 109, 109,
492
        90, 91, 92, 109, 94, 95, 67, 109, 69, 109,
493
        109, 72, 109, 109, 75, 76, 109, 67, 109, 69,
494
        109, 82, 72, 109, 109, 75, 76, 109, 109, 90,
495
        91, 92, 82, 94, 95, 109, 109, 109, 109, 109,
496
        90, 91, 92, 2, 94, 95, 109, 25, 109, 27,
497
        109, 10, 109, 109, 13, 33, 109, 16, 17, 18,
498
        38, 39, 40, 37, 38, 39, 40, 109, 109, 109,
499
        109, 109, 109, 109, 109, 109, 109, 55, 56, 57,
500
        58, 55, 56, 57, 58, 109, 45, 109, 109, 48,
501
        109, 50, 2, 52, 10, 109, 109, 13, 109, 109,
502
        10, 17, 18, 13, 109, 109, 2, 17, 18, 109,
503
        109, 109, 109, 109, 10, 109, 109, 13, 109, 109,
504
        16, 17, 18, 109, 109, 109, 109, 109, 109, 45,
505
        109, 109, 48, 109, 50, 45, 52, 109, 48, 109,
506
        50, 109, 52, 53, 109, 109, 109, 109, 109, 45,
507
        109, 109, 48, 109, 50, 2, 52, 109, 109, 109,
508
        109, 109, 109, 10, 109, 109, 13, 109, 109, 2,
509
        17, 18, 2, 37, 38, 39, 40, 10, 109, 109,
510
        13, 109, 109, 109, 17, 18, 109, 109, 109, 109,
511
        109, 55, 56, 57, 58, 109, 109, 109, 45, 109,
512
        109, 48, 109, 50, 109, 52, 14, 109, 38, 39,
513
        40, 109, 45, 109, 109, 48, 109, 50, 109, 52,
514
        14, 109, 109, 109, 109, 55, 56, 57, 58, 109,
515
        38, 39, 40, 109, 109, 22, 109, 38, 39, 40,
516
        109, 14, 109, 109, 38, 39, 40, 55, 56, 57,
517
        58, 38, 39, 40, 55, 56, 57, 58, 109, 109,
518
        61, 55, 56, 57, 58, 38, 39, 40, 55, 56,
519
        57, 58, 14, 109, 109, 109, 28, 109, 109, 109,
520
        109, 109, 55, 56, 57, 58, 38, 39, 40, 109,
521
        109, 109, 38, 39, 40, 109, 38, 39, 40, 109,
522
        38, 39, 40, 55, 56, 57, 58, 53, 109, 55,
523
        56, 57, 58, 55, 56, 57, 58, 55, 56, 57,
524
        58,
525
    );
526
527
    public static $yy_shift_ofst    = array(
528
        -31, 406, 406, 458, 458, 94, 510, 94, 94, 94,
529
        510, 458, -10, 94, 94, 354, 146, 94, 94, 94,
530
        94, 146, 94, 94, 94, 94, 250, 94, 94, 94,
531
        94, 94, 94, 302, 94, 94, 94, 198, 42, 42,
532
        42, 42, 42, 42, 42, 42, 1772, 828, 828, 80,
533
        712, 925, 301, 65, 272, 680, 1942, 1920, 1886, 1776,
534
        647, 1949, 1977, 2008, 2004, 1963, 1998, 1956, 2012, 2012,
535
        2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012, 2012,
536
        2012, 2012, 2012, 768, 650, 272, 65, 272, 65, 134,
537
        126, 479, 597, 1854, 154, 290, 95, 55, 258, 366,
538
        248, 366, 282, 443, 437, 38, 38, 437, 7, 481,
539
        410, 38, 461, 621, 596, 596, 261, 596, 596, 261,
540
        596, 596, 596, 596, 596, -31, -31, 1840, 1791, 1917,
541
        1903, 1834, 158, 238, 394, 446, 38, 25, 147, 169,
542
        147, 25, 169, 25, 38, 38, 25, 25, 38, 25,
543
        307, 38, 38, 25, 527, 38, 38, 25, 38, 38,
544
        38, 38, 38, 596, 624, 261, 624, 327, 596, 596,
545
        261, 596, 261, -31, -31, -31, -31, -31, -31, 781,
546
        3, 31, 193, 137, -30, 186, -17, 522, 349, 469,
547
        322, 30, 82, 316, 346, 376, 190, 358, 393, 152,
548
        209, 380, 385, 245, 315, 523, 585, 554, 576, 575,
549
        537, 573, 569, 529, 525, 546, 500, 526, 531, 325,
550
        530, 487, 494, 502, 470, 433, 430, 408, 383, 327,
551
        374,
552
    );
553
554
    public static $yy_reduce_ofst   = array(
555
        471, 504, 563, 717, 574, 685, 919, 890, 787, 758,
556
        855, 823, 1240, 1199, 1140, 1100, 1070, 1129, 1170, 1210,
557
        1269, 1280, 1310, 1339, 1350, 1380, 1409, 1420, 1450, 1479,
558
        1490, 1059, 1030, 1000, 930, 960, 989, 1520, 1549, 1700,
559
        1619, 1689, 1660, 1630, 1590, 1560, 633, 661, 867, 8,
560
        166, 773, 255, 541, 174, 262, 35, 35, 35, 35,
561
        35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
562
        35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
563
        35, 35, 35, 294, -70, 196, 120, 68, 274, 19,
564
        206, 331, 444, 428, 257, 400, 382, 257, 257, 400,
565
        386, 397, 257, 386, 381, 388, 359, 314, 257, 442,
566
        482, 491, 484, 257, 257, 455, 386, 257, 257, 438,
567
        257, 257, 257, 257, 257, 257, 365, 509, 509, 509,
568
        509, 509, 524, 536, 509, 509, 528, 514, 539, 551,
569
        538, 514, 556, 514, 528, 528, 514, 514, 528, 514,
570
        518, 528, 528, 514, 532, 528, 528, 514, 528, 528,
571
        528, 528, 528, -90, 520, 122, 520, 566, -90, -90,
572
        122, -90, 122, -45, 36, 155, 101, 61, 17,
573
    );
574
575
    public static $yyExpectedTokens = array(
576
        array(),
577
        array(
578
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
579
        ),
580
        array(
581
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
582
        ),
583
        array(
584
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
585
        ),
586
        array(
587
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
588
        ),
589
        array(
590
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
591
        ),
592
        array(
593
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
594
        ),
595
        array(
596
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
597
        ),
598
        array(
599
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
600
        ),
601
        array(
602
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
603
        ),
604
        array(
605
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
606
        ),
607
        array(
608
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
609
        ),
610
        array(
611
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 53, 54, 59,
612
            60,
613
        ),
614
        array(
615
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
616
        ),
617
        array(
618
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
619
        ),
620
        array(
621
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
622
        ),
623
        array(
624
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
625
        ),
626
        array(
627
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
628
        ),
629
        array(
630
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
631
        ),
632
        array(
633
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
634
        ),
635
        array(
636
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
637
        ),
638
        array(
639
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
640
        ),
641
        array(
642
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
643
        ),
644
        array(
645
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
646
        ),
647
        array(
648
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
649
        ),
650
        array(
651
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
652
        ),
653
        array(
654
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
655
        ),
656
        array(
657
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
658
        ),
659
        array(
660
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
661
        ),
662
        array(
663
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
664
        ),
665
        array(
666
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
667
        ),
668
        array(
669
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
670
        ),
671
        array(
672
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
673
        ),
674
        array(
675
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
676
        ),
677
        array(
678
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
679
        ),
680
        array(
681
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
682
        ),
683
        array(
684
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
685
        ),
686
        array(
687
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
688
        ),
689
        array(
690
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
691
        ),
692
        array(
693
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
694
        ),
695
        array(
696
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
697
        ),
698
        array(
699
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
700
        ),
701
        array(
702
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
703
        ),
704
        array(
705
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
706
        ),
707
        array(
708
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
709
        ),
710
        array(
711
            10, 11, 12, 13, 15, 17, 19, 20, 21, 26, 30, 31, 32, 34, 36, 39, 42, 43, 44, 45, 47, 49, 51, 52, 54, 59, 60,
712
        ),
713
        array(25, 27, 33, 38, 39, 40, 55, 56, 57, 58,),
714
        array(27, 33, 38, 39, 40, 55, 56, 57, 58,),
715
        array(27, 33, 38, 39, 40, 55, 56, 57, 58,),
716
        array(15, 17, 49, 51, 54,),
717
        array(4, 10, 11, 12, 13, 15, 19, 20, 21, 26, 30, 31, 32, 60, 61,),
718
        array(1, 14, 18, 27, 33, 36, 48,),
719
        array(15, 17, 51, 54,),
720
        array(1, 27, 33,),
721
        array(15, 36, 54,),
722
        array(4, 10, 11, 12, 13, 15, 19, 20, 21, 26, 30, 31, 32, 60, 61,),
723
        array(14, 38, 39, 40, 55, 56, 57, 58,),
724
        array(2, 38, 39, 40, 55, 56, 57, 58,),
725
        array(37, 38, 39, 40, 55, 56, 57, 58,),
726
        array(37, 38, 39, 40, 55, 56, 57, 58,),
727
        array(14, 38, 39, 40, 55, 56, 57, 58,),
728
        array(38, 39, 40, 55, 56, 57, 58, 61,),
729
        array(14, 38, 39, 40, 55, 56, 57, 58,),
730
        array(14, 38, 39, 40, 55, 56, 57, 58,),
731
        array(38, 39, 40, 53, 55, 56, 57, 58,),
732
        array(22, 38, 39, 40, 55, 56, 57, 58,),
733
        array(28, 38, 39, 40, 55, 56, 57, 58,),
734
        array(14, 38, 39, 40, 55, 56, 57, 58,),
735
        array(38, 39, 40, 55, 56, 57, 58,),
736
        array(38, 39, 40, 55, 56, 57, 58,),
737
        array(38, 39, 40, 55, 56, 57, 58,),
738
        array(38, 39, 40, 55, 56, 57, 58,),
739
        array(38, 39, 40, 55, 56, 57, 58,),
740
        array(38, 39, 40, 55, 56, 57, 58,),
741
        array(38, 39, 40, 55, 56, 57, 58,),
742
        array(38, 39, 40, 55, 56, 57, 58,),
743
        array(38, 39, 40, 55, 56, 57, 58,),
744
        array(38, 39, 40, 55, 56, 57, 58,),
745
        array(38, 39, 40, 55, 56, 57, 58,),
746
        array(38, 39, 40, 55, 56, 57, 58,),
747
        array(38, 39, 40, 55, 56, 57, 58,),
748
        array(38, 39, 40, 55, 56, 57, 58,),
749
        array(38, 39, 40, 55, 56, 57, 58,),
750
        array(10, 13, 17, 27, 29, 33,),
751
        array(10, 13, 17, 27, 33,),
752
        array(15, 36, 54,),
753
        array(1, 27, 33,),
754
        array(15, 36, 54,),
755
        array(1, 27, 33,),
756
        array(18, 45, 52,),
757
        array(16, 18, 48,),
758
        array(1, 2,),
759
        array(3, 4, 5, 6, 7, 10, 11, 12, 13, 19, 20, 21, 26, 30, 31, 32,),
760
        array(2, 10, 13, 16, 17, 18, 45, 48, 50, 52,),
761
        array(1, 14, 27, 33,),
762
        array(10, 13, 17, 50,),
763
        array(13, 15, 17, 54,),
764
        array(1, 14, 27, 33,),
765
        array(1, 14, 27, 33,),
766
        array(10, 13, 17,),
767
        array(16, 18, 48,),
768
        array(10, 13, 17,),
769
        array(1, 29,),
770
        array(18, 48,),
771
        array(15, 17,),
772
        array(27, 33,),
773
        array(27, 33,),
774
        array(15, 17,),
775
        array(1, 53,),
776
        array(27, 33,),
777
        array(1, 18,),
778
        array(27, 33,),
779
        array(15, 54,),
780
        array(1,),
781
        array(1,),
782
        array(1,),
783
        array(18,),
784
        array(1,),
785
        array(1,),
786
        array(18,),
787
        array(1,),
788
        array(1,),
789
        array(1,),
790
        array(1,),
791
        array(1,),
792
        array(),
793
        array(),
794
        array(2, 10, 13, 17, 18, 45, 48, 50, 52, 53,),
795
        array(2, 10, 13, 16, 17, 18, 45, 48, 50, 52,),
796
        array(2, 10, 13, 17, 18, 45, 48, 50, 52,),
797
        array(2, 10, 13, 17, 18, 45, 48, 50, 52,),
798
        array(10, 13, 17, 18, 45, 48, 50, 52,),
799
        array(13, 15, 17, 34, 54,),
800
        array(10, 13, 17, 50,),
801
        array(16, 45, 52,),
802
        array(10, 13, 17,),
803
        array(27, 33,),
804
        array(45, 52,),
805
        array(15, 54,),
806
        array(45, 52,),
807
        array(15, 54,),
808
        array(45, 52,),
809
        array(45, 52,),
810
        array(45, 52,),
811
        array(27, 33,),
812
        array(27, 33,),
813
        array(45, 52,),
814
        array(45, 52,),
815
        array(27, 33,),
816
        array(45, 52,),
817
        array(13, 36,),
818
        array(27, 33,),
819
        array(27, 33,),
820
        array(45, 52,),
821
        array(16, 23,),
822
        array(27, 33,),
823
        array(27, 33,),
824
        array(45, 52,),
825
        array(27, 33,),
826
        array(27, 33,),
827
        array(27, 33,),
828
        array(27, 33,),
829
        array(27, 33,),
830
        array(1,),
831
        array(2,),
832
        array(18,),
833
        array(2,),
834
        array(36,),
835
        array(1,),
836
        array(1,),
837
        array(18,),
838
        array(1,),
839
        array(18,),
840
        array(),
841
        array(),
842
        array(),
843
        array(),
844
        array(),
845
        array(),
846
        array(2, 36, 38, 39, 40, 48, 55, 56, 57, 58,),
847
        array(14, 22, 24, 27, 33, 35, 37, 45,),
848
        array(14, 16, 27, 33, 36, 48,),
849
        array(14, 23, 27, 33, 46,),
850
        array(14, 23, 27, 33, 46,),
851
        array(36, 45, 48, 53,),
852
        array(10, 13, 17, 50,),
853
        array(29, 36, 48,),
854
        array(23, 46, 61,),
855
        array(23, 46, 53,),
856
        array(35, 37,),
857
        array(35, 37,),
858
        array(16, 45,),
859
        array(35, 53,),
860
        array(8, 9,),
861
        array(36, 48,),
862
        array(36, 48,),
863
        array(35, 37,),
864
        array(23, 46,),
865
        array(36, 48,),
866
        array(17, 50,),
867
        array(22, 35,),
868
        array(7, 9,),
869
        array(35, 37,),
870
        array(45, 53,),
871
        array(24,),
872
        array(16,),
873
        array(8,),
874
        array(37,),
875
        array(14,),
876
        array(17,),
877
        array(51,),
878
        array(14,),
879
        array(15,),
880
        array(53,),
881
        array(53,),
882
        array(17,),
883
        array(51,),
884
        array(41,),
885
        array(17,),
886
        array(17,),
887
        array(17,),
888
        array(45,),
889
        array(34,),
890
        array(17,),
891
        array(17,),
892
        array(34,),
893
        array(17,),
894
        array(36,),
895
        array(17,),
896
        array(36,),
897
        array(17,),
898
        array(),
899
        array(),
900
        array(),
901
        array(),
902
        array(),
903
        array(),
904
        array(),
905
        array(),
906
        array(),
907
        array(),
908
        array(),
909
        array(),
910
        array(),
911
        array(),
912
        array(),
913
        array(),
914
        array(),
915
        array(),
916
        array(),
917
        array(),
918
        array(),
919
        array(),
920
        array(),
921
        array(),
922
        array(),
923
        array(),
924
        array(),
925
        array(),
926
        array(),
927
        array(),
928
        array(),
929
        array(),
930
        array(),
931
        array(),
932
        array(),
933
        array(),
934
        array(),
935
        array(),
936
        array(),
937
        array(),
938
        array(),
939
        array(),
940
        array(),
941
        array(),
942
        array(),
943
        array(),
944
        array(),
945
        array(),
946
        array(),
947
        array(),
948
        array(),
949
        array(),
950
        array(),
951
        array(),
952
        array(),
953
        array(),
954
        array(),
955
        array(),
956
        array(),
957
        array(),
958
        array(),
959
        array(),
960
        array(),
961
        array(),
962
        array(),
963
        array(),
964
        array(),
965
        array(),
966
        array(),
967
        array(),
968
        array(),
969
        array(),
970
        array(),
971
        array(),
972
        array(),
973
        array(),
974
        array(),
975
        array(),
976
        array(),
977
        array(),
978
        array(),
979
        array(),
980
        array(),
981
        array(),
982
        array(),
983
        array(),
984
        array(),
985
        array(),
986
        array(),
987
        array(),
988
        array(),
989
        array(),
990
        array(),
991
        array(),
992
        array(),
993
        array(),
994
    );
995
996
    public static $yy_default       = array(
997
        338, 514, 514, 499, 499, 514, 514, 476, 476, 476,
998
        514, 514, 514, 514, 514, 514, 514, 514, 514, 514,
999
        514, 514, 514, 514, 514, 514, 514, 514, 514, 514,
1000
        514, 514, 514, 514, 514, 514, 514, 514, 514, 514,
1001
        514, 514, 514, 514, 514, 514, 379, 358, 379, 514,
1002
        514, 415, 514, 379, 514, 514, 351, 514, 514, 514,
1003
        514, 514, 514, 514, 514, 514, 384, 514, 399, 475,
1004
        351, 403, 390, 474, 500, 502, 384, 501, 363, 381,
1005
        404, 386, 391, 379, 379, 514, 379, 514, 379, 489,
1006
        431, 370, 327, 430, 393, 441, 514, 393, 393, 441,
1007
        431, 441, 393, 431, 514, 379, 360, 514, 393, 379,
1008
        373, 379, 514, 406, 402, 375, 431, 396, 398, 486,
1009
        393, 408, 397, 407, 406, 483, 336, 430, 430, 430,
1010
        430, 430, 514, 443, 457, 441, 367, 438, 514, 436,
1011
        514, 435, 434, 466, 368, 348, 439, 437, 361, 467,
1012
        441, 356, 354, 468, 514, 366, 355, 469, 362, 359,
1013
        352, 369, 365, 371, 478, 463, 477, 441, 374, 376,
1014
        490, 424, 487, 441, 441, 482, 482, 336, 482, 415,
1015
        411, 415, 405, 405, 415, 442, 415, 405, 405, 514,
1016
        514, 411, 514, 514, 425, 514, 514, 405, 415, 514,
1017
        514, 334, 514, 411, 387, 514, 514, 514, 514, 514,
1018
        514, 514, 514, 420, 514, 514, 514, 417, 514, 514,
1019
        514, 411, 413, 514, 514, 514, 514, 488, 514, 457,
1020
        514, 421, 364, 420, 340, 422, 357, 341, 409, 400,
1021
        480, 457, 462, 401, 485, 423, 426, 342, 447, 380,
1022
        416, 339, 428, 329, 330, 444, 445, 446, 394, 331,
1023
        395, 429, 419, 388, 332, 418, 410, 392, 412, 333,
1024
        335, 414, 337, 472, 417, 479, 427, 497, 347, 461,
1025
        460, 459, 378, 346, 464, 510, 495, 511, 498, 473,
1026
        377, 496, 503, 506, 513, 512, 509, 507, 504, 508,
1027
        345, 458, 471, 448, 505, 454, 452, 455, 456, 450,
1028
        491, 449, 492, 493, 494, 470, 451, 328, 453, 343,
1029
        344, 372, 481, 432, 433, 465, 440,
1030
    );
1031
1032
    public static $yyFallback       = array();
1033
1034
    public static $yyRuleName       = array(
1035
        'start ::= template',
1036
        'template ::= template PHP',
1037
        'template ::= template TEXT',
1038
        'template ::= template STRIPON',
1039
        'template ::= template STRIPOFF',
1040
        'template ::= template LITERALSTART literal_e2 LITERALEND',
1041
        'literal_e2 ::= literal_e1 LITERALSTART literal_e1 LITERALEND',
1042
        'literal_e2 ::= literal_e1',
1043
        'literal_e1 ::= literal_e1 LITERAL',
1044
        'literal_e1 ::=',
1045
        'template ::= template smartytag',
1046
        'template ::=',
1047
        'smartytag ::= SIMPELOUTPUT',
1048
        'smartytag ::= SIMPLETAG',
1049
        'smartytag ::= SMARTYBLOCKCHILDPARENT',
1050
        'smartytag ::= LDEL tagbody RDEL',
1051
        'smartytag ::= tag RDEL',
1052
        'tagbody ::= outattr',
1053
        'tagbody ::= DOLLARID eqoutattr',
1054
        'tagbody ::= varindexed eqoutattr',
1055
        'eqoutattr ::= EQUAL outattr',
1056
        'outattr ::= output attributes',
1057
        'output ::= variable',
1058
        'output ::= value',
1059
        'output ::= expr',
1060
        'tag ::= LDEL ID attributes',
1061
        'tag ::= LDEL ID',
1062
        'tag ::= LDEL ID modifierlist attributes',
1063
        'tag ::= LDEL ID PTR ID attributes',
1064
        'tag ::= LDEL ID PTR ID modifierlist attributes',
1065
        'tag ::= LDELMAKENOCACHE DOLLARID',
1066
        'tag ::= LDELIF expr',
1067
        'tag ::= LDELIF expr attributes',
1068
        'tag ::= LDELIF statement',
1069
        'tag ::= LDELIF statement attributes',
1070
        'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
1071
        'foraction ::= EQUAL expr',
1072
        'foraction ::= INCDEC',
1073
        'tag ::= LDELFOR statement TO expr attributes',
1074
        'tag ::= LDELFOR statement TO expr STEP expr attributes',
1075
        'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
1076
        'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes',
1077
        'tag ::= LDELFOREACH attributes',
1078
        'tag ::= LDELSETFILTER ID modparameters',
1079
        'tag ::= LDELSETFILTER ID modparameters modifierlist',
1080
        'smartytag ::= CLOSETAG',
1081
        'tag ::= LDELSLASH ID',
1082
        'tag ::= LDELSLASH ID modifierlist',
1083
        'tag ::= LDELSLASH ID PTR ID',
1084
        'tag ::= LDELSLASH ID PTR ID modifierlist',
1085
        'attributes ::= attributes attribute',
1086
        'attributes ::= attribute',
1087
        'attributes ::=',
1088
        'attribute ::= SPACE ID EQUAL ID',
1089
        'attribute ::= ATTR expr',
1090
        'attribute ::= ATTR value',
1091
        'attribute ::= SPACE ID',
1092
        'attribute ::= SPACE expr',
1093
        'attribute ::= SPACE value',
1094
        'attribute ::= SPACE INTEGER EQUAL expr',
1095
        'statements ::= statement',
1096
        'statements ::= statements COMMA statement',
1097
        'statement ::= DOLLARID EQUAL INTEGER',
1098
        'statement ::= DOLLARID EQUAL expr',
1099
        'statement ::= varindexed EQUAL expr',
1100
        'statement ::= OPENP statement CLOSEP',
1101
        'expr ::= value',
1102
        'expr ::= ternary',
1103
        'expr ::= DOLLARID COLON ID',
1104
        'expr ::= expr MATH value',
1105
        'expr ::= expr UNIMATH value',
1106
        'expr ::= expr tlop value',
1107
        'expr ::= expr lop expr',
1108
        'expr ::= expr scond',
1109
        'expr ::= expr ISIN array',
1110
        'expr ::= expr ISIN value',
1111
        'ternary ::= OPENP expr CLOSEP QMARK DOLLARID COLON expr',
1112
        'ternary ::= OPENP expr CLOSEP QMARK expr COLON expr',
1113
        'value ::= variable',
1114
        'value ::= UNIMATH value',
1115
        'value ::= NOT value',
1116
        'value ::= TYPECAST value',
1117
        'value ::= variable INCDEC',
1118
        'value ::= HEX',
1119
        'value ::= INTEGER',
1120
        'value ::= INTEGER DOT INTEGER',
1121
        'value ::= INTEGER DOT',
1122
        'value ::= DOT INTEGER',
1123
        'value ::= ID',
1124
        'value ::= function',
1125
        'value ::= OPENP expr CLOSEP',
1126
        'value ::= variable INSTANCEOF ns1',
1127
        'value ::= variable INSTANCEOF variable',
1128
        'value ::= SINGLEQUOTESTRING',
1129
        'value ::= doublequoted_with_quotes',
1130
        'value ::= varindexed DOUBLECOLON static_class_access',
1131
        'value ::= smartytag',
1132
        'value ::= value modifierlist',
1133
        'value ::= NAMESPACE',
1134
        'value ::= arraydef',
1135
        'value ::= ns1 DOUBLECOLON static_class_access',
1136
        'ns1 ::= ID',
1137
        'ns1 ::= NAMESPACE',
1138
        'variable ::= DOLLARID',
1139
        'variable ::= varindexed',
1140
        'variable ::= varvar AT ID',
1141
        'variable ::= object',
1142
        'variable ::= HATCH ID HATCH',
1143
        'variable ::= HATCH ID HATCH arrayindex',
1144
        'variable ::= HATCH variable HATCH',
1145
        'variable ::= HATCH variable HATCH arrayindex',
1146
        'varindexed ::= DOLLARID arrayindex',
1147
        'varindexed ::= varvar arrayindex',
1148
        'arrayindex ::= arrayindex indexdef',
1149
        'arrayindex ::=',
1150
        'indexdef ::= DOT DOLLARID',
1151
        'indexdef ::= DOT varvar',
1152
        'indexdef ::= DOT varvar AT ID',
1153
        'indexdef ::= DOT ID',
1154
        'indexdef ::= DOT INTEGER',
1155
        'indexdef ::= DOT LDEL expr RDEL',
1156
        'indexdef ::= OPENB ID CLOSEB',
1157
        'indexdef ::= OPENB ID DOT ID CLOSEB',
1158
        'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
1159
        'indexdef ::= OPENB INTEGER CLOSEB',
1160
        'indexdef ::= OPENB DOLLARID CLOSEB',
1161
        'indexdef ::= OPENB variable CLOSEB',
1162
        'indexdef ::= OPENB value CLOSEB',
1163
        'indexdef ::= OPENB expr CLOSEB',
1164
        'indexdef ::= OPENB CLOSEB',
1165
        'varvar ::= DOLLARID',
1166
        'varvar ::= DOLLAR',
1167
        'varvar ::= varvar varvarele',
1168
        'varvarele ::= ID',
1169
        'varvarele ::= SIMPELOUTPUT',
1170
        'varvarele ::= LDEL expr RDEL',
1171
        'object ::= varindexed objectchain',
1172
        'objectchain ::= objectelement',
1173
        'objectchain ::= objectchain objectelement',
1174
        'objectelement ::= PTR ID arrayindex',
1175
        'objectelement ::= PTR varvar arrayindex',
1176
        'objectelement ::= PTR LDEL expr RDEL arrayindex',
1177
        'objectelement ::= PTR ID LDEL expr RDEL arrayindex',
1178
        'objectelement ::= PTR method',
1179
        'function ::= ns1 OPENP params CLOSEP',
1180
        'method ::= ID OPENP params CLOSEP',
1181
        'method ::= DOLLARID OPENP params CLOSEP',
1182
        'params ::= params COMMA expr',
1183
        'params ::= expr',
1184
        'params ::=',
1185
        'modifierlist ::= modifierlist modifier modparameters',
1186
        'modifierlist ::= modifier modparameters',
1187
        'modifier ::= VERT AT ID',
1188
        'modifier ::= VERT ID',
1189
        'modparameters ::= modparameters modparameter',
1190
        'modparameters ::=',
1191
        'modparameter ::= COLON value',
1192
        'modparameter ::= COLON UNIMATH value',
1193
        'modparameter ::= COLON array',
1194
        'static_class_access ::= method',
1195
        'static_class_access ::= method objectchain',
1196
        'static_class_access ::= ID',
1197
        'static_class_access ::= DOLLARID arrayindex',
1198
        'static_class_access ::= DOLLARID arrayindex objectchain',
1199
        'lop ::= LOGOP',
1200
        'lop ::= SLOGOP',
1201
        'tlop ::= TLOGOP',
1202
        'scond ::= SINGLECOND',
1203
        'arraydef ::= OPENB arrayelements CLOSEB',
1204
        'arraydef ::= ARRAYOPEN arrayelements CLOSEP',
1205
        'arrayelements ::= arrayelement',
1206
        'arrayelements ::= arrayelements COMMA arrayelement',
1207
        'arrayelements ::=',
1208
        'arrayelement ::= value APTR expr',
1209
        'arrayelement ::= ID APTR expr',
1210
        'arrayelement ::= expr',
1211
        'doublequoted_with_quotes ::= QUOTE QUOTE',
1212
        'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
1213
        'doublequoted ::= doublequoted doublequotedcontent',
1214
        'doublequoted ::= doublequotedcontent',
1215
        'doublequotedcontent ::= BACKTICK variable BACKTICK',
1216
        'doublequotedcontent ::= BACKTICK expr BACKTICK',
1217
        'doublequotedcontent ::= DOLLARID',
1218
        'doublequotedcontent ::= LDEL variable RDEL',
1219
        'doublequotedcontent ::= LDEL expr RDEL',
1220
        'doublequotedcontent ::= smartytag',
1221
        'doublequotedcontent ::= TEXT',
1222
    );
1223
1224
    public static $yyRuleInfo       = array(
1225
        array(0 => 63, 1 => 1),
1226
        array(0 => 64, 1 => 2),
1227
        array(0 => 64, 1 => 2),
1228
        array(0 => 64, 1 => 2),
1229
        array(0 => 64, 1 => 2),
1230
        array(0 => 64, 1 => 4),
1231
        array(0 => 65, 1 => 4),
1232
        array(0 => 65, 1 => 1),
1233
        array(0 => 66, 1 => 2),
1234
        array(0 => 66, 1 => 0),
1235
        array(0 => 64, 1 => 2),
1236
        array(0 => 64, 1 => 0),
1237
        array(0 => 67, 1 => 1),
1238
        array(0 => 67, 1 => 1),
1239
        array(0 => 67, 1 => 1),
1240
        array(0 => 67, 1 => 3),
1241
        array(0 => 67, 1 => 2),
1242
        array(0 => 68, 1 => 1),
1243
        array(0 => 68, 1 => 2),
1244
        array(0 => 68, 1 => 2),
1245
        array(0 => 71, 1 => 2),
1246
        array(0 => 70, 1 => 2),
1247
        array(0 => 73, 1 => 1),
1248
        array(0 => 73, 1 => 1),
1249
        array(0 => 73, 1 => 1),
1250
        array(0 => 69, 1 => 3),
1251
        array(0 => 69, 1 => 2),
1252
        array(0 => 69, 1 => 4),
1253
        array(0 => 69, 1 => 5),
1254
        array(0 => 69, 1 => 6),
1255
        array(0 => 69, 1 => 2),
1256
        array(0 => 69, 1 => 2),
1257
        array(0 => 69, 1 => 3),
1258
        array(0 => 69, 1 => 2),
1259
        array(0 => 69, 1 => 3),
1260
        array(0 => 69, 1 => 8),
1261
        array(0 => 81, 1 => 2),
1262
        array(0 => 81, 1 => 1),
1263
        array(0 => 69, 1 => 5),
1264
        array(0 => 69, 1 => 7),
1265
        array(0 => 69, 1 => 6),
1266
        array(0 => 69, 1 => 8),
1267
        array(0 => 69, 1 => 2),
1268
        array(0 => 69, 1 => 3),
1269
        array(0 => 69, 1 => 4),
1270
        array(0 => 67, 1 => 1),
1271
        array(0 => 69, 1 => 2),
1272
        array(0 => 69, 1 => 3),
1273
        array(0 => 69, 1 => 4),
1274
        array(0 => 69, 1 => 5),
1275
        array(0 => 74, 1 => 2),
1276
        array(0 => 74, 1 => 1),
1277
        array(0 => 74, 1 => 0),
1278
        array(0 => 84, 1 => 4),
1279
        array(0 => 84, 1 => 2),
1280
        array(0 => 84, 1 => 2),
1281
        array(0 => 84, 1 => 2),
1282
        array(0 => 84, 1 => 2),
1283
        array(0 => 84, 1 => 2),
1284
        array(0 => 84, 1 => 4),
1285
        array(0 => 80, 1 => 1),
1286
        array(0 => 80, 1 => 3),
1287
        array(0 => 79, 1 => 3),
1288
        array(0 => 79, 1 => 3),
1289
        array(0 => 79, 1 => 3),
1290
        array(0 => 79, 1 => 3),
1291
        array(0 => 77, 1 => 1),
1292
        array(0 => 77, 1 => 1),
1293
        array(0 => 77, 1 => 3),
1294
        array(0 => 77, 1 => 3),
1295
        array(0 => 77, 1 => 3),
1296
        array(0 => 77, 1 => 3),
1297
        array(0 => 77, 1 => 3),
1298
        array(0 => 77, 1 => 2),
1299
        array(0 => 77, 1 => 3),
1300
        array(0 => 77, 1 => 3),
1301
        array(0 => 85, 1 => 7),
1302
        array(0 => 85, 1 => 7),
1303
        array(0 => 76, 1 => 1),
1304
        array(0 => 76, 1 => 2),
1305
        array(0 => 76, 1 => 2),
1306
        array(0 => 76, 1 => 2),
1307
        array(0 => 76, 1 => 2),
1308
        array(0 => 76, 1 => 1),
1309
        array(0 => 76, 1 => 1),
1310
        array(0 => 76, 1 => 3),
1311
        array(0 => 76, 1 => 2),
1312
        array(0 => 76, 1 => 2),
1313
        array(0 => 76, 1 => 1),
1314
        array(0 => 76, 1 => 1),
1315
        array(0 => 76, 1 => 3),
1316
        array(0 => 76, 1 => 3),
1317
        array(0 => 76, 1 => 3),
1318
        array(0 => 76, 1 => 1),
1319
        array(0 => 76, 1 => 1),
1320
        array(0 => 76, 1 => 3),
1321
        array(0 => 76, 1 => 1),
1322
        array(0 => 76, 1 => 2),
1323
        array(0 => 76, 1 => 1),
1324
        array(0 => 76, 1 => 1),
1325
        array(0 => 76, 1 => 3),
1326
        array(0 => 91, 1 => 1),
1327
        array(0 => 91, 1 => 1),
1328
        array(0 => 75, 1 => 1),
1329
        array(0 => 75, 1 => 1),
1330
        array(0 => 75, 1 => 3),
1331
        array(0 => 75, 1 => 1),
1332
        array(0 => 75, 1 => 3),
1333
        array(0 => 75, 1 => 4),
1334
        array(0 => 75, 1 => 3),
1335
        array(0 => 75, 1 => 4),
1336
        array(0 => 72, 1 => 2),
1337
        array(0 => 72, 1 => 2),
1338
        array(0 => 96, 1 => 2),
1339
        array(0 => 96, 1 => 0),
1340
        array(0 => 97, 1 => 2),
1341
        array(0 => 97, 1 => 2),
1342
        array(0 => 97, 1 => 4),
1343
        array(0 => 97, 1 => 2),
1344
        array(0 => 97, 1 => 2),
1345
        array(0 => 97, 1 => 4),
1346
        array(0 => 97, 1 => 3),
1347
        array(0 => 97, 1 => 5),
1348
        array(0 => 97, 1 => 3),
1349
        array(0 => 97, 1 => 3),
1350
        array(0 => 97, 1 => 3),
1351
        array(0 => 97, 1 => 3),
1352
        array(0 => 97, 1 => 3),
1353
        array(0 => 97, 1 => 3),
1354
        array(0 => 97, 1 => 2),
1355
        array(0 => 82, 1 => 1),
1356
        array(0 => 82, 1 => 1),
1357
        array(0 => 82, 1 => 2),
1358
        array(0 => 98, 1 => 1),
1359
        array(0 => 98, 1 => 1),
1360
        array(0 => 98, 1 => 3),
1361
        array(0 => 95, 1 => 2),
1362
        array(0 => 99, 1 => 1),
1363
        array(0 => 99, 1 => 2),
1364
        array(0 => 100, 1 => 3),
1365
        array(0 => 100, 1 => 3),
1366
        array(0 => 100, 1 => 5),
1367
        array(0 => 100, 1 => 6),
1368
        array(0 => 100, 1 => 2),
1369
        array(0 => 90, 1 => 4),
1370
        array(0 => 101, 1 => 4),
1371
        array(0 => 101, 1 => 4),
1372
        array(0 => 102, 1 => 3),
1373
        array(0 => 102, 1 => 1),
1374
        array(0 => 102, 1 => 0),
1375
        array(0 => 78, 1 => 3),
1376
        array(0 => 78, 1 => 2),
1377
        array(0 => 103, 1 => 3),
1378
        array(0 => 103, 1 => 2),
1379
        array(0 => 83, 1 => 2),
1380
        array(0 => 83, 1 => 0),
1381
        array(0 => 104, 1 => 2),
1382
        array(0 => 104, 1 => 3),
1383
        array(0 => 104, 1 => 2),
1384
        array(0 => 93, 1 => 1),
1385
        array(0 => 93, 1 => 2),
1386
        array(0 => 93, 1 => 1),
1387
        array(0 => 93, 1 => 2),
1388
        array(0 => 93, 1 => 3),
1389
        array(0 => 87, 1 => 1),
1390
        array(0 => 87, 1 => 1),
1391
        array(0 => 86, 1 => 1),
1392
        array(0 => 88, 1 => 1),
1393
        array(0 => 94, 1 => 3),
1394
        array(0 => 94, 1 => 3),
1395
        array(0 => 105, 1 => 1),
1396
        array(0 => 105, 1 => 3),
1397
        array(0 => 105, 1 => 0),
1398
        array(0 => 106, 1 => 3),
1399
        array(0 => 106, 1 => 3),
1400
        array(0 => 106, 1 => 1),
1401
        array(0 => 92, 1 => 2),
1402
        array(0 => 92, 1 => 3),
1403
        array(0 => 107, 1 => 2),
1404
        array(0 => 107, 1 => 1),
1405
        array(0 => 108, 1 => 3),
1406
        array(0 => 108, 1 => 3),
1407
        array(0 => 108, 1 => 1),
1408
        array(0 => 108, 1 => 3),
1409
        array(0 => 108, 1 => 3),
1410
        array(0 => 108, 1 => 1),
1411
        array(0 => 108, 1 => 1),
1412
    );
1413
1414
    public static $yyReduceMap      = array(
1415
        0   => 0,
1416
        1   => 1,
1417
        2   => 2,
1418
        3   => 3,
1419
        4   => 4,
1420
        5   => 5,
1421
        6   => 6,
1422
        7   => 7,
1423
        22  => 7,
1424
        23  => 7,
1425
        24  => 7,
1426
        37  => 7,
1427
        57  => 7,
1428
        58  => 7,
1429
        66  => 7,
1430
        67  => 7,
1431
        78  => 7,
1432
        83  => 7,
1433
        84  => 7,
1434
        89  => 7,
1435
        93  => 7,
1436
        94  => 7,
1437
        98  => 7,
1438
        99  => 7,
1439
        101 => 7,
1440
        106 => 7,
1441
        170 => 7,
1442
        175 => 7,
1443
        8   => 8,
1444
        9   => 9,
1445
        10  => 10,
1446
        12  => 12,
1447
        13  => 13,
1448
        14  => 14,
1449
        15  => 15,
1450
        16  => 16,
1451
        17  => 17,
1452
        18  => 18,
1453
        19  => 19,
1454
        20  => 20,
1455
        21  => 21,
1456
        25  => 25,
1457
        26  => 26,
1458
        27  => 27,
1459
        28  => 28,
1460
        29  => 29,
1461
        30  => 30,
1462
        31  => 31,
1463
        32  => 32,
1464
        34  => 32,
1465
        33  => 33,
1466
        35  => 35,
1467
        36  => 36,
1468
        38  => 38,
1469
        39  => 39,
1470
        40  => 40,
1471
        41  => 41,
1472
        42  => 42,
1473
        43  => 43,
1474
        44  => 44,
1475
        45  => 45,
1476
        46  => 46,
1477
        47  => 47,
1478
        48  => 48,
1479
        49  => 49,
1480
        50  => 50,
1481
        51  => 51,
1482
        60  => 51,
1483
        148 => 51,
1484
        152 => 51,
1485
        156 => 51,
1486
        158 => 51,
1487
        52  => 52,
1488
        149 => 52,
1489
        155 => 52,
1490
        53  => 53,
1491
        54  => 54,
1492
        55  => 54,
1493
        56  => 56,
1494
        133 => 56,
1495
        59  => 59,
1496
        61  => 61,
1497
        62  => 62,
1498
        63  => 62,
1499
        64  => 64,
1500
        65  => 65,
1501
        68  => 68,
1502
        69  => 69,
1503
        70  => 69,
1504
        71  => 71,
1505
        72  => 72,
1506
        73  => 73,
1507
        74  => 74,
1508
        75  => 75,
1509
        76  => 76,
1510
        77  => 77,
1511
        79  => 79,
1512
        81  => 79,
1513
        82  => 79,
1514
        113 => 79,
1515
        80  => 80,
1516
        85  => 85,
1517
        86  => 86,
1518
        87  => 87,
1519
        88  => 88,
1520
        90  => 90,
1521
        91  => 91,
1522
        92  => 91,
1523
        95  => 95,
1524
        96  => 96,
1525
        97  => 97,
1526
        100 => 100,
1527
        102 => 102,
1528
        103 => 103,
1529
        104 => 104,
1530
        105 => 105,
1531
        107 => 107,
1532
        108 => 108,
1533
        109 => 109,
1534
        110 => 110,
1535
        111 => 111,
1536
        112 => 112,
1537
        114 => 114,
1538
        172 => 114,
1539
        115 => 115,
1540
        116 => 116,
1541
        117 => 117,
1542
        118 => 118,
1543
        119 => 119,
1544
        120 => 120,
1545
        128 => 120,
1546
        121 => 121,
1547
        122 => 122,
1548
        123 => 123,
1549
        124 => 123,
1550
        126 => 123,
1551
        127 => 123,
1552
        125 => 125,
1553
        129 => 129,
1554
        130 => 130,
1555
        131 => 131,
1556
        176 => 131,
1557
        132 => 132,
1558
        134 => 134,
1559
        135 => 135,
1560
        136 => 136,
1561
        137 => 137,
1562
        138 => 138,
1563
        139 => 139,
1564
        140 => 140,
1565
        141 => 141,
1566
        142 => 142,
1567
        143 => 143,
1568
        144 => 144,
1569
        145 => 145,
1570
        146 => 146,
1571
        147 => 147,
1572
        150 => 150,
1573
        151 => 151,
1574
        153 => 153,
1575
        154 => 154,
1576
        157 => 157,
1577
        159 => 159,
1578
        160 => 160,
1579
        161 => 161,
1580
        162 => 162,
1581
        163 => 163,
1582
        164 => 164,
1583
        165 => 165,
1584
        166 => 166,
1585
        167 => 167,
1586
        168 => 168,
1587
        169 => 168,
1588
        171 => 171,
1589
        173 => 173,
1590
        174 => 174,
1591
        177 => 177,
1592
        178 => 178,
1593
        179 => 179,
1594
        180 => 180,
1595
        183 => 180,
1596
        181 => 181,
1597
        184 => 181,
1598
        182 => 182,
1599
        185 => 185,
1600
        186 => 186,
1601
    );
1602
1603
    /**
1604
     * result status
1605
     *
1606
     * @var bool
1607
     */
1608
    public $successful = true;
1609
1610
    /**
1611
     * return value
1612
     *
1613
     * @var mixed
1614
     */
1615
    public $retvalue = 0;
1616
1617
    /**
1618
     * @var
1619
     */
1620
    public $yymajor;
1621
1622
    /**
1623
     * last index of array variable
1624
     *
1625
     * @var mixed
1626
     */
1627
    public $last_index;
1628
1629
    /**
1630
     * last variable name
1631
     *
1632
     * @var string
1633
     */
1634
    public $last_variable;
1635
1636
    /**
1637
     * root parse tree buffer
1638
     *
1639
     * @var Smarty_Internal_ParseTree_Template
1640
     */
1641
    public $root_buffer;
1642
1643
    /**
1644
     * current parse tree object
1645
     *
1646
     * @var Smarty_Internal_ParseTree
1647
     */
1648
    public $current_buffer;
1649
1650
    /**
1651
     * lexer object
1652
     *
1653
     * @var Smarty_Internal_Templatelexer
1654
     */
1655
    public $lex;
1656
1657
    /**
1658
     * {strip} status
1659
     *
1660
     * @var bool
1661
     */
1662
    public $strip = false;
1663
1664
    /**
1665
     * compiler object
1666
     *
1667
     * @var Smarty_Internal_TemplateCompilerBase
1668
     */
1669
    public $compiler = null;
1670
1671
    /**
1672
     * smarty object
1673
     *
1674
     * @var Smarty
1675
     */
1676
    public $smarty = null;
1677
1678
    /**
1679
     * template object
1680
     *
1681
     * @var Smarty_Internal_Template
1682
     */
1683
    public $template = null;
1684
1685
    /**
1686
     * block nesting level
1687
     *
1688
     * @var int
1689
     */
1690
    public $block_nesting_level = 0;
1691
1692
    /**
1693
     * security object
1694
     *
1695
     * @var Smarty_Security
1696
     */
1697
    public $security = null;
1698
1699
    /**
1700
     * template prefix array
1701
     *
1702
     * @var \Smarty_Internal_ParseTree[]
1703
     */
1704
    public $template_prefix = array();
1705
1706
    /**
1707
     * template prefix array
1708
     *
1709
     * @var \Smarty_Internal_ParseTree[]
1710
     */
1711
    public $template_postfix = array();
1712
1713
    public $yyTraceFILE;
1714
1715
    public $yyTracePrompt;
1716
1717
    public $yyidx;
1718
1719
    public $yyerrcnt;
1720
1721
    public $yystack          = array();
1722
1723
    public $yyTokenName      = array(
1724
        '$', 'VERT', 'COLON', 'PHP',
1725
        'TEXT', 'STRIPON', 'STRIPOFF', 'LITERALSTART',
1726
        'LITERALEND', 'LITERAL', 'SIMPELOUTPUT', 'SIMPLETAG',
1727
        'SMARTYBLOCKCHILDPARENT', 'LDEL', 'RDEL', 'DOLLARID',
1728
        'EQUAL', 'ID', 'PTR', 'LDELMAKENOCACHE',
1729
        'LDELIF', 'LDELFOR', 'SEMICOLON', 'INCDEC',
1730
        'TO', 'STEP', 'LDELFOREACH', 'SPACE',
1731
        'AS', 'APTR', 'LDELSETFILTER', 'CLOSETAG',
1732
        'LDELSLASH', 'ATTR', 'INTEGER', 'COMMA',
1733
        'OPENP', 'CLOSEP', 'MATH', 'UNIMATH',
1734
        'ISIN', 'QMARK', 'NOT', 'TYPECAST',
1735
        'HEX', 'DOT', 'INSTANCEOF', 'SINGLEQUOTESTRING',
1736
        'DOUBLECOLON', 'NAMESPACE', 'AT', 'HATCH',
1737
        'OPENB', 'CLOSEB', 'DOLLAR', 'LOGOP',
1738
        'SLOGOP', 'TLOGOP', 'SINGLECOND', 'ARRAYOPEN',
1739
        'QUOTE', 'BACKTICK', 'error', 'start',
1740
        'template', 'literal_e2', 'literal_e1', 'smartytag',
1741
        'tagbody', 'tag', 'outattr', 'eqoutattr',
1742
        'varindexed', 'output', 'attributes', 'variable',
1743
        'value', 'expr', 'modifierlist', 'statement',
1744
        'statements', 'foraction', 'varvar', 'modparameters',
1745
        'attribute', 'ternary', 'tlop', 'lop',
1746
        'scond', 'array', 'function', 'ns1',
1747
        'doublequoted_with_quotes', 'static_class_access', 'arraydef', 'object',
1748
        'arrayindex', 'indexdef', 'varvarele', 'objectchain',
1749
        'objectelement', 'method', 'params', 'modifier',
1750
        'modparameter', 'arrayelements', 'arrayelement', 'doublequoted',
1751
        'doublequotedcontent',
1752
    );
1753
1754
    /**
1755
     * internal error flag
1756
     *
1757
     * @var bool
1758
     */
1759
    private $internalError = false;                    /* Index of top element in stack */
1760
    private $_retvalue;                 /* Shifts left before out of the error */
1761
    /**
1762
     * constructor
1763
     *
1764
     * @param Smarty_Internal_Templatelexer        $lex
1765
     * @param Smarty_Internal_TemplateCompilerBase $compiler
1766
     */
1767
    public function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler)
1768
    {
1769
        $this->lex = $lex;
1770
        $this->compiler = $compiler;
1771
        $this->template = $this->compiler->template;
1772
        $this->smarty = $this->template->smarty;
1773
        $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
0 ignored issues
show
Documentation Bug introduced by
It seems like IssetNode ? $this->smart...security_policy : false can also be of type false. However, the property $security is declared as type Smarty_Security. Maybe add an additional type check?

Our type inference engine has found a suspicous assignment of a value to a property. This check raises an issue when a value that can be of a mixed type is assigned to a property that is type hinted more strictly.

For example, imagine you have a variable $accountId that can either hold an Id object or false (if there is no account id yet). Your code now assigns that value to the id property of an instance of the Account class. This class holds a proper account, so the id value must no longer be false.

Either this assignment is in error or a type check should be added for that assignment.

class Id
{
    public $id;

    public function __construct($id)
    {
        $this->id = $id;
    }

}

class Account
{
    /** @var  Id $id */
    public $id;
}

$account_id = false;

if (starsAreRight()) {
    $account_id = new Id(42);
}

$account = new Account();
if ($account instanceof Id)
{
    $account->id = $account_id;
}
Loading history...
1774
        $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template();
1775
    }  /* The parser's stack */
1776
    public static function yy_destructor($yymajor, $yypminor)
1777
    {
1778
        switch ($yymajor) {
1779
            default:
1780
                break;   /* If no destructor action specified: do nothing */
1781
        }
1782
    }
1783
1784
    /**
1785
     * insert PHP code in current buffer
1786
     *
1787
     * @param string $code
1788
     */
1789
    public function insertPhpCode($code)
1790
    {
1791
        $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
0 ignored issues
show
Bug introduced by
The method append_subtree() does not exist on Smarty_Internal_ParseTree. It seems like you code against a sub-type of Smarty_Internal_ParseTree such as Smarty_Internal_ParseTree_Template or Smarty_Internal_ParseTree_Dq. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

1791
        $this->current_buffer->/** @scrutinizer ignore-call */ 
1792
                               append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
Loading history...
1792
    }
1793
1794
    /**
1795
     * error rundown
1796
     *
1797
     */
1798
    public function errorRunDown()
1799
    {
1800
        while ($this->yystack !== array()) {
1801
            $this->yy_pop_parser_stack();
1802
        }
1803
        if (is_resource($this->yyTraceFILE)) {
1804
            fclose($this->yyTraceFILE);
1805
        }
1806
    }
1807
1808
    /**
1809
     *  merge PHP code with prefix code and return parse tree tag object
1810
     *
1811
     * @param string $code
1812
     *
1813
     * @return Smarty_Internal_ParseTree_Tag
1814
     */
1815
    public function mergePrefixCode($code)
1816
    {
1817
        $tmp = '';
1818
        foreach ($this->compiler->prefix_code as $preCode) {
1819
            $tmp .= $preCode;
1820
        }
1821
        $this->compiler->prefix_code = array();
1822
        $tmp .= $code;
1823
        return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
1824
    }
1825
1826
    public function Trace($TraceFILE, $zTracePrompt)
1827
    {
1828
        if (!$TraceFILE) {
1829
            $zTracePrompt = 0;
1830
        } elseif (!$zTracePrompt) {
1831
            $TraceFILE = 0;
1832
        }
1833
        $this->yyTraceFILE = $TraceFILE;
1834
        $this->yyTracePrompt = $zTracePrompt;
1835
    }
1836
1837
    public function PrintTrace()
1838
    {
1839
        $this->yyTraceFILE = fopen('php://output', 'w');
1840
        $this->yyTracePrompt = '<br>';
1841
    }
1842
1843
    public function tokenName($tokenType)
1844
    {
1845
        if ($tokenType === 0) {
1846
            return 'End of Input';
1847
        }
1848
        if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
1849
            return $this->yyTokenName[ $tokenType ];
1850
        } else {
1851
            return 'Unknown';
1852
        }
1853
    }
1854
1855
    public function yy_pop_parser_stack()
1856
    {
1857
        if (empty($this->yystack)) {
1858
            return;
1859
        }
1860
        $yytos = array_pop($this->yystack);
1861
        if ($this->yyTraceFILE && $this->yyidx >= 0) {
1862
            fwrite($this->yyTraceFILE,
1863
                $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] .
1864
                "\n");
1865
        }
1866
        $yymajor = $yytos->major;
1867
        self::yy_destructor($yymajor, $yytos->minor);
1868
        $this->yyidx--;
1869
        return $yymajor;
1870
    }
1871
1872
    public function __destruct()
1873
    {
1874
        while ($this->yystack !== array()) {
1875
            $this->yy_pop_parser_stack();
1876
        }
1877
        if (is_resource($this->yyTraceFILE)) {
1878
            fclose($this->yyTraceFILE);
1879
        }
1880
    }
1881
1882
    public function yy_get_expected_tokens($token)
1883
    {
1884
        static $res3 = array();
1885
        static $res4 = array();
1886
        $state = $this->yystack[ $this->yyidx ]->stateno;
1887
        $expected = self::$yyExpectedTokens[ $state ];
1888
        if (isset($res3[ $state ][ $token ])) {
1889
            if ($res3[ $state ][ $token ]) {
1890
                return $expected;
1891
            }
1892
        } else {
1893
            if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
1894
                return $expected;
1895
            }
1896
        }
1897
        $stack = $this->yystack;
1898
        $yyidx = $this->yyidx;
1899
        do {
1900
            $yyact = $this->yy_find_shift_action($token);
1901
            if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1902
                // reduce action
1903
                $done = 0;
1904
                do {
1905
                    if ($done++ === 100) {
1906
                        $this->yyidx = $yyidx;
1907
                        $this->yystack = $stack;
1908
                        // too much recursion prevents proper detection
1909
                        // so give up
1910
                        return array_unique($expected);
1911
                    }
1912
                    $yyruleno = $yyact - self::YYNSTATE;
1913
                    $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
1914
                    $nextstate = $this->yy_find_reduce_action(
1915
                        $this->yystack[ $this->yyidx ]->stateno,
1916
                        self::$yyRuleInfo[ $yyruleno ][ 0 ]);
1917
                    if (isset(self::$yyExpectedTokens[ $nextstate ])) {
1918
                        $expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]);
1919
                        if (isset($res4[ $nextstate ][ $token ])) {
1920
                            if ($res4[ $nextstate ][ $token ]) {
1921
                                $this->yyidx = $yyidx;
1922
                                $this->yystack = $stack;
1923
                                return array_unique($expected);
1924
                            }
1925
                        } else {
1926
                            if ($res4[ $nextstate ][ $token ] =
1927
                                in_array($token, self::$yyExpectedTokens[ $nextstate ], true)) {
1928
                                $this->yyidx = $yyidx;
1929
                                $this->yystack = $stack;
1930
                                return array_unique($expected);
1931
                            }
1932
                        }
1933
                    }
1934
                    if ($nextstate < self::YYNSTATE) {
1935
                        // we need to shift a non-terminal
1936
                        $this->yyidx++;
1937
                        $x = new TP_yyStackEntry;
1938
                        $x->stateno = $nextstate;
1939
                        $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
1940
                        $this->yystack[ $this->yyidx ] = $x;
1941
                        continue 2;
1942
                    } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
1943
                        $this->yyidx = $yyidx;
1944
                        $this->yystack = $stack;
1945
                        // the last token was just ignored, we can't accept
1946
                        // by ignoring input, this is in essence ignoring a
1947
                        // syntax error!
1948
                        return array_unique($expected);
1949
                    } elseif ($nextstate === self::YY_NO_ACTION) {
1950
                        $this->yyidx = $yyidx;
1951
                        $this->yystack = $stack;
1952
                        // input accepted, but not shifted (I guess)
1953
                        return $expected;
1954
                    } else {
1955
                        $yyact = $nextstate;
1956
                    }
1957
                } while (true);
1958
            }
1959
            break;
1960
        } while (true);
1961
        $this->yyidx = $yyidx;
1962
        $this->yystack = $stack;
1963
        return array_unique($expected);
1964
    }
1965
1966
    public function yy_is_expected_token($token)
1967
    {
1968
        static $res = array();
1969
        static $res2 = array();
1970
        if ($token === 0) {
1971
            return true; // 0 is not part of this
1972
        }
1973
        $state = $this->yystack[ $this->yyidx ]->stateno;
1974
        if (isset($res[ $state ][ $token ])) {
1975
            if ($res[ $state ][ $token ]) {
1976
                return true;
1977
            }
1978
        } else {
1979
            if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
1980
                return true;
1981
            }
1982
        }
1983
        $stack = $this->yystack;
1984
        $yyidx = $this->yyidx;
1985
        do {
1986
            $yyact = $this->yy_find_shift_action($token);
1987
            if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1988
                // reduce action
1989
                $done = 0;
1990
                do {
1991
                    if ($done++ === 100) {
1992
                        $this->yyidx = $yyidx;
1993
                        $this->yystack = $stack;
1994
                        // too much recursion prevents proper detection
1995
                        // so give up
1996
                        return true;
1997
                    }
1998
                    $yyruleno = $yyact - self::YYNSTATE;
1999
                    $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
2000
                    $nextstate = $this->yy_find_reduce_action(
2001
                        $this->yystack[ $this->yyidx ]->stateno,
2002
                        self::$yyRuleInfo[ $yyruleno ][ 0 ]);
2003
                    if (isset($res2[ $nextstate ][ $token ])) {
2004
                        if ($res2[ $nextstate ][ $token ]) {
2005
                            $this->yyidx = $yyidx;
2006
                            $this->yystack = $stack;
2007
                            return true;
2008
                        }
2009
                    } else {
2010
                        if ($res2[ $nextstate ][ $token ] =
2011
                            (isset(self::$yyExpectedTokens[ $nextstate ]) &&
2012
                             in_array($token, self::$yyExpectedTokens[ $nextstate ], true))) {
2013
                            $this->yyidx = $yyidx;
2014
                            $this->yystack = $stack;
2015
                            return true;
2016
                        }
2017
                    }
2018
                    if ($nextstate < self::YYNSTATE) {
2019
                        // we need to shift a non-terminal
2020
                        $this->yyidx++;
2021
                        $x = new TP_yyStackEntry;
2022
                        $x->stateno = $nextstate;
2023
                        $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
2024
                        $this->yystack[ $this->yyidx ] = $x;
2025
                        continue 2;
2026
                    } elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
2027
                        $this->yyidx = $yyidx;
2028
                        $this->yystack = $stack;
2029
                        if (!$token) {
2030
                            // end of input: this is valid
2031
                            return true;
2032
                        }
2033
                        // the last token was just ignored, we can't accept
2034
                        // by ignoring input, this is in essence ignoring a
2035
                        // syntax error!
2036
                        return false;
2037
                    } elseif ($nextstate === self::YY_NO_ACTION) {
2038
                        $this->yyidx = $yyidx;
2039
                        $this->yystack = $stack;
2040
                        // input accepted, but not shifted (I guess)
2041
                        return true;
2042
                    } else {
2043
                        $yyact = $nextstate;
2044
                    }
2045
                } while (true);
2046
            }
2047
            break;
2048
        } while (true);
2049
        $this->yyidx = $yyidx;
2050
        $this->yystack = $stack;
2051
        return true;
2052
    }
2053
2054
    public function yy_find_shift_action($iLookAhead)
2055
    {
2056
        $stateno = $this->yystack[ $this->yyidx ]->stateno;
2057
        /* if ($this->yyidx < 0) return self::YY_NO_ACTION;  */
2058
        if (!isset(self::$yy_shift_ofst[ $stateno ])) {
2059
            // no shift actions
2060
            return self::$yy_default[ $stateno ];
2061
        }
2062
        $i = self::$yy_shift_ofst[ $stateno ];
2063
        if ($i === self::YY_SHIFT_USE_DFLT) {
2064
            return self::$yy_default[ $stateno ];
2065
        }
2066
        if ($iLookAhead === self::YYNOCODE) {
2067
            return self::YY_NO_ACTION;
2068
        }
2069
        $i += $iLookAhead;
2070
        if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
2071
            self::$yy_lookahead[ $i ] != $iLookAhead) {
2072
            if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
2073
                && ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0) {
2074
                if ($this->yyTraceFILE) {
2075
                    fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'FALLBACK ' .
2076
                                               $this->yyTokenName[ $iLookAhead ] . ' => ' .
2077
                                               $this->yyTokenName[ $iFallback ] . "\n");
2078
                }
2079
                return $this->yy_find_shift_action($iFallback);
2080
            }
2081
            return self::$yy_default[ $stateno ];
2082
        } else {
2083
            return self::$yy_action[ $i ];
2084
        }
2085
    }
2086
2087
    public function yy_find_reduce_action($stateno, $iLookAhead)
2088
    {
2089
        /* $stateno = $this->yystack[$this->yyidx]->stateno; */
2090
        if (!isset(self::$yy_reduce_ofst[ $stateno ])) {
2091
            return self::$yy_default[ $stateno ];
2092
        }
2093
        $i = self::$yy_reduce_ofst[ $stateno ];
2094
        if ($i === self::YY_REDUCE_USE_DFLT) {
2095
            return self::$yy_default[ $stateno ];
2096
        }
2097
        if ($iLookAhead === self::YYNOCODE) {
2098
            return self::YY_NO_ACTION;
2099
        }
2100
        $i += $iLookAhead;
2101
        if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
2102
            self::$yy_lookahead[ $i ] != $iLookAhead) {
2103
            return self::$yy_default[ $stateno ];
2104
        } else {
2105
            return self::$yy_action[ $i ];
2106
        }
2107
    }
2108
2109
    // line 234 "../smarty/lexer/smarty_internal_templateparser.y"
2110
    public function yy_shift($yyNewState, $yyMajor, $yypMinor)
2111
    {
2112
        $this->yyidx++;
2113
        if ($this->yyidx >= self::YYSTACKDEPTH) {
2114
            $this->yyidx--;
2115
            if ($this->yyTraceFILE) {
2116
                fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
2117
            }
2118
            while ($this->yyidx >= 0) {
2119
                $this->yy_pop_parser_stack();
2120
            }
2121
            // line 221 "../smarty/lexer/smarty_internal_templateparser.y"
2122
            $this->internalError = true;
2123
            $this->compiler->trigger_template_error('Stack overflow in template parser');
2124
            return;
2125
        }
2126
        $yytos = new TP_yyStackEntry;
2127
        $yytos->stateno = $yyNewState;
2128
        $yytos->major = $yyMajor;
2129
        $yytos->minor = $yypMinor;
2130
        $this->yystack[] = $yytos;
2131
        if ($this->yyTraceFILE && $this->yyidx > 0) {
2132
            fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt,
2133
                $yyNewState);
2134
            fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
2135
            for ($i = 1; $i <= $this->yyidx; $i++) {
2136
                fprintf($this->yyTraceFILE, " %s",
2137
                    $this->yyTokenName[ $this->yystack[ $i ]->major ]);
2138
            }
2139
            fwrite($this->yyTraceFILE, "\n");
2140
        }
2141
    }
2142
2143
    // line 242 "../smarty/lexer/smarty_internal_templateparser.y"
2144
    public function yy_r0()
2145
    {
2146
        $this->root_buffer->prepend_array($this, $this->template_prefix);
2147
        $this->root_buffer->append_array($this, $this->template_postfix);
2148
        $this->_retvalue = $this->root_buffer->to_smarty_php($this);
2149
    }
2150
2151
    // line 251 "../smarty/lexer/smarty_internal_templateparser.y"
2152
    public function yy_r1()
2153
    {
2154
        $code =
2155
            $this->compiler->compileTag('private_php',
2156
                array(array('code' => $this->yystack[ $this->yyidx + 0 ]->minor), array('type' => $this->lex->phpType)),
2157
                array());
2158
        if ($this->compiler->has_code && !empty($code)) {
2159
            $tmp = '';
2160
            foreach ($this->compiler->prefix_code as $code) {
2161
                $tmp .= $code;
2162
            }
2163
            $this->compiler->prefix_code = array();
2164
            $this->current_buffer->append_subtree($this,
2165
                new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp . $code, true)));
2166
        }
2167
    }
2168
2169
    // line 255 "../smarty/lexer/smarty_internal_templateparser.y"
2170
    public function yy_r2()
2171
    {
2172
    	$text = $this->yystack[ $this->yyidx + 0 ]->minor;
2173
2174
	    if ((string)$text == '') {
2175
	    	$this->current_buffer->append_subtree($this, null);
2176
	    }
2177
2178
	    $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Text($text, $this->strip));
2179
    }
2180
2181
    // line 259 "../smarty/lexer/smarty_internal_templateparser.y"
2182
    public function yy_r3()
2183
    {
2184
        $this->strip = true;
2185
    }
2186
2187
    // line 264 "../smarty/lexer/smarty_internal_templateparser.y"
2188
    public function yy_r4()
2189
    {
2190
        $this->strip = false;
2191
    }
2192
2193
    // line 269 "../smarty/lexer/smarty_internal_templateparser.y"
2194
    public function yy_r5()
2195
    {
2196
        $this->current_buffer->append_subtree($this,
2197
            new Smarty_Internal_ParseTree_Text($this->yystack[ $this->yyidx + -1 ]->minor));
2198
    }
2199
2200
    // line 272 "../smarty/lexer/smarty_internal_templateparser.y"
2201
    public function yy_r6()
2202
    {
2203
        $this->_retvalue = $this->yystack[ $this->yyidx + -3 ]->minor . $this->yystack[ $this->yyidx + -1 ]->minor;
2204
    }
2205
2206
    // line 276 "../smarty/lexer/smarty_internal_templateparser.y"
2207
    public function yy_r7()
2208
    {
2209
        $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
2210
    }
2211
2212
    // line 281 "../smarty/lexer/smarty_internal_templateparser.y"
2213
    public function yy_r8()
2214
    {
2215
        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
2216
    }
2217
2218
    // line 285 "../smarty/lexer/smarty_internal_templateparser.y"
2219
    public function yy_r9()
2220
    {
2221
        $this->_retvalue = '';
2222
    }
2223
2224
    // line 297 "../smarty/lexer/smarty_internal_templateparser.y"
2225
    public function yy_r10()
2226
    {
2227
        if ($this->compiler->has_code) {
2228
            $this->current_buffer->append_subtree($this,
2229
                $this->mergePrefixCode($this->yystack[ $this->yyidx + 0 ]->minor));
2230
        }
2231
        $this->compiler->has_variable_string = false;
2232
        $this->block_nesting_level = count($this->compiler->_tag_stack);
2233
    }
2234
2235
    // line 307 "../smarty/lexer/smarty_internal_templateparser.y"
2236
    public function yy_r12()
2237
    {
2238
        $var =
2239
            trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler->getLdelLength(),
2240
                -$this->compiler->getRdelLength()), ' $');
2241
        if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
2242
            $this->_retvalue =
2243
                $this->compiler->compileTag('private_print_expression', array('nocache'),
2244
                    array('value' => $this->compiler->compileVariable('\'' . $match[ 1 ] . '\'')));
2245
        } else {
2246
            $this->_retvalue =
2247
                $this->compiler->compileTag('private_print_expression', array(),
2248
                    array('value' => $this->compiler->compileVariable('\'' . $var . '\'')));
2249
        }
2250
    }
2251
2252
    // line 328 "../smarty/lexer/smarty_internal_templateparser.y"
2253
    public function yy_r13()
2254
    {
2255
        $tag =
2256
            trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler->getLdelLength(),
2257
                -$this->compiler->getRdelLength()));
2258
        if ($tag == 'strip') {
2259
            $this->strip = true;
2260
            $this->_retvalue = null;
2261
        } else {
2262
            if (defined($tag)) {
2263
                if ($this->security) {
2264
                    $this->security->isTrustedConstant($tag, $this->compiler);
2265
                }
2266
                $this->_retvalue =
2267
                    $this->compiler->compileTag('private_print_expression', array(), array('value' => $tag));
2268
            } else {
2269
                if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
2270
                    $this->_retvalue = $this->compiler->compileTag($match[ 1 ], array('\'nocache\''));
2271
                } else {
2272
                    $this->_retvalue = $this->compiler->compileTag($tag, array());
2273
                }
2274
            }
2275
        }
2276
    }
2277
2278
    // line 339 "../smarty/lexer/smarty_internal_templateparser.y"
2279
    public function yy_r14()
2280
    {
2281
        $j = strrpos($this->yystack[ $this->yyidx + 0 ]->minor, '.');
2282
        if ($this->yystack[ $this->yyidx + 0 ]->minor[ $j + 1 ] == 'c') {
2283
            // {$smarty.block.child}
2284
            $this->_retvalue =
2285
                $this->compiler->compileTag('child', array(), array($this->yystack[ $this->yyidx + 0 ]->minor));
2286
        } else {
2287
            // {$smarty.block.parent}
2288
            $this->_retvalue =
2289
                $this->compiler->compileTag('parent', array(), array($this->yystack[ $this->yyidx + 0 ]->minor));
2290
        }
2291
    }
2292
2293
    // line 343 "../smarty/lexer/smarty_internal_templateparser.y"
2294
    public function yy_r15()
2295
    {
2296
        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor;
2297
    }
2298
2299
    // line 347 "../smarty/lexer/smarty_internal_templateparser.y"
2300
    public function yy_r16()
2301
    {
2302
        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor;
2303
    }
2304
2305
    // line 356 "../smarty/lexer/smarty_internal_templateparser.y"
2306
    public function yy_r17()
2307
    {
2308
        $this->_retvalue =
2309
            $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ],
2310
                array('value' => $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ]));
2311
    }
2312
2313
    // line 360 "../smarty/lexer/smarty_internal_templateparser.y"
2314
    public function yy_r18()
2315
    {
2316
        $this->_retvalue =
2317
            $this->compiler->compileTag('assign', array_merge(array(
2318
                array('value' => $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ]),
2319
                array('var' => '\'' . substr($this->yystack[ $this->yyidx + -1 ]->minor, 1) . '\'')
2320
            ), $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ]));
2321
    }
2322
2323
    // line 364 "../smarty/lexer/smarty_internal_templateparser.y"
2324
    public function yy_r19()
2325
    {
2326
        $this->_retvalue =
2327
            $this->compiler->compileTag('assign', array_merge(array(
2328
                array('value' => $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ]),
2329
                array('var' => $this->yystack[ $this->yyidx + -1 ]->minor[ 'var' ])
2330
            ), $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ]), array(
2331
                'smarty_internal_index' => $this->yystack[ $this->yyidx +
2332
                                                           -1 ]->minor[ 'smarty_internal_index' ]
2333
            ));
2334
    }
2335
2336
    // line 368 "../smarty/lexer/smarty_internal_templateparser.y"
2337
    public function yy_r20()
2338
    {
2339
        $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
2340
    }
2341
2342
    // line 383 "../smarty/lexer/smarty_internal_templateparser.y"
2343
    public function yy_r21()
2344
    {
2345
        $this->_retvalue = array($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
2346
    }
2347
2348
    // line 393 "../smarty/lexer/smarty_internal_templateparser.y"
2349
    public function yy_r25()
2350
    {
2351
        if (defined($this->yystack[ $this->yyidx + -1 ]->minor)) {
2352
            if ($this->security) {
2353
                $this->security->isTrustedConstant($this->yystack[ $this->yyidx + -1 ]->minor, $this->compiler);
2354
            }
2355
            $this->_retvalue =
2356
                $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
2357
                    array('value' => $this->yystack[ $this->yyidx + -1 ]->minor));
2358
        } else {
2359
            $this->_retvalue =
2360
                $this->compiler->compileTag($this->yystack[ $this->yyidx + -1 ]->minor,
2361
                    $this->yystack[ $this->yyidx + 0 ]->minor);
2362
        }
2363
    }
2364
2365
    // line 406 "../smarty/lexer/smarty_internal_templateparser.y"
2366
    public function yy_r26()
2367
    {
2368
        if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
2369
            if ($this->security) {
2370
                $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
2371
            }
2372
            $this->_retvalue =
2373
                $this->compiler->compileTag('private_print_expression', array(),
2374
                    array('value' => $this->yystack[ $this->yyidx + 0 ]->minor));
2375
        } else {
2376
            $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor, array());
2377
        }
2378
    }
2379
2380
    // line 418 "../smarty/lexer/smarty_internal_templateparser.y"
2381
    public function yy_r27()
2382
    {
2383
        if (defined($this->yystack[ $this->yyidx + -2 ]->minor)) {
2384
            if ($this->security) {
2385
                $this->security->isTrustedConstant($this->yystack[ $this->yyidx + -2 ]->minor, $this->compiler);
2386
            }
2387
            $this->_retvalue =
2388
                $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
2389
                    array(
2390
                        'value'        => $this->yystack[ $this->yyidx + -2 ]->minor,
2391
                        'modifierlist' => $this->yystack[ $this->yyidx + -1 ]->minor
2392
                    ));
2393
        } else {
2394
            $this->_retvalue =
2395
                $this->compiler->compileTag($this->yystack[ $this->yyidx + -2 ]->minor,
2396
                    $this->yystack[ $this->yyidx + 0 ]->minor,
2397
                    array('modifierlist' => $this->yystack[ $this->yyidx + -1 ]->minor));
2398
        }
2399
    }
2400
2401
    // line 423 "../smarty/lexer/smarty_internal_templateparser.y"
2402
    public function yy_r28()
2403
    {
2404
        $this->_retvalue =
2405
            $this->compiler->compileTag($this->yystack[ $this->yyidx + -3 ]->minor,
2406
                $this->yystack[ $this->yyidx + 0 ]->minor,
2407
                array('object_method' => $this->yystack[ $this->yyidx + -1 ]->minor));
2408
    }
2409
2410
    // line 428 "../smarty/lexer/smarty_internal_templateparser.y"
2411
    public function yy_r29()
2412
    {
2413
        $this->_retvalue =
2414
            $this->compiler->compileTag($this->yystack[ $this->yyidx + -4 ]->minor,
2415
                $this->yystack[ $this->yyidx + 0 ]->minor, array(
2416
                    'modifierlist'  => $this->yystack[ $this->yyidx + -1 ]->minor,
2417
                    'object_method' => $this->yystack[ $this->yyidx + -2 ]->minor
2418
                ));
2419
    }
2420
2421
    // line 433 "../smarty/lexer/smarty_internal_templateparser.y"
2422
    public function yy_r30()
2423
    {
2424
        $this->_retvalue =
2425
            $this->compiler->compileTag('make_nocache',
2426
                array(array('var' => '\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'')));
2427
    }
2428
2429
    // line 438 "../smarty/lexer/smarty_internal_templateparser.y"
2430
    public function yy_r31()
2431
    {
2432
        $tag = trim(substr($this->yystack[ $this->yyidx + -1 ]->minor, $this->compiler->getLdelLength()));
2433
        $this->_retvalue =
2434
            $this->compiler->compileTag(($tag === 'else if') ? 'elseif' : $tag, array(),
2435
                array('if condition' => $this->yystack[ $this->yyidx + 0 ]->minor));
2436
    }
2437
2438
    // line 443 "../smarty/lexer/smarty_internal_templateparser.y"
2439
    public function yy_r32()
2440
    {
2441
        $tag = trim(substr($this->yystack[ $this->yyidx + -2 ]->minor, $this->compiler->getLdelLength()));
2442
        $this->_retvalue =
2443
            $this->compiler->compileTag(($tag === 'else if') ? 'elseif' : $tag,
2444
                $this->yystack[ $this->yyidx + 0 ]->minor,
2445
                array('if condition' => $this->yystack[ $this->yyidx + -1 ]->minor));
2446
    }
2447
2448
    // line 454 "../smarty/lexer/smarty_internal_templateparser.y"
2449
    public function yy_r33()
2450
    {
2451
        $tag = trim(substr($this->yystack[ $this->yyidx + -1 ]->minor, $this->compiler->getLdelLength()));
2452
        $this->_retvalue =
2453
            $this->compiler->compileTag(($tag === 'else if') ? 'elseif' : $tag, array(),
2454
                array('if condition' => $this->yystack[ $this->yyidx + 0 ]->minor));
2455
    }
2456
2457
    // line 458 "../smarty/lexer/smarty_internal_templateparser.y"
2458
    public function yy_r35()
2459
    {
2460
        $this->_retvalue =
2461
            $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, array(
2462
                array('start' => $this->yystack[ $this->yyidx + -6 ]->minor),
2463
                array('ifexp' => $this->yystack[ $this->yyidx + -4 ]->minor),
2464
                array('var' => $this->yystack[ $this->yyidx + -2 ]->minor),
2465
                array('step' => $this->yystack[ $this->yyidx + -1 ]->minor)
2466
            )), 1);
0 ignored issues
show
Bug introduced by
1 of type integer is incompatible with the type array expected by parameter $parameter of Smarty_Internal_TemplateCompilerBase::compileTag(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

2466
            )), /** @scrutinizer ignore-type */ 1);
Loading history...
2467
    }
2468
2469
    // line 466 "../smarty/lexer/smarty_internal_templateparser.y"
2470
    public function yy_r36()
2471
    {
2472
        $this->_retvalue = '=' . $this->yystack[ $this->yyidx + 0 ]->minor;
2473
    }
2474
2475
    // line 470 "../smarty/lexer/smarty_internal_templateparser.y"
2476
    public function yy_r38()
2477
    {
2478
        $this->_retvalue =
2479
            $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, array(
2480
                array('start' => $this->yystack[ $this->yyidx + -3 ]->minor),
2481
                array('to' => $this->yystack[ $this->yyidx + -1 ]->minor)
2482
            )), 0);
0 ignored issues
show
Bug introduced by
0 of type integer is incompatible with the type array expected by parameter $parameter of Smarty_Internal_TemplateCompilerBase::compileTag(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

2482
            )), /** @scrutinizer ignore-type */ 0);
Loading history...
2483
    }
2484
2485
    // line 475 "../smarty/lexer/smarty_internal_templateparser.y"
2486
    public function yy_r39()
2487
    {
2488
        $this->_retvalue =
2489
            $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, array(
2490
                array('start' => $this->yystack[ $this->yyidx + -5 ]->minor),
2491
                array('to' => $this->yystack[ $this->yyidx + -3 ]->minor),
2492
                array('step' => $this->yystack[ $this->yyidx + -1 ]->minor)
2493
            )), 0);
0 ignored issues
show
Bug introduced by
0 of type integer is incompatible with the type array expected by parameter $parameter of Smarty_Internal_TemplateCompilerBase::compileTag(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

2493
            )), /** @scrutinizer ignore-type */ 0);
Loading history...
2494
    }
2495
2496
    // line 479 "../smarty/lexer/smarty_internal_templateparser.y"
2497
    public function yy_r40()
2498
    {
2499
        $this->_retvalue =
2500
            $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, array(
2501
                array('from' => $this->yystack[ $this->yyidx + -3 ]->minor),
2502
                array('item' => $this->yystack[ $this->yyidx + -1 ]->minor)
2503
            )));
2504
    }
2505
2506
    // line 482 "../smarty/lexer/smarty_internal_templateparser.y"
2507
    public function yy_r41()
2508
    {
2509
        $this->_retvalue =
2510
            $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor, array(
2511
                array('from' => $this->yystack[ $this->yyidx + -5 ]->minor),
2512
                array('item' => $this->yystack[ $this->yyidx + -1 ]->minor),
2513
                array('key' => $this->yystack[ $this->yyidx + -3 ]->minor)
2514
            )));
2515
    }
2516
2517
    // line 487 "../smarty/lexer/smarty_internal_templateparser.y"
2518
    public function yy_r42()
2519
    {
2520
        $this->_retvalue = $this->compiler->compileTag('foreach', $this->yystack[ $this->yyidx + 0 ]->minor);
2521
    }
2522
2523
    // line 491 "../smarty/lexer/smarty_internal_templateparser.y"
2524
    public function yy_r43()
2525
    {
2526
        $this->_retvalue =
2527
            $this->compiler->compileTag('setfilter', array(), array(
2528
                'modifier_list' => array(
2529
                    array_merge(array($this->yystack[ $this->yyidx + -1 ]->minor),
2530
                        $this->yystack[ $this->yyidx + 0 ]->minor)
2531
                )
2532
            ));
2533
    }
2534
2535
    // line 497 "../smarty/lexer/smarty_internal_templateparser.y"
2536
    public function yy_r44()
2537
    {
2538
        $this->_retvalue =
2539
            $this->compiler->compileTag('setfilter', array(), array(
2540
                'modifier_list' => array_merge(array(
2541
                    array_merge(array(
2542
                        $this->yystack[ $this->yyidx +
2543
                                        -2 ]->minor
2544
                    ), $this->yystack[ $this->yyidx + -1 ]->minor)
2545
                ), $this->yystack[ $this->yyidx + 0 ]->minor)
2546
            ));
2547
    }
2548
2549
    // line 506 "../smarty/lexer/smarty_internal_templateparser.y"
2550
    public function yy_r45()
2551
    {
2552
        $tag =
2553
            trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler->getLdelLength(),
2554
                -$this->compiler->getRdelLength()), ' /');
2555
        if ($tag === 'strip') {
2556
            $this->strip = false;
2557
            $this->_retvalue = null;
2558
        } else {
2559
            $this->_retvalue = $this->compiler->compileTag($tag . 'close', array());
2560
        }
2561
    }
2562
2563
    // line 510 "../smarty/lexer/smarty_internal_templateparser.y"
2564
    public function yy_r46()
2565
    {
2566
        $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor . 'close', array());
2567
    }
2568
2569
    // line 515 "../smarty/lexer/smarty_internal_templateparser.y"
2570
    public function yy_r47()
2571
    {
2572
        $this->_retvalue =
2573
            $this->compiler->compileTag($this->yystack[ $this->yyidx + -1 ]->minor . 'close', array(),
2574
                array('modifier_list' => $this->yystack[ $this->yyidx + 0 ]->minor));
2575
    }
2576
2577
    // line 519 "../smarty/lexer/smarty_internal_templateparser.y"
2578
    public function yy_r48()
2579
    {
2580
        $this->_retvalue =
2581
            $this->compiler->compileTag($this->yystack[ $this->yyidx + -2 ]->minor . 'close', array(),
2582
                array('object_method' => $this->yystack[ $this->yyidx + 0 ]->minor));
2583
    }
2584
2585
    // line 527 "../smarty/lexer/smarty_internal_templateparser.y"
2586
    public function yy_r49()
2587
    {
2588
        $this->_retvalue =
2589
            $this->compiler->compileTag($this->yystack[ $this->yyidx + -3 ]->minor . 'close', array(), array(
2590
                'object_method' => $this->yystack[ $this->yyidx + -1 ]->minor,
2591
                'modifier_list' => $this->yystack[ $this->yyidx + 0 ]->minor
2592
            ));
2593
    }
2594
2595
    // line 533 "../smarty/lexer/smarty_internal_templateparser.y"
2596
    public function yy_r50()
2597
    {
2598
        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor;
2599
        $this->_retvalue[] = $this->yystack[ $this->yyidx + 0 ]->minor;
2600
    }
2601
2602
    // line 538 "../smarty/lexer/smarty_internal_templateparser.y"
2603
    public function yy_r51()
2604
    {
2605
        $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
2606
    }
2607
2608
    // line 543 "../smarty/lexer/smarty_internal_templateparser.y"
2609
    public function yy_r52()
2610
    {
2611
        $this->_retvalue = array();
2612
    }
2613
2614
    // line 554 "../smarty/lexer/smarty_internal_templateparser.y"
2615
    public function yy_r53()
2616
    {
2617
        if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
2618
            if ($this->security) {
2619
                $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
2620
            }
2621
            $this->_retvalue =
2622
                array($this->yystack[ $this->yyidx + -2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
2623
        } else {
2624
            $this->_retvalue =
2625
                array(
2626
                    $this->yystack[ $this->yyidx + -2 ]->minor => '\'' .
2627
                                                                  $this->yystack[ $this->yyidx + 0 ]->minor .
2628
                                                                  '\''
2629
                );
2630
        }
2631
    }
2632
2633
    // line 562 "../smarty/lexer/smarty_internal_templateparser.y"
2634
    public function yy_r54()
2635
    {
2636
        $this->_retvalue =
2637
            array(
2638
                trim($this->yystack[ $this->yyidx + -1 ]->minor, " =\n\r\t") => $this->yystack[ $this->yyidx +
2639
                                                                                                0 ]->minor
2640
            );
2641
    }
2642
2643
    // line 574 "../smarty/lexer/smarty_internal_templateparser.y"
2644
    public function yy_r56()
2645
    {
2646
        $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
2647
    }
2648
2649
    // line 587 "../smarty/lexer/smarty_internal_templateparser.y"
2650
    public function yy_r59()
2651
    {
2652
        $this->_retvalue =
2653
            array($this->yystack[ $this->yyidx + -2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
2654
    }
2655
2656
    // line 592 "../smarty/lexer/smarty_internal_templateparser.y"
2657
    public function yy_r61()
2658
    {
2659
        $this->yystack[ $this->yyidx + -2 ]->minor[] = $this->yystack[ $this->yyidx + 0 ]->minor;
2660
        $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor;
2661
    }
2662
2663
    // line 599 "../smarty/lexer/smarty_internal_templateparser.y"
2664
    public function yy_r62()
2665
    {
2666
        $this->_retvalue =
2667
            array(
2668
                'var'   => '\'' . substr($this->yystack[ $this->yyidx + -2 ]->minor, 1) . '\'',
2669
                'value' => $this->yystack[ $this->yyidx + 0 ]->minor
2670
            );
2671
    }
2672
2673
    // line 603 "../smarty/lexer/smarty_internal_templateparser.y"
2674
    public function yy_r64()
2675
    {
2676
        $this->_retvalue =
2677
            array(
2678
                'var'   => $this->yystack[ $this->yyidx + -2 ]->minor,
2679
                'value' => $this->yystack[ $this->yyidx + 0 ]->minor
2680
            );
2681
    }
2682
2683
    // line 623 "../smarty/lexer/smarty_internal_templateparser.y"
2684
    public function yy_r65()
2685
    {
2686
        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor;
2687
    }
2688
2689
    // line 628 "../smarty/lexer/smarty_internal_templateparser.y"
2690
    public function yy_r68()
2691
    {
2692
        $this->_retvalue =
2693
            '$_smarty_tpl->getStreamVariable(\'' .
2694
            substr($this->yystack[ $this->yyidx + -2 ]->minor, 1) .
2695
            '://' .
2696
            $this->yystack[ $this->yyidx + 0 ]->minor .
2697
            '\')';
2698
    }
2699
2700
    // line 638 "../smarty/lexer/smarty_internal_templateparser.y"
2701
    public function yy_r69()
2702
    {
2703
        $this->_retvalue =
2704
            $this->yystack[ $this->yyidx + -2 ]->minor .
2705
            trim($this->yystack[ $this->yyidx + -1 ]->minor) .
2706
            $this->yystack[ $this->yyidx + 0 ]->minor;
2707
    }
2708
2709
    // line 642 "../smarty/lexer/smarty_internal_templateparser.y"
2710
    public function yy_r71()
2711
    {
2712
        $this->_retvalue =
2713
            $this->yystack[ $this->yyidx + -1 ]->minor[ 'pre' ] .
2714
            $this->yystack[ $this->yyidx + -2 ]->minor .
2715
            $this->yystack[ $this->yyidx + -1 ]->minor[ 'op' ] .
2716
            $this->yystack[ $this->yyidx + 0 ]->minor .
2717
            ')';
2718
    }
2719
2720
    // line 646 "../smarty/lexer/smarty_internal_templateparser.y"
2721
    public function yy_r72()
2722
    {
2723
        $this->_retvalue =
2724
            $this->yystack[ $this->yyidx + -2 ]->minor .
2725
            $this->yystack[ $this->yyidx + -1 ]->minor .
2726
            $this->yystack[ $this->yyidx + 0 ]->minor;
2727
    }
2728
2729
    // line 650 "../smarty/lexer/smarty_internal_templateparser.y"
2730
    public function yy_r73()
2731
    {
2732
        $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor . $this->yystack[ $this->yyidx + -1 ]->minor . ')';
2733
    }
2734
2735
    // line 654 "../smarty/lexer/smarty_internal_templateparser.y"
2736
    public function yy_r74()
2737
    {
2738
        $this->_retvalue =
2739
            'in_array(' .
2740
            $this->yystack[ $this->yyidx + -2 ]->minor .
2741
            ',' .
2742
            $this->yystack[ $this->yyidx + 0 ]->minor .
2743
            ')';
2744
    }
2745
2746
    // line 662 "../smarty/lexer/smarty_internal_templateparser.y"
2747
    public function yy_r75()
2748
    {
2749
        $this->_retvalue =
2750
            'in_array(' .
2751
            $this->yystack[ $this->yyidx + -2 ]->minor .
2752
            ',(array)' .
2753
            $this->yystack[ $this->yyidx + 0 ]->minor .
2754
            ')';
2755
    }
2756
2757
    // line 666 "../smarty/lexer/smarty_internal_templateparser.y"
2758
    public function yy_r76()
2759
    {
2760
        $this->_retvalue =
2761
            $this->yystack[ $this->yyidx + -5 ]->minor .
2762
            ' ? ' .
2763
            $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + -2 ]->minor, 1) . '\'') .
2764
            ' : ' .
2765
            $this->yystack[ $this->yyidx + 0 ]->minor;
2766
    }
2767
2768
    // line 676 "../smarty/lexer/smarty_internal_templateparser.y"
2769
    public function yy_r77()
2770
    {
2771
        $this->_retvalue =
2772
            $this->yystack[ $this->yyidx + -5 ]->minor .
2773
            ' ? ' .
2774
            $this->yystack[ $this->yyidx + -2 ]->minor .
2775
            ' : ' .
2776
            $this->yystack[ $this->yyidx + 0 ]->minor;
2777
    }
2778
2779
    // line 681 "../smarty/lexer/smarty_internal_templateparser.y"
2780
    public function yy_r79()
2781
    {
2782
        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
2783
    }
2784
2785
    // line 702 "../smarty/lexer/smarty_internal_templateparser.y"
2786
    public function yy_r80()
2787
    {
2788
        $this->_retvalue = '!' . $this->yystack[ $this->yyidx + 0 ]->minor;
2789
    }
2790
2791
    // line 706 "../smarty/lexer/smarty_internal_templateparser.y"
2792
    public function yy_r85()
2793
    {
2794
        $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
2795
    }
2796
2797
    // line 710 "../smarty/lexer/smarty_internal_templateparser.y"
2798
    public function yy_r86()
2799
    {
2800
        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . '.';
2801
    }
2802
2803
    // line 715 "../smarty/lexer/smarty_internal_templateparser.y"
2804
    public function yy_r87()
2805
    {
2806
        $this->_retvalue = '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
2807
    }
2808
2809
    // line 732 "../smarty/lexer/smarty_internal_templateparser.y"
2810
    public function yy_r88()
2811
    {
2812
        if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
2813
            if ($this->security) {
2814
                $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
2815
            }
2816
            $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
2817
        } else {
2818
            $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
2819
        }
2820
    }
2821
2822
    // line 736 "../smarty/lexer/smarty_internal_templateparser.y"
2823
    public function yy_r90()
2824
    {
2825
        $this->_retvalue = '(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')';
2826
    }
2827
2828
    // line 754 "../smarty/lexer/smarty_internal_templateparser.y"
2829
    public function yy_r91()
2830
    {
2831
        $this->_retvalue =
2832
            $this->yystack[ $this->yyidx + -2 ]->minor .
2833
            $this->yystack[ $this->yyidx + -1 ]->minor .
2834
            $this->yystack[ $this->yyidx + 0 ]->minor;
2835
    }
2836
2837
    // line 765 "../smarty/lexer/smarty_internal_templateparser.y"
2838
    public function yy_r95()
2839
    {
2840
        if ($this->security && $this->security->static_classes !== array()) {
2841
            $this->compiler->trigger_template_error('dynamic static class not allowed by security setting');
2842
        }
2843
2844
        $prefixVar = $this->compiler->getNewPrefixVariable();
2845
        if ($this->yystack[ $this->yyidx + -2 ]->minor[ 'var' ] === '\'smarty\'') {
2846
            $this->compiler->appendPrefixCode("<?php {$prefixVar} = " .
2847
                                              $this->compiler->compileTag('private_special_variable', array(),
2848
                                                  $this->yystack[ $this->yyidx +
2849
                                                                  -2 ]->minor[ 'smarty_internal_index' ]) .
2850
                                              ';?>');
2851
        } else {
2852
            $this->compiler->appendPrefixCode("<?php  {$prefixVar} = " .
2853
                                              $this->compiler->compileVariable($this->yystack[ $this->yyidx +
2854
                                                                                               -2 ]->minor[ 'var' ]) .
2855
                                              $this->yystack[ $this->yyidx + -2 ]->minor[ 'smarty_internal_index' ] .
2856
                                              ';?>');
2857
        }
2858
        $this->_retvalue =
2859
            $prefixVar .
2860
            '::' .
2861
            $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
2862
            $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
2863
    }
2864
2865
    // line 772 "../smarty/lexer/smarty_internal_templateparser.y"
2866
    public function yy_r96()
2867
    {
2868
        $prefixVar = $this->compiler->getNewPrefixVariable();
2869
        $tmp = $this->compiler->appendCode('<?php ob_start();?>', $this->yystack[ $this->yyidx + 0 ]->minor);
2870
        $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php {$prefixVar} = ob_get_clean();?>"));
2871
        $this->_retvalue = $prefixVar;
2872
    }
2873
2874
    // line 785 "../smarty/lexer/smarty_internal_templateparser.y"
2875
    public function yy_r97()
2876
    {
2877
        $this->_retvalue =
2878
            $this->compiler->compileTag('private_modifier', array(), array(
2879
                'value'        => $this->yystack[ $this->yyidx + -1 ]->minor,
2880
                'modifierlist' => $this->yystack[ $this->yyidx + 0 ]->minor
2881
            ));
2882
    }
2883
2884
    // line 804 "../smarty/lexer/smarty_internal_templateparser.y"
2885
    public function yy_r100()
2886
    {
2887
        if (!in_array(strtolower($this->yystack[ $this->yyidx + -2 ]->minor), array('self', 'parent')) &&
2888
            (!$this->security ||
2889
             $this->security->isTrustedStaticClassAccess($this->yystack[ $this->yyidx + -2 ]->minor,
2890
                 $this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler))) {
2891
            if (isset($this->smarty->registered_classes[ $this->yystack[ $this->yyidx + -2 ]->minor ])) {
2892
                $this->_retvalue =
2893
                    $this->smarty->registered_classes[ $this->yystack[ $this->yyidx + -2 ]->minor ] .
2894
                    '::' .
2895
                    $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
2896
                    $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
2897
            } else {
2898
                $this->_retvalue =
2899
                    $this->yystack[ $this->yyidx + -2 ]->minor .
2900
                    '::' .
2901
                    $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
2902
                    $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
2903
            }
2904
        } else {
2905
            $this->compiler->trigger_template_error('static class \'' .
2906
                                                    $this->yystack[ $this->yyidx + -2 ]->minor .
2907
                                                    '\' is undefined or not allowed by security setting');
2908
        }
2909
    }
2910
2911
    // line 815 "../smarty/lexer/smarty_internal_templateparser.y"
2912
    public function yy_r102()
2913
    {
2914
        $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
2915
    }
2916
2917
    // line 818 "../smarty/lexer/smarty_internal_templateparser.y"
2918
    public function yy_r103()
2919
    {
2920
        $this->_retvalue =
2921
            $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'');
2922
    }
2923
2924
    // line 831 "../smarty/lexer/smarty_internal_templateparser.y"
2925
    public function yy_r104()
2926
    {
2927
        if ($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ] === '\'smarty\'') {
2928
            $smarty_var =
2929
                $this->compiler->compileTag('private_special_variable', array(),
2930
                    $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ]);
2931
            $this->_retvalue = $smarty_var;
2932
        } else {
2933
            // used for array reset,next,prev,end,current
2934
            $this->last_variable = $this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ];
2935
            $this->last_index = $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
2936
            $this->_retvalue =
2937
                $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ]) .
2938
                $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
2939
        }
2940
    }
2941
2942
    // line 841 "../smarty/lexer/smarty_internal_templateparser.y"
2943
    public function yy_r105()
2944
    {
2945
        $this->_retvalue =
2946
            '$_smarty_tpl->tpl_vars[' .
2947
            $this->yystack[ $this->yyidx + -2 ]->minor .
2948
            ']->' .
2949
            $this->yystack[ $this->yyidx + 0 ]->minor;
2950
    }
2951
2952
    // line 845 "../smarty/lexer/smarty_internal_templateparser.y"
2953
    public function yy_r107()
2954
    {
2955
        $this->_retvalue =
2956
            $this->compiler->compileConfigVariable('\'' . $this->yystack[ $this->yyidx + -1 ]->minor . '\'');
2957
    }
2958
2959
    // line 849 "../smarty/lexer/smarty_internal_templateparser.y"
2960
    public function yy_r108()
2961
    {
2962
        $this->_retvalue =
2963
            '(is_array($tmp = ' .
2964
            $this->compiler->compileConfigVariable('\'' . $this->yystack[ $this->yyidx + -2 ]->minor . '\'') .
2965
            ') ? $tmp' .
2966
            $this->yystack[ $this->yyidx + 0 ]->minor .
2967
            ' :null)';
2968
    }
2969
2970
    // line 853 "../smarty/lexer/smarty_internal_templateparser.y"
2971
    public function yy_r109()
2972
    {
2973
        $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + -1 ]->minor);
2974
    }
2975
2976
    // line 857 "../smarty/lexer/smarty_internal_templateparser.y"
2977
    public function yy_r110()
2978
    {
2979
        $this->_retvalue =
2980
            '(is_array($tmp = ' .
2981
            $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + -2 ]->minor) .
2982
            ') ? $tmp' .
2983
            $this->yystack[ $this->yyidx + 0 ]->minor .
2984
            ' : null)';
2985
    }
2986
2987
    // line 860 "../smarty/lexer/smarty_internal_templateparser.y"
2988
    public function yy_r111()
2989
    {
2990
        $this->_retvalue =
2991
            array(
2992
                'var'                   => '\'' . substr($this->yystack[ $this->yyidx + -1 ]->minor, 1) . '\'',
2993
                'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor
2994
            );
2995
    }
2996
2997
    // line 873 "../smarty/lexer/smarty_internal_templateparser.y"
2998
    public function yy_r112()
2999
    {
3000
        $this->_retvalue =
3001
            array(
3002
                'var'                   => $this->yystack[ $this->yyidx + -1 ]->minor,
3003
                'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor
3004
            );
3005
    }
3006
3007
    // line 879 "../smarty/lexer/smarty_internal_templateparser.y"
3008
    public function yy_r114()
3009
    {
3010
        return;
3011
    }
3012
3013
    // line 882 "../smarty/lexer/smarty_internal_templateparser.y"
3014
    public function yy_r115()
3015
    {
3016
        $this->_retvalue =
3017
            '[' .
3018
            $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'') .
3019
            ']';
3020
    }
3021
3022
    // line 886 "../smarty/lexer/smarty_internal_templateparser.y"
3023
    public function yy_r116()
3024
    {
3025
        $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor) . ']';
3026
    }
3027
3028
    // line 890 "../smarty/lexer/smarty_internal_templateparser.y"
3029
    public function yy_r117()
3030
    {
3031
        $this->_retvalue =
3032
            '[' .
3033
            $this->compiler->compileVariable($this->yystack[ $this->yyidx + -2 ]->minor) .
3034
            '->' .
3035
            $this->yystack[ $this->yyidx + 0 ]->minor .
3036
            ']';
3037
    }
3038
3039
    // line 894 "../smarty/lexer/smarty_internal_templateparser.y"
3040
    public function yy_r118()
3041
    {
3042
        $this->_retvalue = '[\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\']';
3043
    }
3044
3045
    // line 899 "../smarty/lexer/smarty_internal_templateparser.y"
3046
    public function yy_r119()
3047
    {
3048
        $this->_retvalue = '[' . $this->yystack[ $this->yyidx + 0 ]->minor . ']';
3049
    }
3050
3051
    // line 904 "../smarty/lexer/smarty_internal_templateparser.y"
3052
    public function yy_r120()
3053
    {
3054
        $this->_retvalue = '[' . $this->yystack[ $this->yyidx + -1 ]->minor . ']';
3055
    }
3056
3057
    // line 908 "../smarty/lexer/smarty_internal_templateparser.y"
3058
    public function yy_r121()
3059
    {
3060
        $this->_retvalue =
3061
            '[' .
3062
            $this->compiler->compileTag('private_special_variable', array(),
3063
                '[\'section\'][\'' . $this->yystack[ $this->yyidx + -1 ]->minor . '\'][\'index\']') .
0 ignored issues
show
Bug introduced by
'['section']['' . $this-...->minor . '']['index']' of type string is incompatible with the type array expected by parameter $parameter of Smarty_Internal_TemplateCompilerBase::compileTag(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

3063
                /** @scrutinizer ignore-type */ '[\'section\'][\'' . $this->yystack[ $this->yyidx + -1 ]->minor . '\'][\'index\']') .
Loading history...
3064
            ']';
3065
    }
3066
3067
    // line 911 "../smarty/lexer/smarty_internal_templateparser.y"
3068
    public function yy_r122()
3069
    {
3070
        $this->_retvalue =
3071
            '[' .
3072
            $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
0 ignored issues
show
Bug introduced by
'['section']['' . $this-...idx + -1]->minor . '']' of type string is incompatible with the type array expected by parameter $parameter of Smarty_Internal_TemplateCompilerBase::compileTag(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

3072
            $this->compiler->compileTag('private_special_variable', array(), /** @scrutinizer ignore-type */ '[\'section\'][\'' .
Loading history...
3073
                                                                             $this->yystack[ $this->yyidx +
3074
                                                                                             -3 ]->minor .
3075
                                                                             '\'][\'' .
3076
                                                                             $this->yystack[ $this->yyidx +
3077
                                                                                             -1 ]->minor .
3078
                                                                             '\']') .
3079
            ']';
3080
    }
3081
3082
    // line 917 "../smarty/lexer/smarty_internal_templateparser.y"
3083
    public function yy_r123()
3084
    {
3085
        $this->_retvalue = '[' . $this->yystack[ $this->yyidx + -1 ]->minor . ']';
3086
    }
3087
3088
    // line 933 "../smarty/lexer/smarty_internal_templateparser.y"
3089
    public function yy_r125()
3090
    {
3091
        $this->_retvalue =
3092
            '[' .
3093
            $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + -1 ]->minor, 1) . '\'') .
3094
            ']';
3095
    }
3096
3097
    // line 943 "../smarty/lexer/smarty_internal_templateparser.y"
3098
    public function yy_r129()
3099
    {
3100
        $this->_retvalue = '[]';
3101
    }
3102
3103
    // line 947 "../smarty/lexer/smarty_internal_templateparser.y"
3104
    public function yy_r130()
3105
    {
3106
        $this->_retvalue = '\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'';
3107
    }
3108
3109
    // line 952 "../smarty/lexer/smarty_internal_templateparser.y"
3110
    public function yy_r131()
3111
    {
3112
        $this->_retvalue = '\'\'';
3113
    }
3114
3115
    // line 960 "../smarty/lexer/smarty_internal_templateparser.y"
3116
    public function yy_r132()
3117
    {
3118
        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
3119
    }
3120
3121
    // line 966 "../smarty/lexer/smarty_internal_templateparser.y"
3122
    public function yy_r134()
3123
    {
3124
        $var =
3125
            trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler->getLdelLength(),
3126
                -$this->compiler->getRdelLength()), ' $');
3127
        $this->_retvalue = $this->compiler->compileVariable('\'' . $var . '\'');
3128
    }
3129
3130
    // line 973 "../smarty/lexer/smarty_internal_templateparser.y"
3131
    public function yy_r135()
3132
    {
3133
        $this->_retvalue = '(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')';
3134
    }
3135
3136
    // line 982 "../smarty/lexer/smarty_internal_templateparser.y"
3137
    public function yy_r136()
3138
    {
3139
        if ($this->yystack[ $this->yyidx + -1 ]->minor[ 'var' ] === '\'smarty\'') {
3140
            $this->_retvalue =
3141
                $this->compiler->compileTag('private_special_variable', array(),
3142
                    $this->yystack[ $this->yyidx + -1 ]->minor[ 'smarty_internal_index' ]) .
3143
                $this->yystack[ $this->yyidx + 0 ]->minor;
3144
        } else {
3145
            $this->_retvalue =
3146
                $this->compiler->compileVariable($this->yystack[ $this->yyidx + -1 ]->minor[ 'var' ]) .
3147
                $this->yystack[ $this->yyidx + -1 ]->minor[ 'smarty_internal_index' ] .
3148
                $this->yystack[ $this->yyidx + 0 ]->minor;
3149
        }
3150
    }
3151
3152
    // line 987 "../smarty/lexer/smarty_internal_templateparser.y"
3153
    public function yy_r137()
3154
    {
3155
        $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
3156
    }
3157
3158
    // line 992 "../smarty/lexer/smarty_internal_templateparser.y"
3159
    public function yy_r138()
3160
    {
3161
        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
3162
    }
3163
3164
    // line 999 "../smarty/lexer/smarty_internal_templateparser.y"
3165
    public function yy_r139()
3166
    {
3167
        if ($this->security && substr($this->yystack[ $this->yyidx + -1 ]->minor, 0, 1) === '_') {
3168
            $this->compiler->trigger_template_error(self::ERR1);
3169
        }
3170
        $this->_retvalue =
3171
            '->' . $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
3172
    }
3173
3174
    // line 1006 "../smarty/lexer/smarty_internal_templateparser.y"
3175
    public function yy_r140()
3176
    {
3177
        if ($this->security) {
3178
            $this->compiler->trigger_template_error(self::ERR2);
3179
        }
3180
        $this->_retvalue =
3181
            '->{' .
3182
            $this->compiler->compileVariable($this->yystack[ $this->yyidx + -1 ]->minor) .
3183
            $this->yystack[ $this->yyidx + 0 ]->minor .
3184
            '}';
3185
    }
3186
3187
    // line 1013 "../smarty/lexer/smarty_internal_templateparser.y"
3188
    public function yy_r141()
3189
    {
3190
        if ($this->security) {
3191
            $this->compiler->trigger_template_error(self::ERR2);
3192
        }
3193
        $this->_retvalue =
3194
            '->{' . $this->yystack[ $this->yyidx + -2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor . '}';
3195
    }
3196
3197
    // line 1021 "../smarty/lexer/smarty_internal_templateparser.y"
3198
    public function yy_r142()
3199
    {
3200
        if ($this->security) {
3201
            $this->compiler->trigger_template_error(self::ERR2);
3202
        }
3203
        $this->_retvalue =
3204
            '->{\'' .
3205
            $this->yystack[ $this->yyidx + -4 ]->minor .
3206
            '\'.' .
3207
            $this->yystack[ $this->yyidx + -2 ]->minor .
3208
            $this->yystack[ $this->yyidx + 0 ]->minor .
3209
            '}';
3210
    }
3211
3212
    // line 1029 "../smarty/lexer/smarty_internal_templateparser.y"
3213
    public function yy_r143()
3214
    {
3215
        $this->_retvalue = '->' . $this->yystack[ $this->yyidx + 0 ]->minor;
3216
    }
3217
3218
    // line 1037 "../smarty/lexer/smarty_internal_templateparser.y"
3219
    public function yy_r144()
3220
    {
3221
        $this->_retvalue =
3222
            $this->compiler->compilePHPFunctionCall($this->yystack[ $this->yyidx + -3 ]->minor,
3223
                $this->yystack[ $this->yyidx + -1 ]->minor);
3224
    }
3225
3226
    // line 1044 "../smarty/lexer/smarty_internal_templateparser.y"
3227
    public function yy_r145()
3228
    {
3229
        if ($this->security && substr($this->yystack[ $this->yyidx + -3 ]->minor, 0, 1) === '_') {
3230
            $this->compiler->trigger_template_error(self::ERR1);
3231
        }
3232
        $this->_retvalue =
3233
            $this->yystack[ $this->yyidx + -3 ]->minor .
3234
            '(' .
3235
            implode(',', $this->yystack[ $this->yyidx + -1 ]->minor) .
3236
            ')';
3237
    }
3238
3239
    // line 1055 "../smarty/lexer/smarty_internal_templateparser.y"
3240
    public function yy_r146()
3241
    {
3242
        if ($this->security) {
3243
            $this->compiler->trigger_template_error(self::ERR2);
3244
        }
3245
        $prefixVar = $this->compiler->getNewPrefixVariable();
3246
        $this->compiler->appendPrefixCode("<?php {$prefixVar} = " .
3247
                                          $this->compiler->compileVariable('\'' .
3248
                                                                           substr($this->yystack[ $this->yyidx +
3249
                                                                                                  -3 ]->minor, 1) .
3250
                                                                           '\'') .
3251
                                          ';?>');
3252
        $this->_retvalue = $prefixVar . '(' . implode(',', $this->yystack[ $this->yyidx + -1 ]->minor) . ')';
3253
    }
3254
3255
    // line 1072 "../smarty/lexer/smarty_internal_templateparser.y"
3256
    public function yy_r147()
3257
    {
3258
        $this->_retvalue =
3259
            array_merge($this->yystack[ $this->yyidx + -2 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor));
3260
    }
3261
3262
    // line 1076 "../smarty/lexer/smarty_internal_templateparser.y"
3263
    public function yy_r150()
3264
    {
3265
        $this->_retvalue =
3266
            array_merge($this->yystack[ $this->yyidx + -2 ]->minor, array(
3267
                array_merge($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor)
3268
            ));
3269
    }
3270
3271
    // line 1084 "../smarty/lexer/smarty_internal_templateparser.y"
3272
    public function yy_r151()
3273
    {
3274
        $this->_retvalue =
3275
            array(array_merge($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor));
3276
    }
3277
3278
    // line 1092 "../smarty/lexer/smarty_internal_templateparser.y"
3279
    public function yy_r153()
3280
    {
3281
        $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
3282
    }
3283
3284
    // line 1105 "../smarty/lexer/smarty_internal_templateparser.y"
3285
    public function yy_r154()
3286
    {
3287
        $this->_retvalue =
3288
            array_merge($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
3289
    }
3290
3291
    // line 1114 "../smarty/lexer/smarty_internal_templateparser.y"
3292
    public function yy_r157()
3293
    {
3294
        $this->_retvalue =
3295
            array(trim($this->yystack[ $this->yyidx + -1 ]->minor) . $this->yystack[ $this->yyidx + 0 ]->minor);
3296
    }
3297
3298
    // line 1119 "../smarty/lexer/smarty_internal_templateparser.y"
3299
    public function yy_r159()
3300
    {
3301
        $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '', 'method');
3302
    }
3303
3304
    // line 1124 "../smarty/lexer/smarty_internal_templateparser.y"
3305
    public function yy_r160()
3306
    {
3307
        $this->_retvalue =
3308
            array($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'method');
3309
    }
3310
3311
    // line 1129 "../smarty/lexer/smarty_internal_templateparser.y"
3312
    public function yy_r161()
3313
    {
3314
        $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '');
3315
    }
3316
3317
    // line 1134 "../smarty/lexer/smarty_internal_templateparser.y"
3318
    public function yy_r162()
3319
    {
3320
        $this->_retvalue =
3321
            array($this->yystack[ $this->yyidx + -1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'property');
3322
    }
3323
3324
    // line 1140 "../smarty/lexer/smarty_internal_templateparser.y"
3325
    public function yy_r163()
3326
    {
3327
        $this->_retvalue =
3328
            array(
3329
                $this->yystack[ $this->yyidx + -2 ]->minor,
3330
                $this->yystack[ $this->yyidx + -1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor, 'property'
3331
            );
3332
    }
3333
3334
    // line 1144 "../smarty/lexer/smarty_internal_templateparser.y"
3335
    public function yy_r164()
3336
    {
3337
        $this->_retvalue = ' ' . trim($this->yystack[ $this->yyidx + 0 ]->minor) . ' ';
3338
    }
3339
3340
    // line 1163 "../smarty/lexer/smarty_internal_templateparser.y"
3341
    public function yy_r165()
3342
    {
3343
        static $lops = array(
3344
            'eq'  => ' == ',
3345
            'ne'  => ' != ',
3346
            'neq' => ' != ',
3347
            'gt'  => ' > ',
3348
            'ge'  => ' >= ',
3349
            'gte' => ' >= ',
3350
            'lt'  => ' < ',
3351
            'le'  => ' <= ',
3352
            'lte' => ' <= ',
3353
            'mod' => ' % ',
3354
            'and' => ' && ',
3355
            'or'  => ' || ',
3356
            'xor' => ' xor ',
3357
        );
3358
        $op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor));
3359
        $this->_retvalue = $lops[ $op ];
3360
    }
3361
3362
    // line 1176 "../smarty/lexer/smarty_internal_templateparser.y"
3363
    public function yy_r166()
3364
    {
3365
        static $tlops = array(
3366
            'isdivby'     => array('op' => ' % ', 'pre' => '!('),
3367
            'isnotdivby'  => array('op' => ' % ', 'pre' => '('),
3368
            'isevenby'    => array('op' => ' / ', 'pre' => '!(1 & '),
3369
            'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
3370
            'isoddby'     => array('op' => ' / ', 'pre' => '(1 & '),
3371
            'isnotoddby'  => array('op' => ' / ', 'pre' => '!(1 & '),
3372
        );
3373
        $op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor));
3374
        $this->_retvalue = $tlops[ $op ];
3375
    }
3376
3377
    // line 1190 "../smarty/lexer/smarty_internal_templateparser.y"
3378
    public function yy_r167()
3379
    {
3380
        static $scond = array(
3381
            'iseven'    => '!(1 & ',
3382
            'isnoteven' => '(1 & ',
3383
            'isodd'     => '(1 & ',
3384
            'isnotodd'  => '!(1 & ',
3385
        );
3386
        $op = strtolower(str_replace(' ', '', $this->yystack[ $this->yyidx + 0 ]->minor));
3387
        $this->_retvalue = $scond[ $op ];
3388
    }
3389
3390
    // line 1201 "../smarty/lexer/smarty_internal_templateparser.y"
3391
    public function yy_r168()
3392
    {
3393
        $this->_retvalue = 'array(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')';
3394
    }
3395
3396
    // line 1209 "../smarty/lexer/smarty_internal_templateparser.y"
3397
    public function yy_r171()
3398
    {
3399
        $this->_retvalue = $this->yystack[ $this->yyidx + -2 ]->minor . ',' . $this->yystack[ $this->yyidx + 0 ]->minor;
3400
    }
3401
3402
    // line 1213 "../smarty/lexer/smarty_internal_templateparser.y"
3403
    public function yy_r173()
3404
    {
3405
        $this->_retvalue =
3406
            $this->yystack[ $this->yyidx + -2 ]->minor . '=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
3407
    }
3408
3409
    // line 1229 "../smarty/lexer/smarty_internal_templateparser.y"
3410
    public function yy_r174()
3411
    {
3412
        $this->_retvalue =
3413
            '\'' . $this->yystack[ $this->yyidx + -2 ]->minor . '\'=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
3414
    }
3415
3416
    // line 1235 "../smarty/lexer/smarty_internal_templateparser.y"
3417
    public function yy_r177()
3418
    {
3419
        $this->compiler->leaveDoubleQuote();
3420
        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor->to_smarty_php($this);
3421
    }
3422
3423
    // line 1240 "../smarty/lexer/smarty_internal_templateparser.y"
3424
    public function yy_r178()
3425
    {
3426
        $this->yystack[ $this->yyidx + -1 ]->minor->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
3427
        $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor;
3428
    }
3429
3430
    // line 1244 "../smarty/lexer/smarty_internal_templateparser.y"
3431
    public function yy_r179()
3432
    {
3433
        $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[ $this->yyidx + 0 ]->minor);
3434
    }
3435
3436
    // line 1248 "../smarty/lexer/smarty_internal_templateparser.y"
3437
    public function yy_r180()
3438
    {
3439
        $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)' . $this->yystack[ $this->yyidx + -1 ]->minor);
3440
    }
3441
3442
    // line 1252 "../smarty/lexer/smarty_internal_templateparser.y"
3443
    public function yy_r181()
3444
    {
3445
        $this->_retvalue =
3446
            new Smarty_Internal_ParseTree_Code('(string)(' . $this->yystack[ $this->yyidx + -1 ]->minor . ')');
3447
    }
3448
3449
    // line 1264 "../smarty/lexer/smarty_internal_templateparser.y"
3450
    public function yy_r182()
3451
    {
3452
        $this->_retvalue =
3453
            new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\'' .
3454
                                               substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) .
3455
                                               '\']->value');
3456
    }
3457
3458
    // line 1268 "../smarty/lexer/smarty_internal_templateparser.y"
3459
    public function yy_r185()
3460
    {
3461
        $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[ $this->yyidx + 0 ]->minor);
3462
    }
3463
3464
    public function yy_r186()
3465
    {
3466
        $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this->yystack[ $this->yyidx + 0 ]->minor);
3467
    }
3468
3469
    public function yy_reduce($yyruleno)
3470
    {
3471
        if ($this->yyTraceFILE && $yyruleno >= 0
3472
            && $yyruleno < count(self::$yyRuleName)) {
3473
            fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n",
3474
                $this->yyTracePrompt, $yyruleno,
3475
                self::$yyRuleName[ $yyruleno ]);
3476
        }
3477
        $this->_retvalue = $yy_lefthand_side = null;
3478
        if (isset(self::$yyReduceMap[ $yyruleno ])) {
3479
            // call the action
3480
            $this->_retvalue = null;
3481
            $this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}();
3482
            $yy_lefthand_side = $this->_retvalue;
3483
        }
3484
        $yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ];
3485
        $yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ];
3486
        $this->yyidx -= $yysize;
3487
        for ($i = $yysize; $i; $i--) {
3488
            // pop all of the right-hand side parameters
3489
            array_pop($this->yystack);
3490
        }
3491
        $yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto);
3492
        if ($yyact < self::YYNSTATE) {
3493
            if (!$this->yyTraceFILE && $yysize) {
3494
                $this->yyidx++;
3495
                $x = new TP_yyStackEntry;
3496
                $x->stateno = $yyact;
3497
                $x->major = $yygoto;
3498
                $x->minor = $yy_lefthand_side;
3499
                $this->yystack[ $this->yyidx ] = $x;
3500
            } else {
3501
                $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
3502
            }
3503
        } elseif ($yyact === self::YYNSTATE + self::YYNRULE + 1) {
3504
            $this->yy_accept();
3505
        }
3506
    }
3507
3508
    public function yy_parse_failed()
3509
    {
3510
        if ($this->yyTraceFILE) {
3511
            fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
3512
        }
3513
        while ($this->yyidx >= 0) {
3514
            $this->yy_pop_parser_stack();
3515
        }
3516
    }
3517
3518
    public function yy_syntax_error($yymajor, $TOKEN)
3519
    {
3520
        // line 214 "../smarty/lexer/smarty_internal_templateparser.y"
3521
        $this->internalError = true;
3522
        $this->yymajor = $yymajor;
3523
        $this->compiler->trigger_template_error();
3524
    }
3525
3526
    public function yy_accept()
3527
    {
3528
        if ($this->yyTraceFILE) {
3529
            fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
3530
        }
3531
        while ($this->yyidx >= 0) {
3532
            $this->yy_pop_parser_stack();
3533
        }
3534
        // line 207 "../smarty/lexer/smarty_internal_templateparser.y"
3535
        $this->successful = !$this->internalError;
3536
        $this->internalError = false;
3537
        $this->retvalue = $this->_retvalue;
3538
    }
3539
3540
    public function doParse($yymajor, $yytokenvalue)
3541
    {
3542
        $yyerrorhit = 0;   /* True if yymajor has invoked an error */
3543
        if ($this->yyidx === null || $this->yyidx < 0) {
3544
            $this->yyidx = 0;
3545
            $this->yyerrcnt = -1;
3546
            $x = new TP_yyStackEntry;
3547
            $x->stateno = 0;
3548
            $x->major = 0;
3549
            $this->yystack = array();
3550
            $this->yystack[] = $x;
3551
        }
3552
        $yyendofinput = ($yymajor == 0);
3553
        if ($this->yyTraceFILE) {
3554
            fprintf($this->yyTraceFILE, "%sInput %s\n",
3555
                $this->yyTracePrompt, $this->yyTokenName[ $yymajor ]);
3556
        }
3557
        do {
3558
            $yyact = $this->yy_find_shift_action($yymajor);
3559
            if ($yymajor < self::YYERRORSYMBOL &&
3560
                !$this->yy_is_expected_token($yymajor)) {
3561
                // force a syntax error
3562
                $yyact = self::YY_ERROR_ACTION;
3563
            }
3564
            if ($yyact < self::YYNSTATE) {
3565
                $this->yy_shift($yyact, $yymajor, $yytokenvalue);
3566
                $this->yyerrcnt--;
3567
                if ($yyendofinput && $this->yyidx >= 0) {
3568
                    $yymajor = 0;
3569
                } else {
3570
                    $yymajor = self::YYNOCODE;
3571
                }
3572
            } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
3573
                $this->yy_reduce($yyact - self::YYNSTATE);
3574
            } elseif ($yyact === self::YY_ERROR_ACTION) {
3575
                if ($this->yyTraceFILE) {
3576
                    fprintf($this->yyTraceFILE, "%sSyntax Error!\n",
3577
                        $this->yyTracePrompt);
3578
                }
3579
                if (self::YYERRORSYMBOL) {
3580
                    if ($this->yyerrcnt < 0) {
3581
                        $this->yy_syntax_error($yymajor, $yytokenvalue);
3582
                    }
3583
                    $yymx = $this->yystack[ $this->yyidx ]->major;
3584
                    if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) {
3585
                        if ($this->yyTraceFILE) {
3586
                            fprintf($this->yyTraceFILE, "%sDiscard input token %s\n",
3587
                                $this->yyTracePrompt, $this->yyTokenName[ $yymajor ]);
3588
                        }
3589
                        $this->yy_destructor($yymajor, $yytokenvalue);
3590
                        $yymajor = self::YYNOCODE;
3591
                    } else {
3592
                        while ($this->yyidx >= 0 &&
3593
                               $yymx !== self::YYERRORSYMBOL &&
3594
                               ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
3595
                        ) {
3596
                            $this->yy_pop_parser_stack();
3597
                        }
3598
                        if ($this->yyidx < 0 || $yymajor == 0) {
3599
                            $this->yy_destructor($yymajor, $yytokenvalue);
3600
                            $this->yy_parse_failed();
3601
                            $yymajor = self::YYNOCODE;
3602
                        } elseif ($yymx !== self::YYERRORSYMBOL) {
3603
                            $u2 = 0;
3604
                            $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
3605
                        }
3606
                    }
3607
                    $this->yyerrcnt = 3;
3608
                    $yyerrorhit = 1;
3609
                } else {
3610
                    if ($this->yyerrcnt <= 0) {
3611
                        $this->yy_syntax_error($yymajor, $yytokenvalue);
3612
                    }
3613
                    $this->yyerrcnt = 3;
3614
                    $this->yy_destructor($yymajor, $yytokenvalue);
3615
                    if ($yyendofinput) {
3616
                        $this->yy_parse_failed();
3617
                    }
3618
                    $yymajor = self::YYNOCODE;
3619
                }
3620
            } else {
3621
                $this->yy_accept();
3622
                $yymajor = self::YYNOCODE;
3623
            }
3624
        } while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0);
3625
    }
3626
}
3627
3628