]> git.mxchange.org Git - friendica.git/blob - vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php
Add Smarty to Composer
[friendica.git] / vendor / smarty / smarty / libs / sysplugins / smarty_internal_templateparser.php
1 <?php
2
3 class TP_yyToken implements ArrayAccess
4 {
5     public $string = '';
6
7     public $metadata = array();
8
9     public function __construct($s, $m = array())
10     {
11         if ($s instanceof TP_yyToken) {
12             $this->string = $s->string;
13             $this->metadata = $s->metadata;
14         } else {
15             $this->string = (string) $s;
16             if ($m instanceof TP_yyToken) {
17                 $this->metadata = $m->metadata;
18             } elseif (is_array($m)) {
19                 $this->metadata = $m;
20             }
21         }
22     }
23
24     public function __toString()
25     {
26         return $this->string;
27     }
28
29     public function offsetExists($offset)
30     {
31         return isset($this->metadata[ $offset ]);
32     }
33
34     public function offsetGet($offset)
35     {
36         return $this->metadata[ $offset ];
37     }
38
39     public function offsetSet($offset, $value)
40     {
41         if ($offset === null) {
42             if (isset($value[ 0 ])) {
43                 $x = ($value instanceof TP_yyToken) ? $value->metadata : $value;
44                 $this->metadata = array_merge($this->metadata, $x);
45
46                 return;
47             }
48             $offset = count($this->metadata);
49         }
50         if ($value === null) {
51             return;
52         }
53         if ($value instanceof TP_yyToken) {
54             if ($value->metadata) {
55                 $this->metadata[ $offset ] = $value->metadata;
56             }
57         } elseif ($value) {
58             $this->metadata[ $offset ] = $value;
59         }
60     }
61
62     public function offsetUnset($offset)
63     {
64         unset($this->metadata[ $offset ]);
65     }
66 }
67
68 class TP_yyStackEntry
69 {
70     public $stateno;       /* The state-number */
71     public $major;         /* The major token value.  This is the code
72                      ** number for the token at this stack level */
73     public $minor; /* The user-supplied minor token value.  This
74                      ** is the value of the token  */
75 }
76
77 ;
78
79 #line 11 "../smarty/lexer/smarty_internal_templateparser.y"
80
81 /**
82  * Smarty Template Parser Class
83  *
84  * This is the template parser.
85  * It is generated from the smarty_internal_templateparser.y file
86  *
87  * @author Uwe Tews <uwe.tews@googlemail.com>
88  */
89 class Smarty_Internal_Templateparser
90 {
91     #line 23 "../smarty/lexer/smarty_internal_templateparser.y"
92
93     const Err1 = "Security error: Call to private object member not allowed";
94
95     const Err2 = "Security error: Call to dynamic object member not allowed";
96
97     const Err3 = "PHP in template not allowed. Use SmartyBC to enable it";
98
99     /**
100      * result status
101      *
102      * @var bool
103      */
104     public $successful = true;
105
106     /**
107      * return value
108      *
109      * @var mixed
110      */
111     public $retvalue = 0;
112
113     /**
114      * @var
115      */
116     public $yymajor;
117
118     /**
119      * last index of array variable
120      *
121      * @var mixed
122      */
123     public $last_index;
124
125     /**
126      * last variable name
127      *
128      * @var string
129      */
130     public $last_variable;
131
132     /**
133      * root parse tree buffer
134      *
135      * @var Smarty_Internal_ParseTree
136      */
137     public $root_buffer;
138
139     /**
140      * current parse tree object
141      *
142      * @var Smarty_Internal_ParseTree
143      */
144     public $current_buffer;
145
146     /**
147      * lexer object
148      *
149      * @var Smarty_Internal_Templatelexer
150      */
151     public $lex;
152
153     /**
154      * internal error flag
155      *
156      * @var bool
157      */
158     private $internalError = false;
159
160     /**
161      * {strip} status
162      *
163      * @var bool
164      */
165     public $strip = false;
166
167     /**
168      * compiler object
169      *
170      * @var Smarty_Internal_TemplateCompilerBase
171      */
172     public $compiler = null;
173
174     /**
175      * smarty object
176      *
177      * @var Smarty
178      */
179     public $smarty = null;
180
181     /**
182      * template object
183      *
184      * @var Smarty_Internal_Template
185      */
186     public $template = null;
187
188     /**
189      * block nesting level
190      *
191      * @var int
192      */
193     public $block_nesting_level = 0;
194
195     /**
196      * security object
197      *
198      * @var Smarty_Security
199      */
200     public $security = null;
201
202     /**
203      * template prefix array
204      *
205      * @var \Smarty_Internal_ParseTree[]
206      */
207     public $template_prefix = array();
208
209     /**
210      * security object
211      *
212      * @var \Smarty_Internal_ParseTree[]
213      */
214     public $template_postfix = array();
215
216     /**
217      * constructor
218      *
219      * @param Smarty_Internal_Templatelexer        $lex
220      * @param Smarty_Internal_TemplateCompilerBase $compiler
221      */
222     function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler)
223     {
224         $this->lex = $lex;
225         $this->compiler = $compiler;
226         $this->template = $this->compiler->template;
227         $this->smarty = $this->template->smarty;
228         $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
229         $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template();
230     }
231
232     /**
233      * insert PHP code in current buffer
234      *
235      * @param string $code
236      */
237     public function insertPhpCode($code)
238     {
239         $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
240     }
241
242     /**
243      *  merge PHP code with prefix code and return parse tree tag object
244      *
245      * @param string $code
246      *
247      * @return Smarty_Internal_ParseTree_Tag
248      */
249     public function mergePrefixCode($code)
250     {
251         $tmp = '';
252         foreach ($this->compiler->prefix_code as $preCode) {
253             $tmp .= $preCode;
254         }
255         $this->compiler->prefix_code = array();
256         $tmp .= $code;
257         return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
258     }
259
260     const TP_VERT = 1;
261
262     const TP_COLON = 2;
263
264     const TP_PHP = 3;
265
266     const TP_TEXT = 4;
267
268     const TP_STRIPON = 5;
269
270     const TP_STRIPOFF = 6;
271
272     const TP_LITERALSTART = 7;
273
274     const TP_LITERALEND = 8;
275
276     const TP_LITERAL = 9;
277
278     const TP_RDEL = 10;
279
280     const TP_SIMPELOUTPUT = 11;
281
282     const TP_LDEL = 12;
283
284     const TP_DOLLARID = 13;
285
286     const TP_EQUAL = 14;
287
288     const TP_SIMPLETAG = 15;
289
290     const TP_ID = 16;
291
292     const TP_PTR = 17;
293
294     const TP_LDELMAKENOCACHE = 18;
295
296     const TP_LDELIF = 19;
297
298     const TP_LDELFOR = 20;
299
300     const TP_SEMICOLON = 21;
301
302     const TP_INCDEC = 22;
303
304     const TP_TO = 23;
305
306     const TP_STEP = 24;
307
308     const TP_LDELFOREACH = 25;
309
310     const TP_SPACE = 26;
311
312     const TP_AS = 27;
313
314     const TP_APTR = 28;
315
316     const TP_LDELSETFILTER = 29;
317
318     const TP_SMARTYBLOCKCHILDPARENT = 30;
319
320     const TP_CLOSETAG = 31;
321
322     const TP_LDELSLASH = 32;
323
324     const TP_ATTR = 33;
325
326     const TP_INTEGER = 34;
327
328     const TP_COMMA = 35;
329
330     const TP_OPENP = 36;
331
332     const TP_CLOSEP = 37;
333
334     const TP_MATH = 38;
335
336     const TP_UNIMATH = 39;
337
338     const TP_ISIN = 40;
339
340     const TP_QMARK = 41;
341
342     const TP_NOT = 42;
343
344     const TP_TYPECAST = 43;
345
346     const TP_HEX = 44;
347
348     const TP_DOT = 45;
349
350     const TP_INSTANCEOF = 46;
351
352     const TP_SINGLEQUOTESTRING = 47;
353
354     const TP_DOUBLECOLON = 48;
355
356     const TP_NAMESPACE = 49;
357
358     const TP_AT = 50;
359
360     const TP_HATCH = 51;
361
362     const TP_OPENB = 52;
363
364     const TP_CLOSEB = 53;
365
366     const TP_DOLLAR = 54;
367
368     const TP_LOGOP = 55;
369
370     const TP_SLOGOP = 56;
371
372     const TP_TLOGOP = 57;
373
374     const TP_SINGLECOND = 58;
375
376     const TP_QUOTE = 59;
377
378     const TP_BACKTICK = 60;
379
380     const YY_NO_ACTION = 532;
381
382     const YY_ACCEPT_ACTION = 531;
383
384     const YY_ERROR_ACTION = 530;
385
386     const YY_SZ_ACTTAB = 2114;
387
388     static public $yy_action = array(268, 8, 132, 210, 245, 197, 183, 228, 7, 84, 176, 264, 275, 302, 112, 44, 36, 278,
389                                      233, 136, 305, 221, 281, 203, 237, 26, 234, 202, 41, 104, 189, 39, 42, 256, 213,
390                                      216, 224, 78, 207, 129, 82, 1, 316, 297, 102, 268, 8, 133, 79, 245, 80, 302, 228,
391                                      7, 84, 330, 299, 82, 272, 112, 297, 273, 325, 233, 285, 305, 221, 214, 231, 34, 26,
392                                      3, 101, 41, 230, 78, 39, 42, 256, 213, 35, 239, 314, 207, 300, 82, 1, 13, 297, 333,
393                                      268, 8, 135, 79, 245, 201, 302, 228, 7, 84, 35, 85, 322, 109, 112, 29, 196, 13,
394                                      233, 269, 305, 221, 237, 231, 249, 26, 136, 104, 41, 219, 78, 39, 42, 256, 213,
395                                      459, 239, 267, 207, 355, 82, 1, 459, 297, 446, 268, 8, 135, 79, 245, 193, 302, 228,
396                                      7, 84, 35, 446, 297, 28, 112, 247, 263, 13, 233, 82, 305, 221, 297, 231, 309, 26,
397                                      185, 292, 41, 298, 78, 39, 42, 256, 213, 27, 239, 237, 207, 232, 82, 1, 104, 297,
398                                      459, 268, 8, 135, 79, 245, 195, 459, 228, 7, 84, 446, 297, 283, 11, 112, 25, 188,
399                                      282, 233, 236, 305, 221, 446, 204, 294, 26, 32, 318, 41, 90, 210, 39, 42, 256, 213,
400                                      174, 239, 137, 207, 402, 82, 1, 210, 297, 9, 268, 8, 136, 79, 245, 201, 223, 228,
401                                      7, 84, 402, 142, 235, 225, 112, 22, 227, 402, 233, 166, 305, 221, 35, 231, 27, 33,
402                                      210, 101, 41, 13, 210, 39, 42, 256, 213, 361, 239, 302, 207, 399, 82, 1, 210, 297,
403                                      101, 268, 8, 135, 79, 245, 201, 402, 228, 7, 84, 399, 235, 297, 109, 112, 447, 78,
404                                      399, 233, 319, 305, 221, 402, 194, 172, 26, 279, 447, 41, 402, 307, 39, 42, 256,
405                                      213, 182, 239, 16, 207, 296, 82, 1, 210, 297, 101, 268, 8, 131, 79, 245, 201, 357,
406                                      228, 7, 84, 283, 11, 475, 475, 112, 282, 303, 475, 233, 24, 305, 221, 35, 231, 175,
407                                      4, 279, 271, 41, 13, 109, 39, 42, 256, 213, 181, 239, 178, 207, 12, 82, 1, 16, 297,
408                                      274, 268, 8, 135, 79, 245, 200, 475, 228, 7, 84, 475, 475, 283, 11, 112, 475, 189,
409                                      282, 233, 210, 305, 221, 20, 231, 38, 26, 179, 292, 41, 148, 446, 39, 42, 256, 213,
410                                      229, 239, 180, 207, 332, 82, 1, 446, 297, 190, 268, 8, 134, 79, 245, 201, 215, 228,
411                                      7, 84, 168, 16, 188, 243, 112, 104, 189, 303, 233, 140, 305, 221, 325, 231, 255,
412                                      26, 177, 214, 41, 218, 312, 39, 42, 256, 213, 277, 239, 128, 207, 101, 82, 1, 92,
413                                      297, 2, 268, 8, 136, 79, 245, 201, 23, 228, 7, 84, 210, 108, 251, 184, 112, 297,
414                                      304, 289, 233, 367, 305, 221, 137, 231, 315, 33, 220, 5, 41, 9, 5, 39, 42, 256,
415                                      213, 35, 239, 189, 207, 113, 82, 311, 13, 297, 106, 446, 214, 212, 79, 116, 72,
416                                      114, 258, 260, 261, 222, 102, 446, 214, 257, 280, 187, 308, 334, 270, 206, 242,
417                                      152, 299, 210, 128, 83, 262, 250, 252, 253, 176, 332, 211, 329, 268, 8, 151, 143,
418                                      245, 189, 178, 228, 7, 84, 210, 265, 332, 332, 112, 188, 21, 311, 233, 153, 305,
419                                      221, 214, 212, 17, 122, 67, 114, 164, 141, 189, 13, 102, 149, 266, 257, 280, 183,
420                                      332, 332, 270, 206, 242, 332, 299, 295, 44, 36, 278, 235, 311, 208, 279, 145, 169,
421                                      214, 212, 91, 122, 67, 114, 189, 320, 332, 167, 102, 146, 139, 257, 280, 94, 171,
422                                      159, 270, 206, 242, 332, 299, 210, 38, 311, 189, 332, 155, 209, 214, 212, 317, 122,
423                                      53, 107, 123, 232, 332, 189, 102, 291, 400, 257, 280, 6, 217, 276, 270, 206, 242,
424                                      311, 299, 297, 158, 313, 214, 212, 400, 122, 49, 107, 154, 117, 332, 400, 102, 30,
425                                      446, 257, 280, 248, 332, 173, 270, 206, 242, 279, 299, 324, 446, 186, 292, 332, 95,
426                                      279, 268, 10, 326, 170, 245, 88, 87, 228, 7, 84, 279, 138, 89, 279, 112, 86, 309,
427                                      311, 233, 115, 305, 221, 214, 212, 254, 122, 67, 114, 105, 303, 163, 165, 102, 303,
428                                      93, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 303, 303, 303, 286, 19, 311,
429                                      205, 303, 303, 303, 214, 212, 303, 116, 72, 114, 303, 43, 40, 37, 102, 303, 303,
430                                      257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 324, 327, 323, 288, 287, 303,
431                                      303, 268, 10, 326, 331, 245, 303, 303, 228, 7, 84, 303, 303, 303, 303, 112, 303,
432                                      303, 311, 233, 303, 305, 221, 214, 212, 303, 122, 70, 114, 303, 303, 303, 303, 102,
433                                      303, 303, 257, 280, 303, 283, 11, 270, 206, 242, 282, 299, 303, 311, 303, 290, 19,
434                                      303, 214, 212, 35, 122, 54, 114, 303, 303, 303, 13, 102, 162, 303, 257, 280, 183,
435                                      303, 303, 270, 206, 242, 332, 299, 311, 44, 36, 278, 303, 214, 212, 303, 122, 68,
436                                      114, 303, 303, 303, 303, 102, 189, 303, 257, 280, 303, 303, 303, 270, 206, 242,
437                                      303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 100, 73, 114, 303, 303, 303, 303,
438                                      102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303,
439                                      303, 303, 214, 212, 303, 122, 77, 114, 303, 303, 303, 303, 102, 147, 303, 257, 280,
440                                      183, 303, 303, 270, 206, 242, 332, 299, 311, 44, 36, 278, 303, 214, 212, 303, 122,
441                                      76, 114, 303, 303, 303, 303, 102, 189, 303, 257, 280, 303, 303, 303, 270, 206, 242,
442                                      303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 99, 71, 114, 303, 303, 303, 303,
443                                      102, 161, 303, 257, 280, 183, 303, 303, 270, 206, 242, 332, 299, 311, 44, 36, 278,
444                                      303, 214, 212, 303, 122, 47, 114, 303, 303, 303, 303, 102, 189, 303, 257, 280, 303,
445                                      303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 59,
446                                      114, 303, 303, 303, 303, 102, 150, 303, 257, 280, 183, 303, 303, 270, 206, 242,
447                                      332, 299, 311, 44, 36, 278, 303, 214, 198, 303, 118, 55, 114, 303, 303, 303, 303,
448                                      102, 189, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303,
449                                      303, 303, 214, 212, 303, 122, 69, 114, 303, 303, 303, 303, 102, 160, 303, 257, 280,
450                                      183, 303, 303, 270, 206, 242, 332, 299, 311, 44, 36, 278, 303, 214, 97, 303, 81,
451                                      48, 103, 303, 303, 303, 303, 102, 189, 303, 257, 280, 303, 303, 303, 270, 206, 242,
452                                      303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 57, 114, 303, 303, 303, 303,
453                                      102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303,
454                                      303, 303, 214, 212, 303, 122, 65, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280,
455                                      303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 96, 303, 81,
456                                      46, 103, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242,
457                                      303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 111, 50, 114, 303, 303, 303, 303,
458                                      102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303,
459                                      303, 303, 214, 212, 303, 98, 61, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280,
460                                      303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 199, 303,
461                                      122, 56, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206,
462                                      242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 51, 114, 303, 303, 303,
463                                      303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303,
464                                      303, 303, 303, 214, 212, 303, 122, 58, 114, 303, 303, 303, 303, 102, 303, 303, 257,
465                                      280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212,
466                                      303, 122, 74, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270,
467                                      206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 62, 114, 303, 303,
468                                      303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311,
469                                      303, 303, 303, 303, 214, 212, 303, 122, 60, 114, 303, 303, 303, 303, 102, 303, 303,
470                                      257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214,
471                                      212, 303, 122, 45, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303,
472                                      270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 64, 114, 303,
473                                      303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299,
474                                      311, 303, 303, 303, 303, 214, 212, 303, 122, 75, 114, 303, 303, 303, 303, 102, 303,
475                                      303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303,
476                                      214, 212, 303, 122, 63, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303,
477                                      303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 66, 114,
478                                      303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 412, 412, 270, 206, 242, 303,
479                                      299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 53, 114, 303, 303, 303, 303, 102,
480                                      303, 303, 257, 280, 210, 303, 303, 270, 206, 242, 303, 299, 446, 301, 412, 412,
481                                      412, 303, 531, 52, 259, 260, 261, 222, 446, 303, 214, 303, 303, 35, 303, 412, 412,
482                                      412, 412, 303, 13, 303, 303, 303, 303, 43, 40, 37, 210, 303, 303, 311, 303, 303,
483                                      303, 303, 214, 212, 210, 130, 303, 114, 327, 323, 288, 287, 102, 303, 303, 303,
484                                      241, 31, 303, 35, 270, 206, 242, 303, 299, 303, 13, 303, 303, 35, 303, 43, 40, 37,
485                                      303, 303, 13, 303, 303, 303, 303, 43, 40, 37, 303, 303, 303, 311, 327, 323, 288,
486                                      287, 214, 212, 210, 124, 303, 114, 327, 323, 288, 287, 102, 192, 303, 303, 310,
487                                      303, 303, 303, 270, 206, 242, 311, 299, 226, 303, 303, 214, 212, 303, 120, 303,
488                                      114, 475, 475, 303, 28, 102, 475, 459, 43, 40, 37, 303, 303, 270, 206, 242, 303,
489                                      299, 303, 303, 303, 303, 303, 303, 311, 327, 323, 288, 287, 214, 212, 303, 126,
490                                      303, 114, 459, 303, 303, 459, 102, 475, 303, 459, 226, 303, 303, 303, 270, 206,
491                                      242, 303, 299, 475, 475, 226, 18, 303, 475, 459, 303, 303, 303, 303, 475, 475, 303,
492                                      303, 226, 475, 459, 283, 11, 303, 303, 303, 282, 475, 475, 303, 303, 303, 475, 459,
493                                      303, 303, 35, 459, 144, 303, 459, 303, 475, 13, 459, 303, 303, 303, 459, 303, 303,
494                                      459, 311, 475, 303, 459, 321, 214, 212, 303, 119, 459, 114, 303, 459, 303, 475,
495                                      102, 459, 303, 303, 303, 303, 303, 303, 270, 206, 242, 303, 299, 311, 210, 14, 303,
496                                      303, 214, 212, 303, 127, 303, 114, 303, 284, 303, 303, 102, 129, 303, 303, 303,
497                                      303, 102, 303, 270, 206, 242, 311, 299, 210, 303, 293, 214, 212, 299, 121, 303,
498                                      114, 311, 43, 40, 37, 102, 214, 212, 303, 125, 303, 114, 303, 270, 206, 242, 102,
499                                      299, 156, 327, 323, 288, 287, 210, 270, 206, 242, 210, 299, 43, 40, 37, 210, 303,
500                                      303, 303, 244, 303, 303, 303, 303, 303, 303, 110, 303, 303, 327, 323, 288, 287,
501                                      303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 43, 40, 37, 210, 43, 40, 37, 210,
502                                      303, 43, 40, 37, 240, 210, 303, 303, 191, 327, 323, 288, 287, 327, 323, 288, 287,
503                                      303, 327, 323, 288, 287, 303, 306, 303, 303, 303, 303, 303, 303, 303, 303, 43, 40,
504                                      37, 303, 43, 40, 37, 210, 303, 238, 43, 40, 37, 303, 303, 303, 303, 327, 323, 288,
505                                      287, 327, 323, 288, 287, 15, 303, 327, 323, 288, 287, 303, 303, 303, 475, 475, 303,
506                                      303, 303, 475, 459, 210, 303, 246, 43, 40, 37, 210, 303, 303, 303, 303, 303, 475,
507                                      475, 283, 11, 303, 475, 459, 282, 327, 323, 288, 287, 303, 303, 303, 459, 303, 35,
508                                      459, 157, 475, 303, 459, 303, 13, 43, 40, 37, 303, 303, 303, 43, 40, 37, 459, 303,
509                                      303, 459, 303, 475, 328, 459, 327, 323, 288, 287, 303, 303, 327, 323, 288, 287,
510                                      303, 406, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 406, 303, 406, 303,
511                                      303, 406, 303, 303, 303, 303, 303, 303, 406, 303, 406, 303, 406, 303, 303, 303,
512                                      303, 303, 303, 303, 235,);
513
514     static public $yy_lookahead = array(11, 12, 13, 1, 15, 16, 76, 18, 19, 20, 7, 8, 9, 22, 25, 85, 86, 87, 29, 13, 31,
515                                         32, 16, 34, 75, 36, 77, 78, 39, 80, 100, 42, 43, 44, 45, 71, 47, 46, 49, 75, 51,
516                                         52, 53, 54, 80, 11, 12, 13, 59, 15, 16, 22, 18, 19, 20, 49, 92, 51, 66, 25, 54,
517                                         69, 65, 29, 30, 31, 32, 70, 34, 14, 36, 35, 17, 39, 16, 46, 42, 43, 44, 45, 26,
518                                         47, 53, 49, 10, 51, 52, 33, 54, 53, 11, 12, 13, 59, 15, 16, 22, 18, 19, 20, 26,
519                                         104, 105, 48, 25, 12, 13, 33, 29, 16, 31, 32, 75, 34, 77, 36, 13, 80, 39, 16,
520                                         46, 42, 43, 44, 45, 45, 47, 34, 49, 10, 51, 52, 52, 54, 36, 11, 12, 13, 59, 15,
521                                         16, 22, 18, 19, 20, 26, 48, 54, 14, 25, 13, 34, 33, 29, 51, 31, 32, 54, 34, 94,
522                                         36, 96, 97, 39, 97, 46, 42, 43, 44, 45, 14, 47, 75, 49, 77, 51, 52, 80, 54, 45,
523                                         11, 12, 13, 59, 15, 16, 52, 18, 19, 20, 36, 54, 11, 12, 25, 21, 100, 16, 29, 45,
524                                         31, 32, 48, 34, 16, 36, 14, 53, 39, 35, 1, 42, 43, 44, 45, 93, 47, 45, 49, 10,
525                                         51, 52, 1, 54, 52, 11, 12, 13, 59, 15, 16, 50, 18, 19, 20, 26, 27, 45, 50, 25,
526                                         12, 13, 33, 29, 16, 31, 32, 26, 34, 14, 36, 1, 17, 39, 33, 1, 42, 43, 44, 45,
527                                         10, 47, 22, 49, 10, 51, 52, 1, 54, 17, 11, 12, 13, 59, 15, 16, 10, 18, 19, 20,
528                                         26, 45, 54, 48, 25, 36, 46, 33, 29, 53, 31, 32, 26, 34, 93, 36, 95, 48, 39, 33,
529                                         60, 42, 43, 44, 45, 81, 47, 35, 49, 37, 51, 52, 1, 54, 17, 11, 12, 13, 59, 15,
530                                         16, 10, 18, 19, 20, 11, 12, 11, 12, 25, 16, 101, 16, 29, 14, 31, 32, 26, 34, 93,
531                                         36, 95, 22, 39, 33, 48, 42, 43, 44, 45, 81, 47, 76, 49, 41, 51, 52, 35, 54, 37,
532                                         11, 12, 13, 59, 15, 16, 50, 18, 19, 20, 11, 12, 11, 12, 25, 16, 100, 16, 29, 1,
533                                         31, 32, 28, 34, 2, 36, 96, 97, 39, 72, 36, 42, 43, 44, 45, 17, 47, 76, 49, 82,
534                                         51, 52, 48, 54, 16, 11, 12, 13, 59, 15, 16, 50, 18, 19, 20, 75, 35, 100, 37, 25,
535                                         80, 100, 101, 29, 13, 31, 32, 65, 34, 37, 36, 13, 70, 39, 16, 91, 42, 43, 44,
536                                         45, 16, 47, 98, 49, 17, 51, 52, 36, 54, 36, 11, 12, 13, 59, 15, 16, 12, 18, 19,
537                                         20, 1, 48, 4, 76, 25, 54, 16, 105, 29, 10, 31, 32, 45, 34, 53, 36, 17, 36, 39,
538                                         52, 36, 42, 43, 44, 45, 26, 47, 100, 49, 16, 51, 65, 33, 54, 80, 36, 70, 71, 59,
539                                         73, 74, 75, 64, 65, 66, 67, 80, 48, 70, 83, 84, 76, 98, 91, 88, 89, 90, 72, 92,
540                                         1, 98, 16, 3, 4, 5, 6, 7, 82, 102, 103, 11, 12, 72, 72, 15, 100, 76, 18, 19, 20,
541                                         1, 16, 82, 82, 25, 100, 28, 65, 29, 51, 31, 32, 70, 71, 26, 73, 74, 75, 72, 72,
542                                         100, 33, 80, 72, 10, 83, 84, 76, 82, 82, 88, 89, 90, 82, 92, 16, 85, 86, 87, 45,
543                                         65, 99, 95, 72, 51, 70, 71, 76, 73, 74, 75, 100, 53, 82, 93, 80, 72, 13, 83, 84,
544                                         76, 93, 72, 88, 89, 90, 82, 92, 1, 2, 65, 100, 82, 72, 99, 70, 71, 53, 73, 74,
545                                         75, 16, 77, 82, 100, 80, 16, 10, 83, 84, 36, 14, 34, 88, 89, 90, 65, 92, 54, 72,
546                                         13, 70, 71, 26, 73, 74, 75, 72, 77, 82, 33, 80, 23, 36, 83, 84, 82, 82, 72, 88,
547                                         89, 90, 95, 92, 4, 48, 96, 97, 82, 81, 95, 11, 12, 13, 93, 15, 80, 80, 18, 19,
548                                         20, 95, 80, 80, 95, 25, 80, 94, 65, 29, 79, 31, 32, 70, 71, 8, 73, 74, 75, 68,
549                                         106, 93, 93, 80, 106, 93, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 106, 106,
550                                         106, 59, 60, 65, 99, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 38, 39, 40,
551                                         80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 4, 55, 56, 57, 58,
552                                         106, 106, 11, 12, 13, 103, 15, 106, 106, 18, 19, 20, 106, 106, 106, 106, 25,
553                                         106, 106, 65, 29, 106, 31, 32, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80,
554                                         106, 106, 83, 84, 106, 11, 12, 88, 89, 90, 16, 92, 106, 65, 106, 59, 60, 106,
555                                         70, 71, 26, 73, 74, 75, 106, 106, 106, 33, 80, 72, 106, 83, 84, 76, 106, 106,
556                                         88, 89, 90, 82, 92, 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106,
557                                         106, 80, 100, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106,
558                                         106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84,
559                                         106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74,
560                                         75, 106, 106, 106, 106, 80, 72, 106, 83, 84, 76, 106, 106, 88, 89, 90, 82, 92,
561                                         65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 100, 106,
562                                         83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106,
563                                         73, 74, 75, 106, 106, 106, 106, 80, 72, 106, 83, 84, 76, 106, 106, 88, 89, 90,
564                                         82, 92, 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80,
565                                         100, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106,
566                                         70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 72, 106, 83, 84, 76, 106, 106,
567                                         88, 89, 90, 82, 92, 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106,
568                                         106, 80, 100, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106,
569                                         106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 72, 106, 83, 84, 76,
570                                         106, 106, 88, 89, 90, 82, 92, 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106,
571                                         106, 106, 106, 80, 100, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65,
572                                         106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106,
573                                         83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106,
574                                         73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90,
575                                         106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106,
576                                         80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106,
577                                         106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106,
578                                         106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75,
579                                         106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92,
580                                         65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106,
581                                         106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71,
582                                         106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88,
583                                         89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106,
584                                         106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106,
585                                         106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84,
586                                         106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74,
587                                         75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106,
588                                         92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80,
589                                         106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106,
590                                         70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106,
591                                         106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106,
592                                         106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65,
593                                         106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106,
594                                         83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106,
595                                         73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90,
596                                         106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106,
597                                         80, 106, 106, 83, 84, 106, 1, 2, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106,
598                                         70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 1, 106, 106,
599                                         88, 89, 90, 106, 92, 36, 10, 38, 39, 40, 106, 62, 63, 64, 65, 66, 67, 48, 106,
600                                         70, 106, 106, 26, 106, 55, 56, 57, 58, 106, 33, 106, 106, 106, 106, 38, 39, 40,
601                                         1, 106, 106, 65, 106, 106, 106, 106, 70, 71, 1, 73, 106, 75, 55, 56, 57, 58, 80,
602                                         106, 106, 106, 84, 24, 106, 26, 88, 89, 90, 106, 92, 106, 33, 106, 106, 26, 106,
603                                         38, 39, 40, 106, 106, 33, 106, 106, 106, 106, 38, 39, 40, 106, 106, 106, 65, 55,
604                                         56, 57, 58, 70, 71, 1, 73, 106, 75, 55, 56, 57, 58, 80, 10, 106, 106, 84, 106,
605                                         106, 106, 88, 89, 90, 65, 92, 2, 106, 106, 70, 71, 106, 73, 106, 75, 11, 12,
606                                         106, 14, 80, 16, 17, 38, 39, 40, 106, 106, 88, 89, 90, 106, 92, 106, 106, 106,
607                                         106, 106, 106, 65, 55, 56, 57, 58, 70, 71, 106, 73, 106, 75, 45, 106, 106, 48,
608                                         80, 50, 106, 52, 2, 106, 106, 106, 88, 89, 90, 106, 92, 11, 12, 2, 14, 106, 16,
609                                         17, 106, 106, 106, 106, 11, 12, 106, 106, 2, 16, 17, 11, 12, 106, 106, 106, 16,
610                                         11, 12, 106, 106, 106, 16, 17, 106, 106, 26, 45, 28, 106, 48, 106, 50, 33, 52,
611                                         106, 106, 106, 45, 106, 106, 48, 65, 50, 106, 52, 53, 70, 71, 106, 73, 45, 75,
612                                         106, 48, 106, 50, 80, 52, 106, 106, 106, 106, 106, 106, 88, 89, 90, 106, 92, 65,
613                                         1, 2, 106, 106, 70, 71, 106, 73, 106, 75, 106, 71, 106, 106, 80, 75, 106, 106,
614                                         106, 106, 80, 106, 88, 89, 90, 65, 92, 1, 106, 89, 70, 71, 92, 73, 106, 75, 65,
615                                         38, 39, 40, 80, 70, 71, 106, 73, 106, 75, 106, 88, 89, 90, 80, 92, 27, 55, 56,
616                                         57, 58, 1, 88, 89, 90, 1, 92, 38, 39, 40, 1, 106, 106, 106, 10, 106, 106, 106,
617                                         106, 106, 106, 21, 106, 106, 55, 56, 57, 58, 106, 106, 106, 106, 106, 106, 106,
618                                         106, 106, 106, 38, 39, 40, 1, 38, 39, 40, 1, 106, 38, 39, 40, 10, 1, 106, 106,
619                                         10, 55, 56, 57, 58, 55, 56, 57, 58, 106, 55, 56, 57, 58, 106, 60, 106, 106, 106,
620                                         106, 106, 106, 106, 106, 38, 39, 40, 106, 38, 39, 40, 1, 106, 37, 38, 39, 40,
621                                         106, 106, 106, 106, 55, 56, 57, 58, 55, 56, 57, 58, 2, 106, 55, 56, 57, 58, 106,
622                                         106, 106, 11, 12, 106, 106, 106, 16, 17, 1, 106, 37, 38, 39, 40, 1, 106, 106,
623                                         106, 106, 106, 11, 12, 11, 12, 106, 16, 17, 16, 55, 56, 57, 58, 106, 106, 106,
624                                         45, 106, 26, 48, 28, 50, 106, 52, 106, 33, 38, 39, 40, 106, 106, 106, 38, 39,
625                                         40, 45, 106, 106, 48, 106, 50, 53, 52, 55, 56, 57, 58, 106, 106, 55, 56, 57, 58,
626                                         106, 10, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 21, 106, 23, 106,
627                                         106, 26, 106, 106, 106, 106, 106, 106, 33, 106, 35, 106, 37, 106, 106, 106, 106,
628                                         106, 106, 106, 45,);
629
630     const YY_SHIFT_USE_DFLT = - 12;
631
632     const YY_SHIFT_MAX = 238;
633
634     static public $yy_shift_ofst = array(519, 349, 79, 349, 304, 79, 79, 304, 34, - 11, 34, 79, 394, 79, 79, 124, 79,
635                                          169, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 259, 79, 79, 79, 79, 79, 79, 169,
636                                          79, 214, 214, 439, 439, 439, 439, 439, 439, 1617, 1577, 1627, 1627, 1627, 1627,
637                                          1627, 519, 1944, 1978, 2012, 1903, 1938, 1677, 1836, 1934, 1863, 1898, 1894,
638                                          2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 695,
639                                          695, 6, 660, 459, 311, 103, 221, 411, 745, 1766, 2016, 783, 783, 411, 221, 411,
640                                          427, 221, 607, 74, 119, 209, 266, 254, 228, 181, 55, 314, 3, 314, 235, 418,
641                                          418, 584, 250, 528, 378, 297, 54, 518, 54, 539, 2, 2, 2, 2, 2, 2, 2, 2, 2, 252,
642                                          252, - 12, 1697, 1759, 1748, 1995, 1772, 2014, 93, 361, 359, 134, 54, 137, 54,
643                                          137, 54, 54, 54, 54, 54, 54, 54, 54, 80, 54, 54, 137, 137, 54, 54, 54, 54, 54,
644                                          172, 54, 172, 444, 172, 320, 80, 172, 172, 172, 54, 172, 172, 687, 594, 2, 252,
645                                          2, 382, 382, 2, 2, 252, 252, 2, - 12, - 12, - 12, - 12, - 12, 1550, 2068, 617,
646                                          316, 154, 29, 240, 354, 98, 174, 236, 192, 272, 413, 249, 322, 381, 188, 36,
647                                          - 9, 598, 554, 424, 533, 525, 441, 498, 505, 473, 458, 450, 421, 559, 610, 594,
648                                          627, 605, 564, 534, 392, 388, 629, 117, 58, 156, 313,);
649
650     const YY_REDUCE_USE_DFLT = - 71;
651
652     const YY_REDUCE_MAX = 192;
653
654     static public $yy_reduce_ofst = array(1530, 426, 482, 656, 545, 515, 623, 571, 1017, 961, 1101, 1325, 933, 793, 849,
655                                           821, 1465, 1157, 1129, 1185, 1073, 989, 1045, 1241, 1381, 1437, 1493, 1409,
656                                           1269, 1297, 1353, 1213, 708, 737, 905, 877, 765, 1606, 1556, 1632, 1808, 1797,
657                                           1771, 1666, 1743, 886, 491, 830, 491, 746, 942, 998, 438, - 70, - 70, - 70,
658                                           - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70,
659                                           - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, 1777, - 3, 524, 460,
660                                           - 36, 511, - 51, 362, 487, 575, 567, 586, 37, 445, 97, 65, 317, 321, 541, 541,
661                                           276, 276, 276, 414, 246, 290, 246, - 8, 201, 290, 344, 422, 340, 276, 461,
662                                           387, 290, 486, 276, 530, 276, 276, 276, 276, 276, 435, 276, 276, 276, 276,
663                                           570, 290, 276, 122, 122, 122, 122, 122, 122, 602, 589, 122, 122, 574, 606,
664                                           574, 603, 574, 574, 574, 574, 574, 574, 574, 574, 581, 574, 574, 597, 596,
665                                           574, 574, 574, 574, 574, 593, 574, 593, 609, 593, 611, 608, 593, 593, 593,
666                                           574, 593, 593, 631, 612, 96, 67, 96, 230, 230, 96, 96, 67, 67, 96, 269, 224,
667                                           588, 508, 501,);
668
669     static public $yyExpectedTokens = array(array(3, 4, 5, 6, 7, 11, 12, 15, 18, 19, 20, 25, 29, 31, 32,),
670                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
671                                                   44, 45, 47, 49, 51, 52, 54, 59,),
672                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
673                                                   44, 45, 47, 49, 51, 52, 54, 59,),
674                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
675                                                   44, 45, 47, 49, 51, 52, 54, 59,),
676                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
677                                                   44, 45, 47, 49, 51, 52, 54, 59,),
678                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
679                                                   44, 45, 47, 49, 51, 52, 54, 59,),
680                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
681                                                   44, 45, 47, 49, 51, 52, 54, 59,),
682                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
683                                                   44, 45, 47, 49, 51, 52, 54, 59,),
684                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 30, 31, 32, 34, 36, 39, 42,
685                                                   43, 44, 45, 47, 49, 51, 52, 54, 59,),
686                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
687                                                   44, 45, 47, 49, 51, 52, 53, 54, 59,),
688                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 30, 31, 32, 34, 36, 39, 42,
689                                                   43, 44, 45, 47, 49, 51, 52, 54, 59,),
690                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
691                                                   44, 45, 47, 49, 51, 52, 54, 59,),
692                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
693                                                   44, 45, 47, 49, 51, 52, 54, 59,),
694                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
695                                                   44, 45, 47, 49, 51, 52, 54, 59,),
696                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
697                                                   44, 45, 47, 49, 51, 52, 54, 59,),
698                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
699                                                   44, 45, 47, 49, 51, 52, 54, 59,),
700                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
701                                                   44, 45, 47, 49, 51, 52, 54, 59,),
702                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
703                                                   44, 45, 47, 49, 51, 52, 54, 59,),
704                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
705                                                   44, 45, 47, 49, 51, 52, 54, 59,),
706                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
707                                                   44, 45, 47, 49, 51, 52, 54, 59,),
708                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
709                                                   44, 45, 47, 49, 51, 52, 54, 59,),
710                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
711                                                   44, 45, 47, 49, 51, 52, 54, 59,),
712                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
713                                                   44, 45, 47, 49, 51, 52, 54, 59,),
714                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
715                                                   44, 45, 47, 49, 51, 52, 54, 59,),
716                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
717                                                   44, 45, 47, 49, 51, 52, 54, 59,),
718                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
719                                                   44, 45, 47, 49, 51, 52, 54, 59,),
720                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
721                                                   44, 45, 47, 49, 51, 52, 54, 59,),
722                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
723                                                   44, 45, 47, 49, 51, 52, 54, 59,),
724                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
725                                                   44, 45, 47, 49, 51, 52, 54, 59,),
726                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
727                                                   44, 45, 47, 49, 51, 52, 54, 59,),
728                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
729                                                   44, 45, 47, 49, 51, 52, 54, 59,),
730                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
731                                                   44, 45, 47, 49, 51, 52, 54, 59,),
732                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
733                                                   44, 45, 47, 49, 51, 52, 54, 59,),
734                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
735                                                   44, 45, 47, 49, 51, 52, 54, 59,),
736                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
737                                                   44, 45, 47, 49, 51, 52, 54, 59,),
738                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
739                                                   44, 45, 47, 49, 51, 52, 54, 59,),
740                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
741                                                   44, 45, 47, 49, 51, 52, 54, 59,),
742                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
743                                                   44, 45, 47, 49, 51, 52, 54, 59,),
744                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
745                                                   44, 45, 47, 49, 51, 52, 54, 59,),
746                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
747                                                   44, 45, 47, 49, 51, 54, 59,),
748                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
749                                                   44, 45, 47, 49, 51, 54, 59,),
750                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
751                                                   44, 45, 47, 49, 51, 54, 59,),
752                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
753                                                   44, 45, 47, 49, 51, 54, 59,),
754                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
755                                                   44, 45, 47, 49, 51, 54, 59,),
756                                             array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
757                                                   44, 45, 47, 49, 51, 54, 59,),
758                                             array(1, 24, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
759                                             array(1, 10, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
760                                             array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
761                                             array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
762                                             array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
763                                             array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
764                                             array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
765                                             array(3, 4, 5, 6, 7, 11, 12, 15, 18, 19, 20, 25, 29, 31, 32,),
766                                             array(1, 37, 38, 39, 40, 55, 56, 57, 58,),
767                                             array(1, 37, 38, 39, 40, 55, 56, 57, 58,),
768                                             array(1, 38, 39, 40, 53, 55, 56, 57, 58,),
769                                             array(1, 38, 39, 40, 55, 56, 57, 58, 60,),
770                                             array(1, 10, 38, 39, 40, 55, 56, 57, 58,),
771                                             array(1, 10, 38, 39, 40, 55, 56, 57, 58,),
772                                             array(1, 2, 38, 39, 40, 55, 56, 57, 58,),
773                                             array(1, 10, 38, 39, 40, 55, 56, 57, 58,),
774                                             array(1, 27, 38, 39, 40, 55, 56, 57, 58,),
775                                             array(1, 10, 38, 39, 40, 55, 56, 57, 58,),
776                                             array(1, 21, 38, 39, 40, 55, 56, 57, 58,),
777                                             array(1, 38, 39, 40, 55, 56, 57, 58,),
778                                             array(1, 38, 39, 40, 55, 56, 57, 58,),
779                                             array(1, 38, 39, 40, 55, 56, 57, 58,),
780                                             array(1, 38, 39, 40, 55, 56, 57, 58,),
781                                             array(1, 38, 39, 40, 55, 56, 57, 58,),
782                                             array(1, 38, 39, 40, 55, 56, 57, 58,),
783                                             array(1, 38, 39, 40, 55, 56, 57, 58,),
784                                             array(1, 38, 39, 40, 55, 56, 57, 58,),
785                                             array(1, 38, 39, 40, 55, 56, 57, 58,),
786                                             array(1, 38, 39, 40, 55, 56, 57, 58,),
787                                             array(1, 38, 39, 40, 55, 56, 57, 58,),
788                                             array(1, 38, 39, 40, 55, 56, 57, 58,), array(38, 39, 40, 55, 56, 57, 58,),
789                                             array(38, 39, 40, 55, 56, 57, 58,), array(13, 16, 49, 51, 54,),
790                                             array(4, 11, 12, 13, 15, 18, 19, 20, 25, 29, 31, 32, 59, 60,),
791                                             array(1, 10, 17, 26, 33, 36, 48,), array(1, 10, 26, 33,),
792                                             array(13, 16, 51, 54,), array(1, 26, 33,), array(13, 36, 54,),
793                                             array(4, 11, 12, 13, 15, 18, 19, 20, 25, 29, 31, 32, 59, 60,),
794                                             array(11, 12, 16, 26, 28, 33,), array(11, 12, 16, 26, 28, 33,),
795                                             array(11, 12, 16, 26, 33,), array(11, 12, 16, 26, 33,), array(13, 36, 54,),
796                                             array(1, 26, 33,), array(13, 36, 54,), array(17, 45, 52,),
797                                             array(1, 26, 33,), array(1, 2,), array(10, 22, 26, 33, 46,),
798                                             array(10, 22, 26, 33, 46,), array(1, 10, 26, 27, 33,),
799                                             array(1, 10, 26, 33,), array(1, 10, 26, 33,), array(12, 13, 16, 54,),
800                                             array(11, 12, 16, 50,), array(14, 17, 48,), array(11, 12, 16,),
801                                             array(7, 8, 9,), array(11, 12, 16,), array(14, 17, 48,), array(13, 16,),
802                                             array(13, 16,), array(13, 54,), array(1, 10,), array(26, 33,),
803                                             array(1, 17,), array(17, 48,), array(26, 33,), array(1, 28,),
804                                             array(26, 33,), array(1, 53,), array(1,), array(1,), array(1,), array(1,),
805                                             array(1,), array(1,), array(1,), array(1,), array(1,), array(17,),
806                                             array(17,), array(), array(2, 11, 12, 14, 16, 17, 45, 48, 50, 52,),
807                                             array(2, 11, 12, 16, 17, 45, 48, 50, 52, 53,),
808                                             array(2, 11, 12, 14, 16, 17, 45, 48, 50, 52,),
809                                             array(2, 11, 12, 16, 17, 45, 48, 50, 52,),
810                                             array(2, 11, 12, 16, 17, 45, 48, 50, 52,),
811                                             array(11, 12, 16, 17, 45, 48, 50, 52,), array(12, 13, 16, 34, 54,),
812                                             array(11, 12, 16, 50,), array(11, 12, 16,), array(14, 45, 52,),
813                                             array(26, 33,), array(13, 54,), array(26, 33,), array(13, 54,),
814                                             array(26, 33,), array(26, 33,), array(26, 33,), array(26, 33,),
815                                             array(26, 33,), array(26, 33,), array(26, 33,), array(26, 33,),
816                                             array(45, 52,), array(26, 33,), array(26, 33,), array(13, 54,),
817                                             array(13, 54,), array(26, 33,), array(26, 33,), array(26, 33,),
818                                             array(26, 33,), array(26, 33,), array(45, 52,), array(26, 33,),
819                                             array(45, 52,), array(12, 36,), array(45, 52,), array(14, 22,),
820                                             array(45, 52,), array(45, 52,), array(45, 52,), array(45, 52,),
821                                             array(26, 33,), array(45, 52,), array(45, 52,), array(8,), array(36,),
822                                             array(1,), array(17,), array(1,), array(2,), array(2,), array(1,),
823                                             array(1,), array(17,), array(17,), array(1,), array(), array(), array(),
824                                             array(), array(), array(1, 2, 36, 38, 39, 40, 48, 55, 56, 57, 58,),
825                                             array(10, 21, 23, 26, 33, 35, 37, 45,), array(10, 14, 26, 33, 36, 48,),
826                                             array(11, 12, 16, 50,), array(36, 45, 48, 53,), array(22, 46, 53,),
827                                             array(22, 46, 60,), array(28, 36, 48,), array(36, 48,), array(21, 35,),
828                                             array(45, 53,), array(14, 45,), array(35, 37,), array(36, 48,),
829                                             array(36, 48,), array(35, 37,), array(35, 37,), array(16, 50,),
830                                             array(35, 53,), array(22, 46,), array(34,), array(10,), array(16,),
831                                             array(51,), array(16,), array(36,), array(51,), array(16,), array(16,),
832                                             array(4,), array(16,), array(53,), array(16,), array(16,), array(36,),
833                                             array(13,), array(16,), array(53,), array(45,), array(37,), array(16,),
834                                             array(23,), array(34,), array(16,), array(14,), array(41,), array(),
835                                             array(), array(), array(), array(), array(), array(), array(), array(),
836                                             array(), array(), array(), array(), array(), array(), array(), array(),
837                                             array(), array(), array(), array(), array(), array(), array(), array(),
838                                             array(), array(), array(), array(), array(), array(), array(), array(),
839                                             array(), array(), array(), array(), array(), array(), array(), array(),
840                                             array(), array(), array(), array(), array(), array(), array(), array(),
841                                             array(), array(), array(), array(), array(), array(), array(), array(),
842                                             array(), array(), array(), array(), array(), array(), array(), array(),
843                                             array(), array(), array(), array(), array(), array(), array(), array(),
844                                             array(), array(), array(), array(), array(), array(), array(), array(),
845                                             array(), array(), array(), array(), array(), array(), array(), array(),
846                                             array(), array(), array(), array(), array(), array(), array(),);
847
848     static public $yy_default = array(338, 515, 494, 530, 530, 494, 494, 530, 530, 530, 530, 530, 530, 530, 530, 530,
849                                       530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530,
850                                       530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 396, 530, 396,
851                                       359, 372, 362, 396, 335, 530, 530, 530, 530, 530, 530, 530, 530, 401, 530, 530,
852                                       377, 517, 492, 493, 418, 516, 403, 401, 518, 398, 407, 408, 423, 422, 530, 530,
853                                       434, 410, 530, 396, 530, 530, 396, 396, 396, 396, 530, 396, 530, 506, 396, 386,
854                                       424, 424, 410, 410, 410, 530, 459, 449, 459, 530, 459, 449, 530, 530, 530, 410,
855                                       396, 390, 449, 396, 410, 374, 410, 417, 426, 425, 410, 392, 421, 414, 413, 427,
856                                       503, 449, 501, 448, 448, 448, 448, 448, 448, 530, 461, 459, 475, 382, 530, 381,
857                                       530, 369, 366, 364, 368, 360, 363, 358, 370, 452, 384, 356, 530, 530, 385, 375,
858                                       380, 379, 373, 455, 376, 484, 459, 487, 530, 454, 453, 486, 485, 383, 456, 457,
859                                       350, 459, 443, 481, 387, 495, 496, 416, 391, 507, 504, 393, 500, 500, 500, 459,
860                                       459, 434, 430, 434, 460, 434, 424, 424, 434, 434, 530, 430, 430, 530, 530, 444,
861                                       530, 530, 530, 530, 424, 530, 530, 530, 530, 530, 505, 530, 530, 530, 342, 530,
862                                       439, 530, 530, 475, 530, 530, 530, 430, 530, 530, 404, 432, 530, 530, 436, 439,
863                                       480, 502, 440, 490, 465, 365, 436, 475, 394, 405, 343, 344, 345, 346, 347, 409,
864                                       429, 411, 337, 336, 339, 340, 341, 431, 348, 397, 353, 464, 354, 463, 435, 378,
865                                       351, 349, 489, 352, 433, 462, 419, 477, 415, 446, 478, 479, 438, 388, 519, 511,
866                                       510, 521, 520, 412, 482, 437, 498, 497, 491, 476, 483, 451, 526, 527, 428, 499,
867                                       450, 389, 524, 523, 488, 458, 420, 442, 445, 371, 471, 468, 474, 467, 466, 469,
868                                       472, 470, 522, 509, 529, 528, 525, 508, 473, 513, 447, 514, 395, 512, 441,);
869
870     const YYNOCODE = 107;
871
872     const YYSTACKDEPTH = 500;
873
874     const YYNSTATE = 335;
875
876     const YYNRULE = 195;
877
878     const YYERRORSYMBOL = 61;
879
880     const YYERRSYMDT = 'yy0';
881
882     const YYFALLBACK = 0;
883
884     public static $yyFallback = array();
885
886     public function Trace($TraceFILE, $zTracePrompt)
887     {
888         if (!$TraceFILE) {
889             $zTracePrompt = 0;
890         } elseif (!$zTracePrompt) {
891             $TraceFILE = 0;
892         }
893         $this->yyTraceFILE = $TraceFILE;
894         $this->yyTracePrompt = $zTracePrompt;
895     }
896
897     public function PrintTrace()
898     {
899         $this->yyTraceFILE = fopen('php://output', 'w');
900         $this->yyTracePrompt = '<br>';
901     }
902
903     public $yyTraceFILE;
904
905     public $yyTracePrompt;
906
907     public $yyidx;                    /* Index of top element in stack */
908     public $yyerrcnt;                 /* Shifts left before out of the error */
909     public $yystack = array();  /* The parser's stack */
910
911     public $yyTokenName = array('$', 'VERT', 'COLON', 'PHP', 'TEXT', 'STRIPON', 'STRIPOFF', 'LITERALSTART',
912                                 'LITERALEND', 'LITERAL', 'RDEL', 'SIMPELOUTPUT', 'LDEL', 'DOLLARID', 'EQUAL',
913                                 'SIMPLETAG', 'ID', 'PTR', 'LDELMAKENOCACHE', 'LDELIF', 'LDELFOR', 'SEMICOLON', 'INCDEC',
914                                 'TO', 'STEP', 'LDELFOREACH', 'SPACE', 'AS', 'APTR', 'LDELSETFILTER',
915                                 'SMARTYBLOCKCHILDPARENT', 'CLOSETAG', 'LDELSLASH', 'ATTR', 'INTEGER', 'COMMA', 'OPENP',
916                                 'CLOSEP', 'MATH', 'UNIMATH', 'ISIN', 'QMARK', 'NOT', 'TYPECAST', 'HEX', 'DOT',
917                                 'INSTANCEOF', 'SINGLEQUOTESTRING', 'DOUBLECOLON', 'NAMESPACE', 'AT', 'HATCH', 'OPENB',
918                                 'CLOSEB', 'DOLLAR', 'LOGOP', 'SLOGOP', 'TLOGOP', 'SINGLECOND', 'QUOTE', 'BACKTICK',
919                                 'error', 'start', 'template', 'template_element', 'smartytag', 'literal',
920                                 'text_content', 'literal_elements', 'literal_element', 'tag', 'variable', 'attributes',
921                                 'value', 'expr', 'varindexed', 'modifierlist', 'statement', 'statements', 'foraction',
922                                 'varvar', 'modparameters', 'attribute', 'ternary', 'array', 'tlop', 'lop', 'scond',
923                                 'function', 'ns1', 'doublequoted_with_quotes', 'static_class_access', 'object',
924                                 'arrayindex', 'indexdef', 'varvarele', 'objectchain', 'objectelement', 'method',
925                                 'params', 'modifier', 'modparameter', 'arrayelements', 'arrayelement', 'doublequoted',
926                                 'doublequotedcontent',);
927
928     public static $yyRuleName = array('start ::= template', 'template ::= template_element',
929                                       'template ::= template template_element', 'template ::=',
930                                       'template_element ::= smartytag', 'template_element ::= literal',
931                                       'template_element ::= PHP', 'template_element ::= text_content',
932                                       'text_content ::= TEXT', 'text_content ::= text_content TEXT',
933                                       'template_element ::= STRIPON', 'template_element ::= STRIPOFF',
934                                       'literal ::= LITERALSTART LITERALEND',
935                                       'literal ::= LITERALSTART literal_elements LITERALEND',
936                                       'literal_elements ::= literal_elements literal_element', 'literal_elements ::=',
937                                       'literal_element ::= literal', 'literal_element ::= LITERAL',
938                                       'smartytag ::= tag RDEL', 'smartytag ::= SIMPELOUTPUT', 'tag ::= LDEL variable',
939                                       'tag ::= LDEL variable attributes', 'tag ::= LDEL value',
940                                       'tag ::= LDEL value attributes', 'tag ::= LDEL expr',
941                                       'tag ::= LDEL expr attributes', 'tag ::= LDEL DOLLARID EQUAL value',
942                                       'tag ::= LDEL DOLLARID EQUAL expr', 'tag ::= LDEL DOLLARID EQUAL expr attributes',
943                                       'tag ::= LDEL varindexed EQUAL expr attributes', 'smartytag ::= SIMPLETAG',
944                                       'tag ::= LDEL ID attributes', 'tag ::= LDEL ID',
945                                       'tag ::= LDEL ID modifierlist attributes', 'tag ::= LDEL ID PTR ID attributes',
946                                       'tag ::= LDEL ID PTR ID modifierlist attributes',
947                                       'tag ::= LDELMAKENOCACHE DOLLARID', 'tag ::= LDELIF expr',
948                                       'tag ::= LDELIF expr attributes', 'tag ::= LDELIF statement',
949                                       'tag ::= LDELIF statement attributes',
950                                       'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
951                                       'foraction ::= EQUAL expr', 'foraction ::= INCDEC',
952                                       'tag ::= LDELFOR statement TO expr attributes',
953                                       'tag ::= LDELFOR statement TO expr STEP expr attributes',
954                                       'tag ::= LDELFOREACH attributes',
955                                       'tag ::= LDELFOREACH SPACE value AS varvar attributes',
956                                       'tag ::= LDELFOREACH SPACE value AS varvar APTR varvar attributes',
957                                       'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
958                                       'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes',
959                                       'tag ::= LDELSETFILTER ID modparameters',
960                                       'tag ::= LDELSETFILTER ID modparameters modifierlist',
961                                       'tag ::= LDEL SMARTYBLOCKCHILDPARENT', 'smartytag ::= CLOSETAG',
962                                       'tag ::= LDELSLASH ID', 'tag ::= LDELSLASH ID modifierlist',
963                                       'tag ::= LDELSLASH ID PTR ID', 'tag ::= LDELSLASH ID PTR ID modifierlist',
964                                       'attributes ::= attributes attribute', 'attributes ::= attribute',
965                                       'attributes ::=', 'attribute ::= SPACE ID EQUAL ID', 'attribute ::= ATTR expr',
966                                       'attribute ::= ATTR value', 'attribute ::= SPACE ID', 'attribute ::= SPACE expr',
967                                       'attribute ::= SPACE value', 'attribute ::= SPACE INTEGER EQUAL expr',
968                                       'statements ::= statement', 'statements ::= statements COMMA statement',
969                                       'statement ::= DOLLARID EQUAL INTEGER', 'statement ::= DOLLARID EQUAL expr',
970                                       'statement ::= varindexed EQUAL expr', 'statement ::= OPENP statement CLOSEP',
971                                       'expr ::= value', 'expr ::= ternary', 'expr ::= DOLLARID COLON ID',
972                                       'expr ::= expr MATH value', 'expr ::= expr UNIMATH value', 'expr ::= array',
973                                       'expr ::= expr modifierlist', 'expr ::= expr tlop value',
974                                       'expr ::= expr lop expr', 'expr ::= expr scond', 'expr ::= expr ISIN array',
975                                       'expr ::= expr ISIN value',
976                                       'ternary ::= OPENP expr CLOSEP QMARK DOLLARID COLON expr',
977                                       'ternary ::= OPENP expr CLOSEP QMARK expr COLON expr', 'value ::= variable',
978                                       'value ::= UNIMATH value', 'value ::= NOT value', 'value ::= TYPECAST value',
979                                       'value ::= variable INCDEC', 'value ::= HEX', 'value ::= INTEGER',
980                                       'value ::= INTEGER DOT INTEGER', 'value ::= INTEGER DOT', 'value ::= DOT INTEGER',
981                                       'value ::= ID', 'value ::= function', 'value ::= OPENP expr CLOSEP',
982                                       'value ::= variable INSTANCEOF ns1', 'value ::= variable INSTANCEOF variable',
983                                       'value ::= SINGLEQUOTESTRING', 'value ::= doublequoted_with_quotes',
984                                       'value ::= varindexed DOUBLECOLON static_class_access', 'value ::= smartytag',
985                                       'value ::= value modifierlist', 'value ::= NAMESPACE',
986                                       'value ::= ns1 DOUBLECOLON static_class_access', 'ns1 ::= ID',
987                                       'ns1 ::= NAMESPACE', 'variable ::= DOLLARID', 'variable ::= varindexed',
988                                       'variable ::= varvar AT ID', 'variable ::= object', 'variable ::= HATCH ID HATCH',
989                                       'variable ::= HATCH ID HATCH arrayindex', 'variable ::= HATCH variable HATCH',
990                                       'variable ::= HATCH variable HATCH arrayindex',
991                                       'varindexed ::= DOLLARID arrayindex', 'varindexed ::= varvar arrayindex',
992                                       'arrayindex ::= arrayindex indexdef', 'arrayindex ::=',
993                                       'indexdef ::= DOT DOLLARID', 'indexdef ::= DOT varvar',
994                                       'indexdef ::= DOT varvar AT ID', 'indexdef ::= DOT ID',
995                                       'indexdef ::= DOT INTEGER', 'indexdef ::= DOT LDEL expr RDEL',
996                                       'indexdef ::= OPENB ID CLOSEB', 'indexdef ::= OPENB ID DOT ID CLOSEB',
997                                       'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
998                                       'indexdef ::= OPENB INTEGER CLOSEB', 'indexdef ::= OPENB DOLLARID CLOSEB',
999                                       'indexdef ::= OPENB variable CLOSEB', 'indexdef ::= OPENB value CLOSEB',
1000                                       'indexdef ::= OPENB expr CLOSEB', 'indexdef ::= OPENB CLOSEB',
1001                                       'varvar ::= DOLLARID', 'varvar ::= DOLLAR', 'varvar ::= varvar varvarele',
1002                                       'varvarele ::= ID', 'varvarele ::= SIMPELOUTPUT', 'varvarele ::= LDEL expr RDEL',
1003                                       'object ::= varindexed objectchain', 'objectchain ::= objectelement',
1004                                       'objectchain ::= objectchain objectelement',
1005                                       'objectelement ::= PTR ID arrayindex', 'objectelement ::= PTR varvar arrayindex',
1006                                       'objectelement ::= PTR LDEL expr RDEL arrayindex',
1007                                       'objectelement ::= PTR ID LDEL expr RDEL arrayindex',
1008                                       'objectelement ::= PTR method', 'function ::= ns1 OPENP params CLOSEP',
1009                                       'method ::= ID OPENP params CLOSEP', 'method ::= DOLLARID OPENP params CLOSEP',
1010                                       'params ::= params COMMA expr', 'params ::= expr', 'params ::=',
1011                                       'modifierlist ::= modifierlist modifier modparameters',
1012                                       'modifierlist ::= modifier modparameters', 'modifier ::= VERT AT ID',
1013                                       'modifier ::= VERT ID', 'modparameters ::= modparameters modparameter',
1014                                       'modparameters ::=', 'modparameter ::= COLON value',
1015                                       'modparameter ::= COLON array', 'static_class_access ::= method',
1016                                       'static_class_access ::= method objectchain', 'static_class_access ::= ID',
1017                                       'static_class_access ::= DOLLARID arrayindex',
1018                                       'static_class_access ::= DOLLARID arrayindex objectchain', 'lop ::= LOGOP',
1019                                       'lop ::= SLOGOP', 'tlop ::= TLOGOP', 'scond ::= SINGLECOND',
1020                                       'array ::= OPENB arrayelements CLOSEB', 'arrayelements ::= arrayelement',
1021                                       'arrayelements ::= arrayelements COMMA arrayelement', 'arrayelements ::=',
1022                                       'arrayelement ::= value APTR expr', 'arrayelement ::= ID APTR expr',
1023                                       'arrayelement ::= expr', 'doublequoted_with_quotes ::= QUOTE QUOTE',
1024                                       'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
1025                                       'doublequoted ::= doublequoted doublequotedcontent',
1026                                       'doublequoted ::= doublequotedcontent',
1027                                       'doublequotedcontent ::= BACKTICK variable BACKTICK',
1028                                       'doublequotedcontent ::= BACKTICK expr BACKTICK',
1029                                       'doublequotedcontent ::= DOLLARID', 'doublequotedcontent ::= LDEL variable RDEL',
1030                                       'doublequotedcontent ::= LDEL expr RDEL', 'doublequotedcontent ::= smartytag',
1031                                       'doublequotedcontent ::= TEXT',);
1032
1033     public function tokenName($tokenType)
1034     {
1035         if ($tokenType === 0) {
1036             return 'End of Input';
1037         }
1038         if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
1039             return $this->yyTokenName[ $tokenType ];
1040         } else {
1041             return "Unknown";
1042         }
1043     }
1044
1045     public static function yy_destructor($yymajor, $yypminor)
1046     {
1047         switch ($yymajor) {
1048             default:
1049                 break;   /* If no destructor action specified: do nothing */
1050         }
1051     }
1052
1053     public function yy_pop_parser_stack()
1054     {
1055         if (empty($this->yystack)) {
1056             return;
1057         }
1058         $yytos = array_pop($this->yystack);
1059         if ($this->yyTraceFILE && $this->yyidx >= 0) {
1060             fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] . "\n");
1061         }
1062         $yymajor = $yytos->major;
1063         self::yy_destructor($yymajor, $yytos->minor);
1064         $this->yyidx --;
1065
1066         return $yymajor;
1067     }
1068
1069     public function __destruct()
1070     {
1071         while ($this->yystack !== Array()) {
1072             $this->yy_pop_parser_stack();
1073         }
1074         if (is_resource($this->yyTraceFILE)) {
1075             fclose($this->yyTraceFILE);
1076         }
1077     }
1078
1079     public function yy_get_expected_tokens($token)
1080     {
1081         static $res3 = array();
1082         static $res4 = array();
1083         $state = $this->yystack[ $this->yyidx ]->stateno;
1084         $expected = self::$yyExpectedTokens[ $state ];
1085         if (isset($res3[ $state ][ $token ])) {
1086             if ($res3[ $state ][ $token ]) {
1087                 return $expected;
1088             }
1089         } else {
1090             if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
1091                 return $expected;
1092             }
1093         }
1094         $stack = $this->yystack;
1095         $yyidx = $this->yyidx;
1096         do {
1097             $yyact = $this->yy_find_shift_action($token);
1098             if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1099                 // reduce action
1100                 $done = 0;
1101                 do {
1102                     if ($done ++ == 100) {
1103                         $this->yyidx = $yyidx;
1104                         $this->yystack = $stack;
1105                         // too much recursion prevents proper detection
1106                         // so give up
1107                         return array_unique($expected);
1108                     }
1109                     $yyruleno = $yyact - self::YYNSTATE;
1110                     $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
1111                     $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
1112                                                               self::$yyRuleInfo[ $yyruleno ][ 0 ]);
1113                     if (isset(self::$yyExpectedTokens[ $nextstate ])) {
1114                         $expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]);
1115                         if (isset($res4[ $nextstate ][ $token ])) {
1116                             if ($res4[ $nextstate ][ $token ]) {
1117                                 $this->yyidx = $yyidx;
1118                                 $this->yystack = $stack;
1119                                 return array_unique($expected);
1120                             }
1121                         } else {
1122                             if ($res4[ $nextstate ][ $token ] =
1123                                 in_array($token, self::$yyExpectedTokens[ $nextstate ], true)
1124                             ) {
1125                                 $this->yyidx = $yyidx;
1126                                 $this->yystack = $stack;
1127                                 return array_unique($expected);
1128                             }
1129                         }
1130                     }
1131                     if ($nextstate < self::YYNSTATE) {
1132                         // we need to shift a non-terminal
1133                         $this->yyidx ++;
1134                         $x = new TP_yyStackEntry;
1135                         $x->stateno = $nextstate;
1136                         $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
1137                         $this->yystack[ $this->yyidx ] = $x;
1138                         continue 2;
1139                     } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
1140                         $this->yyidx = $yyidx;
1141                         $this->yystack = $stack;
1142                         // the last token was just ignored, we can't accept
1143                         // by ignoring input, this is in essence ignoring a
1144                         // syntax error!
1145                         return array_unique($expected);
1146                     } elseif ($nextstate === self::YY_NO_ACTION) {
1147                         $this->yyidx = $yyidx;
1148                         $this->yystack = $stack;
1149                         // input accepted, but not shifted (I guess)
1150                         return $expected;
1151                     } else {
1152                         $yyact = $nextstate;
1153                     }
1154                 }
1155                 while (true);
1156             }
1157             break;
1158         }
1159         while (true);
1160         $this->yyidx = $yyidx;
1161         $this->yystack = $stack;
1162
1163         return array_unique($expected);
1164     }
1165
1166     public function yy_is_expected_token($token)
1167     {
1168         static $res = array();
1169         static $res2 = array();
1170         if ($token === 0) {
1171             return true; // 0 is not part of this
1172         }
1173         $state = $this->yystack[ $this->yyidx ]->stateno;
1174         if (isset($res[ $state ][ $token ])) {
1175             if ($res[ $state ][ $token ]) {
1176                 return true;
1177             }
1178         } else {
1179             if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
1180                 return true;
1181             }
1182         }
1183         $stack = $this->yystack;
1184         $yyidx = $this->yyidx;
1185         do {
1186             $yyact = $this->yy_find_shift_action($token);
1187             if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1188                 // reduce action
1189                 $done = 0;
1190                 do {
1191                     if ($done ++ == 100) {
1192                         $this->yyidx = $yyidx;
1193                         $this->yystack = $stack;
1194                         // too much recursion prevents proper detection
1195                         // so give up
1196                         return true;
1197                     }
1198                     $yyruleno = $yyact - self::YYNSTATE;
1199                     $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
1200                     $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
1201                                                               self::$yyRuleInfo[ $yyruleno ][ 0 ]);
1202                     if (isset($res2[ $nextstate ][ $token ])) {
1203                         if ($res2[ $nextstate ][ $token ]) {
1204                             $this->yyidx = $yyidx;
1205                             $this->yystack = $stack;
1206                             return true;
1207                         }
1208                     } else {
1209                         if ($res2[ $nextstate ][ $token ] = (isset(self::$yyExpectedTokens[ $nextstate ]) &&
1210                                                              in_array($token, self::$yyExpectedTokens[ $nextstate ],
1211                                                                       true))
1212                         ) {
1213                             $this->yyidx = $yyidx;
1214                             $this->yystack = $stack;
1215                             return true;
1216                         }
1217                     }
1218                     if ($nextstate < self::YYNSTATE) {
1219                         // we need to shift a non-terminal
1220                         $this->yyidx ++;
1221                         $x = new TP_yyStackEntry;
1222                         $x->stateno = $nextstate;
1223                         $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
1224                         $this->yystack[ $this->yyidx ] = $x;
1225                         continue 2;
1226                     } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
1227                         $this->yyidx = $yyidx;
1228                         $this->yystack = $stack;
1229                         if (!$token) {
1230                             // end of input: this is valid
1231                             return true;
1232                         }
1233                         // the last token was just ignored, we can't accept
1234                         // by ignoring input, this is in essence ignoring a
1235                         // syntax error!
1236                         return false;
1237                     } elseif ($nextstate === self::YY_NO_ACTION) {
1238                         $this->yyidx = $yyidx;
1239                         $this->yystack = $stack;
1240                         // input accepted, but not shifted (I guess)
1241                         return true;
1242                     } else {
1243                         $yyact = $nextstate;
1244                     }
1245                 }
1246                 while (true);
1247             }
1248             break;
1249         }
1250         while (true);
1251         $this->yyidx = $yyidx;
1252         $this->yystack = $stack;
1253
1254         return true;
1255     }
1256
1257     public function yy_find_shift_action($iLookAhead)
1258     {
1259         $stateno = $this->yystack[ $this->yyidx ]->stateno;
1260
1261         /* if ($this->yyidx < 0) return self::YY_NO_ACTION;  */
1262         if (!isset(self::$yy_shift_ofst[ $stateno ])) {
1263             // no shift actions
1264             return self::$yy_default[ $stateno ];
1265         }
1266         $i = self::$yy_shift_ofst[ $stateno ];
1267         if ($i === self::YY_SHIFT_USE_DFLT) {
1268             return self::$yy_default[ $stateno ];
1269         }
1270         if ($iLookAhead == self::YYNOCODE) {
1271             return self::YY_NO_ACTION;
1272         }
1273         $i += $iLookAhead;
1274         if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
1275             if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) &&
1276                 ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0
1277             ) {
1278                 if ($this->yyTraceFILE) {
1279                     fwrite($this->yyTraceFILE,
1280                            $this->yyTracePrompt . "FALLBACK " . $this->yyTokenName[ $iLookAhead ] . " => " .
1281                            $this->yyTokenName[ $iFallback ] . "\n");
1282                 }
1283
1284                 return $this->yy_find_shift_action($iFallback);
1285             }
1286
1287             return self::$yy_default[ $stateno ];
1288         } else {
1289             return self::$yy_action[ $i ];
1290         }
1291     }
1292
1293     public function yy_find_reduce_action($stateno, $iLookAhead)
1294     {
1295         /* $stateno = $this->yystack[$this->yyidx]->stateno; */
1296
1297         if (!isset(self::$yy_reduce_ofst[ $stateno ])) {
1298             return self::$yy_default[ $stateno ];
1299         }
1300         $i = self::$yy_reduce_ofst[ $stateno ];
1301         if ($i == self::YY_REDUCE_USE_DFLT) {
1302             return self::$yy_default[ $stateno ];
1303         }
1304         if ($iLookAhead == self::YYNOCODE) {
1305             return self::YY_NO_ACTION;
1306         }
1307         $i += $iLookAhead;
1308         if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
1309             return self::$yy_default[ $stateno ];
1310         } else {
1311             return self::$yy_action[ $i ];
1312         }
1313     }
1314
1315     public function yy_shift($yyNewState, $yyMajor, $yypMinor)
1316     {
1317         $this->yyidx ++;
1318         if ($this->yyidx >= self::YYSTACKDEPTH) {
1319             $this->yyidx --;
1320             if ($this->yyTraceFILE) {
1321                 fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
1322             }
1323             while ($this->yyidx >= 0) {
1324                 $this->yy_pop_parser_stack();
1325             }
1326             #line 207 "../smarty/lexer/smarty_internal_templateparser.y"
1327
1328             $this->internalError = true;
1329             $this->compiler->trigger_template_error("Stack overflow in template parser");
1330
1331             return;
1332         }
1333         $yytos = new TP_yyStackEntry;
1334         $yytos->stateno = $yyNewState;
1335         $yytos->major = $yyMajor;
1336         $yytos->minor = $yypMinor;
1337         $this->yystack[] = $yytos;
1338         if ($this->yyTraceFILE && $this->yyidx > 0) {
1339             fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, $yyNewState);
1340             fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
1341             for ($i = 1; $i <= $this->yyidx; $i ++) {
1342                 fprintf($this->yyTraceFILE, " %s", $this->yyTokenName[ $this->yystack[ $i ]->major ]);
1343             }
1344             fwrite($this->yyTraceFILE, "\n");
1345         }
1346     }
1347
1348     public static $yyRuleInfo = array(array(0 => 62, 1 => 1), array(0 => 63, 1 => 1), array(0 => 63, 1 => 2),
1349                                       array(0 => 63, 1 => 0), array(0 => 64, 1 => 1), array(0 => 64, 1 => 1),
1350                                       array(0 => 64, 1 => 1), array(0 => 64, 1 => 1), array(0 => 67, 1 => 1),
1351                                       array(0 => 67, 1 => 2), array(0 => 64, 1 => 1), array(0 => 64, 1 => 1),
1352                                       array(0 => 66, 1 => 2), array(0 => 66, 1 => 3), array(0 => 68, 1 => 2),
1353                                       array(0 => 68, 1 => 0), array(0 => 69, 1 => 1), array(0 => 69, 1 => 1),
1354                                       array(0 => 65, 1 => 2), array(0 => 65, 1 => 1), array(0 => 70, 1 => 2),
1355                                       array(0 => 70, 1 => 3), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3),
1356                                       array(0 => 70, 1 => 2), array(0 => 70, 1 => 3), array(0 => 70, 1 => 4),
1357                                       array(0 => 70, 1 => 4), array(0 => 70, 1 => 5), array(0 => 70, 1 => 5),
1358                                       array(0 => 65, 1 => 1), array(0 => 70, 1 => 3), array(0 => 70, 1 => 2),
1359                                       array(0 => 70, 1 => 4), array(0 => 70, 1 => 5), array(0 => 70, 1 => 6),
1360                                       array(0 => 70, 1 => 2), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3),
1361                                       array(0 => 70, 1 => 2), array(0 => 70, 1 => 3), array(0 => 70, 1 => 8),
1362                                       array(0 => 79, 1 => 2), array(0 => 79, 1 => 1), array(0 => 70, 1 => 5),
1363                                       array(0 => 70, 1 => 7), array(0 => 70, 1 => 2), array(0 => 70, 1 => 6),
1364                                       array(0 => 70, 1 => 8), array(0 => 70, 1 => 6), array(0 => 70, 1 => 8),
1365                                       array(0 => 70, 1 => 3), array(0 => 70, 1 => 4), array(0 => 70, 1 => 2),
1366                                       array(0 => 65, 1 => 1), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3),
1367                                       array(0 => 70, 1 => 4), array(0 => 70, 1 => 5), array(0 => 72, 1 => 2),
1368                                       array(0 => 72, 1 => 1), array(0 => 72, 1 => 0), array(0 => 82, 1 => 4),
1369                                       array(0 => 82, 1 => 2), array(0 => 82, 1 => 2), array(0 => 82, 1 => 2),
1370                                       array(0 => 82, 1 => 2), array(0 => 82, 1 => 2), array(0 => 82, 1 => 4),
1371                                       array(0 => 78, 1 => 1), array(0 => 78, 1 => 3), array(0 => 77, 1 => 3),
1372                                       array(0 => 77, 1 => 3), array(0 => 77, 1 => 3), array(0 => 77, 1 => 3),
1373                                       array(0 => 74, 1 => 1), array(0 => 74, 1 => 1), array(0 => 74, 1 => 3),
1374                                       array(0 => 74, 1 => 3), array(0 => 74, 1 => 3), array(0 => 74, 1 => 1),
1375                                       array(0 => 74, 1 => 2), array(0 => 74, 1 => 3), array(0 => 74, 1 => 3),
1376                                       array(0 => 74, 1 => 2), array(0 => 74, 1 => 3), array(0 => 74, 1 => 3),
1377                                       array(0 => 83, 1 => 7), array(0 => 83, 1 => 7), array(0 => 73, 1 => 1),
1378                                       array(0 => 73, 1 => 2), array(0 => 73, 1 => 2), array(0 => 73, 1 => 2),
1379                                       array(0 => 73, 1 => 2), array(0 => 73, 1 => 1), array(0 => 73, 1 => 1),
1380                                       array(0 => 73, 1 => 3), array(0 => 73, 1 => 2), array(0 => 73, 1 => 2),
1381                                       array(0 => 73, 1 => 1), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3),
1382                                       array(0 => 73, 1 => 3), array(0 => 73, 1 => 3), array(0 => 73, 1 => 1),
1383                                       array(0 => 73, 1 => 1), array(0 => 73, 1 => 3), array(0 => 73, 1 => 1),
1384                                       array(0 => 73, 1 => 2), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3),
1385                                       array(0 => 89, 1 => 1), array(0 => 89, 1 => 1), array(0 => 71, 1 => 1),
1386                                       array(0 => 71, 1 => 1), array(0 => 71, 1 => 3), array(0 => 71, 1 => 1),
1387                                       array(0 => 71, 1 => 3), array(0 => 71, 1 => 4), array(0 => 71, 1 => 3),
1388                                       array(0 => 71, 1 => 4), array(0 => 75, 1 => 2), array(0 => 75, 1 => 2),
1389                                       array(0 => 93, 1 => 2), array(0 => 93, 1 => 0), array(0 => 94, 1 => 2),
1390                                       array(0 => 94, 1 => 2), array(0 => 94, 1 => 4), array(0 => 94, 1 => 2),
1391                                       array(0 => 94, 1 => 2), array(0 => 94, 1 => 4), array(0 => 94, 1 => 3),
1392                                       array(0 => 94, 1 => 5), array(0 => 94, 1 => 3), array(0 => 94, 1 => 3),
1393                                       array(0 => 94, 1 => 3), array(0 => 94, 1 => 3), array(0 => 94, 1 => 3),
1394                                       array(0 => 94, 1 => 3), array(0 => 94, 1 => 2), array(0 => 80, 1 => 1),
1395                                       array(0 => 80, 1 => 1), array(0 => 80, 1 => 2), array(0 => 95, 1 => 1),
1396                                       array(0 => 95, 1 => 1), array(0 => 95, 1 => 3), array(0 => 92, 1 => 2),
1397                                       array(0 => 96, 1 => 1), array(0 => 96, 1 => 2), array(0 => 97, 1 => 3),
1398                                       array(0 => 97, 1 => 3), array(0 => 97, 1 => 5), array(0 => 97, 1 => 6),
1399                                       array(0 => 97, 1 => 2), array(0 => 88, 1 => 4), array(0 => 98, 1 => 4),
1400                                       array(0 => 98, 1 => 4), array(0 => 99, 1 => 3), array(0 => 99, 1 => 1),
1401                                       array(0 => 99, 1 => 0), array(0 => 76, 1 => 3), array(0 => 76, 1 => 2),
1402                                       array(0 => 100, 1 => 3), array(0 => 100, 1 => 2), array(0 => 81, 1 => 2),
1403                                       array(0 => 81, 1 => 0), array(0 => 101, 1 => 2), array(0 => 101, 1 => 2),
1404                                       array(0 => 91, 1 => 1), array(0 => 91, 1 => 2), array(0 => 91, 1 => 1),
1405                                       array(0 => 91, 1 => 2), array(0 => 91, 1 => 3), array(0 => 86, 1 => 1),
1406                                       array(0 => 86, 1 => 1), array(0 => 85, 1 => 1), array(0 => 87, 1 => 1),
1407                                       array(0 => 84, 1 => 3), array(0 => 102, 1 => 1), array(0 => 102, 1 => 3),
1408                                       array(0 => 102, 1 => 0), array(0 => 103, 1 => 3), array(0 => 103, 1 => 3),
1409                                       array(0 => 103, 1 => 1), array(0 => 90, 1 => 2), array(0 => 90, 1 => 3),
1410                                       array(0 => 104, 1 => 2), array(0 => 104, 1 => 1), array(0 => 105, 1 => 3),
1411                                       array(0 => 105, 1 => 3), array(0 => 105, 1 => 1), array(0 => 105, 1 => 3),
1412                                       array(0 => 105, 1 => 3), array(0 => 105, 1 => 1), array(0 => 105, 1 => 1),);
1413
1414     public static $yyReduceMap = array(0 => 0, 1 => 1, 2 => 2, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 16 => 8, 17 => 8,
1415                                        43 => 8, 66 => 8, 67 => 8, 75 => 8, 76 => 8, 80 => 8, 89 => 8, 94 => 8, 95 => 8,
1416                                        100 => 8, 104 => 8, 105 => 8, 109 => 8, 111 => 8, 116 => 8, 178 => 8, 183 => 8,
1417                                        9 => 9, 10 => 10, 11 => 11, 12 => 12, 15 => 12, 13 => 13, 74 => 13, 14 => 14,
1418                                        90 => 14, 92 => 14, 93 => 14, 123 => 14, 18 => 18, 19 => 19, 20 => 20, 22 => 20,
1419                                        24 => 20, 21 => 21, 23 => 21, 25 => 21, 26 => 26, 27 => 26, 28 => 28, 29 => 29,
1420                                        30 => 30, 31 => 31, 32 => 32, 33 => 33, 34 => 34, 35 => 35, 36 => 36, 37 => 37,
1421                                        38 => 38, 40 => 38, 39 => 39, 41 => 41, 42 => 42, 44 => 44, 45 => 45, 46 => 46,
1422                                        47 => 47, 49 => 47, 48 => 48, 50 => 48, 51 => 51, 52 => 52, 53 => 53, 54 => 54,
1423                                        55 => 55, 56 => 56, 57 => 57, 58 => 58, 59 => 59, 60 => 60, 69 => 60, 158 => 60,
1424                                        162 => 60, 166 => 60, 167 => 60, 61 => 61, 159 => 61, 165 => 61, 62 => 62,
1425                                        63 => 63, 64 => 63, 65 => 65, 143 => 65, 68 => 68, 70 => 70, 71 => 71, 72 => 71,
1426                                        73 => 73, 77 => 77, 78 => 78, 79 => 78, 81 => 81, 108 => 81, 82 => 82, 83 => 83,
1427                                        84 => 84, 85 => 85, 86 => 86, 87 => 87, 88 => 88, 91 => 91, 96 => 96, 97 => 97,
1428                                        98 => 98, 99 => 99, 101 => 101, 102 => 102, 103 => 102, 106 => 106, 107 => 107,
1429                                        110 => 110, 112 => 112, 113 => 113, 114 => 114, 115 => 115, 117 => 117,
1430                                        118 => 118, 119 => 119, 120 => 120, 121 => 121, 122 => 122, 124 => 124,
1431                                        180 => 124, 125 => 125, 126 => 126, 127 => 127, 128 => 128, 129 => 129,
1432                                        130 => 130, 138 => 130, 131 => 131, 132 => 132, 133 => 133, 134 => 133,
1433                                        136 => 133, 137 => 133, 135 => 135, 139 => 139, 140 => 140, 141 => 141,
1434                                        184 => 141, 142 => 142, 144 => 144, 145 => 145, 146 => 146, 147 => 147,
1435                                        148 => 148, 149 => 149, 150 => 150, 151 => 151, 152 => 152, 153 => 153,
1436                                        154 => 154, 155 => 155, 156 => 156, 157 => 157, 160 => 160, 161 => 161,
1437                                        163 => 163, 164 => 164, 168 => 168, 169 => 169, 170 => 170, 171 => 171,
1438                                        172 => 172, 173 => 173, 174 => 174, 175 => 175, 176 => 176, 177 => 177,
1439                                        179 => 179, 181 => 181, 182 => 182, 185 => 185, 186 => 186, 187 => 187,
1440                                        188 => 188, 189 => 188, 191 => 188, 190 => 190, 192 => 192, 193 => 193,
1441                                        194 => 194,);
1442
1443     #line 218 "../smarty/lexer/smarty_internal_templateparser.y"
1444     function yy_r0()
1445     {
1446         $this->root_buffer->prepend_array($this, $this->template_prefix);
1447         $this->root_buffer->append_array($this, $this->template_postfix);
1448         $this->_retvalue = $this->root_buffer->to_smarty_php($this);
1449     }
1450
1451     #line 228 "../smarty/lexer/smarty_internal_templateparser.y"
1452     function yy_r1()
1453     {
1454         if ($this->yystack[ $this->yyidx + 0 ]->minor != null) {
1455             $this->current_buffer->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
1456         }
1457     }
1458
1459     #line 235 "../smarty/lexer/smarty_internal_templateparser.y"
1460     function yy_r2()
1461     {
1462         if ($this->yystack[ $this->yyidx + 0 ]->minor != null) {
1463             // because of possible code injection
1464             $this->current_buffer->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
1465         }
1466     }
1467
1468     #line 249 "../smarty/lexer/smarty_internal_templateparser.y"
1469     function yy_r4()
1470     {
1471         if ($this->compiler->has_code) {
1472             $this->_retvalue = $this->mergePrefixCode($this->yystack[ $this->yyidx + 0 ]->minor);
1473         } else {
1474             $this->_retvalue = null;
1475         }
1476         $this->compiler->has_variable_string = false;
1477         $this->block_nesting_level = count($this->compiler->_tag_stack);
1478     }
1479
1480     #line 260 "../smarty/lexer/smarty_internal_templateparser.y"
1481     function yy_r5()
1482     {
1483         $this->_retvalue = new Smarty_Internal_ParseTree_Text($this->yystack[ $this->yyidx + 0 ]->minor);
1484     }
1485
1486     #line 264 "../smarty/lexer/smarty_internal_templateparser.y"
1487     function yy_r6()
1488     {
1489         $code = $this->compiler->compileTag('private_php',
1490                                             array(array('code' => $this->yystack[ $this->yyidx + 0 ]->minor),
1491                                                   array('type' => $this->lex->phpType)), array());
1492         if ($this->compiler->has_code && !empty($code)) {
1493             $tmp = '';
1494             foreach ($this->compiler->prefix_code as $code) {
1495                 $tmp .= $code;
1496             }
1497             $this->compiler->prefix_code = array();
1498             $this->_retvalue =
1499                 new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp . $code, true));
1500         } else {
1501             $this->_retvalue = null;
1502         }
1503     }
1504
1505     #line 275 "../smarty/lexer/smarty_internal_templateparser.y"
1506     function yy_r7()
1507     {
1508         $this->_retvalue = $this->compiler->processText($this->yystack[ $this->yyidx + 0 ]->minor);
1509     }
1510
1511     #line 279 "../smarty/lexer/smarty_internal_templateparser.y"
1512     function yy_r8()
1513     {
1514         $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
1515     }
1516
1517     #line 283 "../smarty/lexer/smarty_internal_templateparser.y"
1518     function yy_r9()
1519     {
1520         $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
1521     }
1522
1523     #line 288 "../smarty/lexer/smarty_internal_templateparser.y"
1524     function yy_r10()
1525     {
1526         $this->strip = true;
1527     }
1528
1529     #line 292 "../smarty/lexer/smarty_internal_templateparser.y"
1530     function yy_r11()
1531     {
1532         $this->strip = false;
1533     }
1534
1535     #line 297 "../smarty/lexer/smarty_internal_templateparser.y"
1536     function yy_r12()
1537     {
1538         $this->_retvalue = '';
1539     }
1540
1541     #line 301 "../smarty/lexer/smarty_internal_templateparser.y"
1542     function yy_r13()
1543     {
1544         $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
1545     }
1546
1547     #line 305 "../smarty/lexer/smarty_internal_templateparser.y"
1548     function yy_r14()
1549     {
1550         $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
1551     }
1552
1553     #line 321 "../smarty/lexer/smarty_internal_templateparser.y"
1554     function yy_r18()
1555     {
1556         $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
1557     }
1558
1559     #line 327 "../smarty/lexer/smarty_internal_templateparser.y"
1560     function yy_r19()
1561     {
1562         $var =
1563             trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
1564                  ' $');
1565         if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
1566             $this->_retvalue = $this->compiler->compileTag('private_print_expression', array('nocache'),
1567                                                            array('value' => $this->compiler->compileVariable('\'' .
1568                                                                                                              $match[ 1 ] .
1569                                                                                                              '\'')));
1570         } else {
1571             $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
1572                                                            array('value' => $this->compiler->compileVariable('\'' .
1573                                                                                                              $var .
1574                                                                                                              '\'')));
1575         }
1576     }
1577
1578     #line 337 "../smarty/lexer/smarty_internal_templateparser.y"
1579     function yy_r20()
1580     {
1581         $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
1582                                                        array('value' => $this->yystack[ $this->yyidx + 0 ]->minor));
1583     }
1584
1585     #line 341 "../smarty/lexer/smarty_internal_templateparser.y"
1586     function yy_r21()
1587     {
1588         $this->_retvalue =
1589             $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
1590                                         array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor));
1591     }
1592
1593     #line 364 "../smarty/lexer/smarty_internal_templateparser.y"
1594     function yy_r26()
1595     {
1596         $this->_retvalue = $this->compiler->compileTag('assign', array(array('value' => $this->yystack[ $this->yyidx +
1597                                                                                                         0 ]->minor),
1598                                                                        array('var' => '\'' .
1599                                                                                       substr($this->yystack[ $this->yyidx +
1600                                                                                                              - 2 ]->minor,
1601                                                                                              1) . '\'')));
1602     }
1603
1604     #line 372 "../smarty/lexer/smarty_internal_templateparser.y"
1605     function yy_r28()
1606     {
1607         $this->_retvalue = $this->compiler->compileTag('assign',
1608                                                        array_merge(array(array('value' => $this->yystack[ $this->yyidx +
1609                                                                                                           - 1 ]->minor),
1610                                                                          array('var' => '\'' .
1611                                                                                         substr($this->yystack[ $this->yyidx +
1612                                                                                                                - 3 ]->minor,
1613                                                                                                1) . '\'')),
1614                                                                    $this->yystack[ $this->yyidx + 0 ]->minor));
1615     }
1616
1617     #line 376 "../smarty/lexer/smarty_internal_templateparser.y"
1618     function yy_r29()
1619     {
1620         $this->_retvalue = $this->compiler->compileTag('assign',
1621                                                        array_merge(array(array('value' => $this->yystack[ $this->yyidx +
1622                                                                                                           - 1 ]->minor),
1623                                                                          array('var' => $this->yystack[ $this->yyidx +
1624                                                                                                         - 3 ]->minor[ 'var' ])),
1625                                                                    $this->yystack[ $this->yyidx + 0 ]->minor),
1626                                                        array('smarty_internal_index' => $this->yystack[ $this->yyidx +
1627                                                                                                         - 3 ]->minor[ 'smarty_internal_index' ]));
1628     }
1629
1630     #line 381 "../smarty/lexer/smarty_internal_templateparser.y"
1631     function yy_r30()
1632     {
1633         $tag =
1634             trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length));
1635         if ($tag == 'strip') {
1636             $this->strip = true;
1637             $this->_retvalue = null;;
1638         } else {
1639             if (defined($tag)) {
1640                 if ($this->security) {
1641                     $this->security->isTrustedConstant($tag, $this->compiler);
1642                 }
1643                 $this->_retvalue =
1644                     $this->compiler->compileTag('private_print_expression', array(), array('value' => $tag));
1645             } else {
1646                 if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
1647                     $this->_retvalue = $this->compiler->compileTag($match[ 1 ], array("'nocache'"));
1648                 } else {
1649                     $this->_retvalue = $this->compiler->compileTag($tag, array());
1650                 }
1651             }
1652         }
1653     }
1654
1655     #line 403 "../smarty/lexer/smarty_internal_templateparser.y"
1656     function yy_r31()
1657     {
1658         if (defined($this->yystack[ $this->yyidx + - 1 ]->minor)) {
1659             if ($this->security) {
1660                 $this->security->isTrustedConstant($this->yystack[ $this->yyidx + - 1 ]->minor, $this->compiler);
1661             }
1662             $this->_retvalue =
1663                 $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
1664                                             array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor));
1665         } else {
1666             $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 1 ]->minor,
1667                                                            $this->yystack[ $this->yyidx + 0 ]->minor);
1668         }
1669     }
1670
1671     #line 413 "../smarty/lexer/smarty_internal_templateparser.y"
1672     function yy_r32()
1673     {
1674         if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
1675             if ($this->security) {
1676                 $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
1677             }
1678             $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
1679                                                            array('value' => $this->yystack[ $this->yyidx + 0 ]->minor));
1680         } else {
1681             $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor, array());
1682         }
1683     }
1684
1685     #line 426 "../smarty/lexer/smarty_internal_templateparser.y"
1686     function yy_r33()
1687     {
1688         if (defined($this->yystack[ $this->yyidx + - 2 ]->minor)) {
1689             if ($this->security) {
1690                 $this->security->isTrustedConstant($this->yystack[ $this->yyidx + - 2 ]->minor, $this->compiler);
1691             }
1692             $this->_retvalue =
1693                 $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
1694                                             array('value' => $this->yystack[ $this->yyidx + - 2 ]->minor,
1695                                                   'modifierlist' => $this->yystack[ $this->yyidx + - 1 ]->minor));
1696         } else {
1697             $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 2 ]->minor,
1698                                                            $this->yystack[ $this->yyidx + 0 ]->minor,
1699                                                            array('modifierlist' => $this->yystack[ $this->yyidx +
1700                                                                                                    - 1 ]->minor));
1701         }
1702     }
1703
1704     #line 438 "../smarty/lexer/smarty_internal_templateparser.y"
1705     function yy_r34()
1706     {
1707         $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 3 ]->minor,
1708                                                        $this->yystack[ $this->yyidx + 0 ]->minor,
1709                                                        array('object_method' => $this->yystack[ $this->yyidx +
1710                                                                                                 - 1 ]->minor));
1711     }
1712
1713     #line 443 "../smarty/lexer/smarty_internal_templateparser.y"
1714     function yy_r35()
1715     {
1716         $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 4 ]->minor,
1717                                                        $this->yystack[ $this->yyidx + 0 ]->minor,
1718                                                        array('modifierlist' => $this->yystack[ $this->yyidx +
1719                                                                                                - 1 ]->minor,
1720                                                              'object_method' => $this->yystack[ $this->yyidx +
1721                                                                                                 - 2 ]->minor));
1722     }
1723
1724     #line 448 "../smarty/lexer/smarty_internal_templateparser.y"
1725     function yy_r36()
1726     {
1727         $this->_retvalue = $this->compiler->compileTag('make_nocache', array(array('var' => '\'' .
1728                                                                                             substr($this->yystack[ $this->yyidx +
1729                                                                                                                    0 ]->minor,
1730                                                                                                    1) . '\'')));
1731     }
1732
1733     #line 453 "../smarty/lexer/smarty_internal_templateparser.y"
1734     function yy_r37()
1735     {
1736         $tag = trim(substr($this->yystack[ $this->yyidx + - 1 ]->minor, $this->lex->ldel_length));
1737         $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(),
1738                                                        array('if condition' => $this->yystack[ $this->yyidx +
1739                                                                                                0 ]->minor));
1740     }
1741
1742     #line 458 "../smarty/lexer/smarty_internal_templateparser.y"
1743     function yy_r38()
1744     {
1745         $tag = trim(substr($this->yystack[ $this->yyidx + - 2 ]->minor, $this->lex->ldel_length));
1746         $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag,
1747                                                        $this->yystack[ $this->yyidx + 0 ]->minor,
1748                                                        array('if condition' => $this->yystack[ $this->yyidx +
1749                                                                                                - 1 ]->minor));
1750     }
1751
1752     #line 463 "../smarty/lexer/smarty_internal_templateparser.y"
1753     function yy_r39()
1754     {
1755         $tag = trim(substr($this->yystack[ $this->yyidx + - 1 ]->minor, $this->lex->ldel_length));
1756         $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(),
1757                                                        array('if condition' => $this->yystack[ $this->yyidx +
1758                                                                                                0 ]->minor));
1759     }
1760
1761     #line 474 "../smarty/lexer/smarty_internal_templateparser.y"
1762     function yy_r41()
1763     {
1764         $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
1765                                                                           array(array('start' => $this->yystack[ $this->yyidx +
1766                                                                                                                  - 6 ]->minor),
1767                                                                                 array('ifexp' => $this->yystack[ $this->yyidx +
1768                                                                                                                  - 4 ]->minor),
1769                                                                                 array('var' => $this->yystack[ $this->yyidx +
1770                                                                                                                - 2 ]->minor),
1771                                                                                 array('step' => $this->yystack[ $this->yyidx +
1772                                                                                                                 - 1 ]->minor))),
1773                                                        1);
1774     }
1775
1776     #line 478 "../smarty/lexer/smarty_internal_templateparser.y"
1777     function yy_r42()
1778     {
1779         $this->_retvalue = '=' . $this->yystack[ $this->yyidx + 0 ]->minor;
1780     }
1781
1782     #line 486 "../smarty/lexer/smarty_internal_templateparser.y"
1783     function yy_r44()
1784     {
1785         $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
1786                                                                           array(array('start' => $this->yystack[ $this->yyidx +
1787                                                                                                                  - 3 ]->minor),
1788                                                                                 array('to' => $this->yystack[ $this->yyidx +
1789                                                                                                               - 1 ]->minor))),
1790                                                        0);
1791     }
1792
1793     #line 490 "../smarty/lexer/smarty_internal_templateparser.y"
1794     function yy_r45()
1795     {
1796         $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
1797                                                                           array(array('start' => $this->yystack[ $this->yyidx +
1798                                                                                                                  - 5 ]->minor),
1799                                                                                 array('to' => $this->yystack[ $this->yyidx +
1800                                                                                                               - 3 ]->minor),
1801                                                                                 array('step' => $this->yystack[ $this->yyidx +
1802                                                                                                                 - 1 ]->minor))),
1803                                                        0);
1804     }
1805
1806     #line 495 "../smarty/lexer/smarty_internal_templateparser.y"
1807     function yy_r46()
1808     {
1809         $this->_retvalue = $this->compiler->compileTag('foreach', $this->yystack[ $this->yyidx + 0 ]->minor);
1810     }
1811
1812     #line 500 "../smarty/lexer/smarty_internal_templateparser.y"
1813     function yy_r47()
1814     {
1815         $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
1816                                                                               array(array('from' => $this->yystack[ $this->yyidx +
1817                                                                                                                     - 3 ]->minor),
1818                                                                                     array('item' => $this->yystack[ $this->yyidx +
1819                                                                                                                     - 1 ]->minor))));
1820     }
1821
1822     #line 504 "../smarty/lexer/smarty_internal_templateparser.y"
1823     function yy_r48()
1824     {
1825         $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
1826                                                                               array(array('from' => $this->yystack[ $this->yyidx +
1827                                                                                                                     - 5 ]->minor),
1828                                                                                     array('item' => $this->yystack[ $this->yyidx +
1829                                                                                                                     - 1 ]->minor),
1830                                                                                     array('key' => $this->yystack[ $this->yyidx +
1831                                                                                                                    - 3 ]->minor))));
1832     }
1833
1834     #line 517 "../smarty/lexer/smarty_internal_templateparser.y"
1835     function yy_r51()
1836     {
1837         $this->_retvalue = $this->compiler->compileTag('setfilter', array(),
1838                                                        array('modifier_list' => array(array_merge(array($this->yystack[ $this->yyidx +
1839                                                                                                                         - 1 ]->minor),
1840                                                                                                   $this->yystack[ $this->yyidx +
1841                                                                                                                   0 ]->minor))));
1842     }
1843
1844     #line 521 "../smarty/lexer/smarty_internal_templateparser.y"
1845     function yy_r52()
1846     {
1847         $this->_retvalue = $this->compiler->compileTag('setfilter', array(),
1848                                                        array('modifier_list' => array_merge(array(array_merge(array($this->yystack[ $this->yyidx +
1849                                                                                                                                     - 2 ]->minor),
1850                                                                                                               $this->yystack[ $this->yyidx +
1851                                                                                                                               - 1 ]->minor)),
1852                                                                                             $this->yystack[ $this->yyidx +
1853                                                                                                             0 ]->minor)));
1854     }
1855
1856     #line 526 "../smarty/lexer/smarty_internal_templateparser.y"
1857     function yy_r53()
1858     {
1859         $j = strrpos($this->yystack[ $this->yyidx + 0 ]->minor, '.');
1860         if ($this->yystack[ $this->yyidx + 0 ]->minor[ $j + 1 ] == 'c') {
1861             // {$smarty.block.child}
1862             $this->_retvalue = $this->compiler->compileTag('block_child', array());;
1863         } else {
1864             // {$smarty.block.parent}
1865             $this->_retvalue = $this->compiler->compileTag('block_parent', array());;
1866         }
1867     }
1868
1869     #line 539 "../smarty/lexer/smarty_internal_templateparser.y"
1870     function yy_r54()
1871     {
1872         $tag =
1873             trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
1874                  ' /');
1875         if ($tag == 'strip') {
1876             $this->strip = false;
1877             $this->_retvalue = null;
1878         } else {
1879             $this->_retvalue = $this->compiler->compileTag($tag . 'close', array());
1880         }
1881     }
1882
1883     #line 548 "../smarty/lexer/smarty_internal_templateparser.y"
1884     function yy_r55()
1885     {
1886         $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor . 'close', array());
1887     }
1888
1889     #line 552 "../smarty/lexer/smarty_internal_templateparser.y"
1890     function yy_r56()
1891     {
1892         $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 1 ]->minor . 'close', array(),
1893                                                        array('modifier_list' => $this->yystack[ $this->yyidx +
1894                                                                                                 0 ]->minor));
1895     }
1896
1897     #line 557 "../smarty/lexer/smarty_internal_templateparser.y"
1898     function yy_r57()
1899     {
1900         $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 2 ]->minor . 'close', array(),
1901                                                        array('object_method' => $this->yystack[ $this->yyidx +
1902                                                                                                 0 ]->minor));
1903     }
1904
1905     #line 561 "../smarty/lexer/smarty_internal_templateparser.y"
1906     function yy_r58()
1907     {
1908         $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 3 ]->minor . 'close', array(),
1909                                                        array('object_method' => $this->yystack[ $this->yyidx +
1910                                                                                                 - 1 ]->minor,
1911                                                              'modifier_list' => $this->yystack[ $this->yyidx +
1912                                                                                                 0 ]->minor));
1913     }
1914
1915     #line 569 "../smarty/lexer/smarty_internal_templateparser.y"
1916     function yy_r59()
1917     {
1918         $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
1919         $this->_retvalue[] = $this->yystack[ $this->yyidx + 0 ]->minor;
1920     }
1921
1922     #line 575 "../smarty/lexer/smarty_internal_templateparser.y"
1923     function yy_r60()
1924     {
1925         $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
1926     }
1927
1928     #line 580 "../smarty/lexer/smarty_internal_templateparser.y"
1929     function yy_r61()
1930     {
1931         $this->_retvalue = array();
1932     }
1933
1934     #line 585 "../smarty/lexer/smarty_internal_templateparser.y"
1935     function yy_r62()
1936     {
1937         if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
1938             if ($this->security) {
1939                 $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
1940             }
1941             $this->_retvalue =
1942                 array($this->yystack[ $this->yyidx + - 2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
1943         } else {
1944             $this->_retvalue =
1945                 array($this->yystack[ $this->yyidx + - 2 ]->minor => '\'' . $this->yystack[ $this->yyidx + 0 ]->minor .
1946                                                                      '\'');
1947         }
1948     }
1949
1950     #line 596 "../smarty/lexer/smarty_internal_templateparser.y"
1951     function yy_r63()
1952     {
1953         $this->_retvalue =
1954             array(trim($this->yystack[ $this->yyidx + - 1 ]->minor, " =\n\r\t") => $this->yystack[ $this->yyidx +
1955                                                                                                    0 ]->minor);
1956     }
1957
1958     #line 604 "../smarty/lexer/smarty_internal_templateparser.y"
1959     function yy_r65()
1960     {
1961         $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
1962     }
1963
1964     #line 616 "../smarty/lexer/smarty_internal_templateparser.y"
1965     function yy_r68()
1966     {
1967         $this->_retvalue =
1968             array($this->yystack[ $this->yyidx + - 2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
1969     }
1970
1971     #line 629 "../smarty/lexer/smarty_internal_templateparser.y"
1972     function yy_r70()
1973     {
1974         $this->yystack[ $this->yyidx + - 2 ]->minor[] = $this->yystack[ $this->yyidx + 0 ]->minor;
1975         $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor;
1976     }
1977
1978     #line 634 "../smarty/lexer/smarty_internal_templateparser.y"
1979     function yy_r71()
1980     {
1981         $this->_retvalue = array('var' => '\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '\'',
1982                                  'value' => $this->yystack[ $this->yyidx + 0 ]->minor);
1983     }
1984
1985     #line 641 "../smarty/lexer/smarty_internal_templateparser.y"
1986     function yy_r73()
1987     {
1988         $this->_retvalue = array('var' => $this->yystack[ $this->yyidx + - 2 ]->minor,
1989                                  'value' => $this->yystack[ $this->yyidx + 0 ]->minor);
1990     }
1991
1992     #line 665 "../smarty/lexer/smarty_internal_templateparser.y"
1993     function yy_r77()
1994     {
1995         $this->_retvalue =
1996             '$_smarty_tpl->getStreamVariable(\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '://' .
1997             $this->yystack[ $this->yyidx + 0 ]->minor . '\')';
1998     }
1999
2000     #line 670 "../smarty/lexer/smarty_internal_templateparser.y"
2001     function yy_r78()
2002     {
2003         $this->_retvalue =
2004             $this->yystack[ $this->yyidx + - 2 ]->minor . trim($this->yystack[ $this->yyidx + - 1 ]->minor) .
2005             $this->yystack[ $this->yyidx + 0 ]->minor;
2006     }
2007
2008     #line 684 "../smarty/lexer/smarty_internal_templateparser.y"
2009     function yy_r81()
2010     {
2011         $this->_retvalue = $this->compiler->compileTag('private_modifier', array(),
2012                                                        array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor,
2013                                                              'modifierlist' => $this->yystack[ $this->yyidx +
2014                                                                                                0 ]->minor));
2015     }
2016
2017     #line 690 "../smarty/lexer/smarty_internal_templateparser.y"
2018     function yy_r82()
2019     {
2020         $this->_retvalue =
2021             $this->yystack[ $this->yyidx + - 1 ]->minor[ 'pre' ] . $this->yystack[ $this->yyidx + - 2 ]->minor .
2022             $this->yystack[ $this->yyidx + - 1 ]->minor[ 'op' ] . $this->yystack[ $this->yyidx + 0 ]->minor . ')';
2023     }
2024
2025     #line 694 "../smarty/lexer/smarty_internal_templateparser.y"
2026     function yy_r83()
2027     {
2028         $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor .
2029                            $this->yystack[ $this->yyidx + 0 ]->minor;
2030     }
2031
2032     #line 698 "../smarty/lexer/smarty_internal_templateparser.y"
2033     function yy_r84()
2034     {
2035         $this->_retvalue =
2036             $this->yystack[ $this->yyidx + 0 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
2037     }
2038
2039     #line 702 "../smarty/lexer/smarty_internal_templateparser.y"
2040     function yy_r85()
2041     {
2042         $this->_retvalue = 'in_array(' . $this->yystack[ $this->yyidx + - 2 ]->minor . ',' .
2043                            $this->yystack[ $this->yyidx + 0 ]->minor . ')';
2044     }
2045
2046     #line 706 "../smarty/lexer/smarty_internal_templateparser.y"
2047     function yy_r86()
2048     {
2049         $this->_retvalue = 'in_array(' . $this->yystack[ $this->yyidx + - 2 ]->minor . ',(array)' .
2050                            $this->yystack[ $this->yyidx + 0 ]->minor . ')';
2051     }
2052
2053     #line 714 "../smarty/lexer/smarty_internal_templateparser.y"
2054     function yy_r87()
2055     {
2056         $this->_retvalue = $this->yystack[ $this->yyidx + - 5 ]->minor . ' ? ' . $this->compiler->compileVariable('\'' .
2057                                                                                                                   substr($this->yystack[ $this->yyidx +
2058                                                                                                                                          - 2 ]->minor,
2059                                                                                                                          1) .
2060                                                                                                                   '\'') .
2061                            ' : ' . $this->yystack[ $this->yyidx + 0 ]->minor;
2062     }
2063
2064     #line 718 "../smarty/lexer/smarty_internal_templateparser.y"
2065     function yy_r88()
2066     {
2067         $this->_retvalue =
2068             $this->yystack[ $this->yyidx + - 5 ]->minor . ' ? ' . $this->yystack[ $this->yyidx + - 2 ]->minor . ' : ' .
2069             $this->yystack[ $this->yyidx + 0 ]->minor;
2070     }
2071
2072     #line 733 "../smarty/lexer/smarty_internal_templateparser.y"
2073     function yy_r91()
2074     {
2075         $this->_retvalue = '!' . $this->yystack[ $this->yyidx + 0 ]->minor;
2076     }
2077
2078     #line 754 "../smarty/lexer/smarty_internal_templateparser.y"
2079     function yy_r96()
2080     {
2081         $this->_retvalue =
2082             $this->yystack[ $this->yyidx + - 2 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
2083     }
2084
2085     #line 758 "../smarty/lexer/smarty_internal_templateparser.y"
2086     function yy_r97()
2087     {
2088         $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . '.';
2089     }
2090
2091     #line 762 "../smarty/lexer/smarty_internal_templateparser.y"
2092     function yy_r98()
2093     {
2094         $this->_retvalue = '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
2095     }
2096
2097     #line 767 "../smarty/lexer/smarty_internal_templateparser.y"
2098     function yy_r99()
2099     {
2100         if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
2101             if ($this->security) {
2102                 $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
2103             }
2104             $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
2105         } else {
2106             $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
2107         }
2108     }
2109
2110     #line 784 "../smarty/lexer/smarty_internal_templateparser.y"
2111     function yy_r101()
2112     {
2113         $this->_retvalue = "(" . $this->yystack[ $this->yyidx + - 1 ]->minor . ")";
2114     }
2115
2116     #line 788 "../smarty/lexer/smarty_internal_templateparser.y"
2117     function yy_r102()
2118     {
2119         $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor .
2120                            $this->yystack[ $this->yyidx + 0 ]->minor;
2121     }
2122
2123     #line 806 "../smarty/lexer/smarty_internal_templateparser.y"
2124     function yy_r106()
2125     {
2126         $prefixVar = $this->compiler->getNewPrefixVariable();
2127         if ($this->yystack[ $this->yyidx + - 2 ]->minor[ 'var' ] == '\'smarty\'') {
2128             $this->compiler->appendPrefixCode("<?php $prefixVar" . ' = ' .
2129                                               $this->compiler->compileTag('private_special_variable', array(),
2130                                                                           $this->yystack[ $this->yyidx +
2131                                                                                           - 2 ]->minor[ 'smarty_internal_index' ]) .
2132                                               ';?>');
2133         } else {
2134             $this->compiler->appendPrefixCode("<?php $prefixVar" . ' = ' .
2135                                               $this->compiler->compileVariable($this->yystack[ $this->yyidx +
2136                                                                                                - 2 ]->minor[ 'var' ]) .
2137                                               $this->yystack[ $this->yyidx + - 2 ]->minor[ 'smarty_internal_index' ] .
2138                                               ';?>');
2139         }
2140         $this->_retvalue = $prefixVar . '::' . $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
2141                            $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
2142     }
2143
2144     #line 817 "../smarty/lexer/smarty_internal_templateparser.y"
2145     function yy_r107()
2146     {
2147         $prefixVar = $this->compiler->getNewPrefixVariable();
2148         $tmp = $this->compiler->appendCode('<?php ob_start();?>', $this->yystack[ $this->yyidx + 0 ]->minor);
2149         $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php $prefixVar" . '=ob_get_clean();?>'));
2150         $this->_retvalue = $prefixVar;
2151     }
2152
2153     #line 834 "../smarty/lexer/smarty_internal_templateparser.y"
2154     function yy_r110()
2155     {
2156         if (!in_array(strtolower($this->yystack[ $this->yyidx + - 2 ]->minor), array('self', 'parent')) &&
2157             (!$this->security ||
2158              $this->security->isTrustedStaticClassAccess($this->yystack[ $this->yyidx + - 2 ]->minor,
2159                                                          $this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler))
2160         ) {
2161             if (isset($this->smarty->registered_classes[ $this->yystack[ $this->yyidx + - 2 ]->minor ])) {
2162                 $this->_retvalue =
2163                     $this->smarty->registered_classes[ $this->yystack[ $this->yyidx + - 2 ]->minor ] . '::' .
2164                     $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] . $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
2165             } else {
2166                 $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . '::' .
2167                                    $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
2168                                    $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
2169             }
2170         } else {
2171             $this->compiler->trigger_template_error("static class '" . $this->yystack[ $this->yyidx + - 2 ]->minor .
2172                                                     "' is undefined or not allowed by security setting");
2173         }
2174     }
2175
2176     #line 853 "../smarty/lexer/smarty_internal_templateparser.y"
2177     function yy_r112()
2178     {
2179         $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
2180     }
2181
2182     #line 864 "../smarty/lexer/smarty_internal_templateparser.y"
2183     function yy_r113()
2184     {
2185         $this->_retvalue =
2186             $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'');
2187     }
2188
2189     #line 867 "../smarty/lexer/smarty_internal_templateparser.y"
2190     function yy_r114()
2191     {
2192         if ($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ] == '\'smarty\'') {
2193             $smarty_var = $this->compiler->compileTag('private_special_variable', array(),
2194                                                       $this->yystack[ $this->yyidx +
2195                                                                       0 ]->minor[ 'smarty_internal_index' ]);
2196             $this->_retvalue = $smarty_var;
2197         } else {
2198             // used for array reset,next,prev,end,current
2199             $this->last_variable = $this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ];
2200             $this->last_index = $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
2201             $this->_retvalue = $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ]) .
2202                                $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
2203         }
2204     }
2205
2206     #line 880 "../smarty/lexer/smarty_internal_templateparser.y"
2207     function yy_r115()
2208     {
2209         $this->_retvalue = '$_smarty_tpl->tpl_vars[' . $this->yystack[ $this->yyidx + - 2 ]->minor . ']->' .
2210                            $this->yystack[ $this->yyidx + 0 ]->minor;
2211     }
2212
2213     #line 890 "../smarty/lexer/smarty_internal_templateparser.y"
2214     function yy_r117()
2215     {
2216         $this->_retvalue =
2217             $this->compiler->compileConfigVariable("'" . $this->yystack[ $this->yyidx + - 1 ]->minor . "'");
2218     }
2219
2220     #line 894 "../smarty/lexer/smarty_internal_templateparser.y"
2221     function yy_r118()
2222     {
2223         $this->_retvalue = '(is_array($tmp = ' .
2224                            $this->compiler->compileConfigVariable("'" . $this->yystack[ $this->yyidx + - 2 ]->minor .
2225                                                                   "'") . ') ? $tmp' .
2226                            $this->yystack[ $this->yyidx + 0 ]->minor . ' :null)';
2227     }
2228
2229     #line 898 "../smarty/lexer/smarty_internal_templateparser.y"
2230     function yy_r119()
2231     {
2232         $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + - 1 ]->minor);
2233     }
2234
2235     #line 902 "../smarty/lexer/smarty_internal_templateparser.y"
2236     function yy_r120()
2237     {
2238         $this->_retvalue =
2239             '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + - 2 ]->minor) .
2240             ') ? $tmp' . $this->yystack[ $this->yyidx + 0 ]->minor . ' : null)';
2241     }
2242
2243     #line 906 "../smarty/lexer/smarty_internal_templateparser.y"
2244     function yy_r121()
2245     {
2246         $this->_retvalue = array('var' => '\'' . substr($this->yystack[ $this->yyidx + - 1 ]->minor, 1) . '\'',
2247                                  'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor);
2248     }
2249
2250     #line 909 "../smarty/lexer/smarty_internal_templateparser.y"
2251     function yy_r122()
2252     {
2253         $this->_retvalue = array('var' => $this->yystack[ $this->yyidx + - 1 ]->minor,
2254                                  'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor);
2255     }
2256
2257     #line 922 "../smarty/lexer/smarty_internal_templateparser.y"
2258     function yy_r124()
2259     {
2260         return;
2261     }
2262
2263     #line 928 "../smarty/lexer/smarty_internal_templateparser.y"
2264     function yy_r125()
2265     {
2266         $this->_retvalue =
2267             '[' . $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'') .
2268             ']';
2269     }
2270
2271     #line 931 "../smarty/lexer/smarty_internal_templateparser.y"
2272     function yy_r126()
2273     {
2274         $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor) . ']';
2275     }
2276
2277     #line 935 "../smarty/lexer/smarty_internal_templateparser.y"
2278     function yy_r127()
2279     {
2280         $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 2 ]->minor) . '->' .
2281                            $this->yystack[ $this->yyidx + 0 ]->minor . ']';
2282     }
2283
2284     #line 939 "../smarty/lexer/smarty_internal_templateparser.y"
2285     function yy_r128()
2286     {
2287         $this->_retvalue = "['" . $this->yystack[ $this->yyidx + 0 ]->minor . "']";
2288     }
2289
2290     #line 943 "../smarty/lexer/smarty_internal_templateparser.y"
2291     function yy_r129()
2292     {
2293         $this->_retvalue = '[' . $this->yystack[ $this->yyidx + 0 ]->minor . ']';
2294     }
2295
2296     #line 948 "../smarty/lexer/smarty_internal_templateparser.y"
2297     function yy_r130()
2298     {
2299         $this->_retvalue = '[' . $this->yystack[ $this->yyidx + - 1 ]->minor . ']';
2300     }
2301
2302     #line 953 "../smarty/lexer/smarty_internal_templateparser.y"
2303     function yy_r131()
2304     {
2305         $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
2306                                                                                                   $this->yystack[ $this->yyidx +
2307                                                                                                                   - 1 ]->minor .
2308                                                                                                   '\'][\'index\']') .
2309                            ']';
2310     }
2311
2312     #line 957 "../smarty/lexer/smarty_internal_templateparser.y"
2313     function yy_r132()
2314     {
2315         $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
2316                                                                                                   $this->yystack[ $this->yyidx +
2317                                                                                                                   - 3 ]->minor .
2318                                                                                                   '\'][\'' .
2319                                                                                                   $this->yystack[ $this->yyidx +
2320                                                                                                                   - 1 ]->minor .
2321                                                                                                   '\']') . ']';
2322     }
2323
2324     #line 960 "../smarty/lexer/smarty_internal_templateparser.y"
2325     function yy_r133()
2326     {
2327         $this->_retvalue = '[' . $this->yystack[ $this->yyidx + - 1 ]->minor . ']';
2328     }
2329
2330     #line 966 "../smarty/lexer/smarty_internal_templateparser.y"
2331     function yy_r135()
2332     {
2333         $this->_retvalue = '[' . $this->compiler->compileVariable('\'' .
2334                                                                   substr($this->yystack[ $this->yyidx + - 1 ]->minor,
2335                                                                          1) . '\'') . ']';;
2336     }
2337
2338     #line 982 "../smarty/lexer/smarty_internal_templateparser.y"
2339     function yy_r139()
2340     {
2341         $this->_retvalue = '[]';
2342     }
2343
2344     #line 992 "../smarty/lexer/smarty_internal_templateparser.y"
2345     function yy_r140()
2346     {
2347         $this->_retvalue = '\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'';
2348     }
2349
2350     #line 996 "../smarty/lexer/smarty_internal_templateparser.y"
2351     function yy_r141()
2352     {
2353         $this->_retvalue = "''";
2354     }
2355
2356     #line 1001 "../smarty/lexer/smarty_internal_templateparser.y"
2357     function yy_r142()
2358     {
2359         $this->_retvalue =
2360             $this->yystack[ $this->yyidx + - 1 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
2361     }
2362
2363     #line 1009 "../smarty/lexer/smarty_internal_templateparser.y"
2364     function yy_r144()
2365     {
2366         $var =
2367             trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
2368                  ' $');
2369         $this->_retvalue = $this->compiler->compileVariable('\'' . $var . '\'');
2370     }
2371
2372     #line 1015 "../smarty/lexer/smarty_internal_templateparser.y"
2373     function yy_r145()
2374     {
2375         $this->_retvalue = '(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
2376     }
2377
2378     #line 1022 "../smarty/lexer/smarty_internal_templateparser.y"
2379     function yy_r146()
2380     {
2381         if ($this->yystack[ $this->yyidx + - 1 ]->minor[ 'var' ] == '\'smarty\'') {
2382             $this->_retvalue = $this->compiler->compileTag('private_special_variable', array(),
2383                                                            $this->yystack[ $this->yyidx +
2384                                                                            - 1 ]->minor[ 'smarty_internal_index' ]) .
2385                                $this->yystack[ $this->yyidx + 0 ]->minor;
2386         } else {
2387             $this->_retvalue = $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 1 ]->minor[ 'var' ]) .
2388                                $this->yystack[ $this->yyidx + - 1 ]->minor[ 'smarty_internal_index' ] .
2389                                $this->yystack[ $this->yyidx + 0 ]->minor;
2390         }
2391     }
2392
2393     #line 1031 "../smarty/lexer/smarty_internal_templateparser.y"
2394     function yy_r147()
2395     {
2396         $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
2397     }
2398
2399     #line 1036 "../smarty/lexer/smarty_internal_templateparser.y"
2400     function yy_r148()
2401     {
2402         $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
2403     }
2404
2405     #line 1041 "../smarty/lexer/smarty_internal_templateparser.y"
2406     function yy_r149()
2407     {
2408         if ($this->security && substr($this->yystack[ $this->yyidx + - 1 ]->minor, 0, 1) == '_') {
2409             $this->compiler->trigger_template_error(self::Err1);
2410         }
2411         $this->_retvalue =
2412             '->' . $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
2413     }
2414
2415     #line 1048 "../smarty/lexer/smarty_internal_templateparser.y"
2416     function yy_r150()
2417     {
2418         if ($this->security) {
2419             $this->compiler->trigger_template_error(self::Err2);
2420         }
2421         $this->_retvalue = '->{' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 1 ]->minor) .
2422                            $this->yystack[ $this->yyidx + 0 ]->minor . '}';
2423     }
2424
2425     #line 1055 "../smarty/lexer/smarty_internal_templateparser.y"
2426     function yy_r151()
2427     {
2428         if ($this->security) {
2429             $this->compiler->trigger_template_error(self::Err2);
2430         }
2431         $this->_retvalue =
2432             '->{' . $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor . '}';
2433     }
2434
2435     #line 1062 "../smarty/lexer/smarty_internal_templateparser.y"
2436     function yy_r152()
2437     {
2438         if ($this->security) {
2439             $this->compiler->trigger_template_error(self::Err2);
2440         }
2441         $this->_retvalue = '->{\'' . $this->yystack[ $this->yyidx + - 4 ]->minor . '\'.' .
2442                            $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor .
2443                            '}';
2444     }
2445
2446     #line 1070 "../smarty/lexer/smarty_internal_templateparser.y"
2447     function yy_r153()
2448     {
2449         $this->_retvalue = '->' . $this->yystack[ $this->yyidx + 0 ]->minor;
2450     }
2451
2452     #line 1078 "../smarty/lexer/smarty_internal_templateparser.y"
2453     function yy_r154()
2454     {
2455         $this->_retvalue = $this->compiler->compilePHPFunctionCall($this->yystack[ $this->yyidx + - 3 ]->minor,
2456                                                                    $this->yystack[ $this->yyidx + - 1 ]->minor);
2457     }
2458
2459     #line 1086 "../smarty/lexer/smarty_internal_templateparser.y"
2460     function yy_r155()
2461     {
2462         if ($this->security && substr($this->yystack[ $this->yyidx + - 3 ]->minor, 0, 1) == '_') {
2463             $this->compiler->trigger_template_error(self::Err1);
2464         }
2465         $this->_retvalue = $this->yystack[ $this->yyidx + - 3 ]->minor . "(" .
2466                            implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ")";
2467     }
2468
2469     #line 1093 "../smarty/lexer/smarty_internal_templateparser.y"
2470     function yy_r156()
2471     {
2472         if ($this->security) {
2473             $this->compiler->trigger_template_error(self::Err2);
2474         }
2475         $prefixVar = $this->compiler->getNewPrefixVariable();
2476         $this->compiler->appendPrefixCode("<?php $prefixVar" . '=' . $this->compiler->compileVariable('\'' .
2477                                                                                                       substr($this->yystack[ $this->yyidx +
2478                                                                                                                              - 3 ]->minor,
2479                                                                                                              1) .
2480                                                                                                       '\'') . ';?>');
2481         $this->_retvalue = $prefixVar . '(' . implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ')';
2482     }
2483
2484     #line 1104 "../smarty/lexer/smarty_internal_templateparser.y"
2485     function yy_r157()
2486     {
2487         $this->_retvalue =
2488             array_merge($this->yystack[ $this->yyidx + - 2 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor));
2489     }
2490
2491     #line 1121 "../smarty/lexer/smarty_internal_templateparser.y"
2492     function yy_r160()
2493     {
2494         $this->_retvalue = array_merge($this->yystack[ $this->yyidx + - 2 ]->minor,
2495                                        array(array_merge($this->yystack[ $this->yyidx + - 1 ]->minor,
2496                                                          $this->yystack[ $this->yyidx + 0 ]->minor)));
2497     }
2498
2499     #line 1125 "../smarty/lexer/smarty_internal_templateparser.y"
2500     function yy_r161()
2501     {
2502         $this->_retvalue =
2503             array(array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor));
2504     }
2505
2506     #line 1133 "../smarty/lexer/smarty_internal_templateparser.y"
2507     function yy_r163()
2508     {
2509         $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
2510     }
2511
2512     #line 1141 "../smarty/lexer/smarty_internal_templateparser.y"
2513     function yy_r164()
2514     {
2515         $this->_retvalue =
2516             array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
2517     }
2518
2519     #line 1160 "../smarty/lexer/smarty_internal_templateparser.y"
2520     function yy_r168()
2521     {
2522         $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '', 'method');
2523     }
2524
2525     #line 1165 "../smarty/lexer/smarty_internal_templateparser.y"
2526     function yy_r169()
2527     {
2528         $this->_retvalue =
2529             array($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'method');
2530     }
2531
2532     #line 1170 "../smarty/lexer/smarty_internal_templateparser.y"
2533     function yy_r170()
2534     {
2535         $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '');
2536     }
2537
2538     #line 1175 "../smarty/lexer/smarty_internal_templateparser.y"
2539     function yy_r171()
2540     {
2541         $this->_retvalue =
2542             array($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'property');
2543     }
2544
2545     #line 1180 "../smarty/lexer/smarty_internal_templateparser.y"
2546     function yy_r172()
2547     {
2548         $this->_retvalue = array($this->yystack[ $this->yyidx + - 2 ]->minor,
2549                                  $this->yystack[ $this->yyidx + - 1 ]->minor .
2550                                  $this->yystack[ $this->yyidx + 0 ]->minor, 'property');
2551     }
2552
2553     #line 1186 "../smarty/lexer/smarty_internal_templateparser.y"
2554     function yy_r173()
2555     {
2556         $this->_retvalue = ' ' . trim($this->yystack[ $this->yyidx + 0 ]->minor) . ' ';
2557     }
2558
2559     #line 1190 "../smarty/lexer/smarty_internal_templateparser.y"
2560     function yy_r174()
2561     {
2562         static $lops =
2563             array('eq' => ' == ', 'ne' => ' != ', 'neq' => ' != ', 'gt' => ' > ', 'ge' => ' >= ', 'gte' => ' >= ',
2564                   'lt' => ' < ', 'le' => ' <= ', 'lte' => ' <= ', 'mod' => ' % ', 'and' => ' && ', 'or' => ' || ',
2565                   'xor' => ' xor ',);
2566         $op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor));
2567         $this->_retvalue = $lops[ $op ];
2568     }
2569
2570     #line 1209 "../smarty/lexer/smarty_internal_templateparser.y"
2571     function yy_r175()
2572     {
2573         static $tlops =
2574             array('isdivby' => array('op' => ' % ', 'pre' => '!('), 'isnotdivby' => array('op' => ' % ', 'pre' => '('),
2575                   'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
2576                   'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
2577                   'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
2578                   'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),);
2579         $op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor));
2580         $this->_retvalue = $tlops[ $op ];
2581     }
2582
2583     #line 1222 "../smarty/lexer/smarty_internal_templateparser.y"
2584     function yy_r176()
2585     {
2586         static $scond =
2587             array('iseven' => '!(1 & ', 'isnoteven' => '(1 & ', 'isodd' => '(1 & ', 'isnotodd' => '!(1 & ',);
2588         $op = strtolower(str_replace(' ', '', $this->yystack[ $this->yyidx + 0 ]->minor));
2589         $this->_retvalue = $scond[ $op ];
2590     }
2591
2592     #line 1236 "../smarty/lexer/smarty_internal_templateparser.y"
2593     function yy_r177()
2594     {
2595         $this->_retvalue = 'array(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
2596     }
2597
2598     #line 1244 "../smarty/lexer/smarty_internal_templateparser.y"
2599     function yy_r179()
2600     {
2601         $this->_retvalue =
2602             $this->yystack[ $this->yyidx + - 2 ]->minor . ',' . $this->yystack[ $this->yyidx + 0 ]->minor;
2603     }
2604
2605     #line 1252 "../smarty/lexer/smarty_internal_templateparser.y"
2606     function yy_r181()
2607     {
2608         $this->_retvalue =
2609             $this->yystack[ $this->yyidx + - 2 ]->minor . '=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
2610     }
2611
2612     #line 1256 "../smarty/lexer/smarty_internal_templateparser.y"
2613     function yy_r182()
2614     {
2615         $this->_retvalue =
2616             '\'' . $this->yystack[ $this->yyidx + - 2 ]->minor . '\'=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
2617     }
2618
2619     #line 1272 "../smarty/lexer/smarty_internal_templateparser.y"
2620     function yy_r185()
2621     {
2622         $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor->to_smarty_php($this);
2623     }
2624
2625     #line 1277 "../smarty/lexer/smarty_internal_templateparser.y"
2626     function yy_r186()
2627     {
2628         $this->yystack[ $this->yyidx + - 1 ]->minor->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
2629         $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
2630     }
2631
2632     #line 1282 "../smarty/lexer/smarty_internal_templateparser.y"
2633     function yy_r187()
2634     {
2635         $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[ $this->yyidx + 0 ]->minor);
2636     }
2637
2638     #line 1286 "../smarty/lexer/smarty_internal_templateparser.y"
2639     function yy_r188()
2640     {
2641         $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)' . $this->yystack[ $this->yyidx + - 1 ]->minor);
2642     }
2643
2644     #line 1294 "../smarty/lexer/smarty_internal_templateparser.y"
2645     function yy_r190()
2646     {
2647         $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\'' .
2648                                                               substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) .
2649                                                               '\']->value');
2650     }
2651
2652     #line 1302 "../smarty/lexer/smarty_internal_templateparser.y"
2653     function yy_r192()
2654     {
2655         $this->_retvalue =
2656             new Smarty_Internal_ParseTree_Code('(string)(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')');
2657     }
2658
2659     #line 1306 "../smarty/lexer/smarty_internal_templateparser.y"
2660     function yy_r193()
2661     {
2662         $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[ $this->yyidx + 0 ]->minor);
2663     }
2664
2665     #line 1310 "../smarty/lexer/smarty_internal_templateparser.y"
2666     function yy_r194()
2667     {
2668         $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this->yystack[ $this->yyidx + 0 ]->minor);
2669     }
2670
2671     private $_retvalue;
2672
2673     public function yy_reduce($yyruleno)
2674     {
2675         if ($this->yyTraceFILE && $yyruleno >= 0 && $yyruleno < count(self::$yyRuleName)) {
2676             fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", $this->yyTracePrompt, $yyruleno,
2677                     self::$yyRuleName[ $yyruleno ]);
2678         }
2679
2680         $this->_retvalue = $yy_lefthand_side = null;
2681         if (isset(self::$yyReduceMap[ $yyruleno ])) {
2682             // call the action
2683             $this->_retvalue = null;
2684             $this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}();
2685             $yy_lefthand_side = $this->_retvalue;
2686         }
2687         $yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ];
2688         $yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ];
2689         $this->yyidx -= $yysize;
2690         for ($i = $yysize; $i; $i --) {
2691             // pop all of the right-hand side parameters
2692             array_pop($this->yystack);
2693         }
2694         $yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto);
2695         if ($yyact < self::YYNSTATE) {
2696             if (!$this->yyTraceFILE && $yysize) {
2697                 $this->yyidx ++;
2698                 $x = new TP_yyStackEntry;
2699                 $x->stateno = $yyact;
2700                 $x->major = $yygoto;
2701                 $x->minor = $yy_lefthand_side;
2702                 $this->yystack[ $this->yyidx ] = $x;
2703             } else {
2704                 $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
2705             }
2706         } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
2707             $this->yy_accept();
2708         }
2709     }
2710
2711     public function yy_parse_failed()
2712     {
2713         if ($this->yyTraceFILE) {
2714             fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
2715         }
2716         while ($this->yyidx >= 0) {
2717             $this->yy_pop_parser_stack();
2718         }
2719     }
2720
2721     public function yy_syntax_error($yymajor, $TOKEN)
2722     {
2723         #line 200 "../smarty/lexer/smarty_internal_templateparser.y"
2724
2725         $this->internalError = true;
2726         $this->yymajor = $yymajor;
2727         $this->compiler->trigger_template_error();
2728     }
2729
2730     public function yy_accept()
2731     {
2732         if ($this->yyTraceFILE) {
2733             fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
2734         }
2735         while ($this->yyidx >= 0) {
2736             $this->yy_pop_parser_stack();
2737         }
2738         #line 193 "../smarty/lexer/smarty_internal_templateparser.y"
2739
2740         $this->successful = !$this->internalError;
2741         $this->internalError = false;
2742         $this->retvalue = $this->_retvalue;
2743     }
2744
2745     public function doParse($yymajor, $yytokenvalue)
2746     {
2747         $yyerrorhit = 0;   /* True if yymajor has invoked an error */
2748
2749         if ($this->yyidx === null || $this->yyidx < 0) {
2750             $this->yyidx = 0;
2751             $this->yyerrcnt = - 1;
2752             $x = new TP_yyStackEntry;
2753             $x->stateno = 0;
2754             $x->major = 0;
2755             $this->yystack = array();
2756             $this->yystack[] = $x;
2757         }
2758         $yyendofinput = ($yymajor == 0);
2759
2760         if ($this->yyTraceFILE) {
2761             fprintf($this->yyTraceFILE, "%sInput %s\n", $this->yyTracePrompt, $this->yyTokenName[ $yymajor ]);
2762         }
2763
2764         do {
2765             $yyact = $this->yy_find_shift_action($yymajor);
2766             if ($yymajor < self::YYERRORSYMBOL && !$this->yy_is_expected_token($yymajor)) {
2767                 // force a syntax error
2768                 $yyact = self::YY_ERROR_ACTION;
2769             }
2770             if ($yyact < self::YYNSTATE) {
2771                 $this->yy_shift($yyact, $yymajor, $yytokenvalue);
2772                 $this->yyerrcnt --;
2773                 if ($yyendofinput && $this->yyidx >= 0) {
2774                     $yymajor = 0;
2775                 } else {
2776                     $yymajor = self::YYNOCODE;
2777                 }
2778             } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
2779                 $this->yy_reduce($yyact - self::YYNSTATE);
2780             } elseif ($yyact == self::YY_ERROR_ACTION) {
2781                 if ($this->yyTraceFILE) {
2782                     fprintf($this->yyTraceFILE, "%sSyntax Error!\n", $this->yyTracePrompt);
2783                 }
2784                 if (self::YYERRORSYMBOL) {
2785                     if ($this->yyerrcnt < 0) {
2786                         $this->yy_syntax_error($yymajor, $yytokenvalue);
2787                     }
2788                     $yymx = $this->yystack[ $this->yyidx ]->major;
2789                     if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) {
2790                         if ($this->yyTraceFILE) {
2791                             fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", $this->yyTracePrompt,
2792                                     $this->yyTokenName[ $yymajor ]);
2793                         }
2794                         $this->yy_destructor($yymajor, $yytokenvalue);
2795                         $yymajor = self::YYNOCODE;
2796                     } else {
2797                         while ($this->yyidx >= 0 && $yymx != self::YYERRORSYMBOL &&
2798                                ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE) {
2799                             $this->yy_pop_parser_stack();
2800                         }
2801                         if ($this->yyidx < 0 || $yymajor == 0) {
2802                             $this->yy_destructor($yymajor, $yytokenvalue);
2803                             $this->yy_parse_failed();
2804                             $yymajor = self::YYNOCODE;
2805                         } elseif ($yymx != self::YYERRORSYMBOL) {
2806                             $u2 = 0;
2807                             $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
2808                         }
2809                     }
2810                     $this->yyerrcnt = 3;
2811                     $yyerrorhit = 1;
2812                 } else {
2813                     if ($this->yyerrcnt <= 0) {
2814                         $this->yy_syntax_error($yymajor, $yytokenvalue);
2815                     }
2816                     $this->yyerrcnt = 3;
2817                     $this->yy_destructor($yymajor, $yytokenvalue);
2818                     if ($yyendofinput) {
2819                         $this->yy_parse_failed();
2820                     }
2821                     $yymajor = self::YYNOCODE;
2822                 }
2823             } else {
2824                 $this->yy_accept();
2825                 $yymajor = self::YYNOCODE;
2826             }
2827         }
2828         while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
2829     }
2830 }
2831