3 class TP_yyToken implements ArrayAccess
7 public $metadata = array();
9 public function __construct($s, $m = array())
11 if ($s instanceof TP_yyToken) {
12 $this->string = $s->string;
13 $this->metadata = $s->metadata;
15 $this->string = (string) $s;
16 if ($m instanceof TP_yyToken) {
17 $this->metadata = $m->metadata;
18 } elseif (is_array($m)) {
24 public function __toString()
29 public function offsetExists($offset)
31 return isset($this->metadata[ $offset ]);
34 public function offsetGet($offset)
36 return $this->metadata[ $offset ];
39 public function offsetSet($offset, $value)
41 if ($offset === null) {
42 if (isset($value[ 0 ])) {
43 $x = ($value instanceof TP_yyToken) ? $value->metadata : $value;
44 $this->metadata = array_merge($this->metadata, $x);
48 $offset = count($this->metadata);
50 if ($value === null) {
53 if ($value instanceof TP_yyToken) {
54 if ($value->metadata) {
55 $this->metadata[ $offset ] = $value->metadata;
58 $this->metadata[ $offset ] = $value;
62 public function offsetUnset($offset)
64 unset($this->metadata[ $offset ]);
70 public $stateno; /* The state-number */
71 public $major; /* The major token value. This is the code
72 ** number for the token at this stack level */
73 public $minor; /* The user-supplied minor token value. This
74 ** is the value of the token */
79 #line 11 "../smarty/lexer/smarty_internal_templateparser.y"
82 * Smarty Template Parser Class
84 * This is the template parser.
85 * It is generated from the smarty_internal_templateparser.y file
87 * @author Uwe Tews <uwe.tews@googlemail.com>
89 class Smarty_Internal_Templateparser
91 #line 23 "../smarty/lexer/smarty_internal_templateparser.y"
93 const Err1 = "Security error: Call to private object member not allowed";
95 const Err2 = "Security error: Call to dynamic object member not allowed";
97 const Err3 = "PHP in template not allowed. Use SmartyBC to enable it";
104 public $successful = true;
111 public $retvalue = 0;
119 * last index of array variable
130 public $last_variable;
133 * root parse tree buffer
135 * @var Smarty_Internal_ParseTree
140 * current parse tree object
142 * @var Smarty_Internal_ParseTree
144 public $current_buffer;
149 * @var Smarty_Internal_Templatelexer
154 * internal error flag
158 private $internalError = false;
165 public $strip = false;
170 * @var Smarty_Internal_TemplateCompilerBase
172 public $compiler = null;
179 public $smarty = null;
184 * @var Smarty_Internal_Template
186 public $template = null;
189 * block nesting level
193 public $block_nesting_level = 0;
198 * @var Smarty_Security
200 public $security = null;
203 * template prefix array
205 * @var \Smarty_Internal_ParseTree[]
207 public $template_prefix = array();
212 * @var \Smarty_Internal_ParseTree[]
214 public $template_postfix = array();
219 * @param Smarty_Internal_Templatelexer $lex
220 * @param Smarty_Internal_TemplateCompilerBase $compiler
222 function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler)
225 $this->compiler = $compiler;
226 $this->template = $this->compiler->template;
227 $this->smarty = $this->template->smarty;
228 $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
229 $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template();
233 * insert PHP code in current buffer
235 * @param string $code
237 public function insertPhpCode($code)
239 $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
243 * merge PHP code with prefix code and return parse tree tag object
245 * @param string $code
247 * @return Smarty_Internal_ParseTree_Tag
249 public function mergePrefixCode($code)
252 foreach ($this->compiler->prefix_code as $preCode) {
255 $this->compiler->prefix_code = array();
257 return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
268 const TP_STRIPON = 5;
270 const TP_STRIPOFF = 6;
272 const TP_LITERALSTART = 7;
274 const TP_LITERALEND = 8;
276 const TP_LITERAL = 9;
280 const TP_SIMPELOUTPUT = 11;
284 const TP_DOLLARID = 13;
288 const TP_SIMPLETAG = 15;
294 const TP_LDELMAKENOCACHE = 18;
296 const TP_LDELIF = 19;
298 const TP_LDELFOR = 20;
300 const TP_SEMICOLON = 21;
302 const TP_INCDEC = 22;
308 const TP_LDELFOREACH = 25;
316 const TP_LDELSETFILTER = 29;
318 const TP_SMARTYBLOCKCHILDPARENT = 30;
320 const TP_CLOSETAG = 31;
322 const TP_LDELSLASH = 32;
326 const TP_INTEGER = 34;
332 const TP_CLOSEP = 37;
336 const TP_UNIMATH = 39;
344 const TP_TYPECAST = 43;
350 const TP_INSTANCEOF = 46;
352 const TP_SINGLEQUOTESTRING = 47;
354 const TP_DOUBLECOLON = 48;
356 const TP_NAMESPACE = 49;
364 const TP_CLOSEB = 53;
366 const TP_DOLLAR = 54;
370 const TP_SLOGOP = 56;
372 const TP_TLOGOP = 57;
374 const TP_SINGLECOND = 58;
378 const TP_BACKTICK = 60;
380 const YY_NO_ACTION = 532;
382 const YY_ACCEPT_ACTION = 531;
384 const YY_ERROR_ACTION = 530;
386 const YY_SZ_ACTTAB = 2114;
388 static public $yy_action = array(268, 8, 132, 210, 245, 197, 183, 228, 7, 84, 176, 264, 275, 302, 112, 44, 36, 278,
389 233, 136, 305, 221, 281, 203, 237, 26, 234, 202, 41, 104, 189, 39, 42, 256, 213,
390 216, 224, 78, 207, 129, 82, 1, 316, 297, 102, 268, 8, 133, 79, 245, 80, 302, 228,
391 7, 84, 330, 299, 82, 272, 112, 297, 273, 325, 233, 285, 305, 221, 214, 231, 34, 26,
392 3, 101, 41, 230, 78, 39, 42, 256, 213, 35, 239, 314, 207, 300, 82, 1, 13, 297, 333,
393 268, 8, 135, 79, 245, 201, 302, 228, 7, 84, 35, 85, 322, 109, 112, 29, 196, 13,
394 233, 269, 305, 221, 237, 231, 249, 26, 136, 104, 41, 219, 78, 39, 42, 256, 213,
395 459, 239, 267, 207, 355, 82, 1, 459, 297, 446, 268, 8, 135, 79, 245, 193, 302, 228,
396 7, 84, 35, 446, 297, 28, 112, 247, 263, 13, 233, 82, 305, 221, 297, 231, 309, 26,
397 185, 292, 41, 298, 78, 39, 42, 256, 213, 27, 239, 237, 207, 232, 82, 1, 104, 297,
398 459, 268, 8, 135, 79, 245, 195, 459, 228, 7, 84, 446, 297, 283, 11, 112, 25, 188,
399 282, 233, 236, 305, 221, 446, 204, 294, 26, 32, 318, 41, 90, 210, 39, 42, 256, 213,
400 174, 239, 137, 207, 402, 82, 1, 210, 297, 9, 268, 8, 136, 79, 245, 201, 223, 228,
401 7, 84, 402, 142, 235, 225, 112, 22, 227, 402, 233, 166, 305, 221, 35, 231, 27, 33,
402 210, 101, 41, 13, 210, 39, 42, 256, 213, 361, 239, 302, 207, 399, 82, 1, 210, 297,
403 101, 268, 8, 135, 79, 245, 201, 402, 228, 7, 84, 399, 235, 297, 109, 112, 447, 78,
404 399, 233, 319, 305, 221, 402, 194, 172, 26, 279, 447, 41, 402, 307, 39, 42, 256,
405 213, 182, 239, 16, 207, 296, 82, 1, 210, 297, 101, 268, 8, 131, 79, 245, 201, 357,
406 228, 7, 84, 283, 11, 475, 475, 112, 282, 303, 475, 233, 24, 305, 221, 35, 231, 175,
407 4, 279, 271, 41, 13, 109, 39, 42, 256, 213, 181, 239, 178, 207, 12, 82, 1, 16, 297,
408 274, 268, 8, 135, 79, 245, 200, 475, 228, 7, 84, 475, 475, 283, 11, 112, 475, 189,
409 282, 233, 210, 305, 221, 20, 231, 38, 26, 179, 292, 41, 148, 446, 39, 42, 256, 213,
410 229, 239, 180, 207, 332, 82, 1, 446, 297, 190, 268, 8, 134, 79, 245, 201, 215, 228,
411 7, 84, 168, 16, 188, 243, 112, 104, 189, 303, 233, 140, 305, 221, 325, 231, 255,
412 26, 177, 214, 41, 218, 312, 39, 42, 256, 213, 277, 239, 128, 207, 101, 82, 1, 92,
413 297, 2, 268, 8, 136, 79, 245, 201, 23, 228, 7, 84, 210, 108, 251, 184, 112, 297,
414 304, 289, 233, 367, 305, 221, 137, 231, 315, 33, 220, 5, 41, 9, 5, 39, 42, 256,
415 213, 35, 239, 189, 207, 113, 82, 311, 13, 297, 106, 446, 214, 212, 79, 116, 72,
416 114, 258, 260, 261, 222, 102, 446, 214, 257, 280, 187, 308, 334, 270, 206, 242,
417 152, 299, 210, 128, 83, 262, 250, 252, 253, 176, 332, 211, 329, 268, 8, 151, 143,
418 245, 189, 178, 228, 7, 84, 210, 265, 332, 332, 112, 188, 21, 311, 233, 153, 305,
419 221, 214, 212, 17, 122, 67, 114, 164, 141, 189, 13, 102, 149, 266, 257, 280, 183,
420 332, 332, 270, 206, 242, 332, 299, 295, 44, 36, 278, 235, 311, 208, 279, 145, 169,
421 214, 212, 91, 122, 67, 114, 189, 320, 332, 167, 102, 146, 139, 257, 280, 94, 171,
422 159, 270, 206, 242, 332, 299, 210, 38, 311, 189, 332, 155, 209, 214, 212, 317, 122,
423 53, 107, 123, 232, 332, 189, 102, 291, 400, 257, 280, 6, 217, 276, 270, 206, 242,
424 311, 299, 297, 158, 313, 214, 212, 400, 122, 49, 107, 154, 117, 332, 400, 102, 30,
425 446, 257, 280, 248, 332, 173, 270, 206, 242, 279, 299, 324, 446, 186, 292, 332, 95,
426 279, 268, 10, 326, 170, 245, 88, 87, 228, 7, 84, 279, 138, 89, 279, 112, 86, 309,
427 311, 233, 115, 305, 221, 214, 212, 254, 122, 67, 114, 105, 303, 163, 165, 102, 303,
428 93, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 303, 303, 303, 286, 19, 311,
429 205, 303, 303, 303, 214, 212, 303, 116, 72, 114, 303, 43, 40, 37, 102, 303, 303,
430 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 324, 327, 323, 288, 287, 303,
431 303, 268, 10, 326, 331, 245, 303, 303, 228, 7, 84, 303, 303, 303, 303, 112, 303,
432 303, 311, 233, 303, 305, 221, 214, 212, 303, 122, 70, 114, 303, 303, 303, 303, 102,
433 303, 303, 257, 280, 303, 283, 11, 270, 206, 242, 282, 299, 303, 311, 303, 290, 19,
434 303, 214, 212, 35, 122, 54, 114, 303, 303, 303, 13, 102, 162, 303, 257, 280, 183,
435 303, 303, 270, 206, 242, 332, 299, 311, 44, 36, 278, 303, 214, 212, 303, 122, 68,
436 114, 303, 303, 303, 303, 102, 189, 303, 257, 280, 303, 303, 303, 270, 206, 242,
437 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 100, 73, 114, 303, 303, 303, 303,
438 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303,
439 303, 303, 214, 212, 303, 122, 77, 114, 303, 303, 303, 303, 102, 147, 303, 257, 280,
440 183, 303, 303, 270, 206, 242, 332, 299, 311, 44, 36, 278, 303, 214, 212, 303, 122,
441 76, 114, 303, 303, 303, 303, 102, 189, 303, 257, 280, 303, 303, 303, 270, 206, 242,
442 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 99, 71, 114, 303, 303, 303, 303,
443 102, 161, 303, 257, 280, 183, 303, 303, 270, 206, 242, 332, 299, 311, 44, 36, 278,
444 303, 214, 212, 303, 122, 47, 114, 303, 303, 303, 303, 102, 189, 303, 257, 280, 303,
445 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 59,
446 114, 303, 303, 303, 303, 102, 150, 303, 257, 280, 183, 303, 303, 270, 206, 242,
447 332, 299, 311, 44, 36, 278, 303, 214, 198, 303, 118, 55, 114, 303, 303, 303, 303,
448 102, 189, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303,
449 303, 303, 214, 212, 303, 122, 69, 114, 303, 303, 303, 303, 102, 160, 303, 257, 280,
450 183, 303, 303, 270, 206, 242, 332, 299, 311, 44, 36, 278, 303, 214, 97, 303, 81,
451 48, 103, 303, 303, 303, 303, 102, 189, 303, 257, 280, 303, 303, 303, 270, 206, 242,
452 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 57, 114, 303, 303, 303, 303,
453 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303,
454 303, 303, 214, 212, 303, 122, 65, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280,
455 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 96, 303, 81,
456 46, 103, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242,
457 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 111, 50, 114, 303, 303, 303, 303,
458 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303,
459 303, 303, 214, 212, 303, 98, 61, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280,
460 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 199, 303,
461 122, 56, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206,
462 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 51, 114, 303, 303, 303,
463 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303,
464 303, 303, 303, 214, 212, 303, 122, 58, 114, 303, 303, 303, 303, 102, 303, 303, 257,
465 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212,
466 303, 122, 74, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270,
467 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 62, 114, 303, 303,
468 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311,
469 303, 303, 303, 303, 214, 212, 303, 122, 60, 114, 303, 303, 303, 303, 102, 303, 303,
470 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214,
471 212, 303, 122, 45, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303,
472 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 64, 114, 303,
473 303, 303, 303, 102, 303, 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299,
474 311, 303, 303, 303, 303, 214, 212, 303, 122, 75, 114, 303, 303, 303, 303, 102, 303,
475 303, 257, 280, 303, 303, 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303,
476 214, 212, 303, 122, 63, 114, 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 303,
477 303, 270, 206, 242, 303, 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 66, 114,
478 303, 303, 303, 303, 102, 303, 303, 257, 280, 303, 412, 412, 270, 206, 242, 303,
479 299, 311, 303, 303, 303, 303, 214, 212, 303, 122, 53, 114, 303, 303, 303, 303, 102,
480 303, 303, 257, 280, 210, 303, 303, 270, 206, 242, 303, 299, 446, 301, 412, 412,
481 412, 303, 531, 52, 259, 260, 261, 222, 446, 303, 214, 303, 303, 35, 303, 412, 412,
482 412, 412, 303, 13, 303, 303, 303, 303, 43, 40, 37, 210, 303, 303, 311, 303, 303,
483 303, 303, 214, 212, 210, 130, 303, 114, 327, 323, 288, 287, 102, 303, 303, 303,
484 241, 31, 303, 35, 270, 206, 242, 303, 299, 303, 13, 303, 303, 35, 303, 43, 40, 37,
485 303, 303, 13, 303, 303, 303, 303, 43, 40, 37, 303, 303, 303, 311, 327, 323, 288,
486 287, 214, 212, 210, 124, 303, 114, 327, 323, 288, 287, 102, 192, 303, 303, 310,
487 303, 303, 303, 270, 206, 242, 311, 299, 226, 303, 303, 214, 212, 303, 120, 303,
488 114, 475, 475, 303, 28, 102, 475, 459, 43, 40, 37, 303, 303, 270, 206, 242, 303,
489 299, 303, 303, 303, 303, 303, 303, 311, 327, 323, 288, 287, 214, 212, 303, 126,
490 303, 114, 459, 303, 303, 459, 102, 475, 303, 459, 226, 303, 303, 303, 270, 206,
491 242, 303, 299, 475, 475, 226, 18, 303, 475, 459, 303, 303, 303, 303, 475, 475, 303,
492 303, 226, 475, 459, 283, 11, 303, 303, 303, 282, 475, 475, 303, 303, 303, 475, 459,
493 303, 303, 35, 459, 144, 303, 459, 303, 475, 13, 459, 303, 303, 303, 459, 303, 303,
494 459, 311, 475, 303, 459, 321, 214, 212, 303, 119, 459, 114, 303, 459, 303, 475,
495 102, 459, 303, 303, 303, 303, 303, 303, 270, 206, 242, 303, 299, 311, 210, 14, 303,
496 303, 214, 212, 303, 127, 303, 114, 303, 284, 303, 303, 102, 129, 303, 303, 303,
497 303, 102, 303, 270, 206, 242, 311, 299, 210, 303, 293, 214, 212, 299, 121, 303,
498 114, 311, 43, 40, 37, 102, 214, 212, 303, 125, 303, 114, 303, 270, 206, 242, 102,
499 299, 156, 327, 323, 288, 287, 210, 270, 206, 242, 210, 299, 43, 40, 37, 210, 303,
500 303, 303, 244, 303, 303, 303, 303, 303, 303, 110, 303, 303, 327, 323, 288, 287,
501 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 43, 40, 37, 210, 43, 40, 37, 210,
502 303, 43, 40, 37, 240, 210, 303, 303, 191, 327, 323, 288, 287, 327, 323, 288, 287,
503 303, 327, 323, 288, 287, 303, 306, 303, 303, 303, 303, 303, 303, 303, 303, 43, 40,
504 37, 303, 43, 40, 37, 210, 303, 238, 43, 40, 37, 303, 303, 303, 303, 327, 323, 288,
505 287, 327, 323, 288, 287, 15, 303, 327, 323, 288, 287, 303, 303, 303, 475, 475, 303,
506 303, 303, 475, 459, 210, 303, 246, 43, 40, 37, 210, 303, 303, 303, 303, 303, 475,
507 475, 283, 11, 303, 475, 459, 282, 327, 323, 288, 287, 303, 303, 303, 459, 303, 35,
508 459, 157, 475, 303, 459, 303, 13, 43, 40, 37, 303, 303, 303, 43, 40, 37, 459, 303,
509 303, 459, 303, 475, 328, 459, 327, 323, 288, 287, 303, 303, 327, 323, 288, 287,
510 303, 406, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 406, 303, 406, 303,
511 303, 406, 303, 303, 303, 303, 303, 303, 406, 303, 406, 303, 406, 303, 303, 303,
512 303, 303, 303, 303, 235,);
514 static public $yy_lookahead = array(11, 12, 13, 1, 15, 16, 76, 18, 19, 20, 7, 8, 9, 22, 25, 85, 86, 87, 29, 13, 31,
515 32, 16, 34, 75, 36, 77, 78, 39, 80, 100, 42, 43, 44, 45, 71, 47, 46, 49, 75, 51,
516 52, 53, 54, 80, 11, 12, 13, 59, 15, 16, 22, 18, 19, 20, 49, 92, 51, 66, 25, 54,
517 69, 65, 29, 30, 31, 32, 70, 34, 14, 36, 35, 17, 39, 16, 46, 42, 43, 44, 45, 26,
518 47, 53, 49, 10, 51, 52, 33, 54, 53, 11, 12, 13, 59, 15, 16, 22, 18, 19, 20, 26,
519 104, 105, 48, 25, 12, 13, 33, 29, 16, 31, 32, 75, 34, 77, 36, 13, 80, 39, 16,
520 46, 42, 43, 44, 45, 45, 47, 34, 49, 10, 51, 52, 52, 54, 36, 11, 12, 13, 59, 15,
521 16, 22, 18, 19, 20, 26, 48, 54, 14, 25, 13, 34, 33, 29, 51, 31, 32, 54, 34, 94,
522 36, 96, 97, 39, 97, 46, 42, 43, 44, 45, 14, 47, 75, 49, 77, 51, 52, 80, 54, 45,
523 11, 12, 13, 59, 15, 16, 52, 18, 19, 20, 36, 54, 11, 12, 25, 21, 100, 16, 29, 45,
524 31, 32, 48, 34, 16, 36, 14, 53, 39, 35, 1, 42, 43, 44, 45, 93, 47, 45, 49, 10,
525 51, 52, 1, 54, 52, 11, 12, 13, 59, 15, 16, 50, 18, 19, 20, 26, 27, 45, 50, 25,
526 12, 13, 33, 29, 16, 31, 32, 26, 34, 14, 36, 1, 17, 39, 33, 1, 42, 43, 44, 45,
527 10, 47, 22, 49, 10, 51, 52, 1, 54, 17, 11, 12, 13, 59, 15, 16, 10, 18, 19, 20,
528 26, 45, 54, 48, 25, 36, 46, 33, 29, 53, 31, 32, 26, 34, 93, 36, 95, 48, 39, 33,
529 60, 42, 43, 44, 45, 81, 47, 35, 49, 37, 51, 52, 1, 54, 17, 11, 12, 13, 59, 15,
530 16, 10, 18, 19, 20, 11, 12, 11, 12, 25, 16, 101, 16, 29, 14, 31, 32, 26, 34, 93,
531 36, 95, 22, 39, 33, 48, 42, 43, 44, 45, 81, 47, 76, 49, 41, 51, 52, 35, 54, 37,
532 11, 12, 13, 59, 15, 16, 50, 18, 19, 20, 11, 12, 11, 12, 25, 16, 100, 16, 29, 1,
533 31, 32, 28, 34, 2, 36, 96, 97, 39, 72, 36, 42, 43, 44, 45, 17, 47, 76, 49, 82,
534 51, 52, 48, 54, 16, 11, 12, 13, 59, 15, 16, 50, 18, 19, 20, 75, 35, 100, 37, 25,
535 80, 100, 101, 29, 13, 31, 32, 65, 34, 37, 36, 13, 70, 39, 16, 91, 42, 43, 44,
536 45, 16, 47, 98, 49, 17, 51, 52, 36, 54, 36, 11, 12, 13, 59, 15, 16, 12, 18, 19,
537 20, 1, 48, 4, 76, 25, 54, 16, 105, 29, 10, 31, 32, 45, 34, 53, 36, 17, 36, 39,
538 52, 36, 42, 43, 44, 45, 26, 47, 100, 49, 16, 51, 65, 33, 54, 80, 36, 70, 71, 59,
539 73, 74, 75, 64, 65, 66, 67, 80, 48, 70, 83, 84, 76, 98, 91, 88, 89, 90, 72, 92,
540 1, 98, 16, 3, 4, 5, 6, 7, 82, 102, 103, 11, 12, 72, 72, 15, 100, 76, 18, 19, 20,
541 1, 16, 82, 82, 25, 100, 28, 65, 29, 51, 31, 32, 70, 71, 26, 73, 74, 75, 72, 72,
542 100, 33, 80, 72, 10, 83, 84, 76, 82, 82, 88, 89, 90, 82, 92, 16, 85, 86, 87, 45,
543 65, 99, 95, 72, 51, 70, 71, 76, 73, 74, 75, 100, 53, 82, 93, 80, 72, 13, 83, 84,
544 76, 93, 72, 88, 89, 90, 82, 92, 1, 2, 65, 100, 82, 72, 99, 70, 71, 53, 73, 74,
545 75, 16, 77, 82, 100, 80, 16, 10, 83, 84, 36, 14, 34, 88, 89, 90, 65, 92, 54, 72,
546 13, 70, 71, 26, 73, 74, 75, 72, 77, 82, 33, 80, 23, 36, 83, 84, 82, 82, 72, 88,
547 89, 90, 95, 92, 4, 48, 96, 97, 82, 81, 95, 11, 12, 13, 93, 15, 80, 80, 18, 19,
548 20, 95, 80, 80, 95, 25, 80, 94, 65, 29, 79, 31, 32, 70, 71, 8, 73, 74, 75, 68,
549 106, 93, 93, 80, 106, 93, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 106, 106,
550 106, 59, 60, 65, 99, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 38, 39, 40,
551 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 4, 55, 56, 57, 58,
552 106, 106, 11, 12, 13, 103, 15, 106, 106, 18, 19, 20, 106, 106, 106, 106, 25,
553 106, 106, 65, 29, 106, 31, 32, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80,
554 106, 106, 83, 84, 106, 11, 12, 88, 89, 90, 16, 92, 106, 65, 106, 59, 60, 106,
555 70, 71, 26, 73, 74, 75, 106, 106, 106, 33, 80, 72, 106, 83, 84, 76, 106, 106,
556 88, 89, 90, 82, 92, 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106,
557 106, 80, 100, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106,
558 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84,
559 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74,
560 75, 106, 106, 106, 106, 80, 72, 106, 83, 84, 76, 106, 106, 88, 89, 90, 82, 92,
561 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 100, 106,
562 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106,
563 73, 74, 75, 106, 106, 106, 106, 80, 72, 106, 83, 84, 76, 106, 106, 88, 89, 90,
564 82, 92, 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80,
565 100, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106,
566 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 72, 106, 83, 84, 76, 106, 106,
567 88, 89, 90, 82, 92, 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106,
568 106, 80, 100, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106,
569 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 72, 106, 83, 84, 76,
570 106, 106, 88, 89, 90, 82, 92, 65, 85, 86, 87, 106, 70, 71, 106, 73, 74, 75, 106,
571 106, 106, 106, 80, 100, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65,
572 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106,
573 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106,
574 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90,
575 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106,
576 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106,
577 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106,
578 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75,
579 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92,
580 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106,
581 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71,
582 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88,
583 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106,
584 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106,
585 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84,
586 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74,
587 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106,
588 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80,
589 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106,
590 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106,
591 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106,
592 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65,
593 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106,
594 83, 84, 106, 106, 106, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106, 70, 71, 106,
595 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 106, 106, 106, 88, 89, 90,
596 106, 92, 65, 106, 106, 106, 106, 70, 71, 106, 73, 74, 75, 106, 106, 106, 106,
597 80, 106, 106, 83, 84, 106, 1, 2, 88, 89, 90, 106, 92, 65, 106, 106, 106, 106,
598 70, 71, 106, 73, 74, 75, 106, 106, 106, 106, 80, 106, 106, 83, 84, 1, 106, 106,
599 88, 89, 90, 106, 92, 36, 10, 38, 39, 40, 106, 62, 63, 64, 65, 66, 67, 48, 106,
600 70, 106, 106, 26, 106, 55, 56, 57, 58, 106, 33, 106, 106, 106, 106, 38, 39, 40,
601 1, 106, 106, 65, 106, 106, 106, 106, 70, 71, 1, 73, 106, 75, 55, 56, 57, 58, 80,
602 106, 106, 106, 84, 24, 106, 26, 88, 89, 90, 106, 92, 106, 33, 106, 106, 26, 106,
603 38, 39, 40, 106, 106, 33, 106, 106, 106, 106, 38, 39, 40, 106, 106, 106, 65, 55,
604 56, 57, 58, 70, 71, 1, 73, 106, 75, 55, 56, 57, 58, 80, 10, 106, 106, 84, 106,
605 106, 106, 88, 89, 90, 65, 92, 2, 106, 106, 70, 71, 106, 73, 106, 75, 11, 12,
606 106, 14, 80, 16, 17, 38, 39, 40, 106, 106, 88, 89, 90, 106, 92, 106, 106, 106,
607 106, 106, 106, 65, 55, 56, 57, 58, 70, 71, 106, 73, 106, 75, 45, 106, 106, 48,
608 80, 50, 106, 52, 2, 106, 106, 106, 88, 89, 90, 106, 92, 11, 12, 2, 14, 106, 16,
609 17, 106, 106, 106, 106, 11, 12, 106, 106, 2, 16, 17, 11, 12, 106, 106, 106, 16,
610 11, 12, 106, 106, 106, 16, 17, 106, 106, 26, 45, 28, 106, 48, 106, 50, 33, 52,
611 106, 106, 106, 45, 106, 106, 48, 65, 50, 106, 52, 53, 70, 71, 106, 73, 45, 75,
612 106, 48, 106, 50, 80, 52, 106, 106, 106, 106, 106, 106, 88, 89, 90, 106, 92, 65,
613 1, 2, 106, 106, 70, 71, 106, 73, 106, 75, 106, 71, 106, 106, 80, 75, 106, 106,
614 106, 106, 80, 106, 88, 89, 90, 65, 92, 1, 106, 89, 70, 71, 92, 73, 106, 75, 65,
615 38, 39, 40, 80, 70, 71, 106, 73, 106, 75, 106, 88, 89, 90, 80, 92, 27, 55, 56,
616 57, 58, 1, 88, 89, 90, 1, 92, 38, 39, 40, 1, 106, 106, 106, 10, 106, 106, 106,
617 106, 106, 106, 21, 106, 106, 55, 56, 57, 58, 106, 106, 106, 106, 106, 106, 106,
618 106, 106, 106, 38, 39, 40, 1, 38, 39, 40, 1, 106, 38, 39, 40, 10, 1, 106, 106,
619 10, 55, 56, 57, 58, 55, 56, 57, 58, 106, 55, 56, 57, 58, 106, 60, 106, 106, 106,
620 106, 106, 106, 106, 106, 38, 39, 40, 106, 38, 39, 40, 1, 106, 37, 38, 39, 40,
621 106, 106, 106, 106, 55, 56, 57, 58, 55, 56, 57, 58, 2, 106, 55, 56, 57, 58, 106,
622 106, 106, 11, 12, 106, 106, 106, 16, 17, 1, 106, 37, 38, 39, 40, 1, 106, 106,
623 106, 106, 106, 11, 12, 11, 12, 106, 16, 17, 16, 55, 56, 57, 58, 106, 106, 106,
624 45, 106, 26, 48, 28, 50, 106, 52, 106, 33, 38, 39, 40, 106, 106, 106, 38, 39,
625 40, 45, 106, 106, 48, 106, 50, 53, 52, 55, 56, 57, 58, 106, 106, 55, 56, 57, 58,
626 106, 10, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 21, 106, 23, 106,
627 106, 26, 106, 106, 106, 106, 106, 106, 33, 106, 35, 106, 37, 106, 106, 106, 106,
630 const YY_SHIFT_USE_DFLT = - 12;
632 const YY_SHIFT_MAX = 238;
634 static public $yy_shift_ofst = array(519, 349, 79, 349, 304, 79, 79, 304, 34, - 11, 34, 79, 394, 79, 79, 124, 79,
635 169, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 259, 79, 79, 79, 79, 79, 79, 169,
636 79, 214, 214, 439, 439, 439, 439, 439, 439, 1617, 1577, 1627, 1627, 1627, 1627,
637 1627, 519, 1944, 1978, 2012, 1903, 1938, 1677, 1836, 1934, 1863, 1898, 1894,
638 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 695,
639 695, 6, 660, 459, 311, 103, 221, 411, 745, 1766, 2016, 783, 783, 411, 221, 411,
640 427, 221, 607, 74, 119, 209, 266, 254, 228, 181, 55, 314, 3, 314, 235, 418,
641 418, 584, 250, 528, 378, 297, 54, 518, 54, 539, 2, 2, 2, 2, 2, 2, 2, 2, 2, 252,
642 252, - 12, 1697, 1759, 1748, 1995, 1772, 2014, 93, 361, 359, 134, 54, 137, 54,
643 137, 54, 54, 54, 54, 54, 54, 54, 54, 80, 54, 54, 137, 137, 54, 54, 54, 54, 54,
644 172, 54, 172, 444, 172, 320, 80, 172, 172, 172, 54, 172, 172, 687, 594, 2, 252,
645 2, 382, 382, 2, 2, 252, 252, 2, - 12, - 12, - 12, - 12, - 12, 1550, 2068, 617,
646 316, 154, 29, 240, 354, 98, 174, 236, 192, 272, 413, 249, 322, 381, 188, 36,
647 - 9, 598, 554, 424, 533, 525, 441, 498, 505, 473, 458, 450, 421, 559, 610, 594,
648 627, 605, 564, 534, 392, 388, 629, 117, 58, 156, 313,);
650 const YY_REDUCE_USE_DFLT = - 71;
652 const YY_REDUCE_MAX = 192;
654 static public $yy_reduce_ofst = array(1530, 426, 482, 656, 545, 515, 623, 571, 1017, 961, 1101, 1325, 933, 793, 849,
655 821, 1465, 1157, 1129, 1185, 1073, 989, 1045, 1241, 1381, 1437, 1493, 1409,
656 1269, 1297, 1353, 1213, 708, 737, 905, 877, 765, 1606, 1556, 1632, 1808, 1797,
657 1771, 1666, 1743, 886, 491, 830, 491, 746, 942, 998, 438, - 70, - 70, - 70,
658 - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70,
659 - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, - 70, 1777, - 3, 524, 460,
660 - 36, 511, - 51, 362, 487, 575, 567, 586, 37, 445, 97, 65, 317, 321, 541, 541,
661 276, 276, 276, 414, 246, 290, 246, - 8, 201, 290, 344, 422, 340, 276, 461,
662 387, 290, 486, 276, 530, 276, 276, 276, 276, 276, 435, 276, 276, 276, 276,
663 570, 290, 276, 122, 122, 122, 122, 122, 122, 602, 589, 122, 122, 574, 606,
664 574, 603, 574, 574, 574, 574, 574, 574, 574, 574, 581, 574, 574, 597, 596,
665 574, 574, 574, 574, 574, 593, 574, 593, 609, 593, 611, 608, 593, 593, 593,
666 574, 593, 593, 631, 612, 96, 67, 96, 230, 230, 96, 96, 67, 67, 96, 269, 224,
669 static public $yyExpectedTokens = array(array(3, 4, 5, 6, 7, 11, 12, 15, 18, 19, 20, 25, 29, 31, 32,),
670 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
671 44, 45, 47, 49, 51, 52, 54, 59,),
672 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
673 44, 45, 47, 49, 51, 52, 54, 59,),
674 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
675 44, 45, 47, 49, 51, 52, 54, 59,),
676 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
677 44, 45, 47, 49, 51, 52, 54, 59,),
678 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
679 44, 45, 47, 49, 51, 52, 54, 59,),
680 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
681 44, 45, 47, 49, 51, 52, 54, 59,),
682 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
683 44, 45, 47, 49, 51, 52, 54, 59,),
684 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 30, 31, 32, 34, 36, 39, 42,
685 43, 44, 45, 47, 49, 51, 52, 54, 59,),
686 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
687 44, 45, 47, 49, 51, 52, 53, 54, 59,),
688 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 30, 31, 32, 34, 36, 39, 42,
689 43, 44, 45, 47, 49, 51, 52, 54, 59,),
690 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
691 44, 45, 47, 49, 51, 52, 54, 59,),
692 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
693 44, 45, 47, 49, 51, 52, 54, 59,),
694 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
695 44, 45, 47, 49, 51, 52, 54, 59,),
696 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
697 44, 45, 47, 49, 51, 52, 54, 59,),
698 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
699 44, 45, 47, 49, 51, 52, 54, 59,),
700 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
701 44, 45, 47, 49, 51, 52, 54, 59,),
702 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
703 44, 45, 47, 49, 51, 52, 54, 59,),
704 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
705 44, 45, 47, 49, 51, 52, 54, 59,),
706 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
707 44, 45, 47, 49, 51, 52, 54, 59,),
708 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
709 44, 45, 47, 49, 51, 52, 54, 59,),
710 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
711 44, 45, 47, 49, 51, 52, 54, 59,),
712 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
713 44, 45, 47, 49, 51, 52, 54, 59,),
714 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
715 44, 45, 47, 49, 51, 52, 54, 59,),
716 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
717 44, 45, 47, 49, 51, 52, 54, 59,),
718 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
719 44, 45, 47, 49, 51, 52, 54, 59,),
720 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
721 44, 45, 47, 49, 51, 52, 54, 59,),
722 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
723 44, 45, 47, 49, 51, 52, 54, 59,),
724 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
725 44, 45, 47, 49, 51, 52, 54, 59,),
726 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
727 44, 45, 47, 49, 51, 52, 54, 59,),
728 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
729 44, 45, 47, 49, 51, 52, 54, 59,),
730 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
731 44, 45, 47, 49, 51, 52, 54, 59,),
732 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
733 44, 45, 47, 49, 51, 52, 54, 59,),
734 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
735 44, 45, 47, 49, 51, 52, 54, 59,),
736 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
737 44, 45, 47, 49, 51, 52, 54, 59,),
738 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
739 44, 45, 47, 49, 51, 52, 54, 59,),
740 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
741 44, 45, 47, 49, 51, 52, 54, 59,),
742 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
743 44, 45, 47, 49, 51, 52, 54, 59,),
744 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
745 44, 45, 47, 49, 51, 52, 54, 59,),
746 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
747 44, 45, 47, 49, 51, 54, 59,),
748 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
749 44, 45, 47, 49, 51, 54, 59,),
750 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
751 44, 45, 47, 49, 51, 54, 59,),
752 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
753 44, 45, 47, 49, 51, 54, 59,),
754 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
755 44, 45, 47, 49, 51, 54, 59,),
756 array(11, 12, 13, 15, 16, 18, 19, 20, 25, 29, 31, 32, 34, 36, 39, 42, 43,
757 44, 45, 47, 49, 51, 54, 59,),
758 array(1, 24, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
759 array(1, 10, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
760 array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
761 array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
762 array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
763 array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
764 array(1, 26, 33, 38, 39, 40, 55, 56, 57, 58,),
765 array(3, 4, 5, 6, 7, 11, 12, 15, 18, 19, 20, 25, 29, 31, 32,),
766 array(1, 37, 38, 39, 40, 55, 56, 57, 58,),
767 array(1, 37, 38, 39, 40, 55, 56, 57, 58,),
768 array(1, 38, 39, 40, 53, 55, 56, 57, 58,),
769 array(1, 38, 39, 40, 55, 56, 57, 58, 60,),
770 array(1, 10, 38, 39, 40, 55, 56, 57, 58,),
771 array(1, 10, 38, 39, 40, 55, 56, 57, 58,),
772 array(1, 2, 38, 39, 40, 55, 56, 57, 58,),
773 array(1, 10, 38, 39, 40, 55, 56, 57, 58,),
774 array(1, 27, 38, 39, 40, 55, 56, 57, 58,),
775 array(1, 10, 38, 39, 40, 55, 56, 57, 58,),
776 array(1, 21, 38, 39, 40, 55, 56, 57, 58,),
777 array(1, 38, 39, 40, 55, 56, 57, 58,),
778 array(1, 38, 39, 40, 55, 56, 57, 58,),
779 array(1, 38, 39, 40, 55, 56, 57, 58,),
780 array(1, 38, 39, 40, 55, 56, 57, 58,),
781 array(1, 38, 39, 40, 55, 56, 57, 58,),
782 array(1, 38, 39, 40, 55, 56, 57, 58,),
783 array(1, 38, 39, 40, 55, 56, 57, 58,),
784 array(1, 38, 39, 40, 55, 56, 57, 58,),
785 array(1, 38, 39, 40, 55, 56, 57, 58,),
786 array(1, 38, 39, 40, 55, 56, 57, 58,),
787 array(1, 38, 39, 40, 55, 56, 57, 58,),
788 array(1, 38, 39, 40, 55, 56, 57, 58,), array(38, 39, 40, 55, 56, 57, 58,),
789 array(38, 39, 40, 55, 56, 57, 58,), array(13, 16, 49, 51, 54,),
790 array(4, 11, 12, 13, 15, 18, 19, 20, 25, 29, 31, 32, 59, 60,),
791 array(1, 10, 17, 26, 33, 36, 48,), array(1, 10, 26, 33,),
792 array(13, 16, 51, 54,), array(1, 26, 33,), array(13, 36, 54,),
793 array(4, 11, 12, 13, 15, 18, 19, 20, 25, 29, 31, 32, 59, 60,),
794 array(11, 12, 16, 26, 28, 33,), array(11, 12, 16, 26, 28, 33,),
795 array(11, 12, 16, 26, 33,), array(11, 12, 16, 26, 33,), array(13, 36, 54,),
796 array(1, 26, 33,), array(13, 36, 54,), array(17, 45, 52,),
797 array(1, 26, 33,), array(1, 2,), array(10, 22, 26, 33, 46,),
798 array(10, 22, 26, 33, 46,), array(1, 10, 26, 27, 33,),
799 array(1, 10, 26, 33,), array(1, 10, 26, 33,), array(12, 13, 16, 54,),
800 array(11, 12, 16, 50,), array(14, 17, 48,), array(11, 12, 16,),
801 array(7, 8, 9,), array(11, 12, 16,), array(14, 17, 48,), array(13, 16,),
802 array(13, 16,), array(13, 54,), array(1, 10,), array(26, 33,),
803 array(1, 17,), array(17, 48,), array(26, 33,), array(1, 28,),
804 array(26, 33,), array(1, 53,), array(1,), array(1,), array(1,), array(1,),
805 array(1,), array(1,), array(1,), array(1,), array(1,), array(17,),
806 array(17,), array(), array(2, 11, 12, 14, 16, 17, 45, 48, 50, 52,),
807 array(2, 11, 12, 16, 17, 45, 48, 50, 52, 53,),
808 array(2, 11, 12, 14, 16, 17, 45, 48, 50, 52,),
809 array(2, 11, 12, 16, 17, 45, 48, 50, 52,),
810 array(2, 11, 12, 16, 17, 45, 48, 50, 52,),
811 array(11, 12, 16, 17, 45, 48, 50, 52,), array(12, 13, 16, 34, 54,),
812 array(11, 12, 16, 50,), array(11, 12, 16,), array(14, 45, 52,),
813 array(26, 33,), array(13, 54,), array(26, 33,), array(13, 54,),
814 array(26, 33,), array(26, 33,), array(26, 33,), array(26, 33,),
815 array(26, 33,), array(26, 33,), array(26, 33,), array(26, 33,),
816 array(45, 52,), array(26, 33,), array(26, 33,), array(13, 54,),
817 array(13, 54,), array(26, 33,), array(26, 33,), array(26, 33,),
818 array(26, 33,), array(26, 33,), array(45, 52,), array(26, 33,),
819 array(45, 52,), array(12, 36,), array(45, 52,), array(14, 22,),
820 array(45, 52,), array(45, 52,), array(45, 52,), array(45, 52,),
821 array(26, 33,), array(45, 52,), array(45, 52,), array(8,), array(36,),
822 array(1,), array(17,), array(1,), array(2,), array(2,), array(1,),
823 array(1,), array(17,), array(17,), array(1,), array(), array(), array(),
824 array(), array(), array(1, 2, 36, 38, 39, 40, 48, 55, 56, 57, 58,),
825 array(10, 21, 23, 26, 33, 35, 37, 45,), array(10, 14, 26, 33, 36, 48,),
826 array(11, 12, 16, 50,), array(36, 45, 48, 53,), array(22, 46, 53,),
827 array(22, 46, 60,), array(28, 36, 48,), array(36, 48,), array(21, 35,),
828 array(45, 53,), array(14, 45,), array(35, 37,), array(36, 48,),
829 array(36, 48,), array(35, 37,), array(35, 37,), array(16, 50,),
830 array(35, 53,), array(22, 46,), array(34,), array(10,), array(16,),
831 array(51,), array(16,), array(36,), array(51,), array(16,), array(16,),
832 array(4,), array(16,), array(53,), array(16,), array(16,), array(36,),
833 array(13,), array(16,), array(53,), array(45,), array(37,), array(16,),
834 array(23,), array(34,), array(16,), array(14,), array(41,), array(),
835 array(), array(), array(), array(), array(), array(), array(), array(),
836 array(), array(), array(), array(), array(), array(), array(), array(),
837 array(), array(), array(), array(), array(), array(), array(), array(),
838 array(), array(), array(), array(), array(), array(), array(), array(),
839 array(), array(), array(), array(), array(), array(), array(), array(),
840 array(), array(), array(), array(), array(), array(), array(), array(),
841 array(), array(), array(), array(), array(), array(), array(), array(),
842 array(), array(), array(), array(), array(), array(), array(), array(),
843 array(), array(), array(), array(), array(), array(), array(), array(),
844 array(), array(), array(), array(), array(), array(), array(), array(),
845 array(), array(), array(), array(), array(), array(), array(), array(),
846 array(), array(), array(), array(), array(), array(), array(),);
848 static public $yy_default = array(338, 515, 494, 530, 530, 494, 494, 530, 530, 530, 530, 530, 530, 530, 530, 530,
849 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530,
850 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 530, 396, 530, 396,
851 359, 372, 362, 396, 335, 530, 530, 530, 530, 530, 530, 530, 530, 401, 530, 530,
852 377, 517, 492, 493, 418, 516, 403, 401, 518, 398, 407, 408, 423, 422, 530, 530,
853 434, 410, 530, 396, 530, 530, 396, 396, 396, 396, 530, 396, 530, 506, 396, 386,
854 424, 424, 410, 410, 410, 530, 459, 449, 459, 530, 459, 449, 530, 530, 530, 410,
855 396, 390, 449, 396, 410, 374, 410, 417, 426, 425, 410, 392, 421, 414, 413, 427,
856 503, 449, 501, 448, 448, 448, 448, 448, 448, 530, 461, 459, 475, 382, 530, 381,
857 530, 369, 366, 364, 368, 360, 363, 358, 370, 452, 384, 356, 530, 530, 385, 375,
858 380, 379, 373, 455, 376, 484, 459, 487, 530, 454, 453, 486, 485, 383, 456, 457,
859 350, 459, 443, 481, 387, 495, 496, 416, 391, 507, 504, 393, 500, 500, 500, 459,
860 459, 434, 430, 434, 460, 434, 424, 424, 434, 434, 530, 430, 430, 530, 530, 444,
861 530, 530, 530, 530, 424, 530, 530, 530, 530, 530, 505, 530, 530, 530, 342, 530,
862 439, 530, 530, 475, 530, 530, 530, 430, 530, 530, 404, 432, 530, 530, 436, 439,
863 480, 502, 440, 490, 465, 365, 436, 475, 394, 405, 343, 344, 345, 346, 347, 409,
864 429, 411, 337, 336, 339, 340, 341, 431, 348, 397, 353, 464, 354, 463, 435, 378,
865 351, 349, 489, 352, 433, 462, 419, 477, 415, 446, 478, 479, 438, 388, 519, 511,
866 510, 521, 520, 412, 482, 437, 498, 497, 491, 476, 483, 451, 526, 527, 428, 499,
867 450, 389, 524, 523, 488, 458, 420, 442, 445, 371, 471, 468, 474, 467, 466, 469,
868 472, 470, 522, 509, 529, 528, 525, 508, 473, 513, 447, 514, 395, 512, 441,);
870 const YYNOCODE = 107;
872 const YYSTACKDEPTH = 500;
874 const YYNSTATE = 335;
878 const YYERRORSYMBOL = 61;
880 const YYERRSYMDT = 'yy0';
882 const YYFALLBACK = 0;
884 public static $yyFallback = array();
886 public function Trace($TraceFILE, $zTracePrompt)
890 } elseif (!$zTracePrompt) {
893 $this->yyTraceFILE = $TraceFILE;
894 $this->yyTracePrompt = $zTracePrompt;
897 public function PrintTrace()
899 $this->yyTraceFILE = fopen('php://output', 'w');
900 $this->yyTracePrompt = '<br>';
905 public $yyTracePrompt;
907 public $yyidx; /* Index of top element in stack */
908 public $yyerrcnt; /* Shifts left before out of the error */
909 public $yystack = array(); /* The parser's stack */
911 public $yyTokenName = array('$', 'VERT', 'COLON', 'PHP', 'TEXT', 'STRIPON', 'STRIPOFF', 'LITERALSTART',
912 'LITERALEND', 'LITERAL', 'RDEL', 'SIMPELOUTPUT', 'LDEL', 'DOLLARID', 'EQUAL',
913 'SIMPLETAG', 'ID', 'PTR', 'LDELMAKENOCACHE', 'LDELIF', 'LDELFOR', 'SEMICOLON', 'INCDEC',
914 'TO', 'STEP', 'LDELFOREACH', 'SPACE', 'AS', 'APTR', 'LDELSETFILTER',
915 'SMARTYBLOCKCHILDPARENT', 'CLOSETAG', 'LDELSLASH', 'ATTR', 'INTEGER', 'COMMA', 'OPENP',
916 'CLOSEP', 'MATH', 'UNIMATH', 'ISIN', 'QMARK', 'NOT', 'TYPECAST', 'HEX', 'DOT',
917 'INSTANCEOF', 'SINGLEQUOTESTRING', 'DOUBLECOLON', 'NAMESPACE', 'AT', 'HATCH', 'OPENB',
918 'CLOSEB', 'DOLLAR', 'LOGOP', 'SLOGOP', 'TLOGOP', 'SINGLECOND', 'QUOTE', 'BACKTICK',
919 'error', 'start', 'template', 'template_element', 'smartytag', 'literal',
920 'text_content', 'literal_elements', 'literal_element', 'tag', 'variable', 'attributes',
921 'value', 'expr', 'varindexed', 'modifierlist', 'statement', 'statements', 'foraction',
922 'varvar', 'modparameters', 'attribute', 'ternary', 'array', 'tlop', 'lop', 'scond',
923 'function', 'ns1', 'doublequoted_with_quotes', 'static_class_access', 'object',
924 'arrayindex', 'indexdef', 'varvarele', 'objectchain', 'objectelement', 'method',
925 'params', 'modifier', 'modparameter', 'arrayelements', 'arrayelement', 'doublequoted',
926 'doublequotedcontent',);
928 public static $yyRuleName = array('start ::= template', 'template ::= template_element',
929 'template ::= template template_element', 'template ::=',
930 'template_element ::= smartytag', 'template_element ::= literal',
931 'template_element ::= PHP', 'template_element ::= text_content',
932 'text_content ::= TEXT', 'text_content ::= text_content TEXT',
933 'template_element ::= STRIPON', 'template_element ::= STRIPOFF',
934 'literal ::= LITERALSTART LITERALEND',
935 'literal ::= LITERALSTART literal_elements LITERALEND',
936 'literal_elements ::= literal_elements literal_element', 'literal_elements ::=',
937 'literal_element ::= literal', 'literal_element ::= LITERAL',
938 'smartytag ::= tag RDEL', 'smartytag ::= SIMPELOUTPUT', 'tag ::= LDEL variable',
939 'tag ::= LDEL variable attributes', 'tag ::= LDEL value',
940 'tag ::= LDEL value attributes', 'tag ::= LDEL expr',
941 'tag ::= LDEL expr attributes', 'tag ::= LDEL DOLLARID EQUAL value',
942 'tag ::= LDEL DOLLARID EQUAL expr', 'tag ::= LDEL DOLLARID EQUAL expr attributes',
943 'tag ::= LDEL varindexed EQUAL expr attributes', 'smartytag ::= SIMPLETAG',
944 'tag ::= LDEL ID attributes', 'tag ::= LDEL ID',
945 'tag ::= LDEL ID modifierlist attributes', 'tag ::= LDEL ID PTR ID attributes',
946 'tag ::= LDEL ID PTR ID modifierlist attributes',
947 'tag ::= LDELMAKENOCACHE DOLLARID', 'tag ::= LDELIF expr',
948 'tag ::= LDELIF expr attributes', 'tag ::= LDELIF statement',
949 'tag ::= LDELIF statement attributes',
950 'tag ::= LDELFOR statements SEMICOLON expr SEMICOLON varindexed foraction attributes',
951 'foraction ::= EQUAL expr', 'foraction ::= INCDEC',
952 'tag ::= LDELFOR statement TO expr attributes',
953 'tag ::= LDELFOR statement TO expr STEP expr attributes',
954 'tag ::= LDELFOREACH attributes',
955 'tag ::= LDELFOREACH SPACE value AS varvar attributes',
956 'tag ::= LDELFOREACH SPACE value AS varvar APTR varvar attributes',
957 'tag ::= LDELFOREACH SPACE expr AS varvar attributes',
958 'tag ::= LDELFOREACH SPACE expr AS varvar APTR varvar attributes',
959 'tag ::= LDELSETFILTER ID modparameters',
960 'tag ::= LDELSETFILTER ID modparameters modifierlist',
961 'tag ::= LDEL SMARTYBLOCKCHILDPARENT', 'smartytag ::= CLOSETAG',
962 'tag ::= LDELSLASH ID', 'tag ::= LDELSLASH ID modifierlist',
963 'tag ::= LDELSLASH ID PTR ID', 'tag ::= LDELSLASH ID PTR ID modifierlist',
964 'attributes ::= attributes attribute', 'attributes ::= attribute',
965 'attributes ::=', 'attribute ::= SPACE ID EQUAL ID', 'attribute ::= ATTR expr',
966 'attribute ::= ATTR value', 'attribute ::= SPACE ID', 'attribute ::= SPACE expr',
967 'attribute ::= SPACE value', 'attribute ::= SPACE INTEGER EQUAL expr',
968 'statements ::= statement', 'statements ::= statements COMMA statement',
969 'statement ::= DOLLARID EQUAL INTEGER', 'statement ::= DOLLARID EQUAL expr',
970 'statement ::= varindexed EQUAL expr', 'statement ::= OPENP statement CLOSEP',
971 'expr ::= value', 'expr ::= ternary', 'expr ::= DOLLARID COLON ID',
972 'expr ::= expr MATH value', 'expr ::= expr UNIMATH value', 'expr ::= array',
973 'expr ::= expr modifierlist', 'expr ::= expr tlop value',
974 'expr ::= expr lop expr', 'expr ::= expr scond', 'expr ::= expr ISIN array',
975 'expr ::= expr ISIN value',
976 'ternary ::= OPENP expr CLOSEP QMARK DOLLARID COLON expr',
977 'ternary ::= OPENP expr CLOSEP QMARK expr COLON expr', 'value ::= variable',
978 'value ::= UNIMATH value', 'value ::= NOT value', 'value ::= TYPECAST value',
979 'value ::= variable INCDEC', 'value ::= HEX', 'value ::= INTEGER',
980 'value ::= INTEGER DOT INTEGER', 'value ::= INTEGER DOT', 'value ::= DOT INTEGER',
981 'value ::= ID', 'value ::= function', 'value ::= OPENP expr CLOSEP',
982 'value ::= variable INSTANCEOF ns1', 'value ::= variable INSTANCEOF variable',
983 'value ::= SINGLEQUOTESTRING', 'value ::= doublequoted_with_quotes',
984 'value ::= varindexed DOUBLECOLON static_class_access', 'value ::= smartytag',
985 'value ::= value modifierlist', 'value ::= NAMESPACE',
986 'value ::= ns1 DOUBLECOLON static_class_access', 'ns1 ::= ID',
987 'ns1 ::= NAMESPACE', 'variable ::= DOLLARID', 'variable ::= varindexed',
988 'variable ::= varvar AT ID', 'variable ::= object', 'variable ::= HATCH ID HATCH',
989 'variable ::= HATCH ID HATCH arrayindex', 'variable ::= HATCH variable HATCH',
990 'variable ::= HATCH variable HATCH arrayindex',
991 'varindexed ::= DOLLARID arrayindex', 'varindexed ::= varvar arrayindex',
992 'arrayindex ::= arrayindex indexdef', 'arrayindex ::=',
993 'indexdef ::= DOT DOLLARID', 'indexdef ::= DOT varvar',
994 'indexdef ::= DOT varvar AT ID', 'indexdef ::= DOT ID',
995 'indexdef ::= DOT INTEGER', 'indexdef ::= DOT LDEL expr RDEL',
996 'indexdef ::= OPENB ID CLOSEB', 'indexdef ::= OPENB ID DOT ID CLOSEB',
997 'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
998 'indexdef ::= OPENB INTEGER CLOSEB', 'indexdef ::= OPENB DOLLARID CLOSEB',
999 'indexdef ::= OPENB variable CLOSEB', 'indexdef ::= OPENB value CLOSEB',
1000 'indexdef ::= OPENB expr CLOSEB', 'indexdef ::= OPENB CLOSEB',
1001 'varvar ::= DOLLARID', 'varvar ::= DOLLAR', 'varvar ::= varvar varvarele',
1002 'varvarele ::= ID', 'varvarele ::= SIMPELOUTPUT', 'varvarele ::= LDEL expr RDEL',
1003 'object ::= varindexed objectchain', 'objectchain ::= objectelement',
1004 'objectchain ::= objectchain objectelement',
1005 'objectelement ::= PTR ID arrayindex', 'objectelement ::= PTR varvar arrayindex',
1006 'objectelement ::= PTR LDEL expr RDEL arrayindex',
1007 'objectelement ::= PTR ID LDEL expr RDEL arrayindex',
1008 'objectelement ::= PTR method', 'function ::= ns1 OPENP params CLOSEP',
1009 'method ::= ID OPENP params CLOSEP', 'method ::= DOLLARID OPENP params CLOSEP',
1010 'params ::= params COMMA expr', 'params ::= expr', 'params ::=',
1011 'modifierlist ::= modifierlist modifier modparameters',
1012 'modifierlist ::= modifier modparameters', 'modifier ::= VERT AT ID',
1013 'modifier ::= VERT ID', 'modparameters ::= modparameters modparameter',
1014 'modparameters ::=', 'modparameter ::= COLON value',
1015 'modparameter ::= COLON array', 'static_class_access ::= method',
1016 'static_class_access ::= method objectchain', 'static_class_access ::= ID',
1017 'static_class_access ::= DOLLARID arrayindex',
1018 'static_class_access ::= DOLLARID arrayindex objectchain', 'lop ::= LOGOP',
1019 'lop ::= SLOGOP', 'tlop ::= TLOGOP', 'scond ::= SINGLECOND',
1020 'array ::= OPENB arrayelements CLOSEB', 'arrayelements ::= arrayelement',
1021 'arrayelements ::= arrayelements COMMA arrayelement', 'arrayelements ::=',
1022 'arrayelement ::= value APTR expr', 'arrayelement ::= ID APTR expr',
1023 'arrayelement ::= expr', 'doublequoted_with_quotes ::= QUOTE QUOTE',
1024 'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
1025 'doublequoted ::= doublequoted doublequotedcontent',
1026 'doublequoted ::= doublequotedcontent',
1027 'doublequotedcontent ::= BACKTICK variable BACKTICK',
1028 'doublequotedcontent ::= BACKTICK expr BACKTICK',
1029 'doublequotedcontent ::= DOLLARID', 'doublequotedcontent ::= LDEL variable RDEL',
1030 'doublequotedcontent ::= LDEL expr RDEL', 'doublequotedcontent ::= smartytag',
1031 'doublequotedcontent ::= TEXT',);
1033 public function tokenName($tokenType)
1035 if ($tokenType === 0) {
1036 return 'End of Input';
1038 if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
1039 return $this->yyTokenName[ $tokenType ];
1045 public static function yy_destructor($yymajor, $yypminor)
1049 break; /* If no destructor action specified: do nothing */
1053 public function yy_pop_parser_stack()
1055 if (empty($this->yystack)) {
1058 $yytos = array_pop($this->yystack);
1059 if ($this->yyTraceFILE && $this->yyidx >= 0) {
1060 fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] . "\n");
1062 $yymajor = $yytos->major;
1063 self::yy_destructor($yymajor, $yytos->minor);
1069 public function __destruct()
1071 while ($this->yystack !== Array()) {
1072 $this->yy_pop_parser_stack();
1074 if (is_resource($this->yyTraceFILE)) {
1075 fclose($this->yyTraceFILE);
1079 public function yy_get_expected_tokens($token)
1081 static $res3 = array();
1082 static $res4 = array();
1083 $state = $this->yystack[ $this->yyidx ]->stateno;
1084 $expected = self::$yyExpectedTokens[ $state ];
1085 if (isset($res3[ $state ][ $token ])) {
1086 if ($res3[ $state ][ $token ]) {
1090 if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
1094 $stack = $this->yystack;
1095 $yyidx = $this->yyidx;
1097 $yyact = $this->yy_find_shift_action($token);
1098 if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1102 if ($done ++ == 100) {
1103 $this->yyidx = $yyidx;
1104 $this->yystack = $stack;
1105 // too much recursion prevents proper detection
1107 return array_unique($expected);
1109 $yyruleno = $yyact - self::YYNSTATE;
1110 $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
1111 $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
1112 self::$yyRuleInfo[ $yyruleno ][ 0 ]);
1113 if (isset(self::$yyExpectedTokens[ $nextstate ])) {
1114 $expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]);
1115 if (isset($res4[ $nextstate ][ $token ])) {
1116 if ($res4[ $nextstate ][ $token ]) {
1117 $this->yyidx = $yyidx;
1118 $this->yystack = $stack;
1119 return array_unique($expected);
1122 if ($res4[ $nextstate ][ $token ] =
1123 in_array($token, self::$yyExpectedTokens[ $nextstate ], true)
1125 $this->yyidx = $yyidx;
1126 $this->yystack = $stack;
1127 return array_unique($expected);
1131 if ($nextstate < self::YYNSTATE) {
1132 // we need to shift a non-terminal
1134 $x = new TP_yyStackEntry;
1135 $x->stateno = $nextstate;
1136 $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
1137 $this->yystack[ $this->yyidx ] = $x;
1139 } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
1140 $this->yyidx = $yyidx;
1141 $this->yystack = $stack;
1142 // the last token was just ignored, we can't accept
1143 // by ignoring input, this is in essence ignoring a
1145 return array_unique($expected);
1146 } elseif ($nextstate === self::YY_NO_ACTION) {
1147 $this->yyidx = $yyidx;
1148 $this->yystack = $stack;
1149 // input accepted, but not shifted (I guess)
1152 $yyact = $nextstate;
1160 $this->yyidx = $yyidx;
1161 $this->yystack = $stack;
1163 return array_unique($expected);
1166 public function yy_is_expected_token($token)
1168 static $res = array();
1169 static $res2 = array();
1171 return true; // 0 is not part of this
1173 $state = $this->yystack[ $this->yyidx ]->stateno;
1174 if (isset($res[ $state ][ $token ])) {
1175 if ($res[ $state ][ $token ]) {
1179 if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
1183 $stack = $this->yystack;
1184 $yyidx = $this->yyidx;
1186 $yyact = $this->yy_find_shift_action($token);
1187 if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1191 if ($done ++ == 100) {
1192 $this->yyidx = $yyidx;
1193 $this->yystack = $stack;
1194 // too much recursion prevents proper detection
1198 $yyruleno = $yyact - self::YYNSTATE;
1199 $this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
1200 $nextstate = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno,
1201 self::$yyRuleInfo[ $yyruleno ][ 0 ]);
1202 if (isset($res2[ $nextstate ][ $token ])) {
1203 if ($res2[ $nextstate ][ $token ]) {
1204 $this->yyidx = $yyidx;
1205 $this->yystack = $stack;
1209 if ($res2[ $nextstate ][ $token ] = (isset(self::$yyExpectedTokens[ $nextstate ]) &&
1210 in_array($token, self::$yyExpectedTokens[ $nextstate ],
1213 $this->yyidx = $yyidx;
1214 $this->yystack = $stack;
1218 if ($nextstate < self::YYNSTATE) {
1219 // we need to shift a non-terminal
1221 $x = new TP_yyStackEntry;
1222 $x->stateno = $nextstate;
1223 $x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
1224 $this->yystack[ $this->yyidx ] = $x;
1226 } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
1227 $this->yyidx = $yyidx;
1228 $this->yystack = $stack;
1230 // end of input: this is valid
1233 // the last token was just ignored, we can't accept
1234 // by ignoring input, this is in essence ignoring a
1237 } elseif ($nextstate === self::YY_NO_ACTION) {
1238 $this->yyidx = $yyidx;
1239 $this->yystack = $stack;
1240 // input accepted, but not shifted (I guess)
1243 $yyact = $nextstate;
1251 $this->yyidx = $yyidx;
1252 $this->yystack = $stack;
1257 public function yy_find_shift_action($iLookAhead)
1259 $stateno = $this->yystack[ $this->yyidx ]->stateno;
1261 /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
1262 if (!isset(self::$yy_shift_ofst[ $stateno ])) {
1264 return self::$yy_default[ $stateno ];
1266 $i = self::$yy_shift_ofst[ $stateno ];
1267 if ($i === self::YY_SHIFT_USE_DFLT) {
1268 return self::$yy_default[ $stateno ];
1270 if ($iLookAhead == self::YYNOCODE) {
1271 return self::YY_NO_ACTION;
1274 if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
1275 if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) &&
1276 ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0
1278 if ($this->yyTraceFILE) {
1279 fwrite($this->yyTraceFILE,
1280 $this->yyTracePrompt . "FALLBACK " . $this->yyTokenName[ $iLookAhead ] . " => " .
1281 $this->yyTokenName[ $iFallback ] . "\n");
1284 return $this->yy_find_shift_action($iFallback);
1287 return self::$yy_default[ $stateno ];
1289 return self::$yy_action[ $i ];
1293 public function yy_find_reduce_action($stateno, $iLookAhead)
1295 /* $stateno = $this->yystack[$this->yyidx]->stateno; */
1297 if (!isset(self::$yy_reduce_ofst[ $stateno ])) {
1298 return self::$yy_default[ $stateno ];
1300 $i = self::$yy_reduce_ofst[ $stateno ];
1301 if ($i == self::YY_REDUCE_USE_DFLT) {
1302 return self::$yy_default[ $stateno ];
1304 if ($iLookAhead == self::YYNOCODE) {
1305 return self::YY_NO_ACTION;
1308 if ($i < 0 || $i >= self::YY_SZ_ACTTAB || self::$yy_lookahead[ $i ] != $iLookAhead) {
1309 return self::$yy_default[ $stateno ];
1311 return self::$yy_action[ $i ];
1315 public function yy_shift($yyNewState, $yyMajor, $yypMinor)
1318 if ($this->yyidx >= self::YYSTACKDEPTH) {
1320 if ($this->yyTraceFILE) {
1321 fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
1323 while ($this->yyidx >= 0) {
1324 $this->yy_pop_parser_stack();
1326 #line 207 "../smarty/lexer/smarty_internal_templateparser.y"
1328 $this->internalError = true;
1329 $this->compiler->trigger_template_error("Stack overflow in template parser");
1333 $yytos = new TP_yyStackEntry;
1334 $yytos->stateno = $yyNewState;
1335 $yytos->major = $yyMajor;
1336 $yytos->minor = $yypMinor;
1337 $this->yystack[] = $yytos;
1338 if ($this->yyTraceFILE && $this->yyidx > 0) {
1339 fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, $yyNewState);
1340 fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
1341 for ($i = 1; $i <= $this->yyidx; $i ++) {
1342 fprintf($this->yyTraceFILE, " %s", $this->yyTokenName[ $this->yystack[ $i ]->major ]);
1344 fwrite($this->yyTraceFILE, "\n");
1348 public static $yyRuleInfo = array(array(0 => 62, 1 => 1), array(0 => 63, 1 => 1), array(0 => 63, 1 => 2),
1349 array(0 => 63, 1 => 0), array(0 => 64, 1 => 1), array(0 => 64, 1 => 1),
1350 array(0 => 64, 1 => 1), array(0 => 64, 1 => 1), array(0 => 67, 1 => 1),
1351 array(0 => 67, 1 => 2), array(0 => 64, 1 => 1), array(0 => 64, 1 => 1),
1352 array(0 => 66, 1 => 2), array(0 => 66, 1 => 3), array(0 => 68, 1 => 2),
1353 array(0 => 68, 1 => 0), array(0 => 69, 1 => 1), array(0 => 69, 1 => 1),
1354 array(0 => 65, 1 => 2), array(0 => 65, 1 => 1), array(0 => 70, 1 => 2),
1355 array(0 => 70, 1 => 3), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3),
1356 array(0 => 70, 1 => 2), array(0 => 70, 1 => 3), array(0 => 70, 1 => 4),
1357 array(0 => 70, 1 => 4), array(0 => 70, 1 => 5), array(0 => 70, 1 => 5),
1358 array(0 => 65, 1 => 1), array(0 => 70, 1 => 3), array(0 => 70, 1 => 2),
1359 array(0 => 70, 1 => 4), array(0 => 70, 1 => 5), array(0 => 70, 1 => 6),
1360 array(0 => 70, 1 => 2), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3),
1361 array(0 => 70, 1 => 2), array(0 => 70, 1 => 3), array(0 => 70, 1 => 8),
1362 array(0 => 79, 1 => 2), array(0 => 79, 1 => 1), array(0 => 70, 1 => 5),
1363 array(0 => 70, 1 => 7), array(0 => 70, 1 => 2), array(0 => 70, 1 => 6),
1364 array(0 => 70, 1 => 8), array(0 => 70, 1 => 6), array(0 => 70, 1 => 8),
1365 array(0 => 70, 1 => 3), array(0 => 70, 1 => 4), array(0 => 70, 1 => 2),
1366 array(0 => 65, 1 => 1), array(0 => 70, 1 => 2), array(0 => 70, 1 => 3),
1367 array(0 => 70, 1 => 4), array(0 => 70, 1 => 5), array(0 => 72, 1 => 2),
1368 array(0 => 72, 1 => 1), array(0 => 72, 1 => 0), array(0 => 82, 1 => 4),
1369 array(0 => 82, 1 => 2), array(0 => 82, 1 => 2), array(0 => 82, 1 => 2),
1370 array(0 => 82, 1 => 2), array(0 => 82, 1 => 2), array(0 => 82, 1 => 4),
1371 array(0 => 78, 1 => 1), array(0 => 78, 1 => 3), array(0 => 77, 1 => 3),
1372 array(0 => 77, 1 => 3), array(0 => 77, 1 => 3), array(0 => 77, 1 => 3),
1373 array(0 => 74, 1 => 1), array(0 => 74, 1 => 1), array(0 => 74, 1 => 3),
1374 array(0 => 74, 1 => 3), array(0 => 74, 1 => 3), array(0 => 74, 1 => 1),
1375 array(0 => 74, 1 => 2), array(0 => 74, 1 => 3), array(0 => 74, 1 => 3),
1376 array(0 => 74, 1 => 2), array(0 => 74, 1 => 3), array(0 => 74, 1 => 3),
1377 array(0 => 83, 1 => 7), array(0 => 83, 1 => 7), array(0 => 73, 1 => 1),
1378 array(0 => 73, 1 => 2), array(0 => 73, 1 => 2), array(0 => 73, 1 => 2),
1379 array(0 => 73, 1 => 2), array(0 => 73, 1 => 1), array(0 => 73, 1 => 1),
1380 array(0 => 73, 1 => 3), array(0 => 73, 1 => 2), array(0 => 73, 1 => 2),
1381 array(0 => 73, 1 => 1), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3),
1382 array(0 => 73, 1 => 3), array(0 => 73, 1 => 3), array(0 => 73, 1 => 1),
1383 array(0 => 73, 1 => 1), array(0 => 73, 1 => 3), array(0 => 73, 1 => 1),
1384 array(0 => 73, 1 => 2), array(0 => 73, 1 => 1), array(0 => 73, 1 => 3),
1385 array(0 => 89, 1 => 1), array(0 => 89, 1 => 1), array(0 => 71, 1 => 1),
1386 array(0 => 71, 1 => 1), array(0 => 71, 1 => 3), array(0 => 71, 1 => 1),
1387 array(0 => 71, 1 => 3), array(0 => 71, 1 => 4), array(0 => 71, 1 => 3),
1388 array(0 => 71, 1 => 4), array(0 => 75, 1 => 2), array(0 => 75, 1 => 2),
1389 array(0 => 93, 1 => 2), array(0 => 93, 1 => 0), array(0 => 94, 1 => 2),
1390 array(0 => 94, 1 => 2), array(0 => 94, 1 => 4), array(0 => 94, 1 => 2),
1391 array(0 => 94, 1 => 2), array(0 => 94, 1 => 4), array(0 => 94, 1 => 3),
1392 array(0 => 94, 1 => 5), array(0 => 94, 1 => 3), array(0 => 94, 1 => 3),
1393 array(0 => 94, 1 => 3), array(0 => 94, 1 => 3), array(0 => 94, 1 => 3),
1394 array(0 => 94, 1 => 3), array(0 => 94, 1 => 2), array(0 => 80, 1 => 1),
1395 array(0 => 80, 1 => 1), array(0 => 80, 1 => 2), array(0 => 95, 1 => 1),
1396 array(0 => 95, 1 => 1), array(0 => 95, 1 => 3), array(0 => 92, 1 => 2),
1397 array(0 => 96, 1 => 1), array(0 => 96, 1 => 2), array(0 => 97, 1 => 3),
1398 array(0 => 97, 1 => 3), array(0 => 97, 1 => 5), array(0 => 97, 1 => 6),
1399 array(0 => 97, 1 => 2), array(0 => 88, 1 => 4), array(0 => 98, 1 => 4),
1400 array(0 => 98, 1 => 4), array(0 => 99, 1 => 3), array(0 => 99, 1 => 1),
1401 array(0 => 99, 1 => 0), array(0 => 76, 1 => 3), array(0 => 76, 1 => 2),
1402 array(0 => 100, 1 => 3), array(0 => 100, 1 => 2), array(0 => 81, 1 => 2),
1403 array(0 => 81, 1 => 0), array(0 => 101, 1 => 2), array(0 => 101, 1 => 2),
1404 array(0 => 91, 1 => 1), array(0 => 91, 1 => 2), array(0 => 91, 1 => 1),
1405 array(0 => 91, 1 => 2), array(0 => 91, 1 => 3), array(0 => 86, 1 => 1),
1406 array(0 => 86, 1 => 1), array(0 => 85, 1 => 1), array(0 => 87, 1 => 1),
1407 array(0 => 84, 1 => 3), array(0 => 102, 1 => 1), array(0 => 102, 1 => 3),
1408 array(0 => 102, 1 => 0), array(0 => 103, 1 => 3), array(0 => 103, 1 => 3),
1409 array(0 => 103, 1 => 1), array(0 => 90, 1 => 2), array(0 => 90, 1 => 3),
1410 array(0 => 104, 1 => 2), array(0 => 104, 1 => 1), array(0 => 105, 1 => 3),
1411 array(0 => 105, 1 => 3), array(0 => 105, 1 => 1), array(0 => 105, 1 => 3),
1412 array(0 => 105, 1 => 3), array(0 => 105, 1 => 1), array(0 => 105, 1 => 1),);
1414 public static $yyReduceMap = array(0 => 0, 1 => 1, 2 => 2, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 16 => 8, 17 => 8,
1415 43 => 8, 66 => 8, 67 => 8, 75 => 8, 76 => 8, 80 => 8, 89 => 8, 94 => 8, 95 => 8,
1416 100 => 8, 104 => 8, 105 => 8, 109 => 8, 111 => 8, 116 => 8, 178 => 8, 183 => 8,
1417 9 => 9, 10 => 10, 11 => 11, 12 => 12, 15 => 12, 13 => 13, 74 => 13, 14 => 14,
1418 90 => 14, 92 => 14, 93 => 14, 123 => 14, 18 => 18, 19 => 19, 20 => 20, 22 => 20,
1419 24 => 20, 21 => 21, 23 => 21, 25 => 21, 26 => 26, 27 => 26, 28 => 28, 29 => 29,
1420 30 => 30, 31 => 31, 32 => 32, 33 => 33, 34 => 34, 35 => 35, 36 => 36, 37 => 37,
1421 38 => 38, 40 => 38, 39 => 39, 41 => 41, 42 => 42, 44 => 44, 45 => 45, 46 => 46,
1422 47 => 47, 49 => 47, 48 => 48, 50 => 48, 51 => 51, 52 => 52, 53 => 53, 54 => 54,
1423 55 => 55, 56 => 56, 57 => 57, 58 => 58, 59 => 59, 60 => 60, 69 => 60, 158 => 60,
1424 162 => 60, 166 => 60, 167 => 60, 61 => 61, 159 => 61, 165 => 61, 62 => 62,
1425 63 => 63, 64 => 63, 65 => 65, 143 => 65, 68 => 68, 70 => 70, 71 => 71, 72 => 71,
1426 73 => 73, 77 => 77, 78 => 78, 79 => 78, 81 => 81, 108 => 81, 82 => 82, 83 => 83,
1427 84 => 84, 85 => 85, 86 => 86, 87 => 87, 88 => 88, 91 => 91, 96 => 96, 97 => 97,
1428 98 => 98, 99 => 99, 101 => 101, 102 => 102, 103 => 102, 106 => 106, 107 => 107,
1429 110 => 110, 112 => 112, 113 => 113, 114 => 114, 115 => 115, 117 => 117,
1430 118 => 118, 119 => 119, 120 => 120, 121 => 121, 122 => 122, 124 => 124,
1431 180 => 124, 125 => 125, 126 => 126, 127 => 127, 128 => 128, 129 => 129,
1432 130 => 130, 138 => 130, 131 => 131, 132 => 132, 133 => 133, 134 => 133,
1433 136 => 133, 137 => 133, 135 => 135, 139 => 139, 140 => 140, 141 => 141,
1434 184 => 141, 142 => 142, 144 => 144, 145 => 145, 146 => 146, 147 => 147,
1435 148 => 148, 149 => 149, 150 => 150, 151 => 151, 152 => 152, 153 => 153,
1436 154 => 154, 155 => 155, 156 => 156, 157 => 157, 160 => 160, 161 => 161,
1437 163 => 163, 164 => 164, 168 => 168, 169 => 169, 170 => 170, 171 => 171,
1438 172 => 172, 173 => 173, 174 => 174, 175 => 175, 176 => 176, 177 => 177,
1439 179 => 179, 181 => 181, 182 => 182, 185 => 185, 186 => 186, 187 => 187,
1440 188 => 188, 189 => 188, 191 => 188, 190 => 190, 192 => 192, 193 => 193,
1443 #line 218 "../smarty/lexer/smarty_internal_templateparser.y"
1446 $this->root_buffer->prepend_array($this, $this->template_prefix);
1447 $this->root_buffer->append_array($this, $this->template_postfix);
1448 $this->_retvalue = $this->root_buffer->to_smarty_php($this);
1451 #line 228 "../smarty/lexer/smarty_internal_templateparser.y"
1454 if ($this->yystack[ $this->yyidx + 0 ]->minor != null) {
1455 $this->current_buffer->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
1459 #line 235 "../smarty/lexer/smarty_internal_templateparser.y"
1462 if ($this->yystack[ $this->yyidx + 0 ]->minor != null) {
1463 // because of possible code injection
1464 $this->current_buffer->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
1468 #line 249 "../smarty/lexer/smarty_internal_templateparser.y"
1471 if ($this->compiler->has_code) {
1472 $this->_retvalue = $this->mergePrefixCode($this->yystack[ $this->yyidx + 0 ]->minor);
1474 $this->_retvalue = null;
1476 $this->compiler->has_variable_string = false;
1477 $this->block_nesting_level = count($this->compiler->_tag_stack);
1480 #line 260 "../smarty/lexer/smarty_internal_templateparser.y"
1483 $this->_retvalue = new Smarty_Internal_ParseTree_Text($this->yystack[ $this->yyidx + 0 ]->minor);
1486 #line 264 "../smarty/lexer/smarty_internal_templateparser.y"
1489 $code = $this->compiler->compileTag('private_php',
1490 array(array('code' => $this->yystack[ $this->yyidx + 0 ]->minor),
1491 array('type' => $this->lex->phpType)), array());
1492 if ($this->compiler->has_code && !empty($code)) {
1494 foreach ($this->compiler->prefix_code as $code) {
1497 $this->compiler->prefix_code = array();
1499 new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp . $code, true));
1501 $this->_retvalue = null;
1505 #line 275 "../smarty/lexer/smarty_internal_templateparser.y"
1508 $this->_retvalue = $this->compiler->processText($this->yystack[ $this->yyidx + 0 ]->minor);
1511 #line 279 "../smarty/lexer/smarty_internal_templateparser.y"
1514 $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
1517 #line 283 "../smarty/lexer/smarty_internal_templateparser.y"
1520 $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
1523 #line 288 "../smarty/lexer/smarty_internal_templateparser.y"
1526 $this->strip = true;
1529 #line 292 "../smarty/lexer/smarty_internal_templateparser.y"
1532 $this->strip = false;
1535 #line 297 "../smarty/lexer/smarty_internal_templateparser.y"
1538 $this->_retvalue = '';
1541 #line 301 "../smarty/lexer/smarty_internal_templateparser.y"
1544 $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
1547 #line 305 "../smarty/lexer/smarty_internal_templateparser.y"
1550 $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
1553 #line 321 "../smarty/lexer/smarty_internal_templateparser.y"
1556 $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
1559 #line 327 "../smarty/lexer/smarty_internal_templateparser.y"
1563 trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
1565 if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
1566 $this->_retvalue = $this->compiler->compileTag('private_print_expression', array('nocache'),
1567 array('value' => $this->compiler->compileVariable('\'' .
1571 $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
1572 array('value' => $this->compiler->compileVariable('\'' .
1578 #line 337 "../smarty/lexer/smarty_internal_templateparser.y"
1581 $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
1582 array('value' => $this->yystack[ $this->yyidx + 0 ]->minor));
1585 #line 341 "../smarty/lexer/smarty_internal_templateparser.y"
1589 $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
1590 array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor));
1593 #line 364 "../smarty/lexer/smarty_internal_templateparser.y"
1596 $this->_retvalue = $this->compiler->compileTag('assign', array(array('value' => $this->yystack[ $this->yyidx +
1598 array('var' => '\'' .
1599 substr($this->yystack[ $this->yyidx +
1604 #line 372 "../smarty/lexer/smarty_internal_templateparser.y"
1607 $this->_retvalue = $this->compiler->compileTag('assign',
1608 array_merge(array(array('value' => $this->yystack[ $this->yyidx +
1610 array('var' => '\'' .
1611 substr($this->yystack[ $this->yyidx +
1614 $this->yystack[ $this->yyidx + 0 ]->minor));
1617 #line 376 "../smarty/lexer/smarty_internal_templateparser.y"
1620 $this->_retvalue = $this->compiler->compileTag('assign',
1621 array_merge(array(array('value' => $this->yystack[ $this->yyidx +
1623 array('var' => $this->yystack[ $this->yyidx +
1624 - 3 ]->minor[ 'var' ])),
1625 $this->yystack[ $this->yyidx + 0 ]->minor),
1626 array('smarty_internal_index' => $this->yystack[ $this->yyidx +
1627 - 3 ]->minor[ 'smarty_internal_index' ]));
1630 #line 381 "../smarty/lexer/smarty_internal_templateparser.y"
1634 trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length));
1635 if ($tag == 'strip') {
1636 $this->strip = true;
1637 $this->_retvalue = null;;
1639 if (defined($tag)) {
1640 if ($this->security) {
1641 $this->security->isTrustedConstant($tag, $this->compiler);
1644 $this->compiler->compileTag('private_print_expression', array(), array('value' => $tag));
1646 if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
1647 $this->_retvalue = $this->compiler->compileTag($match[ 1 ], array("'nocache'"));
1649 $this->_retvalue = $this->compiler->compileTag($tag, array());
1655 #line 403 "../smarty/lexer/smarty_internal_templateparser.y"
1658 if (defined($this->yystack[ $this->yyidx + - 1 ]->minor)) {
1659 if ($this->security) {
1660 $this->security->isTrustedConstant($this->yystack[ $this->yyidx + - 1 ]->minor, $this->compiler);
1663 $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
1664 array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor));
1666 $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 1 ]->minor,
1667 $this->yystack[ $this->yyidx + 0 ]->minor);
1671 #line 413 "../smarty/lexer/smarty_internal_templateparser.y"
1674 if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
1675 if ($this->security) {
1676 $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
1678 $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(),
1679 array('value' => $this->yystack[ $this->yyidx + 0 ]->minor));
1681 $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor, array());
1685 #line 426 "../smarty/lexer/smarty_internal_templateparser.y"
1688 if (defined($this->yystack[ $this->yyidx + - 2 ]->minor)) {
1689 if ($this->security) {
1690 $this->security->isTrustedConstant($this->yystack[ $this->yyidx + - 2 ]->minor, $this->compiler);
1693 $this->compiler->compileTag('private_print_expression', $this->yystack[ $this->yyidx + 0 ]->minor,
1694 array('value' => $this->yystack[ $this->yyidx + - 2 ]->minor,
1695 'modifierlist' => $this->yystack[ $this->yyidx + - 1 ]->minor));
1697 $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 2 ]->minor,
1698 $this->yystack[ $this->yyidx + 0 ]->minor,
1699 array('modifierlist' => $this->yystack[ $this->yyidx +
1704 #line 438 "../smarty/lexer/smarty_internal_templateparser.y"
1707 $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 3 ]->minor,
1708 $this->yystack[ $this->yyidx + 0 ]->minor,
1709 array('object_method' => $this->yystack[ $this->yyidx +
1713 #line 443 "../smarty/lexer/smarty_internal_templateparser.y"
1716 $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 4 ]->minor,
1717 $this->yystack[ $this->yyidx + 0 ]->minor,
1718 array('modifierlist' => $this->yystack[ $this->yyidx +
1720 'object_method' => $this->yystack[ $this->yyidx +
1724 #line 448 "../smarty/lexer/smarty_internal_templateparser.y"
1727 $this->_retvalue = $this->compiler->compileTag('make_nocache', array(array('var' => '\'' .
1728 substr($this->yystack[ $this->yyidx +
1733 #line 453 "../smarty/lexer/smarty_internal_templateparser.y"
1736 $tag = trim(substr($this->yystack[ $this->yyidx + - 1 ]->minor, $this->lex->ldel_length));
1737 $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(),
1738 array('if condition' => $this->yystack[ $this->yyidx +
1742 #line 458 "../smarty/lexer/smarty_internal_templateparser.y"
1745 $tag = trim(substr($this->yystack[ $this->yyidx + - 2 ]->minor, $this->lex->ldel_length));
1746 $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag,
1747 $this->yystack[ $this->yyidx + 0 ]->minor,
1748 array('if condition' => $this->yystack[ $this->yyidx +
1752 #line 463 "../smarty/lexer/smarty_internal_templateparser.y"
1755 $tag = trim(substr($this->yystack[ $this->yyidx + - 1 ]->minor, $this->lex->ldel_length));
1756 $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(),
1757 array('if condition' => $this->yystack[ $this->yyidx +
1761 #line 474 "../smarty/lexer/smarty_internal_templateparser.y"
1764 $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
1765 array(array('start' => $this->yystack[ $this->yyidx +
1767 array('ifexp' => $this->yystack[ $this->yyidx +
1769 array('var' => $this->yystack[ $this->yyidx +
1771 array('step' => $this->yystack[ $this->yyidx +
1776 #line 478 "../smarty/lexer/smarty_internal_templateparser.y"
1779 $this->_retvalue = '=' . $this->yystack[ $this->yyidx + 0 ]->minor;
1782 #line 486 "../smarty/lexer/smarty_internal_templateparser.y"
1785 $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
1786 array(array('start' => $this->yystack[ $this->yyidx +
1788 array('to' => $this->yystack[ $this->yyidx +
1793 #line 490 "../smarty/lexer/smarty_internal_templateparser.y"
1796 $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
1797 array(array('start' => $this->yystack[ $this->yyidx +
1799 array('to' => $this->yystack[ $this->yyidx +
1801 array('step' => $this->yystack[ $this->yyidx +
1806 #line 495 "../smarty/lexer/smarty_internal_templateparser.y"
1809 $this->_retvalue = $this->compiler->compileTag('foreach', $this->yystack[ $this->yyidx + 0 ]->minor);
1812 #line 500 "../smarty/lexer/smarty_internal_templateparser.y"
1815 $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
1816 array(array('from' => $this->yystack[ $this->yyidx +
1818 array('item' => $this->yystack[ $this->yyidx +
1822 #line 504 "../smarty/lexer/smarty_internal_templateparser.y"
1825 $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[ $this->yyidx + 0 ]->minor,
1826 array(array('from' => $this->yystack[ $this->yyidx +
1828 array('item' => $this->yystack[ $this->yyidx +
1830 array('key' => $this->yystack[ $this->yyidx +
1834 #line 517 "../smarty/lexer/smarty_internal_templateparser.y"
1837 $this->_retvalue = $this->compiler->compileTag('setfilter', array(),
1838 array('modifier_list' => array(array_merge(array($this->yystack[ $this->yyidx +
1840 $this->yystack[ $this->yyidx +
1844 #line 521 "../smarty/lexer/smarty_internal_templateparser.y"
1847 $this->_retvalue = $this->compiler->compileTag('setfilter', array(),
1848 array('modifier_list' => array_merge(array(array_merge(array($this->yystack[ $this->yyidx +
1850 $this->yystack[ $this->yyidx +
1852 $this->yystack[ $this->yyidx +
1856 #line 526 "../smarty/lexer/smarty_internal_templateparser.y"
1859 $j = strrpos($this->yystack[ $this->yyidx + 0 ]->minor, '.');
1860 if ($this->yystack[ $this->yyidx + 0 ]->minor[ $j + 1 ] == 'c') {
1861 // {$smarty.block.child}
1862 $this->_retvalue = $this->compiler->compileTag('block_child', array());;
1864 // {$smarty.block.parent}
1865 $this->_retvalue = $this->compiler->compileTag('block_parent', array());;
1869 #line 539 "../smarty/lexer/smarty_internal_templateparser.y"
1873 trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
1875 if ($tag == 'strip') {
1876 $this->strip = false;
1877 $this->_retvalue = null;
1879 $this->_retvalue = $this->compiler->compileTag($tag . 'close', array());
1883 #line 548 "../smarty/lexer/smarty_internal_templateparser.y"
1886 $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + 0 ]->minor . 'close', array());
1889 #line 552 "../smarty/lexer/smarty_internal_templateparser.y"
1892 $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 1 ]->minor . 'close', array(),
1893 array('modifier_list' => $this->yystack[ $this->yyidx +
1897 #line 557 "../smarty/lexer/smarty_internal_templateparser.y"
1900 $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 2 ]->minor . 'close', array(),
1901 array('object_method' => $this->yystack[ $this->yyidx +
1905 #line 561 "../smarty/lexer/smarty_internal_templateparser.y"
1908 $this->_retvalue = $this->compiler->compileTag($this->yystack[ $this->yyidx + - 3 ]->minor . 'close', array(),
1909 array('object_method' => $this->yystack[ $this->yyidx +
1911 'modifier_list' => $this->yystack[ $this->yyidx +
1915 #line 569 "../smarty/lexer/smarty_internal_templateparser.y"
1918 $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
1919 $this->_retvalue[] = $this->yystack[ $this->yyidx + 0 ]->minor;
1922 #line 575 "../smarty/lexer/smarty_internal_templateparser.y"
1925 $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
1928 #line 580 "../smarty/lexer/smarty_internal_templateparser.y"
1931 $this->_retvalue = array();
1934 #line 585 "../smarty/lexer/smarty_internal_templateparser.y"
1937 if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
1938 if ($this->security) {
1939 $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
1942 array($this->yystack[ $this->yyidx + - 2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
1945 array($this->yystack[ $this->yyidx + - 2 ]->minor => '\'' . $this->yystack[ $this->yyidx + 0 ]->minor .
1950 #line 596 "../smarty/lexer/smarty_internal_templateparser.y"
1954 array(trim($this->yystack[ $this->yyidx + - 1 ]->minor, " =\n\r\t") => $this->yystack[ $this->yyidx +
1958 #line 604 "../smarty/lexer/smarty_internal_templateparser.y"
1961 $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
1964 #line 616 "../smarty/lexer/smarty_internal_templateparser.y"
1968 array($this->yystack[ $this->yyidx + - 2 ]->minor => $this->yystack[ $this->yyidx + 0 ]->minor);
1971 #line 629 "../smarty/lexer/smarty_internal_templateparser.y"
1974 $this->yystack[ $this->yyidx + - 2 ]->minor[] = $this->yystack[ $this->yyidx + 0 ]->minor;
1975 $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor;
1978 #line 634 "../smarty/lexer/smarty_internal_templateparser.y"
1981 $this->_retvalue = array('var' => '\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '\'',
1982 'value' => $this->yystack[ $this->yyidx + 0 ]->minor);
1985 #line 641 "../smarty/lexer/smarty_internal_templateparser.y"
1988 $this->_retvalue = array('var' => $this->yystack[ $this->yyidx + - 2 ]->minor,
1989 'value' => $this->yystack[ $this->yyidx + 0 ]->minor);
1992 #line 665 "../smarty/lexer/smarty_internal_templateparser.y"
1996 '$_smarty_tpl->getStreamVariable(\'' . substr($this->yystack[ $this->yyidx + - 2 ]->minor, 1) . '://' .
1997 $this->yystack[ $this->yyidx + 0 ]->minor . '\')';
2000 #line 670 "../smarty/lexer/smarty_internal_templateparser.y"
2004 $this->yystack[ $this->yyidx + - 2 ]->minor . trim($this->yystack[ $this->yyidx + - 1 ]->minor) .
2005 $this->yystack[ $this->yyidx + 0 ]->minor;
2008 #line 684 "../smarty/lexer/smarty_internal_templateparser.y"
2011 $this->_retvalue = $this->compiler->compileTag('private_modifier', array(),
2012 array('value' => $this->yystack[ $this->yyidx + - 1 ]->minor,
2013 'modifierlist' => $this->yystack[ $this->yyidx +
2017 #line 690 "../smarty/lexer/smarty_internal_templateparser.y"
2021 $this->yystack[ $this->yyidx + - 1 ]->minor[ 'pre' ] . $this->yystack[ $this->yyidx + - 2 ]->minor .
2022 $this->yystack[ $this->yyidx + - 1 ]->minor[ 'op' ] . $this->yystack[ $this->yyidx + 0 ]->minor . ')';
2025 #line 694 "../smarty/lexer/smarty_internal_templateparser.y"
2028 $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor .
2029 $this->yystack[ $this->yyidx + 0 ]->minor;
2032 #line 698 "../smarty/lexer/smarty_internal_templateparser.y"
2036 $this->yystack[ $this->yyidx + 0 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
2039 #line 702 "../smarty/lexer/smarty_internal_templateparser.y"
2042 $this->_retvalue = 'in_array(' . $this->yystack[ $this->yyidx + - 2 ]->minor . ',' .
2043 $this->yystack[ $this->yyidx + 0 ]->minor . ')';
2046 #line 706 "../smarty/lexer/smarty_internal_templateparser.y"
2049 $this->_retvalue = 'in_array(' . $this->yystack[ $this->yyidx + - 2 ]->minor . ',(array)' .
2050 $this->yystack[ $this->yyidx + 0 ]->minor . ')';
2053 #line 714 "../smarty/lexer/smarty_internal_templateparser.y"
2056 $this->_retvalue = $this->yystack[ $this->yyidx + - 5 ]->minor . ' ? ' . $this->compiler->compileVariable('\'' .
2057 substr($this->yystack[ $this->yyidx +
2061 ' : ' . $this->yystack[ $this->yyidx + 0 ]->minor;
2064 #line 718 "../smarty/lexer/smarty_internal_templateparser.y"
2068 $this->yystack[ $this->yyidx + - 5 ]->minor . ' ? ' . $this->yystack[ $this->yyidx + - 2 ]->minor . ' : ' .
2069 $this->yystack[ $this->yyidx + 0 ]->minor;
2072 #line 733 "../smarty/lexer/smarty_internal_templateparser.y"
2075 $this->_retvalue = '!' . $this->yystack[ $this->yyidx + 0 ]->minor;
2078 #line 754 "../smarty/lexer/smarty_internal_templateparser.y"
2082 $this->yystack[ $this->yyidx + - 2 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
2085 #line 758 "../smarty/lexer/smarty_internal_templateparser.y"
2088 $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . '.';
2091 #line 762 "../smarty/lexer/smarty_internal_templateparser.y"
2094 $this->_retvalue = '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
2097 #line 767 "../smarty/lexer/smarty_internal_templateparser.y"
2100 if (defined($this->yystack[ $this->yyidx + 0 ]->minor)) {
2101 if ($this->security) {
2102 $this->security->isTrustedConstant($this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler);
2104 $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
2106 $this->_retvalue = '\'' . $this->yystack[ $this->yyidx + 0 ]->minor . '\'';
2110 #line 784 "../smarty/lexer/smarty_internal_templateparser.y"
2113 $this->_retvalue = "(" . $this->yystack[ $this->yyidx + - 1 ]->minor . ")";
2116 #line 788 "../smarty/lexer/smarty_internal_templateparser.y"
2119 $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + - 1 ]->minor .
2120 $this->yystack[ $this->yyidx + 0 ]->minor;
2123 #line 806 "../smarty/lexer/smarty_internal_templateparser.y"
2126 $prefixVar = $this->compiler->getNewPrefixVariable();
2127 if ($this->yystack[ $this->yyidx + - 2 ]->minor[ 'var' ] == '\'smarty\'') {
2128 $this->compiler->appendPrefixCode("<?php $prefixVar" . ' = ' .
2129 $this->compiler->compileTag('private_special_variable', array(),
2130 $this->yystack[ $this->yyidx +
2131 - 2 ]->minor[ 'smarty_internal_index' ]) .
2134 $this->compiler->appendPrefixCode("<?php $prefixVar" . ' = ' .
2135 $this->compiler->compileVariable($this->yystack[ $this->yyidx +
2136 - 2 ]->minor[ 'var' ]) .
2137 $this->yystack[ $this->yyidx + - 2 ]->minor[ 'smarty_internal_index' ] .
2140 $this->_retvalue = $prefixVar . '::' . $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
2141 $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
2144 #line 817 "../smarty/lexer/smarty_internal_templateparser.y"
2147 $prefixVar = $this->compiler->getNewPrefixVariable();
2148 $tmp = $this->compiler->appendCode('<?php ob_start();?>', $this->yystack[ $this->yyidx + 0 ]->minor);
2149 $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php $prefixVar" . '=ob_get_clean();?>'));
2150 $this->_retvalue = $prefixVar;
2153 #line 834 "../smarty/lexer/smarty_internal_templateparser.y"
2156 if (!in_array(strtolower($this->yystack[ $this->yyidx + - 2 ]->minor), array('self', 'parent')) &&
2157 (!$this->security ||
2158 $this->security->isTrustedStaticClassAccess($this->yystack[ $this->yyidx + - 2 ]->minor,
2159 $this->yystack[ $this->yyidx + 0 ]->minor, $this->compiler))
2161 if (isset($this->smarty->registered_classes[ $this->yystack[ $this->yyidx + - 2 ]->minor ])) {
2163 $this->smarty->registered_classes[ $this->yystack[ $this->yyidx + - 2 ]->minor ] . '::' .
2164 $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] . $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
2166 $this->_retvalue = $this->yystack[ $this->yyidx + - 2 ]->minor . '::' .
2167 $this->yystack[ $this->yyidx + 0 ]->minor[ 0 ] .
2168 $this->yystack[ $this->yyidx + 0 ]->minor[ 1 ];
2171 $this->compiler->trigger_template_error("static class '" . $this->yystack[ $this->yyidx + - 2 ]->minor .
2172 "' is undefined or not allowed by security setting");
2176 #line 853 "../smarty/lexer/smarty_internal_templateparser.y"
2179 $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
2182 #line 864 "../smarty/lexer/smarty_internal_templateparser.y"
2186 $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'');
2189 #line 867 "../smarty/lexer/smarty_internal_templateparser.y"
2192 if ($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ] == '\'smarty\'') {
2193 $smarty_var = $this->compiler->compileTag('private_special_variable', array(),
2194 $this->yystack[ $this->yyidx +
2195 0 ]->minor[ 'smarty_internal_index' ]);
2196 $this->_retvalue = $smarty_var;
2198 // used for array reset,next,prev,end,current
2199 $this->last_variable = $this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ];
2200 $this->last_index = $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
2201 $this->_retvalue = $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor[ 'var' ]) .
2202 $this->yystack[ $this->yyidx + 0 ]->minor[ 'smarty_internal_index' ];
2206 #line 880 "../smarty/lexer/smarty_internal_templateparser.y"
2209 $this->_retvalue = '$_smarty_tpl->tpl_vars[' . $this->yystack[ $this->yyidx + - 2 ]->minor . ']->' .
2210 $this->yystack[ $this->yyidx + 0 ]->minor;
2213 #line 890 "../smarty/lexer/smarty_internal_templateparser.y"
2217 $this->compiler->compileConfigVariable("'" . $this->yystack[ $this->yyidx + - 1 ]->minor . "'");
2220 #line 894 "../smarty/lexer/smarty_internal_templateparser.y"
2223 $this->_retvalue = '(is_array($tmp = ' .
2224 $this->compiler->compileConfigVariable("'" . $this->yystack[ $this->yyidx + - 2 ]->minor .
2226 $this->yystack[ $this->yyidx + 0 ]->minor . ' :null)';
2229 #line 898 "../smarty/lexer/smarty_internal_templateparser.y"
2232 $this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + - 1 ]->minor);
2235 #line 902 "../smarty/lexer/smarty_internal_templateparser.y"
2239 '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[ $this->yyidx + - 2 ]->minor) .
2240 ') ? $tmp' . $this->yystack[ $this->yyidx + 0 ]->minor . ' : null)';
2243 #line 906 "../smarty/lexer/smarty_internal_templateparser.y"
2246 $this->_retvalue = array('var' => '\'' . substr($this->yystack[ $this->yyidx + - 1 ]->minor, 1) . '\'',
2247 'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor);
2250 #line 909 "../smarty/lexer/smarty_internal_templateparser.y"
2253 $this->_retvalue = array('var' => $this->yystack[ $this->yyidx + - 1 ]->minor,
2254 'smarty_internal_index' => $this->yystack[ $this->yyidx + 0 ]->minor);
2257 #line 922 "../smarty/lexer/smarty_internal_templateparser.y"
2263 #line 928 "../smarty/lexer/smarty_internal_templateparser.y"
2267 '[' . $this->compiler->compileVariable('\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'') .
2271 #line 931 "../smarty/lexer/smarty_internal_templateparser.y"
2274 $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + 0 ]->minor) . ']';
2277 #line 935 "../smarty/lexer/smarty_internal_templateparser.y"
2280 $this->_retvalue = '[' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 2 ]->minor) . '->' .
2281 $this->yystack[ $this->yyidx + 0 ]->minor . ']';
2284 #line 939 "../smarty/lexer/smarty_internal_templateparser.y"
2287 $this->_retvalue = "['" . $this->yystack[ $this->yyidx + 0 ]->minor . "']";
2290 #line 943 "../smarty/lexer/smarty_internal_templateparser.y"
2293 $this->_retvalue = '[' . $this->yystack[ $this->yyidx + 0 ]->minor . ']';
2296 #line 948 "../smarty/lexer/smarty_internal_templateparser.y"
2299 $this->_retvalue = '[' . $this->yystack[ $this->yyidx + - 1 ]->minor . ']';
2302 #line 953 "../smarty/lexer/smarty_internal_templateparser.y"
2305 $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
2306 $this->yystack[ $this->yyidx +
2312 #line 957 "../smarty/lexer/smarty_internal_templateparser.y"
2315 $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' .
2316 $this->yystack[ $this->yyidx +
2319 $this->yystack[ $this->yyidx +
2324 #line 960 "../smarty/lexer/smarty_internal_templateparser.y"
2327 $this->_retvalue = '[' . $this->yystack[ $this->yyidx + - 1 ]->minor . ']';
2330 #line 966 "../smarty/lexer/smarty_internal_templateparser.y"
2333 $this->_retvalue = '[' . $this->compiler->compileVariable('\'' .
2334 substr($this->yystack[ $this->yyidx + - 1 ]->minor,
2338 #line 982 "../smarty/lexer/smarty_internal_templateparser.y"
2341 $this->_retvalue = '[]';
2344 #line 992 "../smarty/lexer/smarty_internal_templateparser.y"
2347 $this->_retvalue = '\'' . substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) . '\'';
2350 #line 996 "../smarty/lexer/smarty_internal_templateparser.y"
2353 $this->_retvalue = "''";
2356 #line 1001 "../smarty/lexer/smarty_internal_templateparser.y"
2360 $this->yystack[ $this->yyidx + - 1 ]->minor . '.' . $this->yystack[ $this->yyidx + 0 ]->minor;
2363 #line 1009 "../smarty/lexer/smarty_internal_templateparser.y"
2367 trim(substr($this->yystack[ $this->yyidx + 0 ]->minor, $this->lex->ldel_length, - $this->lex->rdel_length),
2369 $this->_retvalue = $this->compiler->compileVariable('\'' . $var . '\'');
2372 #line 1015 "../smarty/lexer/smarty_internal_templateparser.y"
2375 $this->_retvalue = '(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
2378 #line 1022 "../smarty/lexer/smarty_internal_templateparser.y"
2381 if ($this->yystack[ $this->yyidx + - 1 ]->minor[ 'var' ] == '\'smarty\'') {
2382 $this->_retvalue = $this->compiler->compileTag('private_special_variable', array(),
2383 $this->yystack[ $this->yyidx +
2384 - 1 ]->minor[ 'smarty_internal_index' ]) .
2385 $this->yystack[ $this->yyidx + 0 ]->minor;
2387 $this->_retvalue = $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 1 ]->minor[ 'var' ]) .
2388 $this->yystack[ $this->yyidx + - 1 ]->minor[ 'smarty_internal_index' ] .
2389 $this->yystack[ $this->yyidx + 0 ]->minor;
2393 #line 1031 "../smarty/lexer/smarty_internal_templateparser.y"
2396 $this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
2399 #line 1036 "../smarty/lexer/smarty_internal_templateparser.y"
2402 $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
2405 #line 1041 "../smarty/lexer/smarty_internal_templateparser.y"
2408 if ($this->security && substr($this->yystack[ $this->yyidx + - 1 ]->minor, 0, 1) == '_') {
2409 $this->compiler->trigger_template_error(self::Err1);
2412 '->' . $this->yystack[ $this->yyidx + - 1 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor;
2415 #line 1048 "../smarty/lexer/smarty_internal_templateparser.y"
2418 if ($this->security) {
2419 $this->compiler->trigger_template_error(self::Err2);
2421 $this->_retvalue = '->{' . $this->compiler->compileVariable($this->yystack[ $this->yyidx + - 1 ]->minor) .
2422 $this->yystack[ $this->yyidx + 0 ]->minor . '}';
2425 #line 1055 "../smarty/lexer/smarty_internal_templateparser.y"
2428 if ($this->security) {
2429 $this->compiler->trigger_template_error(self::Err2);
2432 '->{' . $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor . '}';
2435 #line 1062 "../smarty/lexer/smarty_internal_templateparser.y"
2438 if ($this->security) {
2439 $this->compiler->trigger_template_error(self::Err2);
2441 $this->_retvalue = '->{\'' . $this->yystack[ $this->yyidx + - 4 ]->minor . '\'.' .
2442 $this->yystack[ $this->yyidx + - 2 ]->minor . $this->yystack[ $this->yyidx + 0 ]->minor .
2446 #line 1070 "../smarty/lexer/smarty_internal_templateparser.y"
2449 $this->_retvalue = '->' . $this->yystack[ $this->yyidx + 0 ]->minor;
2452 #line 1078 "../smarty/lexer/smarty_internal_templateparser.y"
2455 $this->_retvalue = $this->compiler->compilePHPFunctionCall($this->yystack[ $this->yyidx + - 3 ]->minor,
2456 $this->yystack[ $this->yyidx + - 1 ]->minor);
2459 #line 1086 "../smarty/lexer/smarty_internal_templateparser.y"
2462 if ($this->security && substr($this->yystack[ $this->yyidx + - 3 ]->minor, 0, 1) == '_') {
2463 $this->compiler->trigger_template_error(self::Err1);
2465 $this->_retvalue = $this->yystack[ $this->yyidx + - 3 ]->minor . "(" .
2466 implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ")";
2469 #line 1093 "../smarty/lexer/smarty_internal_templateparser.y"
2472 if ($this->security) {
2473 $this->compiler->trigger_template_error(self::Err2);
2475 $prefixVar = $this->compiler->getNewPrefixVariable();
2476 $this->compiler->appendPrefixCode("<?php $prefixVar" . '=' . $this->compiler->compileVariable('\'' .
2477 substr($this->yystack[ $this->yyidx +
2481 $this->_retvalue = $prefixVar . '(' . implode(',', $this->yystack[ $this->yyidx + - 1 ]->minor) . ')';
2484 #line 1104 "../smarty/lexer/smarty_internal_templateparser.y"
2488 array_merge($this->yystack[ $this->yyidx + - 2 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor));
2491 #line 1121 "../smarty/lexer/smarty_internal_templateparser.y"
2494 $this->_retvalue = array_merge($this->yystack[ $this->yyidx + - 2 ]->minor,
2495 array(array_merge($this->yystack[ $this->yyidx + - 1 ]->minor,
2496 $this->yystack[ $this->yyidx + 0 ]->minor)));
2499 #line 1125 "../smarty/lexer/smarty_internal_templateparser.y"
2503 array(array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor));
2506 #line 1133 "../smarty/lexer/smarty_internal_templateparser.y"
2509 $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor);
2512 #line 1141 "../smarty/lexer/smarty_internal_templateparser.y"
2516 array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
2519 #line 1160 "../smarty/lexer/smarty_internal_templateparser.y"
2522 $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '', 'method');
2525 #line 1165 "../smarty/lexer/smarty_internal_templateparser.y"
2529 array($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'method');
2532 #line 1170 "../smarty/lexer/smarty_internal_templateparser.y"
2535 $this->_retvalue = array($this->yystack[ $this->yyidx + 0 ]->minor, '');
2538 #line 1175 "../smarty/lexer/smarty_internal_templateparser.y"
2542 array($this->yystack[ $this->yyidx + - 1 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor, 'property');
2545 #line 1180 "../smarty/lexer/smarty_internal_templateparser.y"
2548 $this->_retvalue = array($this->yystack[ $this->yyidx + - 2 ]->minor,
2549 $this->yystack[ $this->yyidx + - 1 ]->minor .
2550 $this->yystack[ $this->yyidx + 0 ]->minor, 'property');
2553 #line 1186 "../smarty/lexer/smarty_internal_templateparser.y"
2556 $this->_retvalue = ' ' . trim($this->yystack[ $this->yyidx + 0 ]->minor) . ' ';
2559 #line 1190 "../smarty/lexer/smarty_internal_templateparser.y"
2563 array('eq' => ' == ', 'ne' => ' != ', 'neq' => ' != ', 'gt' => ' > ', 'ge' => ' >= ', 'gte' => ' >= ',
2564 'lt' => ' < ', 'le' => ' <= ', 'lte' => ' <= ', 'mod' => ' % ', 'and' => ' && ', 'or' => ' || ',
2566 $op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor));
2567 $this->_retvalue = $lops[ $op ];
2570 #line 1209 "../smarty/lexer/smarty_internal_templateparser.y"
2574 array('isdivby' => array('op' => ' % ', 'pre' => '!('), 'isnotdivby' => array('op' => ' % ', 'pre' => '('),
2575 'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
2576 'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
2577 'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
2578 'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),);
2579 $op = strtolower(preg_replace('/\s*/', '', $this->yystack[ $this->yyidx + 0 ]->minor));
2580 $this->_retvalue = $tlops[ $op ];
2583 #line 1222 "../smarty/lexer/smarty_internal_templateparser.y"
2587 array('iseven' => '!(1 & ', 'isnoteven' => '(1 & ', 'isodd' => '(1 & ', 'isnotodd' => '!(1 & ',);
2588 $op = strtolower(str_replace(' ', '', $this->yystack[ $this->yyidx + 0 ]->minor));
2589 $this->_retvalue = $scond[ $op ];
2592 #line 1236 "../smarty/lexer/smarty_internal_templateparser.y"
2595 $this->_retvalue = 'array(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')';
2598 #line 1244 "../smarty/lexer/smarty_internal_templateparser.y"
2602 $this->yystack[ $this->yyidx + - 2 ]->minor . ',' . $this->yystack[ $this->yyidx + 0 ]->minor;
2605 #line 1252 "../smarty/lexer/smarty_internal_templateparser.y"
2609 $this->yystack[ $this->yyidx + - 2 ]->minor . '=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
2612 #line 1256 "../smarty/lexer/smarty_internal_templateparser.y"
2616 '\'' . $this->yystack[ $this->yyidx + - 2 ]->minor . '\'=>' . $this->yystack[ $this->yyidx + 0 ]->minor;
2619 #line 1272 "../smarty/lexer/smarty_internal_templateparser.y"
2622 $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor->to_smarty_php($this);
2625 #line 1277 "../smarty/lexer/smarty_internal_templateparser.y"
2628 $this->yystack[ $this->yyidx + - 1 ]->minor->append_subtree($this, $this->yystack[ $this->yyidx + 0 ]->minor);
2629 $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
2632 #line 1282 "../smarty/lexer/smarty_internal_templateparser.y"
2635 $this->_retvalue = new Smarty_Internal_ParseTree_Dq($this, $this->yystack[ $this->yyidx + 0 ]->minor);
2638 #line 1286 "../smarty/lexer/smarty_internal_templateparser.y"
2641 $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)' . $this->yystack[ $this->yyidx + - 1 ]->minor);
2644 #line 1294 "../smarty/lexer/smarty_internal_templateparser.y"
2647 $this->_retvalue = new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\'' .
2648 substr($this->yystack[ $this->yyidx + 0 ]->minor, 1) .
2652 #line 1302 "../smarty/lexer/smarty_internal_templateparser.y"
2656 new Smarty_Internal_ParseTree_Code('(string)(' . $this->yystack[ $this->yyidx + - 1 ]->minor . ')');
2659 #line 1306 "../smarty/lexer/smarty_internal_templateparser.y"
2662 $this->_retvalue = new Smarty_Internal_ParseTree_Tag($this, $this->yystack[ $this->yyidx + 0 ]->minor);
2665 #line 1310 "../smarty/lexer/smarty_internal_templateparser.y"
2668 $this->_retvalue = new Smarty_Internal_ParseTree_DqContent($this->yystack[ $this->yyidx + 0 ]->minor);
2673 public function yy_reduce($yyruleno)
2675 if ($this->yyTraceFILE && $yyruleno >= 0 && $yyruleno < count(self::$yyRuleName)) {
2676 fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", $this->yyTracePrompt, $yyruleno,
2677 self::$yyRuleName[ $yyruleno ]);
2680 $this->_retvalue = $yy_lefthand_side = null;
2681 if (isset(self::$yyReduceMap[ $yyruleno ])) {
2683 $this->_retvalue = null;
2684 $this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}();
2685 $yy_lefthand_side = $this->_retvalue;
2687 $yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ];
2688 $yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ];
2689 $this->yyidx -= $yysize;
2690 for ($i = $yysize; $i; $i --) {
2691 // pop all of the right-hand side parameters
2692 array_pop($this->yystack);
2694 $yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto);
2695 if ($yyact < self::YYNSTATE) {
2696 if (!$this->yyTraceFILE && $yysize) {
2698 $x = new TP_yyStackEntry;
2699 $x->stateno = $yyact;
2700 $x->major = $yygoto;
2701 $x->minor = $yy_lefthand_side;
2702 $this->yystack[ $this->yyidx ] = $x;
2704 $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
2706 } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
2711 public function yy_parse_failed()
2713 if ($this->yyTraceFILE) {
2714 fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
2716 while ($this->yyidx >= 0) {
2717 $this->yy_pop_parser_stack();
2721 public function yy_syntax_error($yymajor, $TOKEN)
2723 #line 200 "../smarty/lexer/smarty_internal_templateparser.y"
2725 $this->internalError = true;
2726 $this->yymajor = $yymajor;
2727 $this->compiler->trigger_template_error();
2730 public function yy_accept()
2732 if ($this->yyTraceFILE) {
2733 fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
2735 while ($this->yyidx >= 0) {
2736 $this->yy_pop_parser_stack();
2738 #line 193 "../smarty/lexer/smarty_internal_templateparser.y"
2740 $this->successful = !$this->internalError;
2741 $this->internalError = false;
2742 $this->retvalue = $this->_retvalue;
2745 public function doParse($yymajor, $yytokenvalue)
2747 $yyerrorhit = 0; /* True if yymajor has invoked an error */
2749 if ($this->yyidx === null || $this->yyidx < 0) {
2751 $this->yyerrcnt = - 1;
2752 $x = new TP_yyStackEntry;
2755 $this->yystack = array();
2756 $this->yystack[] = $x;
2758 $yyendofinput = ($yymajor == 0);
2760 if ($this->yyTraceFILE) {
2761 fprintf($this->yyTraceFILE, "%sInput %s\n", $this->yyTracePrompt, $this->yyTokenName[ $yymajor ]);
2765 $yyact = $this->yy_find_shift_action($yymajor);
2766 if ($yymajor < self::YYERRORSYMBOL && !$this->yy_is_expected_token($yymajor)) {
2767 // force a syntax error
2768 $yyact = self::YY_ERROR_ACTION;
2770 if ($yyact < self::YYNSTATE) {
2771 $this->yy_shift($yyact, $yymajor, $yytokenvalue);
2773 if ($yyendofinput && $this->yyidx >= 0) {
2776 $yymajor = self::YYNOCODE;
2778 } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
2779 $this->yy_reduce($yyact - self::YYNSTATE);
2780 } elseif ($yyact == self::YY_ERROR_ACTION) {
2781 if ($this->yyTraceFILE) {
2782 fprintf($this->yyTraceFILE, "%sSyntax Error!\n", $this->yyTracePrompt);
2784 if (self::YYERRORSYMBOL) {
2785 if ($this->yyerrcnt < 0) {
2786 $this->yy_syntax_error($yymajor, $yytokenvalue);
2788 $yymx = $this->yystack[ $this->yyidx ]->major;
2789 if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) {
2790 if ($this->yyTraceFILE) {
2791 fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", $this->yyTracePrompt,
2792 $this->yyTokenName[ $yymajor ]);
2794 $this->yy_destructor($yymajor, $yytokenvalue);
2795 $yymajor = self::YYNOCODE;
2797 while ($this->yyidx >= 0 && $yymx != self::YYERRORSYMBOL &&
2798 ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE) {
2799 $this->yy_pop_parser_stack();
2801 if ($this->yyidx < 0 || $yymajor == 0) {
2802 $this->yy_destructor($yymajor, $yytokenvalue);
2803 $this->yy_parse_failed();
2804 $yymajor = self::YYNOCODE;
2805 } elseif ($yymx != self::YYERRORSYMBOL) {
2807 $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
2810 $this->yyerrcnt = 3;
2813 if ($this->yyerrcnt <= 0) {
2814 $this->yy_syntax_error($yymajor, $yytokenvalue);
2816 $this->yyerrcnt = 3;
2817 $this->yy_destructor($yymajor, $yytokenvalue);
2818 if ($yyendofinput) {
2819 $this->yy_parse_failed();
2821 $yymajor = self::YYNOCODE;
2825 $yymajor = self::YYNOCODE;
2828 while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);