smarty_internal_templateparser.php (124349B)
1 <?php 2 3 class TP_yyToken implements ArrayAccess 4 { 5 public $string = ''; 6 7 public $metadata = array(); 8 9 public function __construct($s, $m = array()) 10 { 11 if ($s instanceof TP_yyToken) { 12 $this->string = $s->string; 13 $this->metadata = $s->metadata; 14 } else { 15 $this->string = (string) $s; 16 if ($m instanceof TP_yyToken) { 17 $this->metadata = $m->metadata; 18 } elseif (is_array($m)) { 19 $this->metadata = $m; 20 } 21 } 22 } 23 24 public function __toString() 25 { 26 return $this->string; 27 } 28 29 public function offsetExists($offset) 30 { 31 return isset($this->metadata[$offset]); 32 } 33 34 public function offsetGet($offset) 35 { 36 return $this->metadata[$offset]; 37 } 38 39 public function offsetSet($offset, $value) 40 { 41 if ($offset === null) { 42 if (isset($value[0])) { 43 $x = ($value instanceof TP_yyToken) ? $value->metadata : $value; 44 $this->metadata = array_merge($this->metadata, $x); 45 46 return; 47 } 48 $offset = count($this->metadata); 49 } 50 if ($value === null) { 51 return; 52 } 53 if ($value instanceof TP_yyToken) { 54 if ($value->metadata) { 55 $this->metadata[$offset] = $value->metadata; 56 } 57 } elseif ($value) { 58 $this->metadata[$offset] = $value; 59 } 60 } 61 62 public function offsetUnset($offset) 63 { 64 unset($this->metadata[$offset]); 65 } 66 } 67 68 class TP_yyStackEntry 69 { 70 public $stateno; /* The state-number */ 71 public $major; /* The major token value. This is the code 72 ** number for the token at this stack level */ 73 public $minor; /* The user-supplied minor token value. This 74 ** is the value of the token */ 75 } 76 77 ; 78 79 #line 13 "../smarty/lexer/smarty_internal_templateparser.y" 80 81 /** 82 * Smarty Internal Plugin Templateparser 83 * 84 * This is the template parser. 85 * It is generated from the smarty_internal_templateparser.y file 86 * 87 * @package Smarty 88 * @subpackage Compiler 89 * @author Uwe Tews 90 */ 91 class Smarty_Internal_Templateparser 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 101 /** 102 * result status 103 * 104 * @var bool 105 */ 106 public $successful = true; 107 108 /** 109 * return value 110 * 111 * @var mixed 112 */ 113 public $retvalue = 0; 114 115 /** 116 * counter for prefix code 117 * 118 * @var int 119 */ 120 public static $prefix_number = 0; 121 122 /** 123 * @var 124 */ 125 public $yymajor; 126 127 /** 128 * last index of array variable 129 * 130 * @var mixed 131 */ 132 public $last_index; 133 134 /** 135 * last variable name 136 * 137 * @var string 138 */ 139 public $last_variable; 140 141 /** 142 * root parse tree buffer 143 * 144 * @var Smarty_Internal_ParseTree 145 */ 146 public $root_buffer; 147 148 /** 149 * current parse tree object 150 * 151 * @var Smarty_Internal_ParseTree 152 */ 153 public $current_buffer; 154 155 /** 156 * lexer object 157 * 158 * @var Smarty_Internal_Templatelexer 159 */ 160 private $lex; 161 162 /** 163 * internal error flag 164 * 165 * @var bool 166 */ 167 private $internalError = false; 168 169 /** 170 * {strip} status 171 * 172 * @var bool 173 */ 174 public $strip = false; 175 176 /** 177 * compiler object 178 * 179 * @var Smarty_Internal_TemplateCompilerBase 180 */ 181 public $compiler = null; 182 183 /** 184 * smarty object 185 * 186 * @var Smarty 187 */ 188 public $smarty = null; 189 190 /** 191 * template object 192 * 193 * @var Smarty_Internal_Template 194 */ 195 public $template = null; 196 197 /** 198 * block nesting level 199 * 200 * @var int 201 */ 202 public $block_nesting_level = 0; 203 204 /** 205 * security object 206 * 207 * @var Smarty_Security 208 */ 209 private $security = null; 210 211 /** 212 * constructor 213 * 214 * @param Smarty_Internal_Templatelexer $lex 215 * @param Smarty_Internal_TemplateCompilerBase $compiler 216 */ 217 function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler) 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 227 /** 228 * insert PHP code in current buffer 229 * 230 * @param string $code 231 */ 232 public function insertPhpCode($code) 233 { 234 $this->current_buffer->append_subtree(new Smarty_Internal_ParseTree_Tag($this, $code)); 235 } 236 237 /** 238 * merge PHP code with prefix code and return parse tree tag object 239 * 240 * @param string $code 241 * 242 * @return Smarty_Internal_ParseTree_Tag 243 */ 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 315 const TP_SMARTYBLOCKCHILDPARENT = 31; 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 349 const TP_SINGLEQUOTESTRING = 48; 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 719 public $yyTracePrompt; 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; 872 $yyidx = $this->yyidx; 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; 956 $yyidx = $this->yyidx; 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