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