libs/sysplugins/smarty_internal_templateparser.php Quellcode

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




Korrekturen, Hinweise und Ergänzungen

Bitte scheuen Sie sich nicht und melden Sie, was auf dieser Seite sachlich falsch oder irreführend ist, was ergänzt werden sollte, was fehlt usw. Dazu bitte oben aus dem Menü Seite den Eintrag Support Forum wählen. Es ist eine kostenlose Anmeldung erforderlich, um Anmerkungen zu posten. Unpassende Postings, Spam usw. werden kommentarlos entfernt.