summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Wisselink <wisskid@users.noreply.github.com>2024-12-23 01:29:07 +0100
committerGitHub <noreply@github.com>2024-12-23 01:29:07 +0100
commitcf9de567c10b76a33475e0e59aadd48001d996a7 (patch)
tree533a3e1b2de072bc7b11f5ed2305da83bb56172d /src
parentf47ac761af7a64922da7992711e83d612e25000c (diff)
downloadsmarty-cf9de567c10b76a33475e0e59aadd48001d996a7.tar.gz
smarty-cf9de567c10b76a33475e0e59aadd48001d996a7.tar.bz2
smarty-cf9de567c10b76a33475e0e59aadd48001d996a7.zip
Restore special handling of isset and empty as it was in v4. Fixes #1063 (#1093)
* Restore special handling of isset and empty as it was in v4. Fixes #1063
Diffstat (limited to 'src')
-rw-r--r--src/Compiler/Template.php3
-rw-r--r--src/Parser/TemplateParser.php1892
-rw-r--r--src/Parser/TemplateParser.y140
3 files changed, 1116 insertions, 919 deletions
diff --git a/src/Compiler/Template.php b/src/Compiler/Template.php
index 4f798bfd..237407c6 100644
--- a/src/Compiler/Template.php
+++ b/src/Compiler/Template.php
@@ -505,7 +505,7 @@ class Template extends BaseCompiler {
*
* @return string
*/
- public function compileVariable($variable) {
+ public function triggerTagNoCache($variable): void {
if (!strpos($variable, '(')) {
// not a variable variable
$var = trim($variable, '\'');
@@ -516,7 +516,6 @@ class Template extends BaseCompiler {
false
)->isNocache();
}
- return '$_smarty_tpl->getValue(' . $variable . ')';
}
/**
diff --git a/src/Parser/TemplateParser.php b/src/Parser/TemplateParser.php
index 1e087c55..1a9ea97d 100644
--- a/src/Parser/TemplateParser.php
+++ b/src/Parser/TemplateParser.php
@@ -12,7 +12,7 @@ use \Smarty\ParseTree\Code;
use \Smarty\ParseTree\Dq;
use \Smarty\ParseTree\DqContent;
use \Smarty\ParseTree\Tag;
-
+use \Smarty\CompilerException;
/**
* Smarty Template Parser Class
@@ -263,541 +263,579 @@ class TemplateParser
const TP_ARRAYOPEN = 57;
const TP_QUOTE = 58;
const TP_BACKTICK = 59;
- const YY_NO_ACTION = 527;
- const YY_ACCEPT_ACTION = 526;
- const YY_ERROR_ACTION = 525;
+ const YY_NO_ACTION = 541;
+ const YY_ACCEPT_ACTION = 540;
+ const YY_ERROR_ACTION = 539;
- const YY_SZ_ACTTAB = 2372;
+ const YY_SZ_ACTTAB = 2565;
public static $yy_action = array(
- 33, 197, 264, 299, 176, 298, 259, 242, 243, 244,
- 1, 259, 135, 232, 199, 354, 6, 84, 495, 217,
- 331, 354, 109, 104, 393, 248, 212, 256, 213, 51,
- 219, 393, 21, 393, 51, 43, 393, 32, 44, 45,
- 273, 221, 393, 277, 393, 200, 393, 83, 4, 136,
- 295, 226, 149, 99, 220, 5, 52, 242, 243, 244,
- 1, 307, 132, 211, 190, 9, 6, 84, 241, 217,
- 211, 126, 109, 150, 261, 252, 212, 256, 213, 137,
- 205, 98, 21, 313, 83, 43, 13, 295, 44, 45,
- 273, 221, 260, 230, 197, 200, 293, 83, 4, 321,
- 295, 35, 149, 86, 309, 5, 52, 242, 243, 244,
- 1, 146, 97, 387, 82, 231, 6, 84, 14, 217,
- 138, 251, 109, 148, 15, 387, 212, 256, 213, 452,
- 219, 387, 21, 251, 439, 43, 452, 252, 44, 45,
- 273, 221, 3, 277, 99, 200, 439, 83, 4, 252,
- 295, 259, 526, 96, 252, 5, 52, 242, 243, 244,
- 1, 136, 134, 262, 199, 103, 6, 84, 155, 217,
- 252, 279, 109, 112, 51, 439, 212, 256, 213, 127,
- 219, 316, 21, 99, 228, 43, 314, 439, 44, 45,
- 273, 221, 318, 277, 263, 200, 83, 83, 4, 295,
- 295, 46, 22, 280, 40, 5, 52, 242, 243, 244,
- 1, 20, 134, 189, 191, 266, 6, 84, 254, 217,
- 250, 19, 109, 152, 141, 253, 212, 256, 213, 197,
- 219, 267, 21, 251, 251, 43, 175, 298, 44, 45,
- 273, 221, 151, 277, 108, 200, 91, 83, 4, 87,
- 295, 295, 251, 354, 180, 5, 52, 242, 243, 244,
- 1, 259, 133, 140, 199, 354, 6, 84, 307, 217,
- 211, 354, 109, 181, 197, 39, 212, 256, 213, 286,
- 219, 14, 11, 94, 51, 43, 88, 15, 44, 45,
- 273, 221, 153, 277, 143, 200, 92, 83, 4, 139,
- 295, 295, 251, 154, 104, 5, 52, 242, 243, 244,
- 1, 303, 134, 251, 186, 173, 6, 84, 36, 217,
- 99, 126, 109, 181, 227, 285, 212, 256, 213, 137,
- 208, 98, 21, 127, 180, 43, 13, 295, 44, 45,
- 273, 221, 181, 277, 232, 200, 293, 83, 4, 112,
- 295, 234, 196, 297, 104, 5, 52, 242, 243, 244,
- 1, 29, 134, 224, 184, 156, 6, 84, 468, 217,
- 197, 468, 109, 197, 23, 468, 212, 256, 213, 264,
- 219, 18, 21, 175, 298, 43, 215, 15, 44, 45,
- 273, 221, 232, 277, 170, 200, 168, 83, 4, 233,
- 295, 295, 104, 144, 99, 5, 52, 242, 243, 244,
- 1, 259, 134, 251, 199, 157, 6, 84, 26, 217,
- 161, 181, 109, 181, 255, 439, 212, 256, 213, 178,
- 185, 240, 21, 112, 51, 43, 164, 439, 44, 45,
- 273, 221, 174, 277, 222, 200, 251, 83, 4, 305,
- 295, 41, 42, 281, 12, 5, 52, 242, 243, 244,
- 1, 197, 136, 163, 199, 167, 6, 84, 288, 289,
- 290, 291, 109, 17, 304, 251, 212, 256, 213, 330,
- 219, 16, 21, 258, 171, 47, 180, 25, 44, 45,
- 273, 221, 39, 277, 93, 200, 255, 83, 4, 328,
- 295, 41, 42, 281, 12, 5, 52, 242, 243, 244,
- 1, 181, 136, 439, 199, 214, 6, 84, 288, 289,
- 290, 291, 109, 177, 298, 439, 212, 256, 213, 28,
- 219, 8, 21, 209, 194, 43, 89, 295, 44, 45,
- 273, 221, 452, 277, 24, 200, 296, 83, 4, 452,
- 295, 7, 440, 239, 240, 5, 52, 283, 210, 211,
- 247, 95, 90, 106, 440, 188, 100, 81, 10, 9,
- 254, 310, 98, 19, 294, 268, 269, 253, 195, 158,
- 113, 169, 276, 201, 278, 172, 284, 293, 283, 210,
- 211, 247, 197, 90, 106, 238, 187, 100, 58, 24,
- 34, 322, 220, 98, 358, 159, 268, 269, 225, 223,
- 317, 245, 179, 276, 201, 278, 14, 284, 293, 246,
- 110, 283, 15, 211, 249, 439, 111, 106, 220, 188,
- 100, 81, 24, 257, 323, 254, 98, 439, 19, 268,
- 269, 118, 253, 265, 270, 272, 276, 201, 278, 7,
- 284, 293, 283, 220, 211, 274, 292, 111, 85, 229,
- 198, 116, 70, 275, 319, 160, 329, 98, 162, 320,
- 268, 269, 36, 145, 216, 37, 332, 276, 201, 278,
- 303, 284, 293, 41, 42, 281, 12, 303, 303, 283,
- 303, 211, 204, 312, 111, 303, 303, 198, 116, 70,
- 288, 289, 290, 291, 98, 303, 303, 268, 269, 303,
- 303, 303, 303, 303, 276, 201, 278, 303, 284, 293,
- 303, 303, 303, 283, 303, 211, 303, 303, 105, 203,
- 312, 198, 119, 49, 303, 117, 303, 303, 98, 303,
- 254, 268, 269, 19, 303, 303, 303, 253, 276, 201,
- 278, 303, 284, 293, 303, 283, 14, 211, 147, 303,
- 111, 303, 15, 198, 119, 65, 197, 303, 303, 303,
- 98, 303, 468, 268, 269, 468, 197, 303, 355, 468,
- 276, 201, 278, 303, 284, 293, 303, 303, 389, 283,
- 355, 211, 207, 303, 111, 303, 355, 198, 119, 65,
- 389, 303, 303, 303, 98, 303, 389, 268, 269, 303,
- 197, 468, 303, 303, 276, 201, 278, 303, 284, 293,
- 303, 303, 386, 283, 303, 211, 202, 303, 111, 303,
- 303, 198, 116, 70, 386, 303, 303, 303, 98, 303,
- 386, 268, 269, 303, 303, 303, 303, 303, 276, 201,
- 278, 303, 284, 293, 303, 303, 303, 283, 303, 211,
- 303, 303, 111, 303, 311, 198, 119, 65, 303, 303,
- 303, 303, 98, 303, 303, 268, 269, 303, 303, 303,
- 303, 303, 276, 201, 278, 303, 284, 293, 303, 303,
- 303, 283, 303, 211, 206, 303, 105, 303, 303, 198,
- 119, 56, 303, 233, 303, 303, 98, 303, 303, 268,
- 269, 303, 303, 303, 303, 303, 276, 201, 278, 303,
- 284, 293, 303, 283, 303, 211, 303, 303, 111, 303,
- 303, 198, 115, 62, 303, 303, 303, 303, 98, 303,
- 303, 268, 269, 303, 303, 303, 303, 303, 276, 201,
- 278, 303, 284, 293, 303, 303, 303, 283, 303, 211,
- 303, 303, 111, 303, 303, 193, 114, 57, 303, 303,
- 303, 303, 98, 303, 303, 268, 269, 303, 303, 303,
- 303, 303, 276, 201, 278, 303, 284, 293, 303, 283,
- 303, 211, 303, 303, 111, 303, 303, 198, 101, 80,
- 303, 303, 303, 303, 98, 303, 303, 268, 269, 303,
- 303, 303, 303, 303, 276, 201, 278, 303, 284, 293,
- 303, 303, 303, 283, 303, 211, 303, 303, 111, 303,
- 303, 198, 102, 79, 303, 303, 303, 303, 98, 303,
- 303, 268, 269, 303, 303, 303, 303, 303, 276, 201,
- 278, 303, 284, 293, 303, 283, 303, 211, 303, 303,
- 111, 303, 303, 198, 119, 53, 303, 303, 303, 303,
- 98, 303, 303, 268, 269, 303, 303, 303, 303, 303,
- 276, 201, 278, 303, 284, 293, 303, 303, 303, 283,
- 303, 211, 303, 303, 111, 303, 303, 198, 119, 64,
- 303, 303, 303, 303, 98, 303, 303, 268, 269, 303,
- 303, 303, 303, 303, 276, 201, 278, 303, 284, 293,
- 303, 283, 303, 211, 303, 303, 111, 303, 303, 198,
- 101, 54, 303, 303, 303, 303, 98, 303, 303, 268,
- 269, 303, 303, 303, 303, 303, 276, 201, 278, 303,
- 284, 293, 303, 303, 303, 283, 303, 211, 303, 303,
- 111, 303, 303, 198, 119, 63, 303, 303, 303, 303,
- 98, 303, 303, 268, 269, 303, 303, 303, 303, 303,
- 276, 201, 278, 303, 284, 293, 303, 283, 303, 211,
- 303, 303, 111, 303, 303, 198, 119, 55, 303, 303,
- 303, 303, 98, 303, 303, 268, 269, 303, 303, 303,
- 303, 303, 276, 201, 278, 303, 284, 293, 303, 303,
- 303, 283, 303, 211, 303, 303, 111, 303, 303, 198,
- 119, 56, 303, 303, 303, 303, 98, 303, 303, 268,
- 269, 303, 303, 303, 303, 303, 276, 201, 278, 303,
- 284, 293, 303, 283, 303, 211, 303, 303, 111, 303,
- 303, 198, 119, 66, 303, 303, 303, 303, 98, 303,
- 303, 268, 269, 303, 303, 303, 303, 303, 276, 201,
- 278, 303, 284, 293, 303, 303, 303, 283, 303, 211,
- 303, 303, 111, 303, 303, 198, 119, 67, 303, 303,
- 303, 303, 98, 303, 303, 268, 269, 303, 303, 303,
- 303, 303, 276, 201, 278, 303, 284, 293, 303, 283,
- 303, 211, 303, 303, 111, 303, 303, 198, 119, 68,
- 303, 303, 303, 303, 98, 303, 303, 268, 269, 303,
- 303, 303, 303, 303, 276, 201, 278, 303, 284, 293,
- 303, 303, 303, 283, 303, 211, 303, 303, 111, 303,
- 303, 198, 119, 69, 303, 303, 303, 303, 98, 303,
- 303, 268, 269, 303, 303, 303, 303, 303, 276, 201,
- 278, 303, 284, 293, 303, 283, 303, 211, 303, 303,
- 111, 303, 303, 198, 119, 71, 303, 303, 303, 303,
- 98, 303, 303, 268, 269, 303, 303, 303, 303, 303,
- 276, 201, 278, 303, 284, 293, 303, 303, 303, 283,
- 303, 211, 303, 303, 111, 303, 303, 192, 119, 59,
- 303, 303, 303, 303, 98, 303, 303, 268, 269, 303,
- 303, 303, 303, 303, 276, 201, 278, 303, 284, 293,
- 303, 283, 303, 211, 303, 303, 111, 303, 303, 198,
- 119, 60, 303, 303, 303, 303, 98, 303, 303, 268,
- 269, 303, 303, 303, 303, 303, 276, 201, 278, 303,
- 284, 293, 303, 303, 303, 283, 303, 211, 303, 303,
- 111, 303, 303, 198, 119, 61, 303, 303, 303, 303,
- 98, 303, 303, 268, 269, 303, 303, 303, 303, 303,
- 276, 201, 278, 303, 284, 293, 303, 283, 303, 211,
- 303, 303, 111, 303, 303, 198, 119, 72, 303, 303,
- 303, 303, 98, 303, 303, 268, 269, 303, 303, 303,
- 303, 303, 276, 201, 278, 303, 284, 293, 303, 303,
- 303, 283, 303, 211, 303, 303, 111, 303, 303, 198,
- 119, 73, 303, 303, 303, 303, 98, 303, 303, 268,
- 269, 303, 303, 303, 303, 303, 276, 201, 278, 303,
- 284, 293, 303, 283, 303, 211, 303, 303, 111, 303,
- 303, 198, 119, 74, 303, 303, 303, 303, 98, 303,
- 303, 268, 269, 303, 303, 303, 303, 303, 276, 201,
- 278, 303, 284, 293, 303, 303, 303, 283, 303, 211,
- 303, 303, 111, 303, 303, 198, 119, 75, 303, 303,
- 303, 303, 98, 303, 303, 268, 269, 303, 303, 303,
- 303, 303, 276, 201, 278, 303, 284, 293, 303, 283,
- 303, 211, 303, 303, 111, 303, 303, 198, 119, 76,
- 303, 303, 303, 303, 98, 303, 303, 268, 269, 303,
- 303, 303, 303, 303, 276, 201, 278, 303, 284, 293,
- 303, 303, 303, 283, 303, 211, 303, 303, 111, 303,
- 303, 198, 119, 77, 303, 303, 303, 303, 98, 303,
- 303, 268, 269, 303, 303, 303, 303, 303, 276, 201,
- 278, 303, 284, 293, 303, 283, 303, 211, 303, 303,
- 111, 303, 303, 198, 119, 78, 303, 303, 303, 303,
- 98, 303, 303, 268, 269, 303, 303, 303, 303, 303,
- 276, 201, 278, 303, 284, 293, 303, 303, 303, 283,
- 303, 211, 303, 303, 111, 303, 303, 198, 119, 48,
- 303, 303, 303, 303, 98, 303, 303, 268, 269, 303,
- 303, 303, 303, 303, 276, 201, 278, 303, 284, 293,
- 303, 283, 303, 211, 303, 303, 111, 303, 303, 198,
- 119, 50, 303, 303, 303, 303, 98, 303, 303, 268,
- 269, 303, 303, 303, 303, 303, 276, 201, 278, 303,
- 284, 293, 308, 303, 303, 303, 303, 303, 242, 243,
- 244, 2, 303, 306, 303, 303, 303, 6, 84, 254,
- 303, 303, 19, 109, 303, 303, 253, 212, 256, 213,
- 303, 303, 38, 303, 14, 14, 303, 303, 303, 165,
- 15, 15, 303, 303, 303, 41, 42, 281, 12, 251,
- 303, 303, 46, 22, 280, 40, 303, 301, 27, 303,
- 303, 308, 288, 289, 290, 291, 303, 242, 243, 244,
- 2, 303, 306, 303, 303, 303, 6, 84, 303, 303,
- 303, 303, 109, 303, 14, 303, 212, 256, 213, 303,
- 15, 142, 303, 303, 303, 41, 42, 281, 12, 303,
- 303, 251, 303, 303, 46, 22, 280, 40, 303, 303,
- 303, 303, 288, 289, 290, 291, 302, 27, 303, 303,
- 235, 236, 237, 130, 303, 303, 242, 243, 244, 1,
- 468, 303, 303, 468, 303, 6, 84, 468, 452, 303,
- 303, 109, 303, 303, 303, 212, 256, 213, 283, 303,
- 211, 303, 303, 111, 303, 303, 198, 131, 303, 303,
- 303, 303, 303, 98, 452, 303, 303, 452, 303, 468,
- 303, 452, 326, 276, 201, 278, 303, 284, 293, 303,
- 218, 303, 303, 283, 303, 211, 303, 468, 111, 303,
- 468, 198, 125, 3, 468, 452, 303, 303, 98, 271,
- 303, 303, 303, 303, 303, 303, 303, 282, 276, 201,
- 278, 303, 284, 293, 283, 303, 211, 303, 303, 111,
- 166, 452, 198, 129, 452, 303, 468, 303, 452, 98,
- 251, 303, 303, 46, 22, 280, 40, 303, 303, 276,
- 201, 278, 303, 284, 293, 303, 218, 303, 303, 283,
- 303, 211, 303, 468, 111, 303, 468, 198, 120, 35,
- 468, 452, 303, 303, 98, 271, 303, 303, 303, 303,
- 303, 303, 303, 303, 276, 201, 278, 303, 284, 293,
- 283, 303, 211, 303, 303, 111, 303, 452, 198, 121,
- 452, 303, 468, 303, 452, 98, 303, 303, 303, 303,
- 303, 303, 303, 303, 303, 276, 201, 278, 303, 284,
- 293, 303, 218, 303, 303, 283, 303, 211, 303, 468,
- 111, 303, 468, 198, 122, 303, 468, 452, 303, 303,
- 98, 271, 303, 303, 303, 303, 303, 303, 303, 303,
- 276, 201, 278, 303, 284, 293, 283, 303, 211, 303,
- 303, 111, 303, 452, 198, 123, 452, 303, 468, 303,
- 452, 98, 303, 303, 303, 303, 303, 303, 303, 303,
- 303, 276, 201, 278, 303, 284, 293, 303, 30, 303,
- 303, 283, 303, 211, 218, 468, 111, 303, 468, 198,
- 124, 468, 468, 452, 468, 303, 98, 271, 468, 452,
- 303, 303, 303, 271, 303, 303, 276, 201, 278, 303,
- 284, 293, 283, 402, 211, 303, 303, 111, 303, 452,
- 198, 128, 452, 303, 468, 452, 452, 98, 452, 303,
- 468, 303, 452, 287, 303, 107, 325, 276, 201, 278,
- 303, 284, 293, 303, 303, 439, 303, 402, 402, 402,
- 402, 41, 42, 281, 12, 303, 303, 439, 303, 41,
- 42, 281, 12, 303, 402, 402, 402, 402, 288, 289,
- 290, 291, 41, 42, 281, 12, 288, 289, 290, 291,
- 300, 324, 41, 42, 281, 12, 182, 315, 303, 288,
- 289, 290, 291, 183, 303, 303, 303, 303, 303, 288,
- 289, 290, 291, 41, 42, 281, 12, 31, 303, 41,
- 42, 281, 12, 303, 327, 303, 41, 42, 281, 12,
- 288, 289, 290, 291, 303, 303, 288, 289, 290, 291,
- 303, 303, 303, 288, 289, 290, 291, 41, 42, 281,
- 12, 41, 42, 281, 12, 303, 303, 303, 303, 303,
- 303, 303, 303, 303, 288, 289, 290, 291, 288, 289,
- 290, 291,
+ 33, 106, 269, 306, 179, 305, 200, 247, 248, 249,
+ 1, 264, 138, 237, 202, 361, 6, 87, 284, 222,
+ 338, 361, 112, 107, 400, 321, 217, 261, 218, 130,
+ 224, 400, 21, 400, 49, 44, 400, 32, 45, 46,
+ 278, 226, 400, 282, 400, 203, 400, 53, 4, 139,
+ 302, 231, 28, 102, 225, 5, 54, 247, 248, 249,
+ 1, 20, 135, 192, 193, 271, 6, 87, 246, 222,
+ 216, 29, 112, 229, 7, 159, 217, 261, 218, 140,
+ 208, 272, 21, 509, 53, 44, 13, 302, 45, 46,
+ 278, 226, 149, 235, 153, 203, 257, 53, 4, 328,
+ 302, 302, 256, 304, 143, 5, 54, 247, 248, 249,
+ 1, 302, 100, 394, 86, 236, 6, 87, 3, 222,
+ 102, 257, 112, 144, 97, 394, 217, 261, 218, 102,
+ 224, 394, 21, 256, 446, 44, 178, 305, 45, 46,
+ 278, 226, 302, 282, 200, 203, 446, 53, 4, 115,
+ 302, 47, 22, 285, 41, 5, 54, 247, 248, 249,
+ 1, 139, 137, 267, 202, 141, 6, 87, 14, 222,
+ 540, 99, 112, 151, 15, 446, 217, 261, 218, 314,
+ 224, 216, 21, 256, 233, 44, 9, 446, 45, 46,
+ 278, 226, 325, 282, 268, 203, 53, 53, 4, 302,
+ 302, 152, 257, 361, 320, 5, 54, 247, 248, 249,
+ 1, 264, 137, 102, 194, 361, 6, 87, 37, 222,
+ 102, 361, 112, 257, 89, 316, 217, 261, 218, 314,
+ 224, 216, 21, 36, 49, 44, 200, 40, 45, 46,
+ 278, 226, 115, 282, 237, 203, 14, 53, 4, 115,
+ 302, 238, 15, 155, 107, 5, 54, 247, 248, 249,
+ 1, 466, 136, 256, 202, 200, 6, 87, 466, 222,
+ 255, 171, 112, 264, 446, 310, 217, 261, 218, 158,
+ 224, 257, 11, 142, 157, 44, 446, 183, 45, 46,
+ 278, 226, 26, 282, 256, 203, 49, 53, 4, 446,
+ 302, 184, 260, 323, 176, 5, 54, 247, 248, 249,
+ 1, 446, 137, 264, 189, 291, 6, 87, 183, 222,
+ 200, 302, 112, 253, 178, 305, 217, 261, 218, 263,
+ 213, 18, 21, 200, 184, 44, 49, 15, 45, 46,
+ 278, 226, 146, 282, 269, 203, 25, 53, 4, 220,
+ 302, 312, 107, 152, 290, 5, 54, 247, 248, 249,
+ 1, 219, 137, 147, 187, 130, 6, 87, 259, 222,
+ 16, 19, 112, 256, 167, 258, 217, 261, 218, 111,
+ 224, 173, 21, 96, 256, 44, 200, 23, 45, 46,
+ 278, 226, 177, 282, 227, 203, 335, 53, 4, 174,
+ 302, 180, 305, 170, 90, 5, 54, 247, 248, 249,
+ 1, 184, 137, 256, 202, 91, 6, 87, 482, 222,
+ 160, 482, 112, 214, 197, 482, 217, 261, 218, 184,
+ 188, 181, 21, 245, 302, 44, 164, 140, 45, 46,
+ 278, 226, 466, 282, 13, 203, 166, 53, 4, 466,
+ 302, 42, 43, 286, 12, 5, 54, 247, 248, 249,
+ 1, 264, 139, 447, 202, 40, 6, 87, 293, 294,
+ 295, 296, 112, 17, 311, 447, 217, 261, 218, 337,
+ 224, 183, 21, 260, 49, 48, 244, 245, 45, 46,
+ 278, 226, 24, 282, 303, 203, 8, 53, 4, 92,
+ 302, 42, 43, 286, 12, 5, 54, 247, 248, 249,
+ 1, 10, 139, 9, 202, 317, 6, 87, 293, 294,
+ 295, 296, 112, 116, 299, 35, 217, 261, 218, 225,
+ 224, 198, 21, 98, 34, 44, 329, 324, 45, 46,
+ 278, 226, 448, 282, 448, 203, 161, 53, 4, 172,
+ 302, 129, 175, 225, 232, 5, 54, 288, 215, 216,
+ 252, 101, 93, 109, 243, 191, 103, 85, 450, 162,
+ 450, 24, 101, 330, 182, 273, 274, 300, 298, 301,
+ 250, 251, 281, 204, 283, 113, 289, 262, 300, 298,
+ 301, 121, 288, 215, 216, 252, 270, 93, 109, 275,
+ 190, 103, 60, 277, 279, 225, 237, 101, 280, 297,
+ 273, 274, 129, 239, 199, 266, 107, 281, 204, 283,
+ 7, 289, 101, 300, 298, 301, 288, 88, 216, 254,
+ 163, 114, 109, 265, 191, 103, 85, 200, 300, 298,
+ 301, 101, 200, 259, 273, 274, 19, 165, 326, 362,
+ 258, 281, 204, 283, 396, 289, 234, 300, 298, 301,
+ 288, 362, 216, 327, 200, 114, 396, 362, 201, 119,
+ 72, 336, 396, 37, 259, 101, 393, 19, 273, 274,
+ 154, 258, 228, 339, 94, 281, 204, 283, 393, 289,
+ 256, 300, 298, 301, 393, 38, 313, 288, 313, 216,
+ 313, 313, 114, 207, 319, 201, 119, 72, 313, 313,
+ 313, 313, 101, 221, 184, 273, 274, 156, 313, 313,
+ 313, 95, 281, 204, 283, 313, 289, 256, 300, 298,
+ 301, 313, 313, 313, 288, 313, 216, 313, 313, 108,
+ 206, 319, 201, 122, 51, 313, 120, 313, 313, 101,
+ 313, 184, 273, 274, 313, 313, 313, 313, 313, 281,
+ 204, 283, 313, 289, 313, 300, 298, 301, 288, 313,
+ 216, 313, 313, 114, 313, 313, 201, 122, 67, 313,
+ 313, 313, 313, 101, 313, 313, 273, 274, 313, 313,
+ 313, 313, 313, 281, 204, 283, 313, 289, 313, 300,
+ 298, 301, 288, 313, 216, 313, 313, 114, 212, 313,
+ 201, 122, 67, 313, 313, 313, 313, 101, 313, 313,
+ 273, 274, 313, 313, 313, 313, 313, 281, 204, 283,
+ 313, 289, 313, 300, 298, 301, 288, 313, 216, 313,
+ 313, 114, 205, 313, 201, 119, 72, 313, 313, 313,
+ 313, 101, 313, 313, 273, 274, 313, 313, 313, 313,
+ 313, 281, 204, 283, 313, 289, 313, 300, 298, 301,
+ 313, 313, 313, 288, 313, 216, 313, 313, 114, 313,
+ 318, 201, 122, 78, 313, 313, 313, 313, 101, 313,
+ 482, 273, 274, 482, 313, 313, 313, 482, 281, 204,
+ 283, 313, 289, 209, 211, 298, 301, 288, 313, 216,
+ 313, 313, 108, 313, 313, 201, 122, 58, 313, 238,
+ 313, 313, 101, 313, 313, 273, 274, 313, 313, 482,
+ 313, 313, 281, 204, 283, 313, 289, 313, 300, 298,
+ 301, 288, 313, 216, 313, 313, 114, 313, 313, 201,
+ 118, 64, 313, 313, 313, 313, 101, 313, 313, 273,
+ 274, 313, 313, 313, 313, 313, 281, 204, 283, 313,
+ 289, 313, 300, 298, 301, 288, 313, 216, 313, 313,
+ 114, 313, 313, 196, 117, 59, 313, 313, 313, 313,
+ 101, 313, 313, 273, 274, 313, 313, 313, 313, 313,
+ 281, 204, 283, 313, 289, 313, 300, 298, 301, 288,
+ 313, 216, 313, 313, 114, 313, 313, 201, 104, 84,
+ 313, 313, 313, 313, 101, 313, 313, 273, 274, 313,
+ 313, 313, 313, 313, 281, 204, 283, 313, 289, 313,
+ 300, 298, 301, 288, 313, 216, 313, 313, 114, 313,
+ 313, 201, 105, 83, 313, 313, 313, 313, 101, 313,
+ 313, 273, 274, 313, 313, 313, 313, 313, 281, 204,
+ 283, 313, 289, 313, 300, 298, 301, 288, 313, 216,
+ 313, 313, 114, 313, 313, 201, 122, 55, 313, 313,
+ 313, 313, 101, 313, 313, 273, 274, 313, 313, 313,
+ 313, 313, 281, 204, 283, 313, 289, 313, 300, 298,
+ 301, 288, 313, 216, 313, 313, 114, 313, 313, 201,
+ 122, 66, 313, 313, 313, 313, 101, 313, 313, 273,
+ 274, 313, 313, 313, 313, 313, 281, 204, 283, 313,
+ 289, 313, 300, 298, 301, 288, 313, 216, 313, 313,
+ 114, 313, 313, 201, 104, 56, 313, 313, 313, 313,
+ 101, 313, 313, 273, 274, 313, 313, 313, 313, 313,
+ 281, 204, 283, 313, 289, 313, 300, 298, 301, 288,
+ 313, 216, 313, 313, 114, 313, 313, 201, 122, 65,
+ 313, 313, 313, 313, 101, 313, 313, 273, 274, 313,
+ 313, 313, 313, 313, 281, 204, 283, 313, 289, 313,
+ 300, 298, 301, 288, 313, 216, 313, 313, 114, 313,
+ 313, 201, 122, 57, 313, 313, 313, 313, 101, 313,
+ 313, 273, 274, 313, 313, 313, 313, 313, 281, 204,
+ 283, 313, 289, 313, 300, 298, 301, 288, 313, 216,
+ 313, 313, 114, 313, 313, 201, 122, 58, 313, 313,
+ 313, 313, 101, 313, 313, 273, 274, 313, 313, 313,
+ 313, 313, 281, 204, 283, 313, 289, 313, 300, 298,
+ 301, 288, 313, 216, 313, 313, 114, 313, 313, 201,
+ 122, 68, 313, 313, 313, 313, 101, 313, 313, 273,
+ 274, 313, 313, 313, 313, 313, 281, 204, 283, 313,
+ 289, 313, 300, 298, 301, 288, 313, 216, 313, 313,
+ 114, 313, 313, 201, 122, 69, 313, 313, 313, 313,
+ 101, 313, 313, 273, 274, 313, 313, 313, 313, 313,
+ 281, 204, 283, 313, 289, 313, 300, 298, 301, 288,
+ 313, 216, 313, 313, 114, 313, 313, 201, 122, 70,
+ 313, 313, 313, 313, 101, 313, 313, 273, 274, 313,
+ 313, 313, 313, 313, 281, 204, 283, 313, 289, 313,
+ 300, 298, 301, 288, 313, 216, 313, 313, 114, 313,
+ 313, 201, 122, 71, 313, 313, 313, 313, 101, 313,
+ 313, 273, 274, 313, 313, 313, 313, 313, 281, 204,
+ 283, 313, 289, 313, 300, 298, 301, 288, 313, 216,
+ 313, 313, 114, 313, 313, 201, 122, 73, 313, 313,
+ 313, 313, 101, 313, 313, 273, 274, 313, 313, 313,
+ 313, 313, 281, 204, 283, 313, 289, 313, 300, 298,
+ 301, 288, 313, 216, 313, 313, 114, 313, 313, 195,
+ 122, 61, 313, 313, 313, 313, 101, 313, 313, 273,
+ 274, 313, 313, 313, 313, 313, 281, 204, 283, 313,
+ 289, 313, 300, 298, 301, 288, 313, 216, 313, 313,
+ 114, 313, 313, 201, 122, 62, 313, 313, 313, 313,
+ 101, 313, 313, 273, 274, 313, 313, 313, 313, 313,
+ 281, 204, 283, 313, 289, 313, 300, 298, 301, 288,
+ 313, 216, 313, 313, 114, 313, 313, 201, 122, 63,
+ 313, 313, 313, 313, 101, 313, 313, 273, 274, 313,
+ 313, 313, 313, 313, 281, 204, 283, 313, 289, 313,
+ 300, 298, 301, 288, 313, 216, 313, 313, 114, 313,
+ 313, 201, 122, 74, 313, 313, 313, 313, 101, 313,
+ 313, 273, 274, 313, 313, 313, 313, 313, 281, 204,
+ 283, 313, 289, 313, 300, 298, 301, 288, 313, 216,
+ 313, 313, 114, 313, 313, 201, 122, 75, 313, 313,
+ 313, 313, 101, 313, 313, 273, 274, 313, 313, 313,
+ 313, 313, 281, 204, 283, 313, 289, 313, 300, 298,
+ 301, 288, 313, 216, 313, 313, 114, 313, 313, 201,
+ 122, 76, 313, 313, 313, 313, 101, 313, 313, 273,
+ 274, 313, 313, 313, 313, 313, 281, 204, 283, 313,
+ 289, 313, 300, 298, 301, 288, 313, 216, 313, 313,
+ 114, 313, 313, 201, 122, 77, 313, 313, 313, 313,
+ 101, 313, 313, 273, 274, 313, 313, 313, 313, 313,
+ 281, 204, 283, 313, 289, 313, 300, 298, 301, 288,
+ 313, 216, 313, 313, 114, 313, 313, 201, 122, 79,
+ 313, 313, 313, 313, 101, 313, 313, 273, 274, 313,
+ 313, 313, 313, 313, 281, 204, 283, 313, 289, 313,
+ 210, 298, 301, 288, 313, 216, 313, 313, 114, 313,
+ 313, 201, 122, 80, 313, 313, 313, 313, 101, 313,
+ 313, 273, 274, 313, 313, 313, 313, 313, 281, 204,
+ 283, 313, 289, 313, 300, 298, 301, 288, 313, 216,
+ 313, 313, 114, 313, 313, 201, 122, 81, 313, 313,
+ 313, 313, 101, 313, 313, 273, 274, 313, 313, 313,
+ 313, 313, 281, 204, 283, 313, 289, 313, 300, 298,
+ 301, 288, 313, 216, 313, 313, 114, 313, 313, 201,
+ 122, 82, 313, 313, 313, 313, 101, 313, 313, 273,
+ 274, 313, 313, 313, 313, 313, 281, 204, 283, 313,
+ 289, 313, 300, 298, 301, 288, 313, 216, 313, 313,
+ 114, 313, 313, 201, 122, 50, 313, 313, 313, 313,
+ 101, 313, 313, 273, 274, 313, 313, 313, 313, 313,
+ 281, 204, 283, 313, 289, 313, 300, 298, 301, 288,
+ 313, 216, 313, 313, 114, 313, 313, 201, 122, 52,
+ 313, 313, 313, 313, 101, 313, 313, 273, 274, 313,
+ 313, 313, 313, 313, 281, 204, 283, 313, 289, 313,
+ 300, 298, 301, 288, 313, 216, 168, 313, 114, 313,
+ 313, 201, 134, 313, 313, 313, 256, 313, 101, 47,
+ 22, 285, 41, 313, 313, 313, 313, 333, 281, 204,
+ 283, 313, 289, 313, 300, 298, 301, 288, 313, 216,
+ 145, 313, 114, 313, 313, 201, 128, 313, 313, 313,
+ 256, 313, 101, 47, 22, 285, 41, 313, 313, 313,
+ 313, 287, 281, 204, 283, 315, 289, 313, 300, 298,
+ 301, 247, 248, 249, 2, 313, 313, 313, 313, 313,
+ 6, 87, 259, 313, 313, 19, 112, 313, 14, 258,
+ 217, 261, 218, 313, 15, 39, 313, 14, 14, 42,
+ 43, 286, 12, 15, 15, 313, 313, 313, 42, 43,
+ 286, 12, 313, 313, 313, 313, 293, 294, 295, 296,
+ 308, 27, 313, 313, 315, 293, 294, 295, 296, 313,
+ 247, 248, 249, 2, 313, 313, 313, 110, 313, 6,
+ 87, 313, 313, 313, 313, 112, 313, 313, 148, 217,
+ 261, 218, 313, 42, 43, 286, 12, 313, 42, 43,
+ 286, 12, 313, 313, 313, 313, 313, 313, 313, 313,
+ 293, 294, 295, 296, 313, 293, 294, 295, 296, 309,
+ 27, 313, 313, 240, 241, 242, 133, 223, 313, 247,
+ 248, 249, 1, 313, 482, 313, 313, 482, 6, 87,
+ 3, 482, 466, 313, 112, 313, 276, 313, 217, 261,
+ 218, 288, 313, 216, 313, 313, 114, 313, 313, 201,
+ 132, 313, 313, 313, 313, 313, 101, 313, 466, 313,
+ 313, 466, 313, 482, 313, 466, 281, 204, 283, 313,
+ 289, 313, 300, 298, 301, 313, 288, 313, 216, 313,
+ 200, 114, 313, 313, 201, 123, 313, 313, 313, 313,
+ 313, 101, 365, 313, 313, 313, 230, 313, 313, 313,
+ 313, 281, 204, 283, 14, 289, 313, 300, 298, 301,
+ 15, 313, 288, 446, 216, 313, 169, 114, 313, 313,
+ 201, 124, 313, 313, 313, 446, 256, 101, 313, 47,
+ 22, 285, 41, 313, 313, 313, 313, 281, 204, 283,
+ 313, 289, 313, 300, 298, 301, 313, 288, 313, 216,
+ 313, 313, 114, 313, 313, 201, 125, 313, 313, 313,
+ 313, 313, 101, 313, 313, 313, 313, 313, 313, 313,
+ 313, 313, 281, 204, 283, 313, 289, 313, 300, 298,
+ 301, 313, 313, 288, 313, 216, 313, 313, 114, 313,
+ 313, 201, 126, 313, 313, 313, 313, 313, 101, 313,
+ 313, 313, 313, 313, 313, 313, 313, 313, 281, 204,
+ 283, 313, 289, 313, 300, 298, 301, 313, 288, 313,
+ 216, 313, 313, 114, 313, 313, 201, 127, 313, 313,
+ 313, 313, 313, 101, 313, 313, 313, 313, 313, 313,
+ 313, 313, 313, 281, 204, 283, 313, 289, 313, 300,
+ 298, 301, 313, 313, 288, 313, 216, 223, 313, 114,
+ 313, 313, 201, 131, 482, 313, 313, 482, 313, 101,
+ 313, 482, 466, 313, 313, 313, 276, 313, 313, 281,
+ 204, 283, 313, 289, 313, 300, 298, 301, 313, 313,
+ 409, 313, 313, 313, 313, 313, 313, 313, 466, 313,
+ 313, 466, 313, 482, 223, 466, 292, 313, 313, 313,
+ 313, 482, 313, 313, 482, 313, 313, 36, 482, 466,
+ 313, 223, 446, 276, 409, 409, 409, 409, 482, 313,
+ 313, 482, 313, 313, 446, 482, 466, 313, 313, 30,
+ 276, 409, 409, 409, 409, 466, 482, 313, 466, 482,
+ 482, 313, 466, 482, 466, 313, 313, 313, 276, 313,
+ 313, 313, 466, 313, 313, 466, 332, 482, 313, 466,
+ 313, 313, 313, 313, 313, 331, 42, 43, 286, 12,
+ 466, 313, 313, 466, 313, 482, 313, 466, 313, 42,
+ 43, 286, 12, 293, 294, 295, 296, 307, 313, 42,
+ 43, 286, 12, 185, 313, 313, 293, 294, 295, 296,
+ 186, 313, 313, 313, 322, 313, 293, 294, 295, 296,
+ 42, 43, 286, 12, 31, 313, 42, 43, 286, 12,
+ 313, 334, 313, 42, 43, 286, 12, 293, 294, 295,
+ 296, 313, 313, 293, 294, 295, 296, 313, 313, 313,
+ 293, 294, 295, 296, 42, 43, 286, 12, 42, 43,
+ 286, 12, 482, 313, 313, 482, 313, 313, 313, 482,
+ 466, 293, 294, 295, 296, 293, 294, 295, 296, 313,
+ 313, 313, 259, 313, 313, 19, 313, 313, 313, 258,
+ 313, 313, 313, 313, 313, 313, 466, 313, 14, 466,
+ 150, 482, 313, 466, 15,
);
public static $yy_lookahead = array(
- 2, 1, 97, 13, 99, 100, 21, 9, 10, 11,
- 12, 21, 14, 70, 16, 25, 18, 19, 1, 21,
- 77, 31, 24, 80, 13, 69, 28, 29, 30, 44,
+ 2, 80, 100, 13, 102, 103, 1, 9, 10, 11,
+ 12, 21, 14, 70, 16, 25, 18, 19, 93, 21,
+ 77, 31, 24, 80, 13, 104, 28, 29, 30, 104,
32, 20, 34, 22, 44, 37, 25, 39, 40, 41,
42, 43, 31, 45, 33, 47, 35, 49, 50, 14,
- 52, 16, 96, 17, 43, 57, 58, 9, 10, 11,
- 12, 65, 14, 67, 16, 33, 18, 19, 65, 21,
- 67, 70, 24, 96, 73, 98, 28, 29, 30, 43,
- 32, 80, 34, 51, 49, 37, 50, 52, 40, 41,
- 42, 43, 91, 45, 1, 47, 95, 49, 50, 51,
- 52, 15, 96, 107, 108, 57, 58, 9, 10, 11,
- 12, 72, 14, 13, 16, 15, 18, 19, 25, 21,
- 80, 82, 24, 72, 31, 25, 28, 29, 30, 43,
- 32, 31, 34, 82, 34, 37, 50, 98, 40, 41,
- 42, 43, 15, 45, 17, 47, 46, 49, 50, 98,
- 52, 21, 61, 62, 98, 57, 58, 9, 10, 11,
- 12, 14, 14, 16, 16, 80, 18, 19, 96, 21,
- 98, 93, 24, 46, 44, 34, 28, 29, 30, 101,
- 32, 51, 34, 17, 43, 37, 101, 46, 40, 41,
- 42, 43, 51, 45, 47, 47, 49, 49, 50, 52,
+ 52, 16, 12, 17, 43, 57, 58, 9, 10, 11,
+ 12, 12, 14, 14, 16, 16, 18, 19, 65, 21,
+ 67, 12, 24, 14, 34, 16, 28, 29, 30, 43,
+ 32, 32, 34, 1, 49, 37, 50, 52, 40, 41,
+ 42, 43, 72, 45, 99, 47, 101, 49, 50, 51,
+ 52, 52, 82, 69, 14, 57, 58, 9, 10, 11,
+ 12, 52, 14, 13, 16, 15, 18, 19, 15, 21,
+ 17, 101, 24, 72, 34, 25, 28, 29, 30, 17,
+ 32, 31, 34, 82, 34, 37, 102, 103, 40, 41,
+ 42, 43, 52, 45, 1, 47, 46, 49, 50, 46,
52, 85, 86, 87, 88, 57, 58, 9, 10, 11,
- 12, 12, 14, 14, 16, 16, 18, 19, 9, 21,
- 82, 12, 24, 72, 72, 16, 28, 29, 30, 1,
- 32, 32, 34, 82, 82, 37, 99, 100, 40, 41,
- 42, 43, 72, 45, 79, 47, 76, 49, 50, 80,
- 52, 52, 82, 13, 103, 57, 58, 9, 10, 11,
- 12, 21, 14, 14, 16, 25, 18, 19, 65, 21,
- 67, 31, 24, 103, 1, 2, 28, 29, 30, 51,
- 32, 25, 34, 34, 44, 37, 80, 31, 40, 41,
- 42, 43, 72, 45, 70, 47, 76, 49, 50, 14,
- 52, 52, 82, 72, 80, 57, 58, 9, 10, 11,
- 12, 108, 14, 82, 16, 76, 18, 19, 15, 21,
- 17, 70, 24, 103, 73, 93, 28, 29, 30, 43,
- 32, 80, 34, 101, 103, 37, 50, 52, 40, 41,
- 42, 43, 103, 45, 70, 47, 95, 49, 50, 46,
- 52, 77, 78, 69, 80, 57, 58, 9, 10, 11,
- 12, 12, 14, 14, 16, 16, 18, 19, 9, 21,
- 1, 12, 24, 1, 2, 16, 28, 29, 30, 97,
- 32, 25, 34, 99, 100, 37, 17, 31, 40, 41,
- 42, 43, 70, 45, 76, 47, 76, 49, 50, 77,
- 52, 52, 80, 72, 17, 57, 58, 9, 10, 11,
- 12, 21, 14, 82, 16, 96, 18, 19, 27, 21,
- 96, 103, 24, 103, 104, 34, 28, 29, 30, 6,
- 32, 8, 34, 46, 44, 37, 72, 46, 40, 41,
- 42, 43, 14, 45, 16, 47, 82, 49, 50, 59,
+ 12, 14, 14, 16, 16, 80, 18, 19, 25, 21,
+ 61, 62, 24, 72, 31, 34, 28, 29, 30, 65,
+ 32, 67, 34, 82, 43, 37, 33, 46, 40, 41,
+ 42, 43, 51, 45, 47, 47, 49, 49, 50, 52,
+ 52, 99, 101, 13, 51, 57, 58, 9, 10, 11,
+ 12, 21, 14, 17, 16, 25, 18, 19, 15, 21,
+ 17, 31, 24, 101, 110, 111, 28, 29, 30, 65,
+ 32, 67, 34, 15, 44, 37, 1, 2, 40, 41,
+ 42, 43, 46, 45, 70, 47, 25, 49, 50, 46,
+ 52, 77, 31, 72, 80, 57, 58, 9, 10, 11,
+ 12, 43, 14, 82, 16, 1, 18, 19, 50, 21,
+ 82, 76, 24, 21, 34, 111, 28, 29, 30, 99,
+ 32, 101, 34, 14, 72, 37, 46, 106, 40, 41,
+ 42, 43, 27, 45, 82, 47, 44, 49, 50, 34,
+ 52, 106, 107, 51, 76, 57, 58, 9, 10, 11,
+ 12, 46, 14, 21, 16, 51, 18, 19, 106, 21,
+ 1, 52, 24, 69, 102, 103, 28, 29, 30, 16,
+ 32, 25, 34, 1, 106, 37, 44, 31, 40, 41,
+ 42, 43, 70, 45, 100, 47, 27, 49, 50, 17,
+ 52, 59, 80, 99, 93, 57, 58, 9, 10, 11,
+ 12, 48, 14, 72, 16, 104, 18, 19, 9, 21,
+ 20, 12, 24, 82, 72, 16, 28, 29, 30, 79,
+ 32, 76, 34, 33, 82, 37, 1, 2, 40, 41,
+ 42, 43, 14, 45, 16, 47, 14, 49, 50, 76,
+ 52, 102, 103, 72, 80, 57, 58, 9, 10, 11,
+ 12, 106, 14, 82, 16, 80, 18, 19, 9, 21,
+ 99, 12, 24, 63, 64, 16, 28, 29, 30, 106,
+ 32, 6, 34, 8, 52, 37, 99, 43, 40, 41,
+ 42, 43, 43, 45, 50, 47, 99, 49, 50, 50,
52, 36, 37, 38, 39, 57, 58, 9, 10, 11,
- 12, 1, 14, 96, 16, 72, 18, 19, 53, 54,
- 55, 56, 24, 15, 59, 82, 28, 29, 30, 21,
- 32, 20, 34, 16, 76, 37, 103, 27, 40, 41,
- 42, 43, 2, 45, 33, 47, 104, 49, 50, 14,
+ 12, 21, 14, 34, 16, 2, 18, 19, 53, 54,
+ 55, 56, 24, 15, 59, 46, 28, 29, 30, 21,
+ 32, 106, 34, 107, 44, 37, 7, 8, 40, 41,
+ 42, 43, 33, 45, 35, 47, 34, 49, 50, 99,
52, 36, 37, 38, 39, 57, 58, 9, 10, 11,
- 12, 103, 14, 34, 16, 48, 18, 19, 53, 54,
- 55, 56, 24, 99, 100, 46, 28, 29, 30, 12,
- 32, 34, 34, 63, 64, 37, 96, 52, 40, 41,
- 42, 43, 43, 45, 33, 47, 35, 49, 50, 50,
- 52, 34, 34, 7, 8, 57, 58, 65, 66, 67,
- 68, 81, 70, 71, 46, 73, 74, 75, 34, 33,
- 9, 35, 80, 12, 100, 83, 84, 16, 64, 96,
- 46, 81, 90, 91, 92, 81, 94, 95, 65, 66,
- 67, 68, 1, 70, 71, 7, 73, 74, 75, 33,
- 15, 35, 43, 80, 13, 96, 83, 84, 17, 48,
- 51, 13, 16, 90, 91, 92, 25, 94, 95, 13,
- 16, 65, 31, 67, 68, 34, 70, 71, 43, 73,
- 74, 75, 33, 16, 35, 9, 80, 46, 12, 83,
- 84, 16, 16, 16, 14, 16, 90, 91, 92, 34,
- 94, 95, 65, 43, 67, 32, 16, 70, 16, 16,
- 73, 74, 75, 32, 51, 49, 16, 80, 49, 51,
- 83, 84, 15, 26, 48, 22, 35, 90, 91, 92,
- 109, 94, 95, 36, 37, 38, 39, 109, 109, 65,
- 109, 67, 105, 106, 70, 109, 109, 73, 74, 75,
- 53, 54, 55, 56, 80, 109, 109, 83, 84, 109,
- 109, 109, 109, 109, 90, 91, 92, 109, 94, 95,
- 109, 109, 109, 65, 109, 67, 109, 109, 70, 105,
- 106, 73, 74, 75, 109, 77, 109, 109, 80, 109,
- 9, 83, 84, 12, 109, 109, 109, 16, 90, 91,
- 92, 109, 94, 95, 109, 65, 25, 67, 27, 109,
- 70, 109, 31, 73, 74, 75, 1, 109, 109, 109,
- 80, 109, 9, 83, 84, 12, 1, 109, 13, 16,
- 90, 91, 92, 109, 94, 95, 109, 109, 13, 65,
- 25, 67, 102, 109, 70, 109, 31, 73, 74, 75,
- 25, 109, 109, 109, 80, 109, 31, 83, 84, 109,
- 1, 48, 109, 109, 90, 91, 92, 109, 94, 95,
- 109, 109, 13, 65, 109, 67, 102, 109, 70, 109,
- 109, 73, 74, 75, 25, 109, 109, 109, 80, 109,
- 31, 83, 84, 109, 109, 109, 109, 109, 90, 91,
- 92, 109, 94, 95, 109, 109, 109, 65, 109, 67,
- 109, 109, 70, 109, 106, 73, 74, 75, 109, 109,
- 109, 109, 80, 109, 109, 83, 84, 109, 109, 109,
- 109, 109, 90, 91, 92, 109, 94, 95, 109, 109,
- 109, 65, 109, 67, 102, 109, 70, 109, 109, 73,
- 74, 75, 109, 77, 109, 109, 80, 109, 109, 83,
- 84, 109, 109, 109, 109, 109, 90, 91, 92, 109,
- 94, 95, 109, 65, 109, 67, 109, 109, 70, 109,
- 109, 73, 74, 75, 109, 109, 109, 109, 80, 109,
- 109, 83, 84, 109, 109, 109, 109, 109, 90, 91,
- 92, 109, 94, 95, 109, 109, 109, 65, 109, 67,
- 109, 109, 70, 109, 109, 73, 74, 75, 109, 109,
- 109, 109, 80, 109, 109, 83, 84, 109, 109, 109,
- 109, 109, 90, 91, 92, 109, 94, 95, 109, 65,
- 109, 67, 109, 109, 70, 109, 109, 73, 74, 75,
- 109, 109, 109, 109, 80, 109, 109, 83, 84, 109,
- 109, 109, 109, 109, 90, 91, 92, 109, 94, 95,
- 109, 109, 109, 65, 109, 67, 109, 109, 70, 109,
- 109, 73, 74, 75, 109, 109, 109, 109, 80, 109,
- 109, 83, 84, 109, 109, 109, 109, 109, 90, 91,
- 92, 109, 94, 95, 109, 65, 109, 67, 109, 109,
- 70, 109, 109, 73, 74, 75, 109, 109, 109, 109,
- 80, 109, 109, 83, 84, 109, 109, 109, 109, 109,
- 90, 91, 92, 109, 94, 95, 109, 109, 109, 65,
- 109, 67, 109, 109, 70, 109, 109, 73, 74, 75,
- 109, 109, 109, 109, 80, 109, 109, 83, 84, 109,
- 109, 109, 109, 109, 90, 91, 92, 109, 94, 95,
- 109, 65, 109, 67, 109, 109, 70, 109, 109, 73,
- 74, 75, 109, 109, 109, 109, 80, 109, 109, 83,
- 84, 109, 109, 109, 109, 109, 90, 91, 92, 109,
- 94, 95, 109, 109, 109, 65, 109, 67, 109, 109,
- 70, 109, 109, 73, 74, 75, 109, 109, 109, 109,
- 80, 109, 109, 83, 84, 109, 109, 109, 109, 109,
- 90, 91, 92, 109, 94, 95, 109, 65, 109, 67,
- 109, 109, 70, 109, 109, 73, 74, 75, 109, 109,
- 109, 109, 80, 109, 109, 83, 84, 109, 109, 109,
- 109, 109, 90, 91, 92, 109, 94, 95, 109, 109,
- 109, 65, 109, 67, 109, 109, 70, 109, 109, 73,
- 74, 75, 109, 109, 109, 109, 80, 109, 109, 83,
- 84, 109, 109, 109, 109, 109, 90, 91, 92, 109,
- 94, 95, 109, 65, 109, 67, 109, 109, 70, 109,
- 109, 73, 74, 75, 109, 109, 109, 109, 80, 109,
- 109, 83, 84, 109, 109, 109, 109, 109, 90, 91,
- 92, 109, 94, 95, 109, 109, 109, 65, 109, 67,
- 109, 109, 70, 109, 109, 73, 74, 75, 109, 109,
- 109, 109, 80, 109, 109, 83, 84, 109, 109, 109,
- 109, 109, 90, 91, 92, 109, 94, 95, 109, 65,
- 109, 67, 109, 109, 70, 109, 109, 73, 74, 75,
- 109, 109, 109, 109, 80, 109, 109, 83, 84, 109,
- 109, 109, 109, 109, 90, 91, 92, 109, 94, 95,
- 109, 109, 109, 65, 109, 67, 109, 109, 70, 109,
- 109, 73, 74, 75, 109, 109, 109, 109, 80, 109,
- 109, 83, 84, 109, 109, 109, 109, 109, 90, 91,
- 92, 109, 94, 95, 109, 65, 109, 67, 109, 109,
- 70, 109, 109, 73, 74, 75, 109, 109, 109, 109,
- 80, 109, 109, 83, 84, 109, 109, 109, 109, 109,
- 90, 91, 92, 109, 94, 95, 109, 109, 109, 65,
- 109, 67, 109, 109, 70, 109, 109, 73, 74, 75,
- 109, 109, 109, 109, 80, 109, 109, 83, 84, 109,
- 109, 109, 109, 109, 90, 91, 92, 109, 94, 95,
- 109, 65, 109, 67, 109, 109, 70, 109, 109, 73,
- 74, 75, 109, 109, 109, 109, 80, 109, 109, 83,
- 84, 109, 109, 109, 109, 109, 90, 91, 92, 109,
- 94, 95, 109, 109, 109, 65, 109, 67, 109, 109,
- 70, 109, 109, 73, 74, 75, 109, 109, 109, 109,
- 80, 109, 109, 83, 84, 109, 109, 109, 109, 109,
- 90, 91, 92, 109, 94, 95, 109, 65, 109, 67,
- 109, 109, 70, 109, 109, 73, 74, 75, 109, 109,
- 109, 109, 80, 109, 109, 83, 84, 109, 109, 109,
- 109, 109, 90, 91, 92, 109, 94, 95, 109, 109,
- 109, 65, 109, 67, 109, 109, 70, 109, 109, 73,
- 74, 75, 109, 109, 109, 109, 80, 109, 109, 83,
- 84, 109, 109, 109, 109, 109, 90, 91, 92, 109,
- 94, 95, 109, 65, 109, 67, 109, 109, 70, 109,
- 109, 73, 74, 75, 109, 109, 109, 109, 80, 109,
- 109, 83, 84, 109, 109, 109, 109, 109, 90, 91,
- 92, 109, 94, 95, 109, 109, 109, 65, 109, 67,
- 109, 109, 70, 109, 109, 73, 74, 75, 109, 109,
- 109, 109, 80, 109, 109, 83, 84, 109, 109, 109,
- 109, 109, 90, 91, 92, 109, 94, 95, 109, 65,
- 109, 67, 109, 109, 70, 109, 109, 73, 74, 75,
- 109, 109, 109, 109, 80, 109, 109, 83, 84, 109,
- 109, 109, 109, 109, 90, 91, 92, 109, 94, 95,
- 109, 109, 109, 65, 109, 67, 109, 109, 70, 109,
- 109, 73, 74, 75, 109, 109, 109, 109, 80, 109,
- 109, 83, 84, 109, 109, 109, 109, 109, 90, 91,
- 92, 109, 94, 95, 109, 65, 109, 67, 109, 109,
- 70, 109, 109, 73, 74, 75, 109, 109, 109, 109,
- 80, 109, 109, 83, 84, 109, 109, 109, 109, 109,
- 90, 91, 92, 109, 94, 95, 109, 109, 109, 65,
- 109, 67, 109, 109, 70, 109, 109, 73, 74, 75,
- 109, 109, 109, 109, 80, 109, 109, 83, 84, 109,
- 109, 109, 109, 109, 90, 91, 92, 109, 94, 95,
- 109, 65, 109, 67, 109, 109, 70, 109, 109, 73,
- 74, 75, 109, 109, 109, 109, 80, 109, 109, 83,
- 84, 109, 109, 109, 109, 109, 90, 91, 92, 109,
- 94, 95, 3, 109, 109, 109, 109, 109, 9, 10,
- 11, 12, 109, 14, 109, 109, 109, 18, 19, 9,
- 109, 109, 12, 24, 109, 109, 16, 28, 29, 30,
- 109, 109, 23, 109, 25, 25, 109, 109, 109, 72,
- 31, 31, 109, 109, 109, 36, 37, 38, 39, 82,
- 109, 109, 85, 86, 87, 88, 109, 58, 59, 109,
- 109, 3, 53, 54, 55, 56, 109, 9, 10, 11,
- 12, 109, 14, 109, 109, 109, 18, 19, 109, 109,
- 109, 109, 24, 109, 25, 109, 28, 29, 30, 109,
- 31, 72, 109, 109, 109, 36, 37, 38, 39, 109,
- 109, 82, 109, 109, 85, 86, 87, 88, 109, 109,
- 109, 109, 53, 54, 55, 56, 58, 59, 109, 109,
- 3, 4, 5, 6, 109, 109, 9, 10, 11, 12,
- 9, 109, 109, 12, 109, 18, 19, 16, 17, 109,
- 109, 24, 109, 109, 109, 28, 29, 30, 65, 109,
- 67, 109, 109, 70, 109, 109, 73, 74, 109, 109,
- 109, 109, 109, 80, 43, 109, 109, 46, 109, 48,
- 109, 50, 89, 90, 91, 92, 109, 94, 95, 109,
- 2, 109, 109, 65, 109, 67, 109, 9, 70, 109,
- 12, 73, 74, 15, 16, 17, 109, 109, 80, 21,
- 109, 109, 109, 109, 109, 109, 109, 89, 90, 91,
- 92, 109, 94, 95, 65, 109, 67, 109, 109, 70,
- 72, 43, 73, 74, 46, 109, 48, 109, 50, 80,
- 82, 109, 109, 85, 86, 87, 88, 109, 109, 90,
- 91, 92, 109, 94, 95, 109, 2, 109, 109, 65,
- 109, 67, 109, 9, 70, 109, 12, 73, 74, 15,
- 16, 17, 109, 109, 80, 21, 109, 109, 109, 109,
- 109, 109, 109, 109, 90, 91, 92, 109, 94, 95,
- 65, 109, 67, 109, 109, 70, 109, 43, 73, 74,
- 46, 109, 48, 109, 50, 80, 109, 109, 109, 109,
- 109, 109, 109, 109, 109, 90, 91, 92, 109, 94,
- 95, 109, 2, 109, 109, 65, 109, 67, 109, 9,
- 70, 109, 12, 73, 74, 109, 16, 17, 109, 109,
- 80, 21, 109, 109, 109, 109, 109, 109, 109, 109,
- 90, 91, 92, 109, 94, 95, 65, 109, 67, 109,
- 109, 70, 109, 43, 73, 74, 46, 109, 48, 109,
- 50, 80, 109, 109, 109, 109, 109, 109, 109, 109,
- 109, 90, 91, 92, 109, 94, 95, 109, 2, 109,
- 109, 65, 109, 67, 2, 9, 70, 109, 12, 73,
- 74, 9, 16, 17, 12, 109, 80, 21, 16, 17,
- 109, 109, 109, 21, 109, 109, 90, 91, 92, 109,
- 94, 95, 65, 2, 67, 109, 109, 70, 109, 43,
- 73, 74, 46, 109, 48, 43, 50, 80, 46, 109,
- 48, 109, 50, 51, 109, 20, 13, 90, 91, 92,
- 109, 94, 95, 109, 109, 34, 109, 36, 37, 38,
- 39, 36, 37, 38, 39, 109, 109, 46, 109, 36,
- 37, 38, 39, 109, 53, 54, 55, 56, 53, 54,
- 55, 56, 36, 37, 38, 39, 53, 54, 55, 56,
- 13, 35, 36, 37, 38, 39, 13, 51, 109, 53,
- 54, 55, 56, 13, 109, 109, 109, 109, 109, 53,
- 54, 55, 56, 36, 37, 38, 39, 2, 109, 36,
- 37, 38, 39, 109, 13, 109, 36, 37, 38, 39,
- 53, 54, 55, 56, 109, 109, 53, 54, 55, 56,
- 109, 109, 109, 53, 54, 55, 56, 36, 37, 38,
- 39, 36, 37, 38, 39, 109, 109, 109, 109, 109,
- 109, 109, 109, 109, 53, 54, 55, 56, 53, 54,
- 55, 56,
+ 12, 34, 14, 33, 16, 35, 18, 19, 53, 54,
+ 55, 56, 24, 46, 103, 15, 28, 29, 30, 43,
+ 32, 64, 34, 81, 33, 37, 35, 51, 40, 41,
+ 42, 43, 33, 45, 35, 47, 99, 49, 50, 81,
+ 52, 70, 81, 43, 73, 57, 58, 65, 66, 67,
+ 68, 80, 70, 71, 7, 73, 74, 75, 33, 99,
+ 35, 33, 80, 35, 16, 83, 84, 96, 97, 98,
+ 13, 13, 90, 91, 92, 16, 94, 16, 96, 97,
+ 98, 16, 65, 66, 67, 68, 16, 70, 71, 14,
+ 73, 74, 75, 16, 32, 43, 70, 80, 32, 16,
+ 83, 84, 70, 77, 78, 73, 80, 90, 91, 92,
+ 34, 94, 80, 96, 97, 98, 65, 16, 67, 68,
+ 49, 70, 71, 91, 73, 74, 75, 1, 96, 97,
+ 98, 80, 1, 9, 83, 84, 12, 49, 51, 13,
+ 16, 90, 91, 92, 13, 94, 16, 96, 97, 98,
+ 65, 25, 67, 51, 1, 70, 25, 31, 73, 74,
+ 75, 16, 31, 15, 9, 80, 13, 12, 83, 84,
+ 72, 16, 48, 35, 76, 90, 91, 92, 25, 94,
+ 82, 96, 97, 98, 31, 22, 112, 65, 112, 67,
+ 112, 112, 70, 108, 109, 73, 74, 75, 112, 112,
+ 112, 112, 80, 48, 106, 83, 84, 72, 112, 112,
+ 112, 76, 90, 91, 92, 112, 94, 82, 96, 97,
+ 98, 112, 112, 112, 65, 112, 67, 112, 112, 70,
+ 108, 109, 73, 74, 75, 112, 77, 112, 112, 80,
+ 112, 106, 83, 84, 112, 112, 112, 112, 112, 90,
+ 91, 92, 112, 94, 112, 96, 97, 98, 65, 112,
+ 67, 112, 112, 70, 112, 112, 73, 74, 75, 112,
+ 112, 112, 112, 80, 112, 112, 83, 84, 112, 112,
+ 112, 112, 112, 90, 91, 92, 112, 94, 112, 96,
+ 97, 98, 65, 112, 67, 112, 112, 70, 105, 112,
+ 73, 74, 75, 112, 112, 112, 112, 80, 112, 112,
+ 83, 84, 112, 112, 112, 112, 112, 90, 91, 92,
+ 112, 94, 112, 96, 97, 98, 65, 112, 67, 112,
+ 112, 70, 105, 112, 73, 74, 75, 112, 112, 112,
+ 112, 80, 112, 112, 83, 84, 112, 112, 112, 112,
+ 112, 90, 91, 92, 112, 94, 112, 96, 97, 98,
+ 112, 112, 112, 65, 112, 67, 112, 112, 70, 112,
+ 109, 73, 74, 75, 112, 112, 112, 112, 80, 112,
+ 9, 83, 84, 12, 112, 112, 112, 16, 90, 91,
+ 92, 112, 94, 95, 96, 97, 98, 65, 112, 67,
+ 112, 112, 70, 112, 112, 73, 74, 75, 112, 77,
+ 112, 112, 80, 112, 112, 83, 84, 112, 112, 48,
+ 112, 112, 90, 91, 92, 112, 94, 112, 96, 97,
+ 98, 65, 112, 67, 112, 112, 70, 112, 112, 73,
+ 74, 75, 112, 112, 112, 112, 80, 112, 112, 83,
+ 84, 112, 112, 112, 112, 112, 90, 91, 92, 112,
+ 94, 112, 96, 97, 98, 65, 112, 67, 112, 112,
+ 70, 112, 112, 73, 74, 75, 112, 112, 112, 112,
+ 80, 112, 112, 83, 84, 112, 112, 112, 112, 112,
+ 90, 91, 92, 112, 94, 112, 96, 97, 98, 65,
+ 112, 67, 112, 112, 70, 112, 112, 73, 74, 75,
+ 112, 112, 112, 112, 80, 112, 112, 83, 84, 112,
+ 112, 112, 112, 112, 90, 91, 92, 112, 94, 112,
+ 96, 97, 98, 65, 112, 67, 112, 112, 70, 112,
+ 112, 73, 74, 75, 112, 112, 112, 112, 80, 112,
+ 112, 83, 84, 112, 112, 112, 112, 112, 90, 91,
+ 92, 112, 94, 112, 96, 97, 98, 65, 112, 67,
+ 112, 112, 70, 112, 112, 73, 74, 75, 112, 112,
+ 112, 112, 80, 112, 112, 83, 84, 112, 112, 112,
+ 112, 112, 90, 91, 92, 112, 94, 112, 96, 97,
+ 98, 65, 112, 67, 112, 112, 70, 112, 112, 73,
+ 74, 75, 112, 112, 112, 112, 80, 112, 112, 83,
+ 84, 112, 112, 112, 112, 112, 90, 91, 92, 112,
+ 94, 112, 96, 97, 98, 65, 112, 67, 112, 112,
+ 70, 112, 112, 73, 74, 75, 112, 112, 112, 112,
+ 80, 112, 112, 83, 84, 112, 112, 112, 112, 112,
+ 90, 91, 92, 112, 94, 112, 96, 97, 98, 65,
+ 112, 67, 112, 112, 70, 112, 112, 73, 74, 75,
+ 112, 112, 112, 112, 80, 112, 112, 83, 84, 112,
+ 112, 112, 112, 112, 90, 91, 92, 112, 94, 112,
+ 96, 97, 98, 65, 112, 67, 112, 112, 70, 112,
+ 112, 73, 74, 75, 112, 112, 112, 112, 80, 112,
+ 112, 83, 84, 112, 112, 112, 112, 112, 90, 91,
+ 92, 112, 94, 112, 96, 97, 98, 65, 112, 67,
+ 112, 112, 70, 112, 112, 73, 74, 75, 112, 112,
+ 112, 112, 80, 112, 112, 83, 84, 112, 112, 112,
+ 112, 112, 90, 91, 92, 112, 94, 112, 96, 97,
+ 98, 65, 112, 67, 112, 112, 70, 112, 112, 73,
+ 74, 75, 112, 112, 112, 112, 80, 112, 112, 83,
+ 84, 112, 112, 112, 112, 112, 90, 91, 92, 112,
+ 94, 112, 96, 97, 98, 65, 112, 67, 112, 112,
+ 70, 112, 112, 73, 74, 75, 112, 112, 112, 112,
+ 80, 112, 112, 83, 84, 112, 112, 112, 112, 112,
+ 90, 91, 92, 112, 94, 112, 96, 97, 98, 65,
+ 112, 67, 112, 112, 70, 112, 112, 73, 74, 75,
+ 112, 112, 112, 112, 80, 112, 112, 83, 84, 112,
+ 112, 112, 112, 112, 90, 91, 92, 112, 94, 112,
+ 96, 97, 98, 65, 112, 67, 112, 112, 70, 112,
+ 112, 73, 74, 75, 112, 112, 112, 112, 80, 112,
+ 112, 83, 84, 112, 112, 112, 112, 112, 90, 91,
+ 92, 112, 94, 112, 96, 97, 98, 65, 112, 67,
+ 112, 112, 70, 112, 112, 73, 74, 75, 112, 112,
+ 112, 112, 80, 112, 112, 83, 84, 112, 112, 112,
+ 112, 112, 90, 91, 92, 112, 94, 112, 96, 97,
+ 98, 65, 112, 67, 112, 112, 70, 112, 112, 73,
+ 74, 75, 112, 112, 112, 112, 80, 112, 112, 83,
+ 84, 112, 112, 112, 112, 112, 90, 91, 92, 112,
+ 94, 112, 96, 97, 98, 65, 112, 67, 112, 112,
+ 70, 112, 112, 73, 74, 75, 112, 112, 112, 112,
+ 80, 112, 112, 83, 84, 112, 112, 112, 112, 112,
+ 90, 91, 92, 112, 94, 112, 96, 97, 98, 65,
+ 112, 67, 112, 112, 70, 112, 112, 73, 74, 75,
+ 112, 112, 112, 112, 80, 112, 112, 83, 84, 112,
+ 112, 112, 112, 112, 90, 91, 92, 112, 94, 112,
+ 96, 97, 98, 65, 112, 67, 112, 112, 70, 112,
+ 112, 73, 74, 75, 112, 112, 112, 112, 80, 112,
+ 112, 83, 84, 112, 112, 112, 112, 112, 90, 91,
+ 92, 112, 94, 112, 96, 97, 98, 65, 112, 67,
+ 112, 112, 70, 112, 112, 73, 74, 75, 112, 112,
+ 112, 112, 80, 112, 112, 83, 84, 112, 112, 112,
+ 112, 112, 90, 91, 92, 112, 94, 112, 96, 97,
+ 98, 65, 112, 67, 112, 112, 70, 112, 112, 73,
+ 74, 75, 112, 112, 112, 112, 80, 112, 112, 83,
+ 84, 112, 112, 112, 112, 112, 90, 91, 92, 112,
+ 94, 112, 96, 97, 98, 65, 112, 67, 112, 112,
+ 70, 112, 112, 73, 74, 75, 112, 112, 112, 112,
+ 80, 112, 112, 83, 84, 112, 112, 112, 112, 112,
+ 90, 91, 92, 112, 94, 112, 96, 97, 98, 65,
+ 112, 67, 112, 112, 70, 112, 112, 73, 74, 75,
+ 112, 112, 112, 112, 80, 112, 112, 83, 84, 112,
+ 112, 112, 112, 112, 90, 91, 92, 112, 94, 112,
+ 96, 97, 98, 65, 112, 67, 112, 112, 70, 112,
+ 112, 73, 74, 75, 112, 112, 112, 112, 80, 112,
+ 112, 83, 84, 112, 112, 112, 112, 112, 90, 91,
+ 92, 112, 94, 112, 96, 97, 98, 65, 112, 67,
+ 112, 112, 70, 112, 112, 73, 74, 75, 112, 112,
+ 112, 112, 80, 112, 112, 83, 84, 112, 112, 112,
+ 112, 112, 90, 91, 92, 112, 94, 112, 96, 97,
+ 98, 65, 112, 67, 112, 112, 70, 112, 112, 73,
+ 74, 75, 112, 112, 112, 112, 80, 112, 112, 83,
+ 84, 112, 112, 112, 112, 112, 90, 91, 92, 112,
+ 94, 112, 96, 97, 98, 65, 112, 67, 112, 112,
+ 70, 112, 112, 73, 74, 75, 112, 112, 112, 112,
+ 80, 112, 112, 83, 84, 112, 112, 112, 112, 112,
+ 90, 91, 92, 112, 94, 112, 96, 97, 98, 65,
+ 112, 67, 112, 112, 70, 112, 112, 73, 74, 75,
+ 112, 112, 112, 112, 80, 112, 112, 83, 84, 112,
+ 112, 112, 112, 112, 90, 91, 92, 112, 94, 112,
+ 96, 97, 98, 65, 112, 67, 72, 112, 70, 112,
+ 112, 73, 74, 112, 112, 112, 82, 112, 80, 85,
+ 86, 87, 88, 112, 112, 112, 112, 89, 90, 91,
+ 92, 112, 94, 112, 96, 97, 98, 65, 112, 67,
+ 72, 112, 70, 112, 112, 73, 74, 112, 112, 112,
+ 82, 112, 80, 85, 86, 87, 88, 112, 112, 112,
+ 112, 89, 90, 91, 92, 3, 94, 112, 96, 97,
+ 98, 9, 10, 11, 12, 112, 14, 112, 112, 112,
+ 18, 19, 9, 112, 112, 12, 24, 112, 25, 16,
+ 28, 29, 30, 112, 31, 23, 112, 25, 25, 36,
+ 37, 38, 39, 31, 31, 112, 112, 112, 36, 37,
+ 38, 39, 112, 112, 112, 112, 53, 54, 55, 56,
+ 58, 59, 112, 112, 3, 53, 54, 55, 56, 112,
+ 9, 10, 11, 12, 112, 14, 112, 20, 112, 18,
+ 19, 112, 112, 112, 112, 24, 112, 112, 26, 28,
+ 29, 30, 112, 36, 37, 38, 39, 112, 36, 37,
+ 38, 39, 112, 112, 112, 112, 112, 112, 112, 112,
+ 53, 54, 55, 56, 112, 53, 54, 55, 56, 58,
+ 59, 112, 112, 3, 4, 5, 6, 2, 112, 9,
+ 10, 11, 12, 112, 9, 112, 112, 12, 18, 19,
+ 15, 16, 17, 112, 24, 112, 21, 112, 28, 29,
+ 30, 65, 112, 67, 112, 112, 70, 112, 112, 73,
+ 74, 112, 112, 112, 112, 112, 80, 112, 43, 112,
+ 112, 46, 112, 48, 112, 50, 90, 91, 92, 112,
+ 94, 112, 96, 97, 98, 112, 65, 112, 67, 112,
+ 1, 70, 112, 112, 73, 74, 112, 112, 112, 112,
+ 112, 80, 13, 112, 112, 112, 17, 112, 112, 112,
+ 112, 90, 91, 92, 25, 94, 112, 96, 97, 98,
+ 31, 112, 65, 34, 67, 112, 72, 70, 112, 112,
+ 73, 74, 112, 112, 112, 46, 82, 80, 112, 85,
+ 86, 87, 88, 112, 112, 112, 112, 90, 91, 92,
+ 112, 94, 112, 96, 97, 98, 112, 65, 112, 67,
+ 112, 112, 70, 112, 112, 73, 74, 112, 112, 112,
+ 112, 112, 80, 112, 112, 112, 112, 112, 112, 112,
+ 112, 112, 90, 91, 92, 112, 94, 112, 96, 97,
+ 98, 112, 112, 65, 112, 67, 112, 112, 70, 112,
+ 112, 73, 74, 112, 112, 112, 112, 112, 80, 112,
+ 112, 112, 112, 112, 112, 112, 112, 112, 90, 91,
+ 92, 112, 94, 112, 96, 97, 98, 112, 65, 112,
+ 67, 112, 112, 70, 112, 112, 73, 74, 112, 112,
+ 112, 112, 112, 80, 112, 112, 112, 112, 112, 112,
+ 112, 112, 112, 90, 91, 92, 112, 94, 112, 96,
+ 97, 98, 112, 112, 65, 112, 67, 2, 112, 70,
+ 112, 112, 73, 74, 9, 112, 112, 12, 112, 80,
+ 112, 16, 17, 112, 112, 112, 21, 112, 112, 90,
+ 91, 92, 112, 94, 112, 96, 97, 98, 112, 112,
+ 2, 112, 112, 112, 112, 112, 112, 112, 43, 112,
+ 112, 46, 112, 48, 2, 50, 51, 112, 112, 112,
+ 112, 9, 112, 112, 12, 112, 112, 15, 16, 17,
+ 112, 2, 34, 21, 36, 37, 38, 39, 9, 112,
+ 112, 12, 112, 112, 46, 16, 17, 112, 112, 2,
+ 21, 53, 54, 55, 56, 43, 9, 112, 46, 12,
+ 48, 112, 50, 16, 17, 112, 112, 112, 21, 112,
+ 112, 112, 43, 112, 112, 46, 13, 48, 112, 50,
+ 112, 112, 112, 112, 112, 35, 36, 37, 38, 39,
+ 43, 112, 112, 46, 112, 48, 112, 50, 112, 36,
+ 37, 38, 39, 53, 54, 55, 56, 13, 112, 36,
+ 37, 38, 39, 13, 112, 112, 53, 54, 55, 56,
+ 13, 112, 112, 112, 51, 112, 53, 54, 55, 56,
+ 36, 37, 38, 39, 2, 112, 36, 37, 38, 39,
+ 112, 13, 112, 36, 37, 38, 39, 53, 54, 55,
+ 56, 112, 112, 53, 54, 55, 56, 112, 112, 112,
+ 53, 54, 55, 56, 36, 37, 38, 39, 36, 37,
+ 38, 39, 9, 112, 112, 12, 112, 112, 112, 16,
+ 17, 53, 54, 55, 56, 53, 54, 55, 56, 112,
+ 112, 112, 9, 112, 112, 12, 112, 112, 112, 16,
+ 112, 112, 112, 112, 112, 112, 43, 112, 25, 46,
+ 27, 48, 112, 50, 31,
);
- const YY_SHIFT_USE_DFLT = -16;
- const YY_SHIFT_MAX = 234;
+ const YY_SHIFT_USE_DFLT = -11;
+ const YY_SHIFT_MAX = 239;
public static $yy_shift_ofst = array(
- -16, 98, 98, 148, 198, 198, 248, 148, 148, 198,
+ -11, 98, 98, 148, 198, 198, 248, 148, 148, 198,
148, 248, -2, 48, 298, 148, 148, 148, 298, 148,
148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
- 348, 148, 148, 148, 148, 398, 148, 148, 148, 448,
- 498, 498, 498, 498, 498, 498, 498, 498, 1819, 1869,
- 1869, 147, 1809, 2225, 647, 2233, 2256, 2246, 2277, 415,
- 2283, 2290, 2315, 2311, 465, 465, 465, 465, 465, 465,
+ 348, 148, 148, 148, 148, 148, 398, 148, 148, 148,
+ 448, 498, 498, 498, 498, 498, 498, 498, 498, 147,
+ 1962, 1953, 1953, 35, 1952, 2007, 2012, 2413, 2400, 2423,
+ 2444, 415, 2450, 2457, 2482, 2478, 465, 465, 465, 465,
465, 465, 465, 465, 465, 465, 465, 465, 465, 465,
- 465, 465, 591, 35, 249, 93, 1868, 731, 1820, 36,
- 127, 93, 93, 249, 249, 273, 1927, 1988, 561, 349,
- 765, 775, 809, 209, 209, 303, 256, 285, 256, 356,
- 369, 387, 428, 428, 228, 372, 460, 256, 0, 0,
- 0, 0, 0, 0, 0, 0, 166, 166, 17, 0,
- -16, -16, 2192, 2054, 2120, 2186, 1931, 199, 626, 359,
- 86, 256, 256, 458, 256, 485, 256, 485, 256, 286,
- 286, 256, 256, 256, 256, 286, 517, 286, 286, 286,
- 499, 286, 499, 286, 256, 256, 256, 256, 0, 490,
- 0, 0, 490, 0, 497, 166, 166, 166, -16, -16,
- -16, -16, -16, -16, 2221, 11, 100, -10, 240, 763,
- 141, 391, 390, 130, 423, 546, 461, 467, -15, 479,
- 518, 534, 511, 536, 32, 559, 566, 599, 585, 588,
- 598, 606, 596, 604, 617, 625, 627, 630, 629, 610,
- 623, 631, 615, 640, 497, 642, 616, 619, 643, 613,
- 618, 650, 657, 641, 653,
+ 465, 465, 465, 465, 465, 465, 2139, 90, 143, 2011,
+ 2533, 1963, 36, 103, 143, 143, 90, 90, 235, 2070,
+ 2075, 634, 59, 636, 641, 663, 359, 359, 203, 221,
+ 269, 221, 306, 332, 196, 378, 378, 264, 385, 319,
+ 221, 5, 5, 5, 5, 5, 5, 5, 5, 112,
+ 112, 82, 5, -11, -11, 2315, 2362, 2379, 2397, 2513,
+ 49, 665, 409, 218, 221, 221, 458, 221, 382, 221,
+ 382, 221, 394, 394, 221, 221, 221, 221, 394, 40,
+ 394, 394, 394, 399, 394, 399, 394, 221, 221, 221,
+ 221, 5, 463, 5, 5, 463, 5, 462, 112, 112,
+ 112, -11, -11, -11, -11, -11, -11, 2348, 11, 100,
+ -10, 190, 881, 141, 265, 292, 252, 425, 479, 350,
+ 313, 440, 240, 429, 477, 459, 480, 153, 486, 501,
+ 509, 535, 538, 510, 557, 567, 568, 558, 569, 571,
+ 575, 580, 585, 587, 562, 572, 576, 586, 593, 462,
+ 611, 581, 598, 640, 597, 612, 655, 658, 648, 673,
);
- const YY_REDUCE_USE_DFLT = -96;
- const YY_REDUCE_MAX = 183;
+ const YY_REDUCE_USE_DFLT = -99;
+ const YY_REDUCE_MAX = 186;
public static $yy_reduce_ofst = array(
- 91, 492, 523, 556, 587, 624, 658, 690, 724, 758,
- 792, 826, 858, 892, 924, 958, 990, 1024, 1056, 1090,
- 1122, 1156, 1188, 1222, 1254, 1288, 1320, 1354, 1386, 1420,
- 1452, 1486, 1518, 1552, 1584, 1618, 1650, 1684, 1716, 1893,
- 1928, 1959, 1994, 2025, 2060, 2091, 2126, 2157, 1777, 1829,
- 1958, 1, -4, 116, 116, 116, 116, 116, 116, 116,
- 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
- 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
- 116, 116, 170, 251, 274, 220, 203, 39, 51, -95,
- 284, 151, 231, -57, 322, 320, 3, -44, -23, 85,
- 239, 239, 239, 72, -23, 137, 152, 224, 331, 364,
- 318, 137, 78, 232, 239, 239, 239, 393, 408, 239,
- 239, 239, 239, 239, 239, 239, 137, 424, 239, 239,
- 470, 239, 6, 6, 6, 6, 6, 40, 56, 6,
- 6, 138, 138, 165, 138, 169, 138, 206, 138, 282,
- 282, 138, 138, 138, 138, 282, 319, 282, 282, 282,
- 324, 282, 367, 282, 138, 138, 138, 138, 383, 392,
- 383, 383, 392, 383, 440, 474, 474, 474, 514, 480,
- 500, 504, 483, 509,
+ 109, 492, 527, 561, 595, 632, 669, 703, 737, 771,
+ 808, 842, 876, 910, 944, 978, 1012, 1046, 1080, 1114,
+ 1148, 1182, 1216, 1250, 1284, 1318, 1352, 1386, 1420, 1454,
+ 1488, 1522, 1556, 1590, 1624, 1658, 1692, 1726, 1760, 1794,
+ 1828, 1862, 2036, 2071, 2107, 2142, 2178, 2213, 2249, 542,
+ 1824, 1858, 2104, 481, 114, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 608, 536, 645, 164,
+ 20, 101, -98, 34, 181, 212, -57, 174, 195, 3,
+ 254, -5, -79, 228, 228, 228, 180, -5, 222, 51,
+ 272, 291, 302, 305, 222, -75, 261, 228, 228, 228,
+ 331, 323, 228, 228, 228, 228, 228, 228, 228, 222,
+ 299, 228, 228, 360, 228, 102, 102, 102, 102, 102,
+ 85, 122, 102, 102, 188, 188, 300, 188, 324, 188,
+ 335, 188, 244, 244, 188, 188, 188, 188, 244, 321,
+ 244, 244, 244, 337, 244, 347, 244, 188, 188, 188,
+ 188, 375, 376, 375, 375, 376, 375, 400, 421, 421,
+ 421, 467, 452, 468, 471, 447, 470,
);
public static $yyExpectedTokens = array(
array(),
@@ -839,6 +877,7 @@ public static $yy_action = array(
array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(9, 10, 11, 12, 14, 16, 18, 19, 21, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
@@ -848,10 +887,11 @@ public static $yy_action = array(
array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
array(9, 10, 11, 12, 14, 16, 18, 19, 24, 28, 29, 30, 32, 34, 37, 40, 41, 42, 43, 45, 47, 49, 50, 52, 57, 58, ),
+ array(14, 16, 47, 49, 52, ),
array(23, 25, 31, 36, 37, 38, 39, 53, 54, 55, 56, ),
array(25, 31, 36, 37, 38, 39, 53, 54, 55, 56, ),
array(25, 31, 36, 37, 38, 39, 53, 54, 55, 56, ),
- array(14, 16, 47, 49, 52, ),
+ array(14, 16, 49, 52, ),
array(3, 9, 10, 11, 12, 14, 18, 19, 24, 28, 29, 30, 58, 59, ),
array(20, 36, 37, 38, 39, 53, 54, 55, 56, ),
array(26, 36, 37, 38, 39, 53, 54, 55, 56, ),
@@ -882,8 +922,9 @@ public static $yy_action = array(
array(36, 37, 38, 39, 53, 54, 55, 56, ),
array(36, 37, 38, 39, 53, 54, 55, 56, ),
array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
+ array(36, 37, 38, 39, 53, 54, 55, 56, ),
array(1, 13, 17, 25, 31, 34, 46, ),
- array(14, 16, 49, 52, ),
array(14, 34, 52, ),
array(1, 25, 31, ),
array(3, 9, 10, 11, 12, 14, 18, 19, 24, 28, 29, 30, 58, 59, ),
@@ -1008,6 +1049,8 @@ public static $yy_action = array(
array(43, 51, ),
array(33, 35, ),
array(33, 35, ),
+ array(33, 35, ),
+ array(33, 35, ),
array(15, 43, ),
array(7, ),
array(13, ),
@@ -1133,47 +1176,49 @@ public static $yy_action = array(
array(),
array(),
array(),
+ array(),
+ array(),
);
public static $yy_default = array(
- 343, 525, 525, 525, 510, 510, 525, 487, 487, 525,
- 487, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 383, 362,
- 383, 525, 525, 525, 388, 525, 525, 525, 356, 525,
- 525, 525, 525, 525, 367, 486, 406, 413, 485, 511,
- 513, 512, 412, 414, 411, 415, 390, 394, 395, 385,
- 388, 356, 426, 525, 525, 383, 525, 383, 383, 500,
- 442, 383, 383, 525, 525, 374, 333, 441, 452, 525,
- 397, 397, 397, 452, 452, 442, 383, 525, 383, 383,
- 377, 442, 525, 525, 397, 397, 397, 364, 379, 397,
- 404, 417, 418, 419, 405, 410, 442, 497, 417, 403,
- 341, 494, 441, 441, 441, 441, 441, 525, 454, 452,
- 468, 353, 363, 525, 366, 525, 371, 525, 372, 449,
- 450, 357, 359, 360, 361, 478, 452, 477, 480, 479,
- 445, 446, 447, 448, 373, 369, 370, 365, 375, 488,
- 378, 380, 489, 435, 452, 474, 501, 498, 341, 493,
- 493, 493, 452, 452, 426, 422, 426, 416, 416, 453,
- 426, 426, 416, 416, 339, 525, 525, 525, 416, 426,
- 436, 525, 525, 525, 525, 422, 525, 525, 422, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 422,
- 424, 525, 499, 525, 468, 525, 525, 525, 525, 525,
- 431, 525, 525, 525, 391, 334, 335, 336, 337, 338,
- 340, 342, 344, 345, 346, 347, 348, 349, 350, 352,
- 381, 382, 470, 471, 472, 492, 376, 490, 491, 420,
- 429, 430, 439, 440, 451, 455, 456, 457, 398, 399,
- 400, 401, 402, 421, 423, 425, 427, 431, 432, 433,
- 407, 408, 409, 434, 437, 438, 465, 463, 502, 503,
- 504, 505, 443, 444, 476, 469, 484, 351, 475, 521,
- 522, 514, 515, 516, 519, 518, 520, 523, 524, 517,
- 507, 509, 508, 506, 481, 466, 464, 462, 459, 460,
- 461, 467, 482, 483, 428, 458, 496, 473, 468, 384,
- 368, 392, 396,
+ 350, 539, 539, 539, 524, 524, 539, 501, 501, 539,
+ 452, 539, 539, 539, 539, 539, 539, 539, 539, 539,
+ 539, 539, 539, 539, 539, 539, 539, 539, 539, 539,
+ 539, 539, 539, 539, 539, 539, 539, 539, 539, 539,
+ 539, 539, 539, 539, 539, 539, 539, 539, 539, 539,
+ 390, 369, 390, 539, 539, 539, 395, 539, 539, 539,
+ 363, 539, 539, 539, 539, 539, 374, 500, 413, 420,
+ 499, 525, 527, 526, 419, 421, 418, 422, 451, 449,
+ 397, 401, 402, 392, 395, 363, 433, 539, 390, 539,
+ 390, 390, 514, 454, 390, 390, 539, 539, 381, 340,
+ 453, 466, 539, 404, 404, 404, 466, 466, 454, 390,
+ 539, 390, 390, 384, 454, 539, 539, 404, 404, 404,
+ 371, 386, 404, 411, 424, 425, 426, 412, 417, 454,
+ 511, 424, 410, 348, 508, 453, 453, 453, 453, 453,
+ 539, 468, 466, 482, 360, 370, 539, 373, 539, 378,
+ 539, 379, 463, 464, 364, 366, 367, 368, 492, 466,
+ 491, 494, 493, 457, 458, 459, 460, 380, 376, 377,
+ 372, 382, 502, 385, 387, 503, 442, 466, 488, 515,
+ 512, 348, 507, 507, 507, 466, 466, 433, 429, 433,
+ 423, 423, 467, 433, 433, 423, 423, 346, 539, 539,
+ 539, 423, 433, 443, 539, 539, 539, 539, 429, 539,
+ 461, 461, 539, 429, 539, 539, 539, 539, 539, 539,
+ 539, 539, 539, 539, 429, 431, 539, 513, 539, 482,
+ 539, 539, 539, 539, 539, 438, 539, 539, 539, 398,
+ 341, 342, 343, 344, 345, 347, 349, 351, 352, 353,
+ 354, 355, 356, 357, 359, 388, 389, 484, 485, 486,
+ 506, 383, 504, 505, 427, 436, 437, 446, 447, 465,
+ 469, 470, 471, 405, 406, 407, 408, 409, 428, 430,
+ 432, 434, 438, 439, 440, 414, 415, 416, 441, 444,
+ 445, 479, 477, 516, 517, 518, 519, 455, 456, 490,
+ 461, 462, 483, 498, 358, 489, 535, 536, 528, 529,
+ 530, 533, 532, 534, 537, 538, 531, 521, 523, 522,
+ 520, 495, 480, 478, 476, 473, 474, 475, 481, 496,
+ 497, 435, 472, 510, 487, 482, 391, 375, 399, 403,
);
- const YYNOCODE = 110;
+ const YYNOCODE = 113;
const YYSTACKDEPTH = 500;
- const YYNSTATE = 333;
- const YYNRULE = 192;
+ const YYNSTATE = 340;
+ const YYNRULE = 199;
const YYERRORSYMBOL = 60;
const YYERRSYMDT = 'yy0';
const YYFALLBACK = 0;
@@ -1221,16 +1266,16 @@ public static $yy_action = array(
'error', 'start', 'template', 'literal_e2',
'literal_e1', 'smartytag', 'tagbody', 'tag',
'outattr', 'eqoutattr', 'varindexed', 'output',
- 'attributes', 'variable', 'value', 'expr',
+ 'attributes', 'variablevalue', 'value', 'expr',
'modifierlist', 'statement', 'statements', 'foraction',
'varvar', 'modparameters', 'attribute', 'nullcoalescing',
'ternary', 'tlop', 'lop', 'scond',
'isin', 'array', 'function', 'ns1',
- 'doublequoted_with_quotes', 'static_class_access', 'arraydef', 'object',
- 'arrayindex', 'indexdef', 'varvarele', 'objectchain',
- 'objectelement', 'method', 'params', 'modifier',
- 'modparameter', 'arrayelements', 'arrayelement', 'doublequoted',
- 'doublequotedcontent',
+ 'doublequoted_with_quotes', 'static_class_access', 'arraydef', 'variablelist',
+ 'variable', 'object', 'configvariable', 'arrayindex',
+ 'indexdef', 'varvarele', 'objectchain', 'objectelement',
+ 'method', 'params', 'modifier', 'modparameter',
+ 'arrayelements', 'arrayelement', 'doublequoted', 'doublequotedcontent',
);
public static $yyRuleName = array(
@@ -1255,7 +1300,7 @@ public static $yy_action = array(
'tagbody ::= varindexed eqoutattr',
'eqoutattr ::= EQUAL outattr',
'outattr ::= output attributes',
- 'output ::= variable',
+ 'output ::= variablevalue',
'output ::= value',
'output ::= expr',
'tag ::= LDEL ID attributes',
@@ -1317,11 +1362,11 @@ public static $yy_action = array(
'ternary ::= expr QMARK value COLON expr',
'ternary ::= expr QMARK expr COLON expr',
'ternary ::= expr QMARK COLON expr',
- 'value ::= variable',
+ 'value ::= variablevalue',
'value ::= UNIMATH value',
'value ::= NOT value',
'value ::= TYPECAST value',
- 'value ::= variable INCDEC',
+ 'value ::= variablevalue INCDEC',
'value ::= HEX',
'value ::= INTEGER',
'value ::= INTEGER DOT INTEGER',
@@ -1330,8 +1375,8 @@ public static $yy_action = array(
'value ::= ID',
'value ::= function',
'value ::= OPENP expr CLOSEP',
- 'value ::= variable INSTANCEOF ns1',
- 'value ::= variable INSTANCEOF variable',
+ 'value ::= variablevalue INSTANCEOF ns1',
+ 'value ::= variablevalue INSTANCEOF variablevalue',
'value ::= SINGLEQUOTESTRING',
'value ::= doublequoted_with_quotes',
'value ::= varindexed DOUBLECOLON static_class_access',
@@ -1342,14 +1387,21 @@ public static $yy_action = array(
'value ::= ns1 DOUBLECOLON static_class_access',
'ns1 ::= ID',
'ns1 ::= NAMESPACE',
+ 'variablelist ::= variablelist COMMA variable',
+ 'variablelist ::= variablelist COMMA expr',
+ 'variablelist ::= variable',
+ 'variablelist ::= expr',
+ 'variablelist ::=',
'variable ::= DOLLARID',
'variable ::= varindexed',
'variable ::= varvar AT ID',
'variable ::= object',
- 'variable ::= HATCH ID HATCH',
- 'variable ::= HATCH ID HATCH arrayindex',
- 'variable ::= HATCH variable HATCH',
- 'variable ::= HATCH variable HATCH arrayindex',
+ 'configvariable ::= HATCH ID HATCH',
+ 'configvariable ::= HATCH ID HATCH arrayindex',
+ 'configvariable ::= HATCH variablevalue HATCH',
+ 'configvariable ::= HATCH variablevalue HATCH arrayindex',
+ 'variablevalue ::= variable',
+ 'variablevalue ::= configvariable',
'varindexed ::= DOLLARID arrayindex',
'varindexed ::= varvar arrayindex',
'arrayindex ::= arrayindex indexdef',
@@ -1365,7 +1417,7 @@ public static $yy_action = array(
'indexdef ::= OPENB SINGLEQUOTESTRING CLOSEB',
'indexdef ::= OPENB INTEGER CLOSEB',
'indexdef ::= OPENB DOLLARID CLOSEB',
- 'indexdef ::= OPENB variable CLOSEB',
+ 'indexdef ::= OPENB variablevalue CLOSEB',
'indexdef ::= OPENB value CLOSEB',
'indexdef ::= OPENB expr CLOSEB',
'indexdef ::= OPENB CLOSEB',
@@ -1383,7 +1435,7 @@ public static $yy_action = array(
'objectelement ::= PTR LDEL expr RDEL arrayindex',
'objectelement ::= PTR ID LDEL expr RDEL arrayindex',
'objectelement ::= PTR method',
- 'function ::= ns1 OPENP params CLOSEP',
+ 'function ::= ns1 OPENP variablelist CLOSEP',
'method ::= ID OPENP params CLOSEP',
'method ::= DOLLARID OPENP params CLOSEP',
'params ::= params COMMA expr',
@@ -1419,10 +1471,10 @@ public static $yy_action = array(
'doublequoted_with_quotes ::= QUOTE doublequoted QUOTE',
'doublequoted ::= doublequoted doublequotedcontent',
'doublequoted ::= doublequotedcontent',
- 'doublequotedcontent ::= BACKTICK variable BACKTICK',
+ 'doublequotedcontent ::= BACKTICK variablevalue BACKTICK',
'doublequotedcontent ::= BACKTICK expr BACKTICK',
'doublequotedcontent ::= DOLLARID',
- 'doublequotedcontent ::= LDEL variable RDEL',
+ 'doublequotedcontent ::= LDEL variablevalue RDEL',
'doublequotedcontent ::= LDEL expr RDEL',
'doublequotedcontent ::= smartytag',
'doublequotedcontent ::= TEXT',
@@ -1849,62 +1901,69 @@ public static $yy_action = array(
array( 0 => 74, 1 => 3 ),
array( 0 => 91, 1 => 1 ),
array( 0 => 91, 1 => 1 ),
+ array( 0 => 95, 1 => 3 ),
+ array( 0 => 95, 1 => 3 ),
+ array( 0 => 95, 1 => 1 ),
+ array( 0 => 95, 1 => 1 ),
+ array( 0 => 95, 1 => 0 ),
+ array( 0 => 96, 1 => 1 ),
+ array( 0 => 96, 1 => 1 ),
+ array( 0 => 96, 1 => 3 ),
+ array( 0 => 96, 1 => 1 ),
+ array( 0 => 98, 1 => 3 ),
+ array( 0 => 98, 1 => 4 ),
+ array( 0 => 98, 1 => 3 ),
+ array( 0 => 98, 1 => 4 ),
array( 0 => 73, 1 => 1 ),
array( 0 => 73, 1 => 1 ),
- array( 0 => 73, 1 => 3 ),
- array( 0 => 73, 1 => 1 ),
- array( 0 => 73, 1 => 3 ),
- array( 0 => 73, 1 => 4 ),
- array( 0 => 73, 1 => 3 ),
- array( 0 => 73, 1 => 4 ),
array( 0 => 70, 1 => 2 ),
array( 0 => 70, 1 => 2 ),
- array( 0 => 96, 1 => 2 ),
- array( 0 => 96, 1 => 0 ),
- array( 0 => 97, 1 => 2 ),
- array( 0 => 97, 1 => 2 ),
- array( 0 => 97, 1 => 4 ),
- array( 0 => 97, 1 => 2 ),
- array( 0 => 97, 1 => 2 ),
- array( 0 => 97, 1 => 4 ),
- array( 0 => 97, 1 => 3 ),
- array( 0 => 97, 1 => 5 ),
- array( 0 => 97, 1 => 3 ),
- array( 0 => 97, 1 => 3 ),
- array( 0 => 97, 1 => 3 ),
- array( 0 => 97, 1 => 3 ),
- array( 0 => 97, 1 => 3 ),
- array( 0 => 97, 1 => 3 ),
- array( 0 => 97, 1 => 2 ),
- array( 0 => 80, 1 => 1 ),
- array( 0 => 80, 1 => 1 ),
- array( 0 => 80, 1 => 2 ),
- array( 0 => 98, 1 => 1 ),
- array( 0 => 98, 1 => 1 ),
- array( 0 => 98, 1 => 3 ),
- array( 0 => 95, 1 => 2 ),
- array( 0 => 99, 1 => 1 ),
array( 0 => 99, 1 => 2 ),
- array( 0 => 100, 1 => 3 ),
+ array( 0 => 99, 1 => 0 ),
+ array( 0 => 100, 1 => 2 ),
+ array( 0 => 100, 1 => 2 ),
+ array( 0 => 100, 1 => 4 ),
+ array( 0 => 100, 1 => 2 ),
+ array( 0 => 100, 1 => 2 ),
+ array( 0 => 100, 1 => 4 ),
array( 0 => 100, 1 => 3 ),
array( 0 => 100, 1 => 5 ),
- array( 0 => 100, 1 => 6 ),
+ array( 0 => 100, 1 => 3 ),
+ array( 0 => 100, 1 => 3 ),
+ array( 0 => 100, 1 => 3 ),
+ array( 0 => 100, 1 => 3 ),
+ array( 0 => 100, 1 => 3 ),
+ array( 0 => 100, 1 => 3 ),
array( 0 => 100, 1 => 2 ),
- array( 0 => 90, 1 => 4 ),
- array( 0 => 101, 1 => 4 ),
- array( 0 => 101, 1 => 4 ),
- array( 0 => 102, 1 => 3 ),
+ array( 0 => 80, 1 => 1 ),
+ array( 0 => 80, 1 => 1 ),
+ array( 0 => 80, 1 => 2 ),
+ array( 0 => 101, 1 => 1 ),
+ array( 0 => 101, 1 => 1 ),
+ array( 0 => 101, 1 => 3 ),
+ array( 0 => 97, 1 => 2 ),
array( 0 => 102, 1 => 1 ),
- array( 0 => 102, 1 => 0 ),
- array( 0 => 76, 1 => 3 ),
- array( 0 => 76, 1 => 2 ),
+ array( 0 => 102, 1 => 2 ),
+ array( 0 => 103, 1 => 3 ),
array( 0 => 103, 1 => 3 ),
+ array( 0 => 103, 1 => 5 ),
+ array( 0 => 103, 1 => 6 ),
array( 0 => 103, 1 => 2 ),
+ array( 0 => 90, 1 => 4 ),
+ array( 0 => 104, 1 => 4 ),
+ array( 0 => 104, 1 => 4 ),
+ array( 0 => 105, 1 => 3 ),
+ array( 0 => 105, 1 => 1 ),
+ array( 0 => 105, 1 => 0 ),
+ array( 0 => 76, 1 => 3 ),
+ array( 0 => 76, 1 => 2 ),
+ array( 0 => 106, 1 => 3 ),
+ array( 0 => 106, 1 => 2 ),
array( 0 => 81, 1 => 2 ),
array( 0 => 81, 1 => 0 ),
- array( 0 => 104, 1 => 2 ),
- array( 0 => 104, 1 => 3 ),
- array( 0 => 104, 1 => 2 ),
+ array( 0 => 107, 1 => 2 ),
+ array( 0 => 107, 1 => 3 ),
+ array( 0 => 107, 1 => 2 ),
array( 0 => 93, 1 => 1 ),
array( 0 => 93, 1 => 2 ),
array( 0 => 93, 1 => 1 ),
@@ -1916,23 +1975,23 @@ public static $yy_action = array(
array( 0 => 87, 1 => 1 ),
array( 0 => 94, 1 => 3 ),
array( 0 => 94, 1 => 3 ),
- array( 0 => 105, 1 => 1 ),
- array( 0 => 105, 1 => 3 ),
- array( 0 => 105, 1 => 0 ),
- array( 0 => 106, 1 => 3 ),
- array( 0 => 106, 1 => 3 ),
- array( 0 => 106, 1 => 1 ),
- array( 0 => 92, 1 => 2 ),
- array( 0 => 92, 1 => 3 ),
- array( 0 => 107, 1 => 2 ),
- array( 0 => 107, 1 => 1 ),
- array( 0 => 108, 1 => 3 ),
- array( 0 => 108, 1 => 3 ),
array( 0 => 108, 1 => 1 ),
array( 0 => 108, 1 => 3 ),
- array( 0 => 108, 1 => 3 ),
- array( 0 => 108, 1 => 1 ),
- array( 0 => 108, 1 => 1 ),
+ array( 0 => 108, 1 => 0 ),
+ array( 0 => 109, 1 => 3 ),
+ array( 0 => 109, 1 => 3 ),
+ array( 0 => 109, 1 => 1 ),
+ array( 0 => 92, 1 => 2 ),
+ array( 0 => 92, 1 => 3 ),
+ array( 0 => 110, 1 => 2 ),
+ array( 0 => 110, 1 => 1 ),
+ array( 0 => 111, 1 => 3 ),
+ array( 0 => 111, 1 => 3 ),
+ array( 0 => 111, 1 => 1 ),
+ array( 0 => 111, 1 => 3 ),
+ array( 0 => 111, 1 => 3 ),
+ array( 0 => 111, 1 => 1 ),
+ array( 0 => 111, 1 => 1 ),
);
public static $yyReduceMap = array(
@@ -1961,9 +2020,9 @@ public static $yy_action = array(
103 => 6,
104 => 6,
106 => 6,
- 111 => 6,
- 175 => 6,
- 180 => 6,
+ 122 => 6,
+ 182 => 6,
+ 187 => 6,
7 => 7,
8 => 8,
9 => 9,
@@ -2003,18 +2062,21 @@ public static $yy_action = array(
48 => 48,
49 => 49,
58 => 49,
- 153 => 49,
- 157 => 49,
- 161 => 49,
- 163 => 49,
+ 110 => 49,
+ 111 => 49,
+ 160 => 49,
+ 164 => 49,
+ 168 => 49,
+ 170 => 49,
50 => 50,
- 154 => 50,
- 160 => 50,
+ 112 => 50,
+ 161 => 50,
+ 167 => 50,
51 => 51,
52 => 52,
53 => 52,
54 => 54,
- 138 => 54,
+ 145 => 54,
57 => 57,
59 => 59,
60 => 60,
@@ -2040,7 +2102,7 @@ public static $yy_action = array(
84 => 84,
86 => 84,
87 => 84,
- 118 => 84,
+ 125 => 84,
85 => 85,
90 => 90,
91 => 91,
@@ -2055,42 +2117,40 @@ public static $yy_action = array(
105 => 105,
107 => 107,
108 => 108,
- 109 => 109,
- 110 => 110,
- 112 => 112,
+ 109 => 108,
+ 159 => 108,
113 => 113,
114 => 114,
115 => 115,
116 => 116,
117 => 117,
+ 118 => 118,
119 => 119,
- 177 => 119,
120 => 120,
121 => 121,
- 122 => 122,
123 => 123,
124 => 124,
- 125 => 125,
- 133 => 125,
126 => 126,
+ 184 => 126,
127 => 127,
128 => 128,
- 129 => 128,
- 131 => 128,
- 132 => 128,
+ 129 => 129,
130 => 130,
+ 131 => 131,
+ 132 => 132,
+ 140 => 132,
+ 133 => 133,
134 => 134,
135 => 135,
- 136 => 136,
- 181 => 136,
+ 136 => 135,
+ 138 => 135,
+ 139 => 135,
137 => 137,
- 139 => 139,
- 140 => 140,
141 => 141,
142 => 142,
143 => 143,
+ 188 => 143,
144 => 144,
- 145 => 145,
146 => 146,
147 => 147,
148 => 148,
@@ -2098,35 +2158,41 @@ public static $yy_action = array(
150 => 150,
151 => 151,
152 => 152,
+ 153 => 153,
+ 154 => 154,
155 => 155,
156 => 156,
+ 157 => 157,
158 => 158,
- 159 => 159,
162 => 162,
- 164 => 164,
+ 163 => 163,
165 => 165,
166 => 166,
- 167 => 167,
- 168 => 168,
169 => 169,
- 170 => 170,
171 => 171,
172 => 172,
173 => 173,
- 174 => 173,
+ 174 => 174,
+ 175 => 175,
176 => 176,
+ 177 => 177,
178 => 178,
179 => 179,
- 182 => 182,
+ 180 => 180,
+ 181 => 180,
183 => 183,
- 184 => 184,
185 => 185,
- 188 => 185,
186 => 186,
- 189 => 186,
- 187 => 187,
+ 189 => 189,
190 => 190,
191 => 191,
+ 192 => 192,
+ 195 => 192,
+ 193 => 193,
+ 196 => 193,
+ 194 => 194,
+ 197 => 197,
+ 198 => 198,
);
// line 245 "src/Parser/TemplateParser.y"
public function yy_r0(){
@@ -2187,9 +2253,10 @@ public static $yy_action = array(
$attributes[] = 'nocache';
$var = $match[1];
}
- $this->_retvalue = $this->compiler->compilePrintExpression($this->compiler->compileVariable('\''.$var.'\''), $attributes);
+ $this->compiler->triggerTagNoCache($var);
+ $this->_retvalue = $this->compiler->compilePrintExpression('$_smarty_tpl->getValue(\''.$var.'\')', $attributes);
}
-// line 313 "src/Parser/TemplateParser.y"
+// line 314 "src/Parser/TemplateParser.y"
public function yy_r12(){
$tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()));
if ($tag == 'strip') {
@@ -2210,7 +2277,7 @@ public static $yy_action = array(
}
}
}
-// line 334 "src/Parser/TemplateParser.y"
+// line 335 "src/Parser/TemplateParser.y"
public function yy_r13(){
$j = strrpos($this->yystack[$this->yyidx + 0]->minor,'.');
if ($this->yystack[$this->yyidx + 0]->minor[$j+1] == 'c') {
@@ -2221,35 +2288,35 @@ public static $yy_action = array(
$this->_retvalue = $this->compiler->compileParentBlock();
}
}
-// line 345 "src/Parser/TemplateParser.y"
+// line 346 "src/Parser/TemplateParser.y"
public function yy_r14(){
$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
}
-// line 349 "src/Parser/TemplateParser.y"
+// line 350 "src/Parser/TemplateParser.y"
public function yy_r15(){
$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
}
-// line 353 "src/Parser/TemplateParser.y"
+// line 354 "src/Parser/TemplateParser.y"
public function yy_r16(){
$this->_retvalue = $this->compiler->compilePrintExpression($this->yystack[$this->yyidx + 0]->minor[0], $this->yystack[$this->yyidx + 0]->minor[1]);
}
-// line 362 "src/Parser/TemplateParser.y"
+// line 363 "src/Parser/TemplateParser.y"
public function yy_r17(){
$this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + 0]->minor[0]),array('var'=>'\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'')),$this->yystack[$this->yyidx + 0]->minor[1]));
}
-// line 366 "src/Parser/TemplateParser.y"
+// line 367 "src/Parser/TemplateParser.y"
public function yy_r18(){
$this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + 0]->minor[0]),array('var'=>$this->yystack[$this->yyidx + -1]->minor['var'])),$this->yystack[$this->yyidx + 0]->minor[1]),array('smarty_internal_index'=>$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']));
}
-// line 370 "src/Parser/TemplateParser.y"
+// line 371 "src/Parser/TemplateParser.y"
public function yy_r19(){
$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
}
-// line 374 "src/Parser/TemplateParser.y"
+// line 375 "src/Parser/TemplateParser.y"
public function yy_r20(){
$this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
}
-// line 389 "src/Parser/TemplateParser.y"
+// line 390 "src/Parser/TemplateParser.y"
public function yy_r24(){
if (defined($this->yystack[$this->yyidx + -1]->minor)) {
if ($this->security) {
@@ -2260,7 +2327,7 @@ public static $yy_action = array(
$this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
}
}
-// line 399 "src/Parser/TemplateParser.y"
+// line 400 "src/Parser/TemplateParser.y"
public function yy_r25(){
if (defined($this->yystack[$this->yyidx + 0]->minor)) {
if ($this->security) {
@@ -2271,7 +2338,7 @@ public static $yy_action = array(
$this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor,array());
}
}
-// line 412 "src/Parser/TemplateParser.y"
+// line 413 "src/Parser/TemplateParser.y"
public function yy_r26(){
if (defined($this->yystack[$this->yyidx + -2]->minor)) {
if ($this->security) {
@@ -2282,66 +2349,66 @@ public static $yy_action = array(
$this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + 0]->minor, array('modifierlist'=>$this->yystack[$this->yyidx + -1]->minor));
}
}
-// line 424 "src/Parser/TemplateParser.y"
+// line 425 "src/Parser/TemplateParser.y"
public function yy_r27(){
$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));
}
-// line 429 "src/Parser/TemplateParser.y"
+// line 430 "src/Parser/TemplateParser.y"
public function yy_r28(){
$this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + 0]->minor,array('modifierlist'=>$this->yystack[$this->yyidx + -1]->minor, 'object_method'=>$this->yystack[$this->yyidx + -2]->minor));
}
-// line 434 "src/Parser/TemplateParser.y"
+// line 435 "src/Parser/TemplateParser.y"
public function yy_r29(){
$tag = trim(substr($this->yystack[$this->yyidx + -1]->minor,$this->compiler->getLdelLength()));
$this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + 0]->minor));
}
-// line 439 "src/Parser/TemplateParser.y"
+// line 440 "src/Parser/TemplateParser.y"
public function yy_r30(){
$tag = trim(substr($this->yystack[$this->yyidx + -2]->minor,$this->compiler->getLdelLength()));
$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));
}
-// line 444 "src/Parser/TemplateParser.y"
+// line 445 "src/Parser/TemplateParser.y"
public function yy_r31(){
$tag = trim(substr($this->yystack[$this->yyidx + -1]->minor,$this->compiler->getLdelLength()));
$this->_retvalue = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + 0]->minor));
}
-// line 455 "src/Parser/TemplateParser.y"
+// line 456 "src/Parser/TemplateParser.y"
public function yy_r33(){
$this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -6]->minor),array('ifexp'=>$this->yystack[$this->yyidx + -4]->minor),array('var'=>$this->yystack[$this->yyidx + -2]->minor),array('step'=>$this->yystack[$this->yyidx + -1]->minor))),1);
}
-// line 459 "src/Parser/TemplateParser.y"
+// line 460 "src/Parser/TemplateParser.y"
public function yy_r34(){
$this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 467 "src/Parser/TemplateParser.y"
+// line 468 "src/Parser/TemplateParser.y"
public function yy_r36(){
$this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -3]->minor),array('to'=>$this->yystack[$this->yyidx + -1]->minor))),0);
}
-// line 471 "src/Parser/TemplateParser.y"
+// line 472 "src/Parser/TemplateParser.y"
public function yy_r37(){
$this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('start'=>$this->yystack[$this->yyidx + -5]->minor),array('to'=>$this->yystack[$this->yyidx + -3]->minor),array('step'=>$this->yystack[$this->yyidx + -1]->minor))),0);
}
-// line 476 "src/Parser/TemplateParser.y"
+// line 477 "src/Parser/TemplateParser.y"
public function yy_r38(){
$this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('from'=>$this->yystack[$this->yyidx + -3]->minor),array('item'=>$this->yystack[$this->yyidx + -1]->minor))));
}
-// line 480 "src/Parser/TemplateParser.y"
+// line 481 "src/Parser/TemplateParser.y"
public function yy_r39(){
$this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + 0]->minor,array(array('from'=>$this->yystack[$this->yyidx + -5]->minor),array('item'=>$this->yystack[$this->yyidx + -1]->minor),array('key'=>$this->yystack[$this->yyidx + -3]->minor))));
}
-// line 483 "src/Parser/TemplateParser.y"
+// line 484 "src/Parser/TemplateParser.y"
public function yy_r40(){
$this->_retvalue = $this->compiler->compileTag('foreach',$this->yystack[$this->yyidx + 0]->minor);
}
-// line 488 "src/Parser/TemplateParser.y"
+// line 489 "src/Parser/TemplateParser.y"
public function yy_r41(){
$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))));
}
-// line 492 "src/Parser/TemplateParser.y"
+// line 493 "src/Parser/TemplateParser.y"
public function yy_r42(){
$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)));
}
-// line 498 "src/Parser/TemplateParser.y"
+// line 499 "src/Parser/TemplateParser.y"
public function yy_r43(){
$tag = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' /');
if ($tag === 'strip') {
@@ -2351,36 +2418,36 @@ public static $yy_action = array(
$this->_retvalue = $this->compiler->compileTag($tag.'close',array());
}
}
-// line 507 "src/Parser/TemplateParser.y"
+// line 508 "src/Parser/TemplateParser.y"
public function yy_r44(){
$this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor.'close',array());
}
-// line 511 "src/Parser/TemplateParser.y"
+// line 512 "src/Parser/TemplateParser.y"
public function yy_r45(){
$this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array(),array('modifier_list'=>$this->yystack[$this->yyidx + 0]->minor));
}
-// line 516 "src/Parser/TemplateParser.y"
+// line 517 "src/Parser/TemplateParser.y"
public function yy_r46(){
$this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',array(),array('object_method'=>$this->yystack[$this->yyidx + 0]->minor));
}
-// line 520 "src/Parser/TemplateParser.y"
+// line 521 "src/Parser/TemplateParser.y"
public function yy_r47(){
$this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array(),array('object_method'=>$this->yystack[$this->yyidx + -1]->minor, 'modifier_list'=>$this->yystack[$this->yyidx + 0]->minor));
}
-// line 528 "src/Parser/TemplateParser.y"
+// line 529 "src/Parser/TemplateParser.y"
public function yy_r48(){
$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
$this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor;
}
-// line 534 "src/Parser/TemplateParser.y"
+// line 535 "src/Parser/TemplateParser.y"
public function yy_r49(){
$this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
}
-// line 539 "src/Parser/TemplateParser.y"
+// line 540 "src/Parser/TemplateParser.y"
public function yy_r50(){
$this->_retvalue = array();
}
-// line 544 "src/Parser/TemplateParser.y"
+// line 545 "src/Parser/TemplateParser.y"
public function yy_r51(){
if (defined($this->yystack[$this->yyidx + 0]->minor)) {
if ($this->security) {
@@ -2391,64 +2458,64 @@ public static $yy_action = array(
$this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>'\''.$this->yystack[$this->yyidx + 0]->minor.'\'');
}
}
-// line 555 "src/Parser/TemplateParser.y"
+// line 556 "src/Parser/TemplateParser.y"
public function yy_r52(){
$this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor," =\n\r\t")=>$this->yystack[$this->yyidx + 0]->minor);
}
-// line 563 "src/Parser/TemplateParser.y"
+// line 564 "src/Parser/TemplateParser.y"
public function yy_r54(){
$this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';
}
-// line 575 "src/Parser/TemplateParser.y"
+// line 576 "src/Parser/TemplateParser.y"
public function yy_r57(){
$this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);
}
-// line 588 "src/Parser/TemplateParser.y"
+// line 589 "src/Parser/TemplateParser.y"
public function yy_r59(){
$this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor;
$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor;
}
-// line 593 "src/Parser/TemplateParser.y"
+// line 594 "src/Parser/TemplateParser.y"
public function yy_r60(){
$this->_retvalue = array('var' => '\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\'', 'value'=>$this->yystack[$this->yyidx + 0]->minor);
}
-// line 600 "src/Parser/TemplateParser.y"
+// line 601 "src/Parser/TemplateParser.y"
public function yy_r62(){
$this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor);
}
-// line 604 "src/Parser/TemplateParser.y"
+// line 605 "src/Parser/TemplateParser.y"
public function yy_r63(){
$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
}
-// line 629 "src/Parser/TemplateParser.y"
+// line 630 "src/Parser/TemplateParser.y"
public function yy_r67(){
$this->_retvalue = '$_smarty_tpl->getVariable(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')->preIncDec(\'' . $this->yystack[$this->yyidx + -1]->minor . '\')';
}
-// line 634 "src/Parser/TemplateParser.y"
+// line 635 "src/Parser/TemplateParser.y"
public function yy_r68(){
$this->_retvalue = '$_smarty_tpl->getVariable(\''. substr($this->yystack[$this->yyidx + -1]->minor,1) .'\')->postIncDec(\'' . $this->yystack[$this->yyidx + 0]->minor . '\')';
}
-// line 639 "src/Parser/TemplateParser.y"
+// line 640 "src/Parser/TemplateParser.y"
public function yy_r69(){
$this->_retvalue = '$_smarty_tpl->getStreamVariable(\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'://' . $this->yystack[$this->yyidx + 0]->minor . '\')';
}
-// line 644 "src/Parser/TemplateParser.y"
+// line 645 "src/Parser/TemplateParser.y"
public function yy_r70(){
$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor;
}
-// line 654 "src/Parser/TemplateParser.y"
+// line 655 "src/Parser/TemplateParser.y"
public function yy_r72(){
$this->_retvalue = $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 .')';
}
-// line 658 "src/Parser/TemplateParser.y"
+// line 659 "src/Parser/TemplateParser.y"
public function yy_r73(){
$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 662 "src/Parser/TemplateParser.y"
+// line 663 "src/Parser/TemplateParser.y"
public function yy_r74(){
$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor . $this->yystack[$this->yyidx + -1]->minor . ')';
}
-// line 666 "src/Parser/TemplateParser.y"
+// line 667 "src/Parser/TemplateParser.y"
public function yy_r75(){
static $isin = [
'isin' => 'in_array(',
@@ -2457,51 +2524,52 @@ public static $yy_action = array(
$op = strtolower(str_replace(' ', '', $this->yystack[$this->yyidx + 0]->minor));
$this->_retvalue = $isin[$op];
}
-// line 675 "src/Parser/TemplateParser.y"
+// line 676 "src/Parser/TemplateParser.y"
public function yy_r76(){
$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')';
}
-// line 679 "src/Parser/TemplateParser.y"
+// line 680 "src/Parser/TemplateParser.y"
public function yy_r77(){
$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')';
}
-// line 684 "src/Parser/TemplateParser.y"
+// line 685 "src/Parser/TemplateParser.y"
public function yy_r78(){
$this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.' ?? '.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 691 "src/Parser/TemplateParser.y"
+// line 692 "src/Parser/TemplateParser.y"
public function yy_r79(){
- $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.' ? '. $this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\'') . ' : '.$this->yystack[$this->yyidx + 0]->minor;
+ $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + -2]->minor,1));
+ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.' ? $_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + -2]->minor,1).'\') : '.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 695 "src/Parser/TemplateParser.y"
+// line 697 "src/Parser/TemplateParser.y"
public function yy_r80(){
$this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 704 "src/Parser/TemplateParser.y"
+// line 706 "src/Parser/TemplateParser.y"
public function yy_r82(){
$this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.' ?: '.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 714 "src/Parser/TemplateParser.y"
+// line 716 "src/Parser/TemplateParser.y"
public function yy_r84(){
$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 719 "src/Parser/TemplateParser.y"
+// line 721 "src/Parser/TemplateParser.y"
public function yy_r85(){
$this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 740 "src/Parser/TemplateParser.y"
+// line 742 "src/Parser/TemplateParser.y"
public function yy_r90(){
$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 744 "src/Parser/TemplateParser.y"
+// line 746 "src/Parser/TemplateParser.y"
public function yy_r91(){
$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.';
}
-// line 748 "src/Parser/TemplateParser.y"
+// line 750 "src/Parser/TemplateParser.y"
public function yy_r92(){
$this->_retvalue = '.'.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 753 "src/Parser/TemplateParser.y"
+// line 755 "src/Parser/TemplateParser.y"
public function yy_r93(){
if (defined($this->yystack[$this->yyidx + 0]->minor)) {
if ($this->security) {
@@ -2512,15 +2580,15 @@ public static $yy_action = array(
$this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';
}
}
-// line 770 "src/Parser/TemplateParser.y"
+// line 772 "src/Parser/TemplateParser.y"
public function yy_r95(){
$this->_retvalue = '('. $this->yystack[$this->yyidx + -1]->minor .')';
}
-// line 774 "src/Parser/TemplateParser.y"
+// line 776 "src/Parser/TemplateParser.y"
public function yy_r96(){
$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 792 "src/Parser/TemplateParser.y"
+// line 794 "src/Parser/TemplateParser.y"
public function yy_r100(){
if ($this->security && $this->security->static_classes !== array()) {
$this->compiler->trigger_template_error('dynamic static class not allowed by security setting');
@@ -2529,22 +2597,23 @@ public static $yy_action = array(
if ($this->yystack[$this->yyidx + -2]->minor['var'] === '\'smarty\'') {
$this->compiler->appendPrefixCode("<?php {$prefixVar} = ". (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index']).';?>');
} else {
- $this->compiler->appendPrefixCode("<?php {$prefixVar} = ". $this->compiler->compileVariable($this->yystack[$this->yyidx + -2]->minor['var']).$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index'].';?>');
+ $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + -2]->minor['var']);
+ $this->compiler->appendPrefixCode("<?php {$prefixVar} = \$_smarty_tpl->getValue(" . $this->yystack[$this->yyidx + -2]->minor['var'] . ')'.$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index'].';?>');
}
$this->_retvalue = $prefixVar .'::'.$this->yystack[$this->yyidx + 0]->minor[0].$this->yystack[$this->yyidx + 0]->minor[1];
}
-// line 806 "src/Parser/TemplateParser.y"
+// line 809 "src/Parser/TemplateParser.y"
public function yy_r101(){
$prefixVar = $this->compiler->getNewPrefixVariable();
$tmp = $this->compiler->appendCode('<?php ob_start();?>', (string) $this->yystack[$this->yyidx + 0]->minor);
$this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php {$prefixVar} = ob_get_clean();?>"));
$this->_retvalue = $prefixVar;
}
-// line 813 "src/Parser/TemplateParser.y"
+// line 816 "src/Parser/TemplateParser.y"
public function yy_r102(){
$this->_retvalue = $this->compiler->compileModifier($this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor);
}
-// line 826 "src/Parser/TemplateParser.y"
+// line 829 "src/Parser/TemplateParser.y"
public function yy_r105(){
if (!in_array(strtolower($this->yystack[$this->yyidx + -2]->minor), array('self', 'parent')) && (!$this->security || $this->security->isTrustedStaticClassAccess($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->compiler))) {
if (isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor])) {
@@ -2556,241 +2625,292 @@ public static $yy_action = array(
$this->compiler->trigger_template_error ('static class \''.$this->yystack[$this->yyidx + -2]->minor.'\' is undefined or not allowed by security setting');
}
}
-// line 845 "src/Parser/TemplateParser.y"
+// line 848 "src/Parser/TemplateParser.y"
public function yy_r107(){
$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
}
// line 856 "src/Parser/TemplateParser.y"
public function yy_r108(){
- $this->_retvalue = $this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'');
+ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array($this->yystack[$this->yyidx + 0]->minor));
}
-// line 859 "src/Parser/TemplateParser.y"
- public function yy_r109(){
+// line 883 "src/Parser/TemplateParser.y"
+ public function yy_r113(){
+ $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + 0]->minor,1));
+ $this->_retvalue = array('$_smarty_tpl->hasVariable(\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\')','$_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\')');
+ }
+// line 887 "src/Parser/TemplateParser.y"
+ public function yy_r114(){
if ($this->yystack[$this->yyidx + 0]->minor['var'] === '\'smarty\'') {
$smarty_var = (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);
- $this->_retvalue = $smarty_var;
+ $this->_retvalue = array('true', $smarty_var);
} else {
// used for array reset,next,prev,end,current
$this->last_variable = $this->yystack[$this->yyidx + 0]->minor['var'];
$this->last_index = $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
- $this->_retvalue = $this->compiler->compileVariable($this->yystack[$this->yyidx + 0]->minor['var']).$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
+ $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + 0]->minor['var']);
+ $this->_retvalue = array('true', '$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + 0]->minor['var'] . ')'.$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);
+ }
}
+// line 901 "src/Parser/TemplateParser.y"
+ public function yy_r115(){
+ $this->_retvalue = array('true', '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor);
}
-// line 872 "src/Parser/TemplateParser.y"
- public function yy_r110(){
- $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor;
+// line 906 "src/Parser/TemplateParser.y"
+ public function yy_r116(){
+ $this->_retvalue = array('true', $this->yystack[$this->yyidx + 0]->minor);
}
-// line 882 "src/Parser/TemplateParser.y"
- public function yy_r112(){
+// line 911 "src/Parser/TemplateParser.y"
+ public function yy_r117(){
$this->_retvalue = $this->compiler->compileConfigVariable('\'' . $this->yystack[$this->yyidx + -1]->minor . '\'');
}
-// line 886 "src/Parser/TemplateParser.y"
- public function yy_r113(){
+// line 915 "src/Parser/TemplateParser.y"
+ public function yy_r118(){
$this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable('\'' . $this->yystack[$this->yyidx + -2]->minor . '\'') . ') ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' :null)';
}
-// line 890 "src/Parser/TemplateParser.y"
- public function yy_r114(){
+// line 919 "src/Parser/TemplateParser.y"
+ public function yy_r119(){
$this->_retvalue = $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + -1]->minor);
}
-// line 894 "src/Parser/TemplateParser.y"
- public function yy_r115(){
+// line 923 "src/Parser/TemplateParser.y"
+ public function yy_r120(){
$this->_retvalue = '(is_array($tmp = ' . $this->compiler->compileConfigVariable($this->yystack[$this->yyidx + -2]->minor) . ') ? $tmp'.$this->yystack[$this->yyidx + 0]->minor.' : null)';
}
-// line 898 "src/Parser/TemplateParser.y"
- public function yy_r116(){
+// line 927 "src/Parser/TemplateParser.y"
+ public function yy_r121(){
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor[1];
+ }
+// line 935 "src/Parser/TemplateParser.y"
+ public function yy_r123(){
$this->_retvalue = array('var'=>'\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'', 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);
}
-// line 901 "src/Parser/TemplateParser.y"
- public function yy_r117(){
+// line 938 "src/Parser/TemplateParser.y"
+ public function yy_r124(){
$this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);
}
-// line 914 "src/Parser/TemplateParser.y"
- public function yy_r119(){
+// line 951 "src/Parser/TemplateParser.y"
+ public function yy_r126(){
return;
}
-// line 920 "src/Parser/TemplateParser.y"
- public function yy_r120(){
- $this->_retvalue = '['.$this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'').']';
+// line 957 "src/Parser/TemplateParser.y"
+ public function yy_r127(){
+ $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + 0]->minor,1));
+ $this->_retvalue = '[$_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\')]';
}
-// line 923 "src/Parser/TemplateParser.y"
- public function yy_r121(){
- $this->_retvalue = '['.$this->compiler->compileVariable($this->yystack[$this->yyidx + 0]->minor).']';
+// line 961 "src/Parser/TemplateParser.y"
+ public function yy_r128(){
+ $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + 0]->minor);
+ $this->_retvalue = '[$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + 0]->minor . ')]';
}
-// line 927 "src/Parser/TemplateParser.y"
- public function yy_r122(){
- $this->_retvalue = '['.$this->compiler->compileVariable($this->yystack[$this->yyidx + -2]->minor).'->'.$this->yystack[$this->yyidx + 0]->minor.']';
+// line 966 "src/Parser/TemplateParser.y"
+ public function yy_r129(){
+ $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + -2]->minor);
+ $this->_retvalue = '[$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + -2]->minor . ')->'.$this->yystack[$this->yyidx + 0]->minor.']';
}
-// line 931 "src/Parser/TemplateParser.y"
- public function yy_r123(){
+// line 971 "src/Parser/TemplateParser.y"
+ public function yy_r130(){
$this->_retvalue = '[\''. $this->yystack[$this->yyidx + 0]->minor .'\']';
}
-// line 935 "src/Parser/TemplateParser.y"
- public function yy_r124(){
+// line 975 "src/Parser/TemplateParser.y"
+ public function yy_r131(){
$this->_retvalue = '['. $this->yystack[$this->yyidx + 0]->minor .']';
}
-// line 940 "src/Parser/TemplateParser.y"
- public function yy_r125(){
+// line 980 "src/Parser/TemplateParser.y"
+ public function yy_r132(){
$this->_retvalue = '['. $this->yystack[$this->yyidx + -1]->minor .']';
}
-// line 945 "src/Parser/TemplateParser.y"
- public function yy_r126(){
+// line 985 "src/Parser/TemplateParser.y"
+ public function yy_r133(){
$this->_retvalue = '['.(new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,'[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']';
}
-// line 949 "src/Parser/TemplateParser.y"
- public function yy_r127(){
+// line 989 "src/Parser/TemplateParser.y"
+ public function yy_r134(){
$this->_retvalue = '['.(new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,'[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']';
}
-// line 952 "src/Parser/TemplateParser.y"
- public function yy_r128(){
+// line 992 "src/Parser/TemplateParser.y"
+ public function yy_r135(){
$this->_retvalue = '['.$this->yystack[$this->yyidx + -1]->minor.']';
}
-// line 958 "src/Parser/TemplateParser.y"
- public function yy_r130(){
- $this->_retvalue = '['.$this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\'').']';
+// line 998 "src/Parser/TemplateParser.y"
+ public function yy_r137(){
+ $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + -1]->minor,1));
+ $this->_retvalue = '[$_smarty_tpl->getValue(\''.substr($this->yystack[$this->yyidx + -1]->minor,1).'\')]';
}
-// line 974 "src/Parser/TemplateParser.y"
- public function yy_r134(){
+// line 1015 "src/Parser/TemplateParser.y"
+ public function yy_r141(){
$this->_retvalue = '[]';
}
-// line 984 "src/Parser/TemplateParser.y"
- public function yy_r135(){
+// line 1025 "src/Parser/TemplateParser.y"
+ public function yy_r142(){
$this->_retvalue = '\''.substr($this->yystack[$this->yyidx + 0]->minor,1).'\'';
}
-// line 988 "src/Parser/TemplateParser.y"
- public function yy_r136(){
+// line 1029 "src/Parser/TemplateParser.y"
+ public function yy_r143(){
$this->_retvalue = '\'\'';
}
-// line 993 "src/Parser/TemplateParser.y"
- public function yy_r137(){
+// line 1034 "src/Parser/TemplateParser.y"
+ public function yy_r144(){
$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 1001 "src/Parser/TemplateParser.y"
- public function yy_r139(){
+// line 1042 "src/Parser/TemplateParser.y"
+ public function yy_r146(){
$var = trim(substr($this->yystack[$this->yyidx + 0]->minor, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
- $this->_retvalue = $this->compiler->compileVariable('\''.$var.'\'');
+ $this->compiler->triggerTagNoCache($var);
+ $this->_retvalue = '$_smarty_tpl->getValue(\''.$var.'\')';
}
-// line 1007 "src/Parser/TemplateParser.y"
- public function yy_r140(){
+// line 1049 "src/Parser/TemplateParser.y"
+ public function yy_r147(){
$this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')';
}
-// line 1014 "src/Parser/TemplateParser.y"
- public function yy_r141(){
+// line 1056 "src/Parser/TemplateParser.y"
+ public function yy_r148(){
if ($this->yystack[$this->yyidx + -1]->minor['var'] === '\'smarty\'') {
$this->_retvalue = (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']).$this->yystack[$this->yyidx + 0]->minor;
} else {
- $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;
+ $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + -1]->minor['var']);
+ $this->_retvalue = '$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + -1]->minor['var'] . ')'.$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index'].$this->yystack[$this->yyidx + 0]->minor;
}
}
-// line 1023 "src/Parser/TemplateParser.y"
- public function yy_r142(){
+// line 1066 "src/Parser/TemplateParser.y"
+ public function yy_r149(){
$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
}
-// line 1028 "src/Parser/TemplateParser.y"
- public function yy_r143(){
+// line 1071 "src/Parser/TemplateParser.y"
+ public function yy_r150(){
$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 1033 "src/Parser/TemplateParser.y"
- public function yy_r144(){
+// line 1076 "src/Parser/TemplateParser.y"
+ public function yy_r151(){
if ($this->security && substr($this->yystack[$this->yyidx + -1]->minor,0,1) === '_') {
$this->compiler->trigger_template_error (self::ERR1);
}
$this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 1040 "src/Parser/TemplateParser.y"
- public function yy_r145(){
+// line 1083 "src/Parser/TemplateParser.y"
+ public function yy_r152(){
if ($this->security) {
$this->compiler->trigger_template_error (self::ERR2);
}
- $this->_retvalue = '->{'.$this->compiler->compileVariable($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor.'}';
+ $this->compiler->triggerTagNoCache($this->yystack[$this->yyidx + -1]->minor);
+ $this->_retvalue = '->{$_smarty_tpl->getValue(' . $this->yystack[$this->yyidx + -1]->minor . ')'.$this->yystack[$this->yyidx + 0]->minor.'}';
}
-// line 1047 "src/Parser/TemplateParser.y"
- public function yy_r146(){
+// line 1091 "src/Parser/TemplateParser.y"
+ public function yy_r153(){
if ($this->security) {
$this->compiler->trigger_template_error (self::ERR2);
}
$this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';
}
-// line 1054 "src/Parser/TemplateParser.y"
- public function yy_r147(){
+// line 1098 "src/Parser/TemplateParser.y"
+ public function yy_r154(){
if ($this->security) {
$this->compiler->trigger_template_error (self::ERR2);
}
$this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';
}
-// line 1062 "src/Parser/TemplateParser.y"
- public function yy_r148(){
+// line 1106 "src/Parser/TemplateParser.y"
+ public function yy_r155(){
$this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 1070 "src/Parser/TemplateParser.y"
- public function yy_r149(){
- $this->_retvalue = $this->compiler->compileModifierInExpression($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor);
+// line 1114 "src/Parser/TemplateParser.y"
+ public function yy_r156(){
+
+ if ($this->yystack[$this->yyidx + -3]->minor == 'isset') {
+ $this->_retvalue = '(true';
+ if (count($this->yystack[$this->yyidx + -1]->minor) == 0) {
+ throw new CompilerException("Invalid number of arguments for isset. isset expects at least one parameter.");
+ }
+ foreach ($this->yystack[$this->yyidx + -1]->minor as $value) {
+ if (is_array($value)) {
+ $this->_retvalue .= ' && (' . $value[0] . ' && null !== (' . $value[1] . ' ?? null))';
+ } else {
+ $this->_retvalue .= ' && (' . $value . ' !== null)';
+ }
+ }
+ $this->_retvalue .= ')';
+ } elseif ($this->yystack[$this->yyidx + -3]->minor == 'empty') {
+ if (count($this->yystack[$this->yyidx + -1]->minor) != 1) {
+ throw new CompilerException("Invalid number of arguments for empty. empty expects at exactly one parameter.");
+ }
+ if (is_array($this->yystack[$this->yyidx + -1]->minor[0])) {
+ $this->_retvalue .= '( !' . $this->yystack[$this->yyidx + -1]->minor[0][0] . ' || empty(' . $this->yystack[$this->yyidx + -1]->minor[0][1] . '))';
+ } else {
+ $this->_retvalue = 'false == ' . $this->yystack[$this->yyidx + -1]->minor[0];
+ }
+ } else {
+ $p = array();
+ foreach ($this->yystack[$this->yyidx + -1]->minor as $value) {
+ if (is_array($value)) {
+ $p[] = $value[1];
+ } else {
+ $p[] = $value;
+ }
+ }
+ $this->_retvalue = $this->compiler->compileModifierInExpression($this->yystack[$this->yyidx + -3]->minor, $p);
}
-// line 1078 "src/Parser/TemplateParser.y"
- public function yy_r150(){
+ }
+// line 1155 "src/Parser/TemplateParser.y"
+ public function yy_r157(){
if ($this->security && substr($this->yystack[$this->yyidx + -3]->minor,0,1) === '_') {
$this->compiler->trigger_template_error (self::ERR1);
}
$this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . '('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')';
}
-// line 1085 "src/Parser/TemplateParser.y"
- public function yy_r151(){
+// line 1162 "src/Parser/TemplateParser.y"
+ public function yy_r158(){
if ($this->security) {
$this->compiler->trigger_template_error (self::ERR2);
}
$prefixVar = $this->compiler->getNewPrefixVariable();
- $this->compiler->appendPrefixCode("<?php {$prefixVar} = ".$this->compiler->compileVariable('\''.substr($this->yystack[$this->yyidx + -3]->minor,1).'\'').';?>');
+ $this->compiler->triggerTagNoCache(substr($this->yystack[$this->yyidx + -3]->minor,1));
+ $this->compiler->appendPrefixCode("<?php {$prefixVar} = \$_smarty_tpl->getValue('".substr($this->yystack[$this->yyidx + -3]->minor,1).'\')'.';?>');
$this->_retvalue = $prefixVar .'('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')';
}
-// line 1096 "src/Parser/TemplateParser.y"
- public function yy_r152(){
- $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array($this->yystack[$this->yyidx + 0]->minor));
- }
-// line 1113 "src/Parser/TemplateParser.y"
- public function yy_r155(){
+// line 1191 "src/Parser/TemplateParser.y"
+ public function yy_r162(){
$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)));
}
-// line 1117 "src/Parser/TemplateParser.y"
- public function yy_r156(){
+// line 1195 "src/Parser/TemplateParser.y"
+ public function yy_r163(){
$this->_retvalue = array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor));
}
-// line 1125 "src/Parser/TemplateParser.y"
- public function yy_r158(){
+// line 1203 "src/Parser/TemplateParser.y"
+ public function yy_r165(){
$this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
}
-// line 1133 "src/Parser/TemplateParser.y"
- public function yy_r159(){
+// line 1211 "src/Parser/TemplateParser.y"
+ public function yy_r166(){
$this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
}
-// line 1146 "src/Parser/TemplateParser.y"
- public function yy_r162(){
+// line 1224 "src/Parser/TemplateParser.y"
+ public function yy_r169(){
$this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor);
}
-// line 1155 "src/Parser/TemplateParser.y"
- public function yy_r164(){
+// line 1233 "src/Parser/TemplateParser.y"
+ public function yy_r171(){
$this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '', 'method');
}
-// line 1160 "src/Parser/TemplateParser.y"
- public function yy_r165(){
+// line 1238 "src/Parser/TemplateParser.y"
+ public function yy_r172(){
$this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'method');
}
-// line 1165 "src/Parser/TemplateParser.y"
- public function yy_r166(){
+// line 1243 "src/Parser/TemplateParser.y"
+ public function yy_r173(){
$this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, '');
}
-// line 1170 "src/Parser/TemplateParser.y"
- public function yy_r167(){
+// line 1248 "src/Parser/TemplateParser.y"
+ public function yy_r174(){
$this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'property');
}
-// line 1175 "src/Parser/TemplateParser.y"
- public function yy_r168(){
+// line 1253 "src/Parser/TemplateParser.y"
+ public function yy_r175(){
$this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor, 'property');
}
-// line 1181 "src/Parser/TemplateParser.y"
- public function yy_r169(){
+// line 1259 "src/Parser/TemplateParser.y"
+ public function yy_r176(){
$this->_retvalue = ' '. trim($this->yystack[$this->yyidx + 0]->minor) . ' ';
}
-// line 1185 "src/Parser/TemplateParser.y"
- public function yy_r170(){
+// line 1263 "src/Parser/TemplateParser.y"
+ public function yy_r177(){
static $lops = array(
'eq' => ' == ',
'ne' => ' != ',
@@ -2809,8 +2929,8 @@ public static $yy_action = array(
$op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
$this->_retvalue = $lops[$op];
}
-// line 1204 "src/Parser/TemplateParser.y"
- public function yy_r171(){
+// line 1282 "src/Parser/TemplateParser.y"
+ public function yy_r178(){
static $tlops = array(
'isdivby' => array('op' => ' % ', 'pre' => '!('),
'isnotdivby' => array('op' => ' % ', 'pre' => '('),
@@ -2822,8 +2942,8 @@ public static $yy_action = array(
$op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
$this->_retvalue = $tlops[$op];
}
-// line 1217 "src/Parser/TemplateParser.y"
- public function yy_r172(){
+// line 1295 "src/Parser/TemplateParser.y"
+ public function yy_r179(){
static $scond = array (
'iseven' => '!(1 & ',
'isnoteven' => '(1 & ',
@@ -2833,54 +2953,54 @@ public static $yy_action = array(
$op = strtolower(str_replace(' ', '', $this->yystack[$this->yyidx + 0]->minor));
$this->_retvalue = $scond[$op];
}
-// line 1231 "src/Parser/TemplateParser.y"
- public function yy_r173(){
+// line 1309 "src/Parser/TemplateParser.y"
+ public function yy_r180(){
$this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')';
}
-// line 1242 "src/Parser/TemplateParser.y"
- public function yy_r176(){
+// line 1320 "src/Parser/TemplateParser.y"
+ public function yy_r183(){
$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 1250 "src/Parser/TemplateParser.y"
- public function yy_r178(){
+// line 1328 "src/Parser/TemplateParser.y"
+ public function yy_r185(){
$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 1254 "src/Parser/TemplateParser.y"
- public function yy_r179(){
+// line 1332 "src/Parser/TemplateParser.y"
+ public function yy_r186(){
$this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 1270 "src/Parser/TemplateParser.y"
- public function yy_r182(){
+// line 1348 "src/Parser/TemplateParser.y"
+ public function yy_r189(){
$this->compiler->leaveDoubleQuote();
$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php($this);
}
-// line 1276 "src/Parser/TemplateParser.y"
- public function yy_r183(){
+// line 1354 "src/Parser/TemplateParser.y"
+ public function yy_r190(){
$this->yystack[$this->yyidx + -1]->minor->append_subtree($this, $this->yystack[$this->yyidx + 0]->minor);
$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
}
-// line 1281 "src/Parser/TemplateParser.y"
- public function yy_r184(){
+// line 1359 "src/Parser/TemplateParser.y"
+ public function yy_r191(){
$this->_retvalue = new Dq($this, $this->yystack[$this->yyidx + 0]->minor);
}
-// line 1285 "src/Parser/TemplateParser.y"
- public function yy_r185(){
+// line 1363 "src/Parser/TemplateParser.y"
+ public function yy_r192(){
$this->_retvalue = new Code('(string)'.$this->yystack[$this->yyidx + -1]->minor);
}
-// line 1289 "src/Parser/TemplateParser.y"
- public function yy_r186(){
+// line 1367 "src/Parser/TemplateParser.y"
+ public function yy_r193(){
$this->_retvalue = new Code('(string)('.$this->yystack[$this->yyidx + -1]->minor.')');
}
-// line 1293 "src/Parser/TemplateParser.y"
- public function yy_r187(){
+// line 1371 "src/Parser/TemplateParser.y"
+ public function yy_r194(){
$this->_retvalue = new Code('(string)$_smarty_tpl->getValue(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')');
}
-// line 1305 "src/Parser/TemplateParser.y"
- public function yy_r190(){
+// line 1383 "src/Parser/TemplateParser.y"
+ public function yy_r197(){
$this->_retvalue = new Tag($this, $this->yystack[$this->yyidx + 0]->minor);
}
-// line 1309 "src/Parser/TemplateParser.y"
- public function yy_r191(){
+// line 1387 "src/Parser/TemplateParser.y"
+ public function yy_r198(){
$this->_retvalue = new DqContent($this->yystack[$this->yyidx + 0]->minor);
}
diff --git a/src/Parser/TemplateParser.y b/src/Parser/TemplateParser.y
index f1e3c35e..58d115fe 100644
--- a/src/Parser/TemplateParser.y
+++ b/src/Parser/TemplateParser.y
@@ -19,7 +19,7 @@ use \Smarty\ParseTree\Code;
use \Smarty\ParseTree\Dq;
use \Smarty\ParseTree\DqContent;
use \Smarty\ParseTree\Tag;
-
+use \Smarty\CompilerException;
/**
* Smarty Template Parser Class
@@ -306,7 +306,8 @@ smartytag(A) ::= SIMPELOUTPUT(B). {
$attributes[] = 'nocache';
$var = $match[1];
}
- A = $this->compiler->compilePrintExpression($this->compiler->compileVariable('\''.$var.'\''), $attributes);
+ $this->compiler->triggerTagNoCache($var);
+ A = $this->compiler->compilePrintExpression('$_smarty_tpl->getValue(\''.$var.'\')', $attributes);
}
// simple tag like {name}
@@ -375,7 +376,7 @@ outattr(A) ::= output(B) attributes(C). {
A = array(B,C);
}
-output(A) ::= variable(B). {
+output(A) ::= variablevalue(B). {
A = B;
}
output(A) ::= value(B). {
@@ -689,7 +690,8 @@ nullcoalescing(res) ::= expr(v) QMARK QMARK expr(e2). {
// ternary
//
ternary(res) ::= expr(v) QMARK DOLLARID(e1) COLON expr(e2). {
- res = v.' ? '. $this->compiler->compileVariable('\''.substr(e1,1).'\'') . ' : '.e2;
+ $this->compiler->triggerTagNoCache(substr(e1,1));
+ res = v.' ? $_smarty_tpl->getValue(\''.substr(e1,1).'\') : '.e2;
}
ternary(res) ::= expr(v) QMARK value(e1) COLON expr(e2). {
@@ -706,7 +708,7 @@ ternary(res) ::= expr(v) QMARK COLON expr(e2). {
}
// value
-value(res) ::= variable(v). {
+value(res) ::= variablevalue(v). {
res = v;
}
@@ -724,7 +726,7 @@ value(res) ::= TYPECAST(t) value(v). {
res = t.v;
}
-value(res) ::= variable(v) INCDEC(o). {
+value(res) ::= variablevalue(v) INCDEC(o). {
res = v.o;
}
@@ -771,10 +773,10 @@ value(res) ::= OPENP expr(e) CLOSEP. {
res = '('. e .')';
}
-value(res) ::= variable(v1) INSTANCEOF(i) ns1(v2). {
+value(res) ::= variablevalue(v1) INSTANCEOF(i) ns1(v2). {
res = v1.i.v2;
}
-value(res) ::= variable(v1) INSTANCEOF(i) variable(v2). {
+value(res) ::= variablevalue(v1) INSTANCEOF(i) variablevalue(v2). {
res = v1.i.v2;
}
@@ -797,7 +799,8 @@ value(res) ::= varindexed(vi) DOUBLECOLON static_class_access(r). {
if (vi['var'] === '\'smarty\'') {
$this->compiler->appendPrefixCode("<?php {$prefixVar} = ". (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,vi['smarty_internal_index']).';?>');
} else {
- $this->compiler->appendPrefixCode("<?php {$prefixVar} = ". $this->compiler->compileVariable(vi['var']).vi['smarty_internal_index'].';?>');
+ $this->compiler->triggerTagNoCache(vi['var']);
+ $this->compiler->appendPrefixCode("<?php {$prefixVar} = \$_smarty_tpl->getValue(" . vi['var'] . ')'.vi['smarty_internal_index'].';?>');
}
res = $prefixVar .'::'.r[0].r[1];
}
@@ -847,54 +850,88 @@ ns1(res) ::= NAMESPACE(i). {
}
+// variable lists
+
+// multiple variables
+variablelist(res) ::= variablelist(l) COMMA variable(v). {
+ res = array_merge(l,array(v));
+}
+
+variablelist(res) ::= variablelist(l) COMMA expr(e). {
+ res = array_merge(l,array(e));
+}
+// single variable
+variablelist(res) ::= variable(v). {
+ res = array(v);
+}
+
+// single expression
+variablelist(res) ::= expr(e). {
+ res = array(e);
+}
+
+// no variable
+variablelist(res) ::= . {
+ res = array();
+}
//
// variables
//
// Smarty variable (optional array)
variable(res) ::= DOLLARID(i). {
- res = $this->compiler->compileVariable('\''.substr(i,1).'\'');
+ $this->compiler->triggerTagNoCache(substr(i,1));
+ res = array('$_smarty_tpl->hasVariable(\''.substr(i,1).'\')','$_smarty_tpl->getValue(\''.substr(i,1).'\')');
}
variable(res) ::= varindexed(vi). {
if (vi['var'] === '\'smarty\'') {
$smarty_var = (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,vi['smarty_internal_index']);
- res = $smarty_var;
+ res = array('true', $smarty_var);
} else {
// used for array reset,next,prev,end,current
$this->last_variable = vi['var'];
$this->last_index = vi['smarty_internal_index'];
- res = $this->compiler->compileVariable(vi['var']).vi['smarty_internal_index'];
+ $this->compiler->triggerTagNoCache(vi['var']);
+ res = array('true', '$_smarty_tpl->getValue(' . vi['var'] . ')'.vi['smarty_internal_index']);
}
}
// variable with property
variable(res) ::= varvar(v) AT ID(p). {
- res = '$_smarty_tpl->getVariable('. v .')->'.p;
+ res = array('true', '$_smarty_tpl->getVariable('. v .')->'.p);
}
// object
variable(res) ::= object(o). {
- res = o;
+ res = array('true', o);
}
// config variable
-variable(res) ::= HATCH ID(i) HATCH. {
+configvariable(res) ::= HATCH ID(i) HATCH. {
res = $this->compiler->compileConfigVariable('\'' . i . '\'');
}
-variable(res) ::= HATCH ID(i) HATCH arrayindex(a). {
+configvariable(res) ::= HATCH ID(i) HATCH arrayindex(a). {
res = '(is_array($tmp = ' . $this->compiler->compileConfigVariable('\'' . i . '\'') . ') ? $tmp'.a.' :null)';
}
-variable(res) ::= HATCH variable(v) HATCH. {
+configvariable(res) ::= HATCH variablevalue(v) HATCH. {
res = $this->compiler->compileConfigVariable(v);
}
-variable(res) ::= HATCH variable(v) HATCH arrayindex(a). {
+configvariable(res) ::= HATCH variablevalue(v) HATCH arrayindex(a). {
res = '(is_array($tmp = ' . $this->compiler->compileConfigVariable(v) . ') ? $tmp'.a.' : null)';
}
+variablevalue(res) ::= variable(v). {
+ res = v[1];
+}
+
+variablevalue(res) ::= configvariable(v). {
+ res = v;
+}
+
varindexed(res) ::= DOLLARID(i) arrayindex(a). {
res = array('var'=>'\''.substr(i,1).'\'', 'smarty_internal_index'=>a);
}
@@ -918,14 +955,17 @@ arrayindex ::= . {
// single index definition
// Smarty2 style index
indexdef(res) ::= DOT DOLLARID(i). {
- res = '['.$this->compiler->compileVariable('\''.substr(i,1).'\'').']';
+ $this->compiler->triggerTagNoCache(substr(i,1));
+ res = '[$_smarty_tpl->getValue(\''.substr(i,1).'\')]';
}
indexdef(res) ::= DOT varvar(v). {
- res = '['.$this->compiler->compileVariable(v).']';
+ $this->compiler->triggerTagNoCache(v);
+ res = '[$_smarty_tpl->getValue(' . v . ')]';
}
indexdef(res) ::= DOT varvar(v) AT ID(p). {
- res = '['.$this->compiler->compileVariable(v).'->'.p.']';
+ $this->compiler->triggerTagNoCache(v);
+ res = '[$_smarty_tpl->getValue(' . v . ')->'.p.']';
}
indexdef(res) ::= DOT ID(i). {
@@ -956,9 +996,10 @@ indexdef(res) ::= OPENB INTEGER(n) CLOSEB. {
res = '['.n.']';
}
indexdef(res) ::= OPENB DOLLARID(i) CLOSEB. {
- res = '['.$this->compiler->compileVariable('\''.substr(i,1).'\'').']';
+ $this->compiler->triggerTagNoCache(substr(i,1));
+ res = '[$_smarty_tpl->getValue(\''.substr(i,1).'\')]';
}
-indexdef(res) ::= OPENB variable(v) CLOSEB. {
+indexdef(res) ::= OPENB variablevalue(v) CLOSEB. {
res = '['.v.']';
}
indexdef(res) ::= OPENB value(v) CLOSEB. {
@@ -1000,7 +1041,8 @@ varvarele(res) ::= ID(s). {
}
varvarele(res) ::= SIMPELOUTPUT(i). {
$var = trim(substr(i, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
- res = $this->compiler->compileVariable('\''.$var.'\'');
+ $this->compiler->triggerTagNoCache($var);
+ res = '$_smarty_tpl->getValue(\''.$var.'\')';
}
// variable sections of element
@@ -1015,7 +1057,8 @@ object(res) ::= varindexed(vi) objectchain(oc). {
if (vi['var'] === '\'smarty\'') {
res = (new \Smarty\Compile\SpecialVariableCompiler())->compile(array(),$this->compiler,vi['smarty_internal_index']).oc;
} else {
- res = $this->compiler->compileVariable(vi['var']).vi['smarty_internal_index'].oc;
+ $this->compiler->triggerTagNoCache(vi['var']);
+ res = '$_smarty_tpl->getValue(' . vi['var'] . ')'.vi['smarty_internal_index'].oc;
}
}
@@ -1041,7 +1084,8 @@ objectelement(res)::= PTR varvar(v) arrayindex(a). {
if ($this->security) {
$this->compiler->trigger_template_error (self::ERR2);
}
- res = '->{'.$this->compiler->compileVariable(v).a.'}';
+ $this->compiler->triggerTagNoCache(v);
+ res = '->{$_smarty_tpl->getValue(' . v . ')'.a.'}';
}
objectelement(res)::= PTR LDEL expr(e) RDEL arrayindex(a). {
@@ -1067,8 +1111,41 @@ objectelement(res)::= PTR method(f). {
//
// function
//
-function(res) ::= ns1(f) OPENP params(p) CLOSEP. {
- res = $this->compiler->compileModifierInExpression(f, p);
+function(res) ::= ns1(f) OPENP variablelist(v) CLOSEP. {
+
+ if (f == 'isset') {
+ res = '(true';
+ if (count(v) == 0) {
+ throw new CompilerException("Invalid number of arguments for isset. isset expects at least one parameter.");
+ }
+ foreach (v as $value) {
+ if (is_array($value)) {
+ res .= ' && (' . $value[0] . ' && null !== (' . $value[1] . ' ?? null))';
+ } else {
+ res .= ' && (' . $value . ' !== null)';
+ }
+ }
+ res .= ')';
+ } elseif (f == 'empty') {
+ if (count(v) != 1) {
+ throw new CompilerException("Invalid number of arguments for empty. empty expects at exactly one parameter.");
+ }
+ if (is_array(v[0])) {
+ res .= '( !' . v[0][0] . ' || empty(' . v[0][1] . '))';
+ } else {
+ res = 'false == ' . v[0];
+ }
+ } else {
+ $p = array();
+ foreach (v as $value) {
+ if (is_array($value)) {
+ $p[] = $value[1];
+ } else {
+ $p[] = $value;
+ }
+ }
+ res = $this->compiler->compileModifierInExpression(f, $p);
+ }
}
@@ -1087,7 +1164,8 @@ method(res) ::= DOLLARID(f) OPENP params(p) CLOSEP. {
$this->compiler->trigger_template_error (self::ERR2);
}
$prefixVar = $this->compiler->getNewPrefixVariable();
- $this->compiler->appendPrefixCode("<?php {$prefixVar} = ".$this->compiler->compileVariable('\''.substr(f,1).'\'').';?>');
+ $this->compiler->triggerTagNoCache(substr(f,1));
+ $this->compiler->appendPrefixCode("<?php {$prefixVar} = \$_smarty_tpl->getValue('".substr(f,1).'\')'.';?>');
res = $prefixVar .'('. implode(',',p) .')';
}
@@ -1282,7 +1360,7 @@ doublequoted(res) ::= doublequotedcontent(o). {
res = new Dq($this, o);
}
-doublequotedcontent(res) ::= BACKTICK variable(v) BACKTICK. {
+doublequotedcontent(res) ::= BACKTICK variablevalue(v) BACKTICK. {
res = new Code('(string)'.v);
}
@@ -1294,7 +1372,7 @@ doublequotedcontent(res) ::= DOLLARID(i). {
res = new Code('(string)$_smarty_tpl->getValue(\''. substr(i,1) .'\')');
}
-doublequotedcontent(res) ::= LDEL variable(v) RDEL. {
+doublequotedcontent(res) ::= LDEL variablevalue(v) RDEL. {
res = new Code('(string)'.v);
}