From 7a9aae6d22e72a22b598a7724a4991f37adf1f1b Mon Sep 17 00:00:00 2001 From: =?utf8?q?C=C3=A9sar=20D=2E=20Rodas?= Date: Fri, 10 Sep 2010 19:19:51 -0400 Subject: [PATCH] - Added variables to for: for i in min .. max step stepx --- lib/Haanga/Compiler.php | 11 +- lib/Haanga/Compiler/Parser.php | 1022 ++++++++++---------- lib/Haanga/Compiler/Parser.y | 8 +- lib/Haanga/Compiler/Tokenizer.php | 1 + lib/Haanga/Generator/PHP.php | 10 +- tests/assert_templates/for_range4.tpl | 2 +- tests/assert_templates/for_range5.html | 7 + tests/assert_templates/for_range5.php | 3 + tests/assert_templates/for_range5.tpl | 3 + tests/assert_templates/for_range5.tpl.txt | 35 + tests/tmp/assert_templates/for_range.tpl.php.dump | 217 +++++ tests/tmp/assert_templates/for_range1.tpl.php | 21 + tests/tmp/assert_templates/for_range1.tpl.php.dump | 217 +++++ tests/tmp/assert_templates/for_range2.tpl.php | 21 + tests/tmp/assert_templates/for_range2.tpl.php.dump | 217 +++++ tests/tmp/assert_templates/for_range3.tpl.php | 21 + tests/tmp/assert_templates/for_range3.tpl.php.dump | 217 +++++ tests/tmp/assert_templates/for_range4.tpl.php | 21 + tests/tmp/assert_templates/for_range4.tpl.php.dump | 225 +++++ tests/tmp/assert_templates/for_range5.tpl.php | 21 + tests/tmp/assert_templates/for_range5.tpl.php.dump | 235 +++++ 21 files changed, 2016 insertions(+), 519 deletions(-) create mode 100644 tests/assert_templates/for_range5.html create mode 100644 tests/assert_templates/for_range5.php create mode 100644 tests/assert_templates/for_range5.tpl create mode 100644 tests/assert_templates/for_range5.tpl.txt create mode 100644 tests/tmp/assert_templates/for_range.tpl.php.dump create mode 100644 tests/tmp/assert_templates/for_range1.tpl.php create mode 100644 tests/tmp/assert_templates/for_range1.tpl.php.dump create mode 100644 tests/tmp/assert_templates/for_range2.tpl.php create mode 100644 tests/tmp/assert_templates/for_range2.tpl.php.dump create mode 100644 tests/tmp/assert_templates/for_range3.tpl.php create mode 100644 tests/tmp/assert_templates/for_range3.tpl.php.dump create mode 100644 tests/tmp/assert_templates/for_range4.tpl.php create mode 100644 tests/tmp/assert_templates/for_range4.tpl.php.dump create mode 100644 tests/tmp/assert_templates/for_range5.tpl.php create mode 100644 tests/tmp/assert_templates/for_range5.tpl.php.dump diff --git a/lib/Haanga/Compiler.php b/lib/Haanga/Compiler.php index 4319c2b..2a68990 100644 --- a/lib/Haanga/Compiler.php +++ b/lib/Haanga/Compiler.php @@ -1033,7 +1033,6 @@ class Haanga_Compiler $this->set_context($details['variable'], current($var)); } - /* Check if the array to iterate is an object */ $var = &$details['array'][0]; if (is_string($var) && $this->var_is_object(array($var), FALSE)) { @@ -1050,6 +1049,7 @@ class Haanga_Compiler $this->set_safe(hvar($details['variable'])); } + $details['array'] = $this->generate_variable_name($details['array']); } /* for_body {{{ */ @@ -1133,6 +1133,15 @@ class Haanga_Compiler $this->set_unsafe($details['variable']); } } else { + for ($i=0; $i < 2; $i++) { + if (Haanga_AST::is_var($details['range'][$i])) { + $details['range'][$i] = $this->generate_variable_name($details['range'][$i]['var']); + } + } + + if (Haanga_AST::is_var($details['step'])) { + $details['step'] = $this->generate_variable_name($details['step']['var']); + } $body->do_for($details['variable'], $details['range'][0], $details['range'][1], $details['step'], $for_body); $this->set_unsafe(hvar($details['variable'])); } diff --git a/lib/Haanga/Compiler/Parser.php b/lib/Haanga/Compiler/Parser.php index 80ebbfe..c85d846 100644 --- a/lib/Haanga/Compiler/Parser.php +++ b/lib/Haanga/Compiler/Parser.php @@ -223,10 +223,11 @@ class Haanga_yyStackEntry const T_DOT = 55; const T_BRACKETS_OPEN = 56; const T_BRACKETS_CLOSE = 57; - const T_NUMERIC = 58; - const YY_NO_ACTION = 347; - const YY_ACCEPT_ACTION = 346; - const YY_ERROR_ACTION = 345; + const T_DOTDOT = 58; + const T_NUMERIC = 59; + const YY_NO_ACTION = 346; + const YY_ACCEPT_ACTION = 345; + const YY_ERROR_ACTION = 344; /* Next are that tables used to determine what action to take based on the ** current state and lookahead token. These tables are used to implement @@ -278,281 +279,283 @@ class Haanga_yyStackEntry ** shifting non-terminals after a reduce. ** self::$yy_default Default action for each state. */ - const YY_SZ_ACTTAB = 1155; + const YY_SZ_ACTTAB = 1169; static public $yy_action = array( - /* 0 */ 46, 61, 47, 86, 164, 37, 230, 38, 158, 82, - /* 10 */ 90, 57, 227, 169, 165, 28, 129, 39, 32, 33, - /* 20 */ 54, 52, 50, 197, 46, 152, 47, 86, 146, 37, - /* 30 */ 246, 38, 158, 82, 90, 57, 26, 26, 26, 28, - /* 40 */ 151, 39, 32, 33, 54, 52, 50, 192, 46, 81, - /* 50 */ 47, 86, 161, 37, 210, 38, 158, 82, 90, 57, - /* 60 */ 238, 188, 226, 28, 166, 39, 32, 33, 54, 52, - /* 70 */ 50, 225, 46, 174, 47, 86, 159, 37, 218, 38, - /* 80 */ 158, 82, 90, 57, 55, 55, 103, 28, 142, 39, - /* 90 */ 32, 33, 54, 52, 50, 258, 46, 217, 47, 86, - /* 100 */ 163, 37, 189, 38, 158, 82, 90, 57, 233, 346, - /* 110 */ 58, 28, 157, 39, 32, 33, 54, 52, 50, 234, - /* 120 */ 46, 213, 47, 86, 181, 37, 247, 38, 158, 82, - /* 130 */ 90, 57, 69, 55, 198, 28, 179, 39, 32, 33, - /* 140 */ 54, 52, 50, 106, 46, 49, 47, 86, 153, 37, - /* 150 */ 245, 38, 158, 82, 90, 57, 206, 125, 99, 28, - /* 160 */ 108, 39, 32, 33, 54, 52, 50, 256, 46, 64, - /* 170 */ 47, 86, 144, 37, 235, 38, 158, 82, 90, 57, - /* 180 */ 254, 55, 257, 28, 104, 39, 32, 33, 54, 52, - /* 190 */ 50, 243, 46, 219, 47, 86, 168, 37, 97, 38, - /* 200 */ 158, 82, 90, 57, 95, 55, 180, 28, 186, 39, - /* 210 */ 32, 33, 54, 52, 50, 101, 46, 55, 47, 86, - /* 220 */ 148, 37, 237, 38, 158, 82, 90, 57, 98, 91, - /* 230 */ 93, 28, 199, 39, 32, 33, 54, 52, 50, 253, - /* 240 */ 46, 215, 47, 86, 167, 37, 111, 38, 158, 82, - /* 250 */ 90, 57, 244, 232, 204, 28, 120, 39, 32, 33, - /* 260 */ 54, 52, 50, 121, 46, 123, 47, 86, 145, 37, - /* 270 */ 74, 38, 158, 82, 90, 57, 124, 127, 119, 28, - /* 280 */ 143, 39, 32, 33, 54, 52, 50, 59, 46, 79, - /* 290 */ 47, 86, 171, 37, 67, 38, 158, 82, 90, 57, - /* 300 */ 88, 85, 65, 28, 130, 39, 32, 33, 54, 52, - /* 310 */ 50, 78, 46, 252, 47, 86, 178, 37, 70, 38, - /* 320 */ 158, 82, 90, 57, 126, 68, 131, 28, 122, 39, - /* 330 */ 32, 33, 54, 52, 50, 75, 46, 63, 47, 86, - /* 340 */ 173, 37, 84, 38, 158, 82, 90, 57, 72, 60, - /* 350 */ 76, 28, 174, 39, 32, 33, 54, 52, 50, 73, - /* 360 */ 46, 71, 47, 86, 154, 37, 62, 38, 158, 82, - /* 370 */ 90, 57, 174, 174, 174, 28, 174, 39, 32, 33, - /* 380 */ 54, 52, 50, 174, 46, 174, 47, 86, 56, 37, - /* 390 */ 174, 38, 158, 82, 90, 57, 174, 174, 174, 28, - /* 400 */ 174, 39, 32, 33, 54, 52, 50, 174, 46, 174, - /* 410 */ 47, 86, 172, 37, 174, 38, 158, 82, 90, 57, - /* 420 */ 174, 174, 174, 28, 174, 39, 32, 33, 54, 52, - /* 430 */ 50, 174, 46, 174, 47, 86, 177, 37, 174, 38, - /* 440 */ 158, 82, 90, 57, 174, 174, 174, 28, 174, 39, - /* 450 */ 32, 33, 54, 52, 50, 174, 46, 174, 47, 86, - /* 460 */ 89, 37, 174, 38, 158, 82, 90, 57, 174, 174, - /* 470 */ 174, 28, 174, 39, 32, 33, 54, 52, 50, 174, - /* 480 */ 46, 174, 47, 86, 150, 37, 174, 38, 158, 82, - /* 490 */ 90, 57, 174, 174, 174, 28, 174, 39, 32, 33, - /* 500 */ 54, 52, 50, 174, 46, 174, 47, 86, 147, 37, - /* 510 */ 174, 38, 158, 82, 90, 57, 174, 174, 174, 28, - /* 520 */ 109, 39, 32, 33, 54, 52, 50, 174, 46, 174, - /* 530 */ 47, 86, 48, 37, 174, 38, 158, 82, 90, 57, - /* 540 */ 174, 174, 174, 28, 174, 39, 32, 33, 54, 52, + /* 0 */ 43, 66, 47, 74, 169, 37, 106, 39, 155, 82, + /* 10 */ 90, 64, 227, 154, 179, 28, 125, 38, 34, 35, + /* 20 */ 54, 51, 50, 233, 43, 166, 47, 74, 180, 37, + /* 30 */ 232, 39, 155, 82, 90, 64, 26, 26, 26, 28, + /* 40 */ 182, 38, 34, 35, 54, 51, 50, 100, 43, 61, + /* 50 */ 47, 74, 176, 37, 98, 39, 155, 82, 90, 64, + /* 60 */ 239, 96, 158, 28, 171, 38, 34, 35, 54, 51, + /* 70 */ 50, 257, 43, 88, 47, 74, 151, 37, 235, 39, + /* 80 */ 155, 82, 90, 64, 55, 55, 255, 28, 145, 38, + /* 90 */ 34, 35, 54, 51, 50, 188, 43, 55, 47, 74, + /* 100 */ 144, 37, 253, 39, 155, 82, 90, 64, 214, 55, + /* 110 */ 195, 28, 168, 38, 34, 35, 54, 51, 50, 199, + /* 120 */ 43, 49, 47, 74, 173, 37, 104, 39, 155, 82, + /* 130 */ 90, 64, 217, 55, 217, 28, 175, 38, 34, 35, + /* 140 */ 54, 51, 50, 189, 43, 161, 47, 74, 89, 37, + /* 150 */ 187, 39, 155, 82, 90, 64, 215, 109, 215, 28, + /* 160 */ 217, 38, 34, 35, 54, 51, 50, 108, 43, 48, + /* 170 */ 47, 74, 146, 37, 101, 39, 155, 82, 90, 64, + /* 180 */ 80, 55, 112, 28, 215, 38, 34, 35, 54, 51, + /* 190 */ 50, 243, 43, 226, 47, 74, 170, 37, 234, 39, + /* 200 */ 155, 82, 90, 64, 345, 75, 210, 28, 231, 38, + /* 210 */ 34, 35, 54, 51, 50, 185, 43, 213, 47, 74, + /* 220 */ 153, 37, 102, 39, 155, 82, 90, 64, 242, 126, + /* 230 */ 218, 28, 244, 38, 34, 35, 54, 51, 50, 254, + /* 240 */ 43, 76, 47, 74, 177, 37, 230, 39, 155, 82, + /* 250 */ 90, 64, 91, 93, 194, 28, 206, 38, 34, 35, + /* 260 */ 54, 51, 50, 103, 43, 83, 47, 74, 148, 37, + /* 270 */ 225, 39, 155, 82, 90, 64, 245, 204, 196, 28, + /* 280 */ 250, 38, 34, 35, 54, 51, 50, 246, 43, 81, + /* 290 */ 47, 74, 56, 37, 128, 39, 155, 82, 90, 64, + /* 300 */ 219, 124, 70, 28, 84, 38, 34, 35, 54, 51, + /* 310 */ 50, 58, 43, 77, 47, 74, 167, 37, 256, 39, + /* 320 */ 155, 82, 90, 64, 120, 68, 59, 28, 67, 38, + /* 330 */ 34, 35, 54, 51, 50, 87, 43, 71, 47, 74, + /* 340 */ 174, 37, 143, 39, 155, 82, 90, 64, 121, 69, + /* 350 */ 63, 28, 123, 38, 34, 35, 54, 51, 50, 65, + /* 360 */ 43, 127, 47, 74, 160, 37, 60, 39, 155, 82, + /* 370 */ 90, 64, 62, 72, 130, 28, 133, 38, 34, 35, + /* 380 */ 54, 51, 50, 122, 43, 129, 47, 74, 178, 37, + /* 390 */ 78, 39, 155, 82, 90, 64, 175, 175, 175, 28, + /* 400 */ 175, 38, 34, 35, 54, 51, 50, 175, 43, 175, + /* 410 */ 47, 74, 183, 37, 175, 39, 155, 82, 90, 64, + /* 420 */ 175, 175, 175, 28, 175, 38, 34, 35, 54, 51, + /* 430 */ 50, 175, 43, 175, 47, 74, 149, 37, 175, 39, + /* 440 */ 155, 82, 90, 64, 175, 175, 175, 28, 175, 38, + /* 450 */ 34, 35, 54, 51, 50, 175, 43, 175, 47, 74, + /* 460 */ 157, 37, 175, 39, 155, 82, 90, 64, 175, 175, + /* 470 */ 175, 28, 175, 38, 34, 35, 54, 51, 50, 175, + /* 480 */ 43, 175, 47, 74, 165, 37, 175, 39, 155, 82, + /* 490 */ 90, 64, 175, 175, 175, 28, 175, 38, 34, 35, + /* 500 */ 54, 51, 50, 175, 43, 175, 47, 74, 152, 37, + /* 510 */ 175, 39, 155, 82, 90, 64, 175, 175, 175, 28, + /* 520 */ 175, 38, 34, 35, 54, 51, 50, 52, 43, 175, + /* 530 */ 47, 74, 175, 37, 229, 39, 155, 82, 90, 64, + /* 540 */ 175, 175, 175, 28, 175, 38, 34, 35, 54, 51, /* 550 */ 50, 31, 30, 24, 24, 24, 24, 24, 24, 24, - /* 560 */ 25, 25, 26, 26, 26, 31, 30, 24, 24, 24, - /* 570 */ 24, 24, 24, 24, 25, 25, 26, 26, 26, 36, - /* 580 */ 174, 174, 174, 51, 105, 183, 220, 162, 44, 149, - /* 590 */ 205, 203, 202, 200, 201, 207, 212, 211, 174, 193, - /* 600 */ 251, 66, 110, 31, 30, 24, 24, 24, 24, 24, - /* 610 */ 24, 24, 25, 25, 26, 26, 26, 170, 137, 174, - /* 620 */ 83, 183, 160, 162, 44, 183, 228, 162, 44, 128, - /* 630 */ 224, 80, 224, 125, 136, 156, 196, 43, 195, 242, - /* 640 */ 118, 194, 187, 242, 174, 224, 183, 236, 162, 44, - /* 650 */ 174, 221, 221, 227, 169, 174, 77, 174, 223, 174, - /* 660 */ 174, 174, 214, 30, 24, 24, 24, 24, 24, 24, - /* 670 */ 24, 25, 25, 26, 26, 26, 27, 160, 183, 174, - /* 680 */ 162, 44, 183, 45, 162, 44, 174, 170, 125, 8, - /* 690 */ 183, 196, 162, 44, 174, 116, 194, 187, 242, 248, - /* 700 */ 224, 249, 224, 174, 170, 241, 240, 53, 174, 133, - /* 710 */ 40, 133, 222, 239, 222, 224, 170, 174, 216, 160, - /* 720 */ 216, 185, 185, 227, 169, 92, 29, 174, 223, 224, - /* 730 */ 125, 224, 214, 196, 174, 209, 43, 117, 194, 187, - /* 740 */ 242, 174, 174, 174, 224, 170, 12, 174, 174, 214, - /* 750 */ 221, 221, 227, 169, 100, 174, 160, 223, 224, 174, - /* 760 */ 224, 214, 241, 240, 53, 43, 183, 125, 162, 44, - /* 770 */ 196, 11, 174, 224, 113, 194, 187, 242, 174, 221, - /* 780 */ 221, 227, 169, 174, 174, 174, 223, 241, 240, 53, - /* 790 */ 214, 174, 24, 24, 24, 24, 24, 24, 24, 25, - /* 800 */ 25, 26, 26, 26, 170, 231, 174, 174, 174, 224, - /* 810 */ 174, 224, 174, 208, 174, 170, 170, 224, 87, 224, - /* 820 */ 224, 174, 224, 248, 224, 96, 174, 174, 224, 224, - /* 830 */ 224, 224, 224, 133, 42, 224, 222, 223, 221, 221, - /* 840 */ 227, 169, 216, 224, 224, 223, 174, 174, 223, 214, - /* 850 */ 221, 221, 227, 169, 170, 22, 223, 223, 174, 174, - /* 860 */ 214, 214, 174, 107, 160, 174, 170, 224, 134, 224, - /* 870 */ 174, 241, 240, 53, 190, 125, 174, 195, 196, 224, - /* 880 */ 19, 224, 224, 176, 187, 242, 94, 174, 221, 221, - /* 890 */ 227, 169, 174, 170, 224, 223, 241, 240, 53, 214, - /* 900 */ 221, 221, 227, 169, 160, 174, 224, 223, 224, 174, - /* 910 */ 174, 214, 174, 174, 174, 125, 174, 183, 196, 162, - /* 920 */ 44, 224, 132, 194, 187, 242, 160, 185, 185, 227, - /* 930 */ 169, 140, 174, 174, 223, 174, 174, 125, 214, 1, - /* 940 */ 196, 174, 125, 174, 115, 194, 187, 242, 174, 160, - /* 950 */ 174, 174, 242, 160, 174, 241, 240, 53, 174, 174, - /* 960 */ 125, 174, 174, 196, 125, 160, 174, 196, 184, 187, - /* 970 */ 242, 191, 194, 187, 242, 174, 125, 248, 174, 196, - /* 980 */ 160, 174, 174, 114, 194, 187, 242, 133, 41, 174, - /* 990 */ 222, 125, 160, 174, 196, 174, 216, 112, 16, 34, - /* 1000 */ 187, 242, 13, 125, 174, 14, 196, 229, 4, 174, - /* 1010 */ 174, 35, 187, 242, 241, 240, 53, 18, 241, 240, - /* 1020 */ 53, 241, 240, 53, 241, 240, 53, 2, 183, 174, - /* 1030 */ 162, 44, 10, 241, 240, 53, 17, 102, 183, 6, - /* 1040 */ 162, 44, 7, 241, 240, 53, 9, 174, 241, 240, - /* 1050 */ 53, 174, 241, 240, 53, 241, 240, 53, 241, 240, - /* 1060 */ 53, 174, 241, 240, 53, 250, 174, 175, 183, 174, - /* 1070 */ 162, 44, 174, 174, 174, 133, 135, 133, 222, 141, - /* 1080 */ 222, 174, 174, 182, 216, 174, 216, 125, 23, 133, - /* 1090 */ 174, 5, 222, 133, 174, 174, 222, 242, 216, 174, - /* 1100 */ 20, 255, 216, 174, 241, 240, 53, 241, 240, 53, - /* 1110 */ 21, 133, 174, 3, 222, 174, 241, 240, 53, 15, - /* 1120 */ 216, 139, 174, 174, 174, 174, 241, 240, 53, 241, - /* 1130 */ 240, 53, 125, 138, 134, 241, 240, 53, 174, 174, - /* 1140 */ 155, 174, 242, 195, 125, 174, 174, 174, 174, 174, - /* 1150 */ 174, 174, 174, 174, 242, + /* 560 */ 25, 25, 26, 26, 26, 131, 175, 136, 45, 131, + /* 570 */ 95, 136, 45, 175, 31, 30, 24, 24, 24, 24, + /* 580 */ 24, 24, 24, 25, 25, 26, 26, 26, 31, 30, + /* 590 */ 24, 24, 24, 24, 24, 24, 24, 25, 25, 26, + /* 600 */ 26, 26, 30, 24, 24, 24, 24, 24, 24, 24, + /* 610 */ 25, 25, 26, 26, 26, 158, 139, 175, 175, 175, + /* 620 */ 156, 175, 193, 131, 228, 136, 45, 119, 224, 85, + /* 630 */ 224, 126, 142, 181, 198, 46, 190, 241, 132, 192, + /* 640 */ 186, 241, 1, 224, 175, 175, 175, 97, 135, 221, + /* 650 */ 221, 227, 154, 175, 191, 175, 223, 190, 240, 238, + /* 660 */ 53, 214, 24, 24, 24, 24, 24, 24, 24, 25, + /* 670 */ 25, 26, 26, 26, 27, 156, 141, 158, 131, 175, + /* 680 */ 136, 45, 175, 105, 175, 158, 126, 126, 156, 198, + /* 690 */ 224, 175, 224, 113, 192, 186, 241, 241, 224, 126, + /* 700 */ 224, 175, 198, 175, 137, 224, 197, 192, 186, 241, + /* 710 */ 175, 175, 175, 224, 131, 126, 136, 45, 223, 184, + /* 720 */ 184, 227, 154, 214, 29, 241, 223, 175, 175, 220, + /* 730 */ 175, 214, 159, 205, 203, 202, 200, 201, 207, 212, + /* 740 */ 211, 175, 175, 251, 236, 110, 158, 135, 224, 175, + /* 750 */ 224, 156, 175, 164, 175, 94, 190, 36, 175, 224, + /* 760 */ 209, 224, 126, 224, 175, 198, 46, 175, 175, 115, + /* 770 */ 192, 186, 241, 175, 224, 158, 223, 175, 175, 57, + /* 780 */ 221, 221, 227, 154, 107, 175, 156, 223, 224, 237, + /* 790 */ 224, 131, 214, 136, 45, 46, 175, 126, 175, 131, + /* 800 */ 198, 136, 45, 224, 158, 172, 186, 241, 175, 221, + /* 810 */ 221, 227, 154, 208, 175, 247, 223, 224, 79, 224, + /* 820 */ 131, 214, 136, 45, 175, 134, 42, 175, 222, 224, + /* 830 */ 175, 224, 224, 158, 216, 175, 175, 175, 221, 221, + /* 840 */ 227, 154, 99, 175, 224, 223, 224, 158, 224, 175, + /* 850 */ 214, 175, 156, 175, 175, 175, 92, 223, 175, 175, + /* 860 */ 224, 224, 224, 126, 175, 175, 198, 221, 221, 227, + /* 870 */ 154, 32, 186, 241, 223, 224, 158, 175, 175, 214, + /* 880 */ 175, 221, 221, 227, 154, 44, 175, 156, 223, 224, + /* 890 */ 158, 224, 131, 214, 136, 45, 175, 341, 126, 175, + /* 900 */ 175, 198, 175, 224, 224, 224, 147, 186, 241, 175, + /* 910 */ 221, 221, 227, 154, 175, 175, 175, 223, 224, 175, + /* 920 */ 175, 175, 214, 175, 184, 184, 227, 154, 44, 156, + /* 930 */ 175, 223, 175, 156, 175, 131, 214, 136, 45, 175, + /* 940 */ 126, 175, 175, 198, 126, 156, 175, 198, 33, 186, + /* 950 */ 241, 114, 192, 186, 241, 175, 126, 156, 175, 198, + /* 960 */ 162, 175, 175, 116, 192, 186, 241, 175, 126, 156, + /* 970 */ 134, 198, 175, 222, 175, 118, 192, 186, 241, 216, + /* 980 */ 126, 175, 21, 198, 247, 175, 175, 117, 192, 186, + /* 990 */ 241, 247, 175, 175, 134, 41, 19, 222, 240, 238, + /* 1000 */ 53, 134, 40, 216, 222, 6, 175, 150, 175, 175, + /* 1010 */ 216, 175, 240, 238, 53, 2, 175, 134, 138, 14, + /* 1020 */ 222, 240, 238, 53, 17, 175, 216, 175, 175, 126, + /* 1030 */ 175, 240, 238, 53, 3, 240, 238, 53, 175, 241, + /* 1040 */ 240, 238, 53, 18, 249, 248, 175, 73, 175, 4, + /* 1050 */ 240, 238, 53, 10, 134, 134, 175, 222, 222, 240, + /* 1060 */ 238, 53, 11, 216, 216, 240, 238, 53, 175, 240, + /* 1070 */ 238, 53, 15, 131, 163, 136, 45, 175, 240, 238, + /* 1080 */ 53, 8, 252, 175, 134, 86, 16, 222, 240, 238, + /* 1090 */ 53, 23, 134, 216, 175, 222, 175, 240, 238, 53, + /* 1100 */ 13, 216, 240, 238, 53, 12, 175, 240, 238, 53, + /* 1110 */ 20, 131, 175, 136, 45, 111, 240, 238, 53, 22, + /* 1120 */ 175, 240, 238, 53, 7, 175, 240, 238, 53, 175, + /* 1130 */ 175, 175, 175, 175, 175, 240, 238, 53, 9, 175, + /* 1140 */ 240, 238, 53, 5, 175, 175, 131, 140, 136, 45, + /* 1150 */ 175, 175, 175, 175, 240, 238, 53, 175, 126, 240, + /* 1160 */ 238, 53, 175, 175, 175, 175, 175, 175, 241, ); static public $yy_lookahead = array( - /* 0 */ 21, 61, 23, 24, 25, 26, 22, 28, 29, 30, - /* 10 */ 31, 32, 49, 50, 35, 36, 75, 38, 39, 40, - /* 20 */ 41, 42, 43, 22, 21, 84, 23, 24, 25, 26, + /* 0 */ 21, 62, 23, 24, 25, 26, 22, 28, 29, 30, + /* 10 */ 31, 32, 49, 50, 35, 36, 76, 38, 39, 40, + /* 20 */ 41, 42, 43, 22, 21, 85, 23, 24, 25, 26, /* 30 */ 22, 28, 29, 30, 31, 32, 14, 15, 16, 36, - /* 40 */ 37, 38, 39, 40, 41, 42, 43, 22, 21, 61, + /* 40 */ 37, 38, 39, 40, 41, 42, 43, 22, 21, 62, /* 50 */ 23, 24, 25, 26, 22, 28, 29, 30, 31, 32, - /* 60 */ 20, 22, 51, 36, 37, 38, 39, 40, 41, 42, - /* 70 */ 43, 57, 21, 49, 23, 24, 25, 26, 22, 28, + /* 60 */ 20, 22, 13, 36, 37, 38, 39, 40, 41, 42, + /* 70 */ 43, 22, 21, 62, 23, 24, 25, 26, 22, 28, /* 80 */ 29, 30, 31, 32, 45, 45, 22, 36, 37, 38, - /* 90 */ 39, 40, 41, 42, 43, 22, 21, 54, 23, 24, - /* 100 */ 25, 26, 22, 28, 29, 30, 31, 32, 22, 60, - /* 110 */ 61, 36, 37, 38, 39, 40, 41, 42, 43, 22, + /* 90 */ 39, 40, 41, 42, 43, 22, 21, 45, 23, 24, + /* 100 */ 25, 26, 22, 28, 29, 30, 31, 32, 59, 45, + /* 110 */ 22, 36, 37, 38, 39, 40, 41, 42, 43, 22, /* 120 */ 21, 58, 23, 24, 25, 26, 22, 28, 29, 30, - /* 130 */ 31, 32, 44, 45, 22, 36, 37, 38, 39, 40, - /* 140 */ 41, 42, 43, 22, 21, 55, 23, 24, 25, 26, - /* 150 */ 22, 28, 29, 30, 31, 32, 22, 75, 22, 36, - /* 160 */ 22, 38, 39, 40, 41, 42, 43, 85, 21, 61, + /* 130 */ 31, 32, 26, 45, 28, 36, 37, 38, 39, 40, + /* 140 */ 41, 42, 43, 22, 21, 49, 23, 24, 25, 26, + /* 150 */ 22, 28, 29, 30, 31, 32, 26, 22, 28, 36, + /* 160 */ 54, 38, 39, 40, 41, 42, 43, 22, 21, 34, /* 170 */ 23, 24, 25, 26, 22, 28, 29, 30, 31, 32, - /* 180 */ 22, 45, 22, 36, 22, 38, 39, 40, 41, 42, - /* 190 */ 43, 22, 21, 62, 23, 24, 25, 26, 22, 28, - /* 200 */ 29, 30, 31, 32, 22, 45, 55, 36, 22, 38, - /* 210 */ 39, 40, 41, 42, 43, 22, 21, 45, 23, 24, - /* 220 */ 25, 26, 22, 28, 29, 30, 31, 32, 22, 22, - /* 230 */ 22, 36, 22, 38, 39, 40, 41, 42, 43, 22, - /* 240 */ 21, 54, 23, 24, 25, 26, 22, 28, 29, 30, - /* 250 */ 31, 32, 22, 22, 22, 36, 75, 38, 39, 40, - /* 260 */ 41, 42, 43, 75, 21, 75, 23, 24, 25, 26, - /* 270 */ 61, 28, 29, 30, 31, 32, 75, 75, 75, 36, - /* 280 */ 84, 38, 39, 40, 41, 42, 43, 61, 21, 61, - /* 290 */ 23, 24, 25, 26, 61, 28, 29, 30, 31, 32, - /* 300 */ 61, 61, 61, 36, 75, 38, 39, 40, 41, 42, - /* 310 */ 43, 61, 21, 78, 23, 24, 25, 26, 61, 28, - /* 320 */ 29, 30, 31, 32, 75, 61, 75, 36, 75, 38, - /* 330 */ 39, 40, 41, 42, 43, 61, 21, 61, 23, 24, - /* 340 */ 25, 26, 61, 28, 29, 30, 31, 32, 61, 61, - /* 350 */ 61, 36, 86, 38, 39, 40, 41, 42, 43, 61, - /* 360 */ 21, 61, 23, 24, 25, 26, 61, 28, 29, 30, - /* 370 */ 31, 32, 86, 86, 86, 36, 86, 38, 39, 40, - /* 380 */ 41, 42, 43, 86, 21, 86, 23, 24, 25, 26, - /* 390 */ 86, 28, 29, 30, 31, 32, 86, 86, 86, 36, - /* 400 */ 86, 38, 39, 40, 41, 42, 43, 86, 21, 86, - /* 410 */ 23, 24, 25, 26, 86, 28, 29, 30, 31, 32, - /* 420 */ 86, 86, 86, 36, 86, 38, 39, 40, 41, 42, - /* 430 */ 43, 86, 21, 86, 23, 24, 25, 26, 86, 28, - /* 440 */ 29, 30, 31, 32, 86, 86, 86, 36, 86, 38, - /* 450 */ 39, 40, 41, 42, 43, 86, 21, 86, 23, 24, - /* 460 */ 25, 26, 86, 28, 29, 30, 31, 32, 86, 86, - /* 470 */ 86, 36, 86, 38, 39, 40, 41, 42, 43, 86, - /* 480 */ 21, 86, 23, 24, 25, 26, 86, 28, 29, 30, - /* 490 */ 31, 32, 86, 86, 86, 36, 86, 38, 39, 40, - /* 500 */ 41, 42, 43, 86, 21, 86, 23, 24, 25, 26, - /* 510 */ 86, 28, 29, 30, 31, 32, 86, 86, 86, 36, - /* 520 */ 22, 38, 39, 40, 41, 42, 43, 86, 21, 86, - /* 530 */ 23, 24, 34, 26, 86, 28, 29, 30, 31, 32, - /* 540 */ 86, 86, 86, 36, 86, 38, 39, 40, 41, 42, + /* 180 */ 44, 45, 22, 36, 54, 38, 39, 40, 41, 42, + /* 190 */ 43, 22, 21, 51, 23, 24, 25, 26, 22, 28, + /* 200 */ 29, 30, 31, 32, 61, 62, 22, 36, 22, 38, + /* 210 */ 39, 40, 41, 42, 43, 22, 21, 59, 23, 24, + /* 220 */ 25, 26, 22, 28, 29, 30, 31, 32, 22, 76, + /* 230 */ 22, 36, 22, 38, 39, 40, 41, 42, 43, 86, + /* 240 */ 21, 62, 23, 24, 25, 26, 22, 28, 29, 30, + /* 250 */ 31, 32, 22, 22, 22, 36, 22, 38, 39, 40, + /* 260 */ 41, 42, 43, 22, 21, 62, 23, 24, 25, 26, + /* 270 */ 57, 28, 29, 30, 31, 32, 22, 22, 22, 36, + /* 280 */ 22, 38, 39, 40, 41, 42, 43, 22, 21, 62, + /* 290 */ 23, 24, 25, 26, 76, 28, 29, 30, 31, 32, + /* 300 */ 63, 76, 62, 36, 62, 38, 39, 40, 41, 42, + /* 310 */ 43, 62, 21, 62, 23, 24, 25, 26, 79, 28, + /* 320 */ 29, 30, 31, 32, 76, 62, 62, 36, 62, 38, + /* 330 */ 39, 40, 41, 42, 43, 62, 21, 62, 23, 24, + /* 340 */ 25, 26, 85, 28, 29, 30, 31, 32, 76, 62, + /* 350 */ 62, 36, 76, 38, 39, 40, 41, 42, 43, 62, + /* 360 */ 21, 76, 23, 24, 25, 26, 62, 28, 29, 30, + /* 370 */ 31, 32, 62, 62, 76, 36, 76, 38, 39, 40, + /* 380 */ 41, 42, 43, 76, 21, 76, 23, 24, 25, 26, + /* 390 */ 62, 28, 29, 30, 31, 32, 87, 87, 87, 36, + /* 400 */ 87, 38, 39, 40, 41, 42, 43, 87, 21, 87, + /* 410 */ 23, 24, 25, 26, 87, 28, 29, 30, 31, 32, + /* 420 */ 87, 87, 87, 36, 87, 38, 39, 40, 41, 42, + /* 430 */ 43, 87, 21, 87, 23, 24, 25, 26, 87, 28, + /* 440 */ 29, 30, 31, 32, 87, 87, 87, 36, 87, 38, + /* 450 */ 39, 40, 41, 42, 43, 87, 21, 87, 23, 24, + /* 460 */ 25, 26, 87, 28, 29, 30, 31, 32, 87, 87, + /* 470 */ 87, 36, 87, 38, 39, 40, 41, 42, 43, 87, + /* 480 */ 21, 87, 23, 24, 25, 26, 87, 28, 29, 30, + /* 490 */ 31, 32, 87, 87, 87, 36, 87, 38, 39, 40, + /* 500 */ 41, 42, 43, 87, 21, 87, 23, 24, 25, 26, + /* 510 */ 87, 28, 29, 30, 31, 32, 87, 87, 87, 36, + /* 520 */ 87, 38, 39, 40, 41, 42, 43, 11, 21, 87, + /* 530 */ 23, 24, 87, 26, 22, 28, 29, 30, 31, 32, + /* 540 */ 87, 87, 87, 36, 87, 38, 39, 40, 41, 42, /* 550 */ 43, 3, 4, 5, 6, 7, 8, 9, 10, 11, - /* 560 */ 12, 13, 14, 15, 16, 3, 4, 5, 6, 7, - /* 570 */ 8, 9, 10, 11, 12, 13, 14, 15, 16, 11, - /* 580 */ 86, 86, 86, 11, 22, 53, 63, 55, 56, 66, - /* 590 */ 67, 68, 69, 70, 71, 72, 73, 74, 86, 51, - /* 600 */ 77, 33, 79, 3, 4, 5, 6, 7, 8, 9, - /* 610 */ 10, 11, 12, 13, 14, 15, 16, 13, 64, 86, - /* 620 */ 27, 53, 64, 55, 56, 53, 22, 55, 56, 75, - /* 630 */ 26, 27, 28, 75, 80, 81, 78, 33, 84, 85, - /* 640 */ 82, 83, 84, 85, 86, 41, 53, 22, 55, 56, - /* 650 */ 86, 47, 48, 49, 50, 86, 27, 86, 54, 86, - /* 660 */ 86, 86, 58, 4, 5, 6, 7, 8, 9, 10, - /* 670 */ 11, 12, 13, 14, 15, 16, 2, 64, 53, 86, - /* 680 */ 55, 56, 53, 46, 55, 56, 86, 13, 75, 1, - /* 690 */ 53, 78, 55, 56, 86, 82, 83, 84, 85, 65, - /* 700 */ 26, 65, 28, 86, 13, 17, 18, 19, 86, 75, - /* 710 */ 76, 75, 78, 22, 78, 41, 13, 86, 84, 64, - /* 720 */ 84, 47, 48, 49, 50, 22, 52, 86, 54, 26, - /* 730 */ 75, 28, 58, 78, 86, 22, 33, 82, 83, 84, - /* 740 */ 85, 86, 86, 86, 41, 13, 1, 86, 86, 58, - /* 750 */ 47, 48, 49, 50, 22, 86, 64, 54, 26, 86, - /* 760 */ 28, 58, 17, 18, 19, 33, 53, 75, 55, 56, - /* 770 */ 78, 1, 86, 41, 82, 83, 84, 85, 86, 47, - /* 780 */ 48, 49, 50, 86, 86, 86, 54, 17, 18, 19, - /* 790 */ 58, 86, 5, 6, 7, 8, 9, 10, 11, 12, - /* 800 */ 13, 14, 15, 16, 13, 22, 86, 86, 86, 26, - /* 810 */ 86, 28, 86, 22, 86, 13, 13, 26, 27, 28, - /* 820 */ 26, 86, 28, 65, 41, 22, 86, 86, 26, 26, - /* 830 */ 28, 28, 41, 75, 76, 41, 78, 54, 47, 48, - /* 840 */ 49, 50, 84, 41, 41, 54, 86, 86, 54, 58, - /* 850 */ 47, 48, 49, 50, 13, 1, 54, 54, 86, 86, - /* 860 */ 58, 58, 86, 22, 64, 86, 13, 26, 75, 28, - /* 870 */ 86, 17, 18, 19, 81, 75, 86, 84, 78, 26, - /* 880 */ 1, 28, 41, 83, 84, 85, 22, 86, 47, 48, - /* 890 */ 49, 50, 86, 13, 41, 54, 17, 18, 19, 58, - /* 900 */ 47, 48, 49, 50, 64, 86, 26, 54, 28, 86, - /* 910 */ 86, 58, 86, 86, 86, 75, 86, 53, 78, 55, - /* 920 */ 56, 41, 82, 83, 84, 85, 64, 47, 48, 49, - /* 930 */ 50, 64, 86, 86, 54, 86, 86, 75, 58, 1, - /* 940 */ 78, 86, 75, 86, 82, 83, 84, 85, 86, 64, - /* 950 */ 86, 86, 85, 64, 86, 17, 18, 19, 86, 86, - /* 960 */ 75, 86, 86, 78, 75, 64, 86, 78, 83, 84, - /* 970 */ 85, 82, 83, 84, 85, 86, 75, 65, 86, 78, - /* 980 */ 64, 86, 86, 82, 83, 84, 85, 75, 76, 86, - /* 990 */ 78, 75, 64, 86, 78, 86, 84, 22, 1, 83, - /* 1000 */ 84, 85, 1, 75, 86, 1, 78, 22, 1, 86, - /* 1010 */ 86, 83, 84, 85, 17, 18, 19, 1, 17, 18, - /* 1020 */ 19, 17, 18, 19, 17, 18, 19, 1, 53, 86, - /* 1030 */ 55, 56, 1, 17, 18, 19, 1, 22, 53, 1, - /* 1040 */ 55, 56, 1, 17, 18, 19, 1, 86, 17, 18, - /* 1050 */ 19, 86, 17, 18, 19, 17, 18, 19, 17, 18, - /* 1060 */ 19, 86, 17, 18, 19, 65, 86, 65, 53, 86, - /* 1070 */ 55, 56, 86, 86, 86, 75, 64, 75, 78, 65, - /* 1080 */ 78, 86, 86, 65, 84, 86, 84, 75, 1, 75, - /* 1090 */ 86, 1, 78, 75, 86, 86, 78, 85, 84, 86, - /* 1100 */ 1, 65, 84, 86, 17, 18, 19, 17, 18, 19, - /* 1110 */ 1, 75, 86, 1, 78, 86, 17, 18, 19, 1, - /* 1120 */ 84, 64, 86, 86, 86, 86, 17, 18, 19, 17, - /* 1130 */ 18, 19, 75, 64, 75, 17, 18, 19, 86, 86, - /* 1140 */ 81, 86, 85, 84, 75, 86, 86, 86, 86, 86, - /* 1150 */ 86, 86, 86, 86, 85, + /* 560 */ 12, 13, 14, 15, 16, 53, 87, 55, 56, 53, + /* 570 */ 22, 55, 56, 87, 3, 4, 5, 6, 7, 8, + /* 580 */ 9, 10, 11, 12, 13, 14, 15, 16, 3, 4, + /* 590 */ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + /* 600 */ 15, 16, 4, 5, 6, 7, 8, 9, 10, 11, + /* 610 */ 12, 13, 14, 15, 16, 13, 65, 87, 87, 87, + /* 620 */ 65, 87, 51, 53, 22, 55, 56, 76, 26, 27, + /* 630 */ 28, 76, 81, 82, 79, 33, 85, 86, 83, 84, + /* 640 */ 85, 86, 1, 41, 87, 87, 87, 22, 76, 47, + /* 650 */ 48, 49, 50, 87, 82, 87, 54, 85, 17, 18, + /* 660 */ 19, 59, 5, 6, 7, 8, 9, 10, 11, 12, + /* 670 */ 13, 14, 15, 16, 2, 65, 65, 13, 53, 87, + /* 680 */ 55, 56, 87, 22, 87, 13, 76, 76, 65, 79, + /* 690 */ 26, 87, 28, 83, 84, 85, 86, 86, 26, 76, + /* 700 */ 28, 87, 79, 87, 65, 41, 83, 84, 85, 86, + /* 710 */ 87, 87, 87, 41, 53, 76, 55, 56, 54, 47, + /* 720 */ 48, 49, 50, 59, 52, 86, 54, 87, 87, 64, + /* 730 */ 87, 59, 67, 68, 69, 70, 71, 72, 73, 74, + /* 740 */ 75, 87, 87, 78, 22, 80, 13, 76, 26, 87, + /* 750 */ 28, 65, 87, 82, 87, 22, 85, 11, 87, 26, + /* 760 */ 22, 28, 76, 41, 87, 79, 33, 87, 87, 83, + /* 770 */ 84, 85, 86, 87, 41, 13, 54, 87, 87, 33, + /* 780 */ 47, 48, 49, 50, 22, 87, 65, 54, 26, 22, + /* 790 */ 28, 53, 59, 55, 56, 33, 87, 76, 87, 53, + /* 800 */ 79, 55, 56, 41, 13, 84, 85, 86, 87, 47, + /* 810 */ 48, 49, 50, 22, 87, 66, 54, 26, 27, 28, + /* 820 */ 53, 59, 55, 56, 87, 76, 77, 87, 79, 26, + /* 830 */ 87, 28, 41, 13, 85, 87, 87, 87, 47, 48, + /* 840 */ 49, 50, 22, 87, 41, 54, 26, 13, 28, 87, + /* 850 */ 59, 87, 65, 87, 87, 87, 22, 54, 87, 87, + /* 860 */ 26, 41, 28, 76, 87, 87, 79, 47, 48, 49, + /* 870 */ 50, 84, 85, 86, 54, 41, 13, 87, 87, 59, + /* 880 */ 87, 47, 48, 49, 50, 46, 87, 65, 54, 26, + /* 890 */ 13, 28, 53, 59, 55, 56, 87, 58, 76, 87, + /* 900 */ 87, 79, 87, 26, 41, 28, 84, 85, 86, 87, + /* 910 */ 47, 48, 49, 50, 87, 87, 87, 54, 41, 87, + /* 920 */ 87, 87, 59, 87, 47, 48, 49, 50, 46, 65, + /* 930 */ 87, 54, 87, 65, 87, 53, 59, 55, 56, 87, + /* 940 */ 76, 87, 87, 79, 76, 65, 87, 79, 84, 85, + /* 950 */ 86, 83, 84, 85, 86, 87, 76, 65, 87, 79, + /* 960 */ 66, 87, 87, 83, 84, 85, 86, 87, 76, 65, + /* 970 */ 76, 79, 87, 79, 87, 83, 84, 85, 86, 85, + /* 980 */ 76, 87, 1, 79, 66, 87, 87, 83, 84, 85, + /* 990 */ 86, 66, 87, 87, 76, 77, 1, 79, 17, 18, + /* 1000 */ 19, 76, 77, 85, 79, 1, 87, 66, 87, 87, + /* 1010 */ 85, 87, 17, 18, 19, 1, 87, 76, 65, 1, + /* 1020 */ 79, 17, 18, 19, 1, 87, 85, 87, 87, 76, + /* 1030 */ 87, 17, 18, 19, 1, 17, 18, 19, 87, 86, + /* 1040 */ 17, 18, 19, 1, 66, 66, 87, 27, 87, 1, + /* 1050 */ 17, 18, 19, 1, 76, 76, 87, 79, 79, 17, + /* 1060 */ 18, 19, 1, 85, 85, 17, 18, 19, 87, 17, + /* 1070 */ 18, 19, 1, 53, 66, 55, 56, 87, 17, 18, + /* 1080 */ 19, 1, 66, 87, 76, 27, 1, 79, 17, 18, + /* 1090 */ 19, 1, 76, 85, 87, 79, 87, 17, 18, 19, + /* 1100 */ 1, 85, 17, 18, 19, 1, 87, 17, 18, 19, + /* 1110 */ 1, 53, 87, 55, 56, 22, 17, 18, 19, 1, + /* 1120 */ 87, 17, 18, 19, 1, 87, 17, 18, 19, 87, + /* 1130 */ 87, 87, 87, 87, 87, 17, 18, 19, 1, 87, + /* 1140 */ 17, 18, 19, 1, 87, 87, 53, 65, 55, 56, + /* 1150 */ 87, 87, 87, 87, 17, 18, 19, 87, 76, 17, + /* 1160 */ 18, 19, 87, 87, 87, 87, 87, 87, 86, ); const YY_SHIFT_USE_DFLT = -38; - const YY_SHIFT_MAX = 184; + const YY_SHIFT_MAX = 183; static public $yy_shift_ofst = array( - /* 0 */ -38, 99, 51, -21, 3, 75, 27, 291, 147, 195, - /* 10 */ 267, 411, 219, 171, 459, 435, 363, 243, 123, 315, - /* 20 */ 387, 483, 339, 507, 674, 674, 674, 674, 674, 674, - /* 30 */ 674, 674, 880, 880, 880, 880, 802, 791, 841, 803, - /* 40 */ 604, 732, 703, 853, 853, 853, 853, 853, 802, 802, - /* 50 */ 794, 794, 794, 794, 802, 794, 783, 794, 1087, 1090, - /* 60 */ 1038, 1041, 1118, 1109, 1112, 1099, 794, 1001, 997, 794, - /* 70 */ 1004, 1007, 1035, 1026, 1016, 938, 879, 794, 854, 745, - /* 80 */ 794, 688, 794, 794, 1031, 770, 794, 794, 1045, 691, + /* 0 */ -38, 99, 51, -21, 75, 3, 27, 483, 435, 459, + /* 10 */ 339, 195, 219, 171, 147, 123, 267, 411, 363, 315, + /* 20 */ 387, 291, 243, 507, 672, 672, 672, 672, 672, 672, + /* 30 */ 672, 672, 877, 877, 877, 877, 664, 791, 834, 820, + /* 40 */ 602, 762, 733, 863, 863, 863, 863, 863, 664, 664, + /* 50 */ 803, 803, 803, 803, 664, 803, 722, 803, 1142, 1137, + /* 60 */ 1104, 1123, 1085, 1048, 803, 981, 1033, 1004, 1023, 641, + /* 70 */ 995, 1014, 1042, 803, 803, 1090, 1099, 1118, 1109, 803, + /* 80 */ 803, 1061, 803, 1052, 1071, 803, 803, 1018, 1080, 49, /* 90 */ -37, -38, -38, -38, -38, -38, -38, -38, -38, -38, /* 100 */ -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - /* 110 */ -38, -38, -38, 548, 562, 600, 659, 787, 787, 568, - /* 120 */ 975, 864, 713, 625, 593, 637, 572, 985, 637, 1015, - /* 130 */ 629, 532, 22, 532, 532, 88, 498, 160, 136, 39, - /* 140 */ 40, 56, 64, 73, 8, -16, 25, 1, 32, 232, - /* 150 */ 200, 206, 193, 186, 80, 182, 151, 207, 208, 231, - /* 160 */ 172, 230, 187, 210, 217, 224, 176, 169, 112, 24, - /* 170 */ 63, 104, 97, 86, 11, 14, 121, 128, 158, 162, - /* 180 */ 90, 152, 134, 43, 138, + /* 110 */ -38, -38, -38, 571, 548, 585, 598, 657, 657, 839, + /* 120 */ 746, 1058, 1093, 1020, 767, 661, 882, 738, 516, 512, + /* 130 */ 625, 106, 22, 570, 570, 570, 130, 39, 40, 64, + /* 140 */ 88, 136, 135, 256, 232, 231, 206, 200, 193, 186, + /* 150 */ 208, 224, 210, 265, 96, 230, 52, 258, 158, 255, + /* 160 */ 254, 142, 234, 213, 241, 184, 152, 73, 104, 80, + /* 170 */ 56, 32, -16, 1, 8, 25, 97, 176, 121, 160, + /* 180 */ 169, 63, 145, 128, ); - const YY_REDUCE_USE_DFLT = -61; + const YY_REDUCE_USE_DFLT = -62; const YY_REDUCE_MAX = 112; static public $yy_reduce_ofst = array( - /* 0 */ 49, 523, 523, 523, 523, 523, 523, 523, 523, 523, - /* 10 */ 523, 523, 523, 523, 523, 523, 523, 523, 523, 523, - /* 20 */ 523, 523, 523, 523, 558, 840, 889, 862, 901, 692, - /* 30 */ 655, 613, 916, 928, 885, 800, 554, 634, 758, 912, - /* 40 */ 636, 636, 636, 1000, 1002, 1036, 1014, 1018, 1059, 793, - /* 50 */ 1012, 1057, 1069, 867, -59, 82, 190, 203, 131, 131, - /* 60 */ 131, 131, 131, 131, 131, 131, 249, 131, 131, 229, - /* 70 */ 131, 131, 131, 131, 131, 131, 131, 251, 131, 131, - /* 80 */ 202, 131, 201, 181, 131, 131, 188, 253, 131, 196, - /* 90 */ 235, 241, 250, 240, 239, 209, 226, 228, 233, 257, - /* 100 */ 300, 305, 264, 287, 289, 288, 298, 281, 274, 276, - /* 110 */ 108, -60, -12, + /* 0 */ 143, 665, 665, 665, 665, 665, 665, 665, 665, 665, + /* 10 */ 665, 665, 665, 665, 665, 665, 665, 665, 665, 665, + /* 20 */ 665, 665, 665, 665, 892, 555, 623, 686, 868, 610, + /* 30 */ 904, 880, 721, 822, 787, 864, 551, 925, 918, 749, + /* 40 */ 978, 978, 978, 941, 1016, 1008, 979, 894, 671, 572, + /* 50 */ 611, 639, 1082, 953, -60, 153, 225, 218, 237, 237, + /* 60 */ 237, 237, 237, 237, 248, 237, 237, 237, 237, 237, + /* 70 */ 237, 237, 237, 300, 298, 237, 237, 237, 237, 285, + /* 80 */ 276, 237, 272, 237, 237, 309, 307, 237, 237, 257, + /* 90 */ 239, 227, 266, 263, 251, 249, 273, 264, 179, 203, + /* 100 */ 240, 242, 275, 311, 328, 310, 287, 288, 304, 297, + /* 110 */ -61, 11, -13, ); static public $yyExpectedTokens = array( /* 0 */ array(), @@ -579,37 +582,37 @@ static public $yy_action = array( /* 21 */ array(21, 23, 24, 25, 26, 28, 29, 30, 31, 32, 36, 38, 39, 40, 41, 42, 43, ), /* 22 */ array(21, 23, 24, 25, 26, 28, 29, 30, 31, 32, 36, 38, 39, 40, 41, 42, 43, ), /* 23 */ array(21, 23, 24, 26, 28, 29, 30, 31, 32, 36, 38, 39, 40, 41, 42, 43, ), - /* 24 */ array(2, 13, 26, 28, 41, 47, 48, 49, 50, 52, 54, 58, ), - /* 25 */ array(2, 13, 26, 28, 41, 47, 48, 49, 50, 52, 54, 58, ), - /* 26 */ array(2, 13, 26, 28, 41, 47, 48, 49, 50, 52, 54, 58, ), - /* 27 */ array(2, 13, 26, 28, 41, 47, 48, 49, 50, 52, 54, 58, ), - /* 28 */ array(2, 13, 26, 28, 41, 47, 48, 49, 50, 52, 54, 58, ), - /* 29 */ array(2, 13, 26, 28, 41, 47, 48, 49, 50, 52, 54, 58, ), - /* 30 */ array(2, 13, 26, 28, 41, 47, 48, 49, 50, 52, 54, 58, ), - /* 31 */ array(2, 13, 26, 28, 41, 47, 48, 49, 50, 52, 54, 58, ), - /* 32 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 58, ), - /* 33 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 58, ), - /* 34 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 58, ), - /* 35 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 58, ), - /* 36 */ array(13, 26, 28, 41, 54, 58, ), - /* 37 */ array(13, 22, 26, 27, 28, 41, 47, 48, 49, 50, 54, 58, ), - /* 38 */ array(13, 22, 26, 28, 41, 47, 48, 49, 50, 54, 58, ), - /* 39 */ array(13, 22, 26, 28, 41, 47, 48, 49, 50, 54, 58, ), - /* 40 */ array(13, 22, 26, 27, 28, 33, 41, 47, 48, 49, 50, 54, 58, ), - /* 41 */ array(13, 22, 26, 28, 33, 41, 47, 48, 49, 50, 54, 58, ), - /* 42 */ array(13, 22, 26, 28, 33, 41, 47, 48, 49, 50, 54, 58, ), - /* 43 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 58, ), - /* 44 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 58, ), - /* 45 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 58, ), - /* 46 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 58, ), - /* 47 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 58, ), - /* 48 */ array(13, 26, 28, 41, 54, 58, ), - /* 49 */ array(13, 26, 28, 41, 54, 58, ), + /* 24 */ array(2, 13, 26, 28, 41, 47, 48, 49, 50, 52, 54, 59, ), + /* 25 */ array(2, 13, 26, 28, 41, 47, 48, 49, 50, 52, 54, 59, ), + /* 26 */ array(2, 13, 26, 28, 41, 47, 48, 49, 50, 52, 54, 59, ), + /* 27 */ array(2, 13, 26, 28, 41, 47, 48, 49, 50, 52, 54, 59, ), + /* 28 */ array(2, 13, 26, 28, 41, 47, 48, 49, 50, 52, 54, 59, ), + /* 29 */ array(2, 13, 26, 28, 41, 47, 48, 49, 50, 52, 54, 59, ), + /* 30 */ array(2, 13, 26, 28, 41, 47, 48, 49, 50, 52, 54, 59, ), + /* 31 */ array(2, 13, 26, 28, 41, 47, 48, 49, 50, 52, 54, 59, ), + /* 32 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 59, ), + /* 33 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 59, ), + /* 34 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 59, ), + /* 35 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 59, ), + /* 36 */ array(13, 26, 28, 41, 54, 59, ), + /* 37 */ array(13, 22, 26, 27, 28, 41, 47, 48, 49, 50, 54, 59, ), + /* 38 */ array(13, 22, 26, 28, 41, 47, 48, 49, 50, 54, 59, ), + /* 39 */ array(13, 22, 26, 28, 41, 47, 48, 49, 50, 54, 59, ), + /* 40 */ array(13, 22, 26, 27, 28, 33, 41, 47, 48, 49, 50, 54, 59, ), + /* 41 */ array(13, 22, 26, 28, 33, 41, 47, 48, 49, 50, 54, 59, ), + /* 42 */ array(13, 22, 26, 28, 33, 41, 47, 48, 49, 50, 54, 59, ), + /* 43 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 59, ), + /* 44 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 59, ), + /* 45 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 59, ), + /* 46 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 59, ), + /* 47 */ array(13, 26, 28, 41, 47, 48, 49, 50, 54, 59, ), + /* 48 */ array(13, 26, 28, 41, 54, 59, ), + /* 49 */ array(13, 26, 28, 41, 54, 59, ), /* 50 */ array(26, 28, 41, 54, ), /* 51 */ array(26, 28, 41, 54, ), /* 52 */ array(26, 28, 41, 54, ), /* 53 */ array(26, 28, 41, 54, ), - /* 54 */ array(13, 26, 28, 41, 54, 58, ), + /* 54 */ array(13, 26, 28, 41, 54, 59, ), /* 55 */ array(26, 28, 41, 54, ), /* 56 */ array(22, 26, 28, 41, 54, ), /* 57 */ array(26, 28, 41, 54, ), @@ -619,32 +622,32 @@ static public $yy_action = array( /* 61 */ array(1, 17, 18, 19, ), /* 62 */ array(1, 17, 18, 19, ), /* 63 */ array(1, 17, 18, 19, ), - /* 64 */ array(1, 17, 18, 19, ), + /* 64 */ array(26, 28, 41, 54, ), /* 65 */ array(1, 17, 18, 19, ), - /* 66 */ array(26, 28, 41, 54, ), + /* 66 */ array(1, 17, 18, 19, ), /* 67 */ array(1, 17, 18, 19, ), /* 68 */ array(1, 17, 18, 19, ), - /* 69 */ array(26, 28, 41, 54, ), + /* 69 */ array(1, 17, 18, 19, ), /* 70 */ array(1, 17, 18, 19, ), /* 71 */ array(1, 17, 18, 19, ), /* 72 */ array(1, 17, 18, 19, ), - /* 73 */ array(1, 17, 18, 19, ), - /* 74 */ array(1, 17, 18, 19, ), + /* 73 */ array(26, 28, 41, 54, ), + /* 74 */ array(26, 28, 41, 54, ), /* 75 */ array(1, 17, 18, 19, ), /* 76 */ array(1, 17, 18, 19, ), - /* 77 */ array(26, 28, 41, 54, ), + /* 77 */ array(1, 17, 18, 19, ), /* 78 */ array(1, 17, 18, 19, ), - /* 79 */ array(1, 17, 18, 19, ), + /* 79 */ array(26, 28, 41, 54, ), /* 80 */ array(26, 28, 41, 54, ), /* 81 */ array(1, 17, 18, 19, ), /* 82 */ array(26, 28, 41, 54, ), - /* 83 */ array(26, 28, 41, 54, ), + /* 83 */ array(1, 17, 18, 19, ), /* 84 */ array(1, 17, 18, 19, ), - /* 85 */ array(1, 17, 18, 19, ), + /* 85 */ array(26, 28, 41, 54, ), /* 86 */ array(26, 28, 41, 54, ), - /* 87 */ array(26, 28, 41, 54, ), + /* 87 */ array(1, 17, 18, 19, ), /* 88 */ array(1, 17, 18, 19, ), - /* 89 */ array(13, 22, 58, ), + /* 89 */ array(13, 22, 59, ), /* 90 */ array(49, 50, ), /* 91 */ array(), /* 92 */ array(), @@ -674,30 +677,30 @@ static public $yy_action = array( /* 116 */ array(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ), /* 117 */ array(5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ), /* 118 */ array(5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, ), - /* 119 */ array(11, 33, 53, 55, 56, ), - /* 120 */ array(22, 53, 55, 56, ), - /* 121 */ array(22, 53, 55, 56, ), + /* 119 */ array(46, 53, 55, 56, 58, ), + /* 120 */ array(11, 33, 53, 55, 56, ), + /* 121 */ array(27, 53, 55, 56, ), /* 122 */ array(22, 53, 55, 56, ), - /* 123 */ array(22, 53, 55, 56, ), - /* 124 */ array(27, 53, 55, 56, ), - /* 125 */ array(46, 53, 55, 56, ), - /* 126 */ array(11, 53, 55, 56, ), + /* 123 */ array(27, 53, 55, 56, ), + /* 124 */ array(22, 53, 55, 56, ), + /* 125 */ array(22, 53, 55, 56, ), + /* 126 */ array(46, 53, 55, 56, ), /* 127 */ array(22, 53, 55, 56, ), - /* 128 */ array(46, 53, 55, 56, ), + /* 128 */ array(11, 53, 55, 56, ), /* 129 */ array(22, 53, 55, 56, ), - /* 130 */ array(27, 53, 55, 56, ), - /* 131 */ array(53, 55, 56, ), + /* 130 */ array(22, 53, 55, 56, ), + /* 131 */ array(26, 28, 54, ), /* 132 */ array(14, 15, 16, ), /* 133 */ array(53, 55, 56, ), /* 134 */ array(53, 55, 56, ), - /* 135 */ array(44, 45, ), - /* 136 */ array(22, 34, ), + /* 135 */ array(53, 55, 56, ), + /* 136 */ array(26, 28, 54, ), /* 137 */ array(22, 45, ), - /* 138 */ array(22, 45, ), + /* 138 */ array(20, 45, ), /* 139 */ array(22, 45, ), - /* 140 */ array(20, 45, ), - /* 141 */ array(22, ), - /* 142 */ array(22, ), + /* 140 */ array(22, 45, ), + /* 141 */ array(44, 45, ), + /* 142 */ array(22, 34, ), /* 143 */ array(22, ), /* 144 */ array(22, ), /* 145 */ array(22, ), @@ -709,37 +712,37 @@ static public $yy_action = array( /* 151 */ array(22, ), /* 152 */ array(22, ), /* 153 */ array(22, ), - /* 154 */ array(22, ), + /* 154 */ array(49, ), /* 155 */ array(22, ), - /* 156 */ array(55, ), + /* 156 */ array(45, ), /* 157 */ array(22, ), - /* 158 */ array(22, ), + /* 158 */ array(59, ), /* 159 */ array(22, ), - /* 160 */ array(45, ), - /* 161 */ array(22, ), - /* 162 */ array(54, ), - /* 163 */ array(22, ), + /* 160 */ array(22, ), + /* 161 */ array(51, ), + /* 162 */ array(22, ), + /* 163 */ array(57, ), /* 164 */ array(22, ), /* 165 */ array(22, ), /* 166 */ array(22, ), /* 167 */ array(22, ), /* 168 */ array(22, ), - /* 169 */ array(49, ), - /* 170 */ array(58, ), + /* 169 */ array(22, ), + /* 170 */ array(22, ), /* 171 */ array(22, ), /* 172 */ array(22, ), /* 173 */ array(22, ), - /* 174 */ array(51, ), - /* 175 */ array(57, ), + /* 174 */ array(22, ), + /* 175 */ array(22, ), /* 176 */ array(22, ), /* 177 */ array(22, ), /* 178 */ array(22, ), /* 179 */ array(22, ), - /* 180 */ array(55, ), - /* 181 */ array(22, ), + /* 180 */ array(22, ), + /* 181 */ array(58, ), /* 182 */ array(22, ), - /* 183 */ array(54, ), - /* 184 */ array(22, ), + /* 183 */ array(22, ), + /* 184 */ array(), /* 185 */ array(), /* 186 */ array(), /* 187 */ array(), @@ -813,35 +816,34 @@ static public $yy_action = array( /* 255 */ array(), /* 256 */ array(), /* 257 */ array(), - /* 258 */ array(), ); static public $yy_default = array( - /* 0 */ 261, 345, 345, 345, 345, 345, 345, 345, 345, 345, - /* 10 */ 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - /* 20 */ 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - /* 30 */ 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - /* 40 */ 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - /* 50 */ 345, 345, 345, 345, 345, 345, 345, 345, 259, 345, - /* 60 */ 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - /* 70 */ 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - /* 80 */ 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - /* 90 */ 345, 261, 261, 261, 261, 261, 261, 261, 261, 261, - /* 100 */ 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, - /* 110 */ 261, 261, 261, 345, 345, 327, 328, 329, 331, 345, - /* 120 */ 345, 345, 345, 345, 345, 313, 345, 345, 313, 345, - /* 130 */ 345, 309, 330, 317, 342, 345, 345, 345, 345, 345, - /* 140 */ 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - /* 150 */ 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - /* 160 */ 321, 345, 345, 345, 345, 345, 345, 345, 345, 345, - /* 170 */ 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - /* 180 */ 345, 345, 345, 345, 345, 323, 292, 322, 289, 283, - /* 190 */ 340, 332, 297, 333, 334, 341, 324, 291, 299, 296, - /* 200 */ 271, 272, 270, 269, 267, 268, 273, 274, 278, 279, - /* 210 */ 277, 276, 275, 344, 343, 336, 318, 335, 266, 260, - /* 220 */ 262, 319, 320, 338, 339, 337, 326, 325, 280, 281, - /* 230 */ 303, 304, 302, 301, 298, 300, 305, 308, 265, 306, - /* 240 */ 264, 263, 311, 295, 294, 284, 285, 282, 316, 314, - /* 250 */ 315, 286, 287, 290, 293, 312, 310, 288, 307, + /* 0 */ 260, 344, 344, 344, 344, 344, 344, 344, 344, 344, + /* 10 */ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + /* 20 */ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + /* 30 */ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + /* 40 */ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + /* 50 */ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + /* 60 */ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + /* 70 */ 344, 344, 344, 344, 344, 258, 344, 344, 344, 344, + /* 80 */ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + /* 90 */ 344, 260, 260, 260, 260, 260, 260, 260, 260, 260, + /* 100 */ 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, + /* 110 */ 260, 260, 260, 344, 344, 326, 327, 328, 330, 312, + /* 120 */ 344, 344, 344, 344, 344, 344, 312, 344, 344, 344, + /* 130 */ 344, 344, 329, 308, 316, 341, 344, 344, 344, 344, + /* 140 */ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + /* 150 */ 344, 344, 344, 344, 344, 344, 320, 344, 344, 344, + /* 160 */ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + /* 170 */ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, + /* 180 */ 344, 344, 344, 344, 322, 282, 321, 298, 290, 291, + /* 190 */ 340, 339, 333, 332, 296, 288, 306, 331, 323, 295, + /* 200 */ 270, 271, 269, 268, 266, 267, 272, 273, 277, 278, + /* 210 */ 276, 275, 274, 343, 342, 335, 317, 334, 265, 259, + /* 220 */ 261, 318, 319, 337, 338, 336, 325, 324, 279, 280, + /* 230 */ 301, 302, 300, 299, 294, 297, 303, 304, 263, 264, + /* 240 */ 262, 310, 307, 293, 292, 281, 283, 315, 314, 313, + /* 250 */ 284, 285, 311, 289, 309, 287, 286, 305, ); /* The next thing included is series of defines which control ** various aspects of the generated parser. @@ -858,11 +860,11 @@ static public $yy_action = array( ** self::YYERRORSYMBOL is the code number of the error symbol. If not ** defined, then do no error processing. */ - const YYNOCODE = 87; + const YYNOCODE = 88; const YYSTACKDEPTH = 100; - const YYNSTATE = 259; + const YYNSTATE = 258; const YYNRULE = 86; - const YYERRORSYMBOL = 59; + const YYERRORSYMBOL = 60; const YYERRSYMDT = 'yy0'; const YYFALLBACK = 0; /** The next table maps tokens into fallback tokens. If a construct @@ -958,14 +960,14 @@ static public $yy_action = array( 'T_BY', 'T_PIPE', 'T_COLON', 'T_TRUE', 'T_FALSE', 'T_STRING', 'T_INTL', 'T_RPARENT', 'T_LPARENT', 'T_OBJ', 'T_ALPHA', 'T_DOT', - 'T_BRACKETS_OPEN', 'T_BRACKETS_CLOSE', 'T_NUMERIC', 'error', - 'start', 'body', 'code', 'stmts', - 'filtered_var', 'var_or_string', 'stmt', 'for_stmt', - 'ifchanged_stmt', 'block_stmt', 'filter_stmt', 'if_stmt', - 'custom_tag', 'alias', 'ifequal', 'varname', - 'params', 'regroup', 'string', 'for_def', - 'range', 'numvar', 'expr', 'fvar_or_string', - 'number', 'varname_args', + 'T_BRACKETS_OPEN', 'T_BRACKETS_CLOSE', 'T_DOTDOT', 'T_NUMERIC', + 'error', 'start', 'body', 'code', + 'stmts', 'filtered_var', 'var_or_string', 'stmt', + 'for_stmt', 'ifchanged_stmt', 'block_stmt', 'filter_stmt', + 'if_stmt', 'custom_tag', 'alias', 'ifequal', + 'varname', 'params', 'regroup', 'string', + 'for_def', 'range', 'numvar', 'expr', + 'fvar_or_string', 'number', 'varname_args', ); /** @@ -1049,12 +1051,12 @@ static public $yy_action = array( /* 73 */ "expr ::= expr T_TIMES|T_DIV|T_MOD expr", /* 74 */ "expr ::= T_LPARENT expr T_RPARENT", /* 75 */ "expr ::= fvar_or_string", - /* 76 */ "varname ::= varname T_OBJ T_ALPHA", - /* 77 */ "varname ::= varname T_DOT T_ALPHA", + /* 76 */ "varname ::= varname T_OBJ T_ALPHA|T_CUSTOM_TAG|T_CUSTOM_BLOCK", + /* 77 */ "varname ::= varname T_DOT T_ALPHA|T_CUSTOM_TAG|T_CUSTOM_BLOCK", /* 78 */ "varname ::= varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE", /* 79 */ "varname ::= T_ALPHA", /* 80 */ "varname ::= T_BLOCK|T_CUSTOM_TAG|T_CUSTOM_BLOCK", - /* 81 */ "range ::= numvar T_DOT T_DOT numvar", + /* 81 */ "range ::= numvar T_DOTDOT numvar", /* 82 */ "numvar ::= number", /* 83 */ "numvar ::= varname", /* 84 */ "number ::= T_NUMERIC", @@ -1423,92 +1425,92 @@ static public $yy_action = array( * */ static public $yyRuleInfo = array( - array( 'lhs' => 60, 'rhs' => 1 ), - array( 'lhs' => 61, 'rhs' => 2 ), - array( 'lhs' => 61, 'rhs' => 0 ), + array( 'lhs' => 61, 'rhs' => 1 ), array( 'lhs' => 62, 'rhs' => 2 ), - array( 'lhs' => 62, 'rhs' => 1 ), - array( 'lhs' => 62, 'rhs' => 1 ), - array( 'lhs' => 62, 'rhs' => 3 ), - array( 'lhs' => 63, 'rhs' => 3 ), + array( 'lhs' => 62, 'rhs' => 0 ), array( 'lhs' => 63, 'rhs' => 2 ), array( 'lhs' => 63, 'rhs' => 1 ), array( 'lhs' => 63, 'rhs' => 1 ), - array( 'lhs' => 63, 'rhs' => 1 ), - array( 'lhs' => 63, 'rhs' => 1 ), - array( 'lhs' => 63, 'rhs' => 1 ), array( 'lhs' => 63, 'rhs' => 3 ), - array( 'lhs' => 63, 'rhs' => 1 ), - array( 'lhs' => 63, 'rhs' => 1 ), - array( 'lhs' => 63, 'rhs' => 1 ), - array( 'lhs' => 63, 'rhs' => 7 ), - array( 'lhs' => 72, 'rhs' => 2 ), - array( 'lhs' => 72, 'rhs' => 4 ), - array( 'lhs' => 72, 'rhs' => 3 ), - array( 'lhs' => 72, 'rhs' => 5 ), - array( 'lhs' => 72, 'rhs' => 6 ), - array( 'lhs' => 72, 'rhs' => 7 ), - array( 'lhs' => 72, 'rhs' => 6 ), - array( 'lhs' => 73, 'rhs' => 9 ), - array( 'lhs' => 66, 'rhs' => 1 ), - array( 'lhs' => 66, 'rhs' => 2 ), - array( 'lhs' => 79, 'rhs' => 5 ), - array( 'lhs' => 79, 'rhs' => 7 ), - array( 'lhs' => 67, 'rhs' => 5 ), - array( 'lhs' => 67, 'rhs' => 9 ), - array( 'lhs' => 67, 'rhs' => 11 ), - array( 'lhs' => 67, 'rhs' => 9 ), - array( 'lhs' => 71, 'rhs' => 7 ), - array( 'lhs' => 71, 'rhs' => 11 ), - array( 'lhs' => 68, 'rhs' => 6 ), - array( 'lhs' => 68, 'rhs' => 7 ), - array( 'lhs' => 68, 'rhs' => 10 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 2 ), + array( 'lhs' => 64, 'rhs' => 1 ), + array( 'lhs' => 64, 'rhs' => 1 ), + array( 'lhs' => 64, 'rhs' => 1 ), + array( 'lhs' => 64, 'rhs' => 1 ), + array( 'lhs' => 64, 'rhs' => 1 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 1 ), + array( 'lhs' => 64, 'rhs' => 1 ), + array( 'lhs' => 64, 'rhs' => 1 ), + array( 'lhs' => 64, 'rhs' => 7 ), + array( 'lhs' => 73, 'rhs' => 2 ), + array( 'lhs' => 73, 'rhs' => 4 ), + array( 'lhs' => 73, 'rhs' => 3 ), + array( 'lhs' => 73, 'rhs' => 5 ), + array( 'lhs' => 73, 'rhs' => 6 ), + array( 'lhs' => 73, 'rhs' => 7 ), + array( 'lhs' => 73, 'rhs' => 6 ), + array( 'lhs' => 74, 'rhs' => 9 ), + array( 'lhs' => 67, 'rhs' => 1 ), + array( 'lhs' => 67, 'rhs' => 2 ), + array( 'lhs' => 80, 'rhs' => 5 ), + array( 'lhs' => 80, 'rhs' => 7 ), + array( 'lhs' => 68, 'rhs' => 5 ), + array( 'lhs' => 68, 'rhs' => 9 ), array( 'lhs' => 68, 'rhs' => 11 ), - array( 'lhs' => 74, 'rhs' => 8 ), - array( 'lhs' => 74, 'rhs' => 12 ), - array( 'lhs' => 74, 'rhs' => 8 ), - array( 'lhs' => 74, 'rhs' => 12 ), - array( 'lhs' => 69, 'rhs' => 7 ), - array( 'lhs' => 69, 'rhs' => 8 ), + array( 'lhs' => 68, 'rhs' => 9 ), + array( 'lhs' => 72, 'rhs' => 7 ), + array( 'lhs' => 72, 'rhs' => 11 ), + array( 'lhs' => 69, 'rhs' => 6 ), array( 'lhs' => 69, 'rhs' => 7 ), - array( 'lhs' => 69, 'rhs' => 8 ), + array( 'lhs' => 69, 'rhs' => 10 ), + array( 'lhs' => 69, 'rhs' => 11 ), + array( 'lhs' => 75, 'rhs' => 8 ), + array( 'lhs' => 75, 'rhs' => 12 ), + array( 'lhs' => 75, 'rhs' => 8 ), + array( 'lhs' => 75, 'rhs' => 12 ), array( 'lhs' => 70, 'rhs' => 7 ), - array( 'lhs' => 77, 'rhs' => 6 ), - array( 'lhs' => 64, 'rhs' => 3 ), - array( 'lhs' => 64, 'rhs' => 1 ), - array( 'lhs' => 85, 'rhs' => 3 ), - array( 'lhs' => 85, 'rhs' => 1 ), - array( 'lhs' => 76, 'rhs' => 2 ), - array( 'lhs' => 76, 'rhs' => 3 ), - array( 'lhs' => 76, 'rhs' => 1 ), - array( 'lhs' => 65, 'rhs' => 1 ), - array( 'lhs' => 65, 'rhs' => 1 ), - array( 'lhs' => 65, 'rhs' => 1 ), + array( 'lhs' => 70, 'rhs' => 8 ), + array( 'lhs' => 70, 'rhs' => 7 ), + array( 'lhs' => 70, 'rhs' => 8 ), + array( 'lhs' => 71, 'rhs' => 7 ), + array( 'lhs' => 78, 'rhs' => 6 ), + array( 'lhs' => 65, 'rhs' => 3 ), array( 'lhs' => 65, 'rhs' => 1 ), + array( 'lhs' => 86, 'rhs' => 3 ), + array( 'lhs' => 86, 'rhs' => 1 ), + array( 'lhs' => 77, 'rhs' => 2 ), + array( 'lhs' => 77, 'rhs' => 3 ), + array( 'lhs' => 77, 'rhs' => 1 ), + array( 'lhs' => 66, 'rhs' => 1 ), + array( 'lhs' => 66, 'rhs' => 1 ), + array( 'lhs' => 66, 'rhs' => 1 ), + array( 'lhs' => 66, 'rhs' => 1 ), + array( 'lhs' => 84, 'rhs' => 1 ), + array( 'lhs' => 84, 'rhs' => 1 ), + array( 'lhs' => 84, 'rhs' => 1 ), + array( 'lhs' => 84, 'rhs' => 1 ), + array( 'lhs' => 79, 'rhs' => 1 ), + array( 'lhs' => 79, 'rhs' => 3 ), + array( 'lhs' => 83, 'rhs' => 2 ), + array( 'lhs' => 83, 'rhs' => 3 ), + array( 'lhs' => 83, 'rhs' => 3 ), + array( 'lhs' => 83, 'rhs' => 3 ), + array( 'lhs' => 83, 'rhs' => 3 ), + array( 'lhs' => 83, 'rhs' => 3 ), + array( 'lhs' => 83, 'rhs' => 3 ), array( 'lhs' => 83, 'rhs' => 1 ), - array( 'lhs' => 83, 'rhs' => 1 ), - array( 'lhs' => 83, 'rhs' => 1 ), - array( 'lhs' => 83, 'rhs' => 1 ), - array( 'lhs' => 78, 'rhs' => 1 ), - array( 'lhs' => 78, 'rhs' => 3 ), - array( 'lhs' => 82, 'rhs' => 2 ), - array( 'lhs' => 82, 'rhs' => 3 ), - array( 'lhs' => 82, 'rhs' => 3 ), - array( 'lhs' => 82, 'rhs' => 3 ), - array( 'lhs' => 82, 'rhs' => 3 ), - array( 'lhs' => 82, 'rhs' => 3 ), - array( 'lhs' => 82, 'rhs' => 3 ), + array( 'lhs' => 76, 'rhs' => 3 ), + array( 'lhs' => 76, 'rhs' => 3 ), + array( 'lhs' => 76, 'rhs' => 4 ), + array( 'lhs' => 76, 'rhs' => 1 ), + array( 'lhs' => 76, 'rhs' => 1 ), + array( 'lhs' => 81, 'rhs' => 3 ), array( 'lhs' => 82, 'rhs' => 1 ), - array( 'lhs' => 75, 'rhs' => 3 ), - array( 'lhs' => 75, 'rhs' => 3 ), - array( 'lhs' => 75, 'rhs' => 4 ), - array( 'lhs' => 75, 'rhs' => 1 ), - array( 'lhs' => 75, 'rhs' => 1 ), - array( 'lhs' => 80, 'rhs' => 4 ), - array( 'lhs' => 81, 'rhs' => 1 ), - array( 'lhs' => 81, 'rhs' => 1 ), - array( 'lhs' => 84, 'rhs' => 1 ), - array( 'lhs' => 84, 'rhs' => 2 ), + array( 'lhs' => 82, 'rhs' => 1 ), + array( 'lhs' => 85, 'rhs' => 1 ), + array( 'lhs' => 85, 'rhs' => 2 ), ); /** @@ -1543,7 +1545,6 @@ static public $yy_action = array( 79 => 9, 80 => 9, 82 => 9, - 83 => 9, 84 => 9, 14 => 14, 18 => 18, @@ -1585,6 +1586,7 @@ static public $yy_action = array( 53 => 53, 55 => 55, 58 => 58, + 83 => 58, 59 => 59, 63 => 59, 60 => 60, @@ -1613,43 +1615,43 @@ static public $yy_action = array( */ #line 79 "lib/Haanga/Compiler/Parser.y" function yy_r0(){ $this->body = $this->yystack[$this->yyidx + 0]->minor; } -#line 1622 "lib/Haanga/Compiler/Parser.php" +#line 1624 "lib/Haanga/Compiler/Parser.php" #line 81 "lib/Haanga/Compiler/Parser.y" function yy_r1(){ $this->_retvalue=$this->yystack[$this->yyidx + -1]->minor; $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor; } -#line 1625 "lib/Haanga/Compiler/Parser.php" +#line 1627 "lib/Haanga/Compiler/Parser.php" #line 82 "lib/Haanga/Compiler/Parser.y" function yy_r2(){ $this->_retvalue = array(); } -#line 1628 "lib/Haanga/Compiler/Parser.php" +#line 1630 "lib/Haanga/Compiler/Parser.php" #line 85 "lib/Haanga/Compiler/Parser.y" function yy_r3(){ if (count($this->yystack[$this->yyidx + 0]->minor)) $this->yystack[$this->yyidx + 0]->minor['line'] = $this->lex->getLine(); $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } -#line 1631 "lib/Haanga/Compiler/Parser.php" +#line 1633 "lib/Haanga/Compiler/Parser.php" #line 86 "lib/Haanga/Compiler/Parser.y" function yy_r4(){ $this->_retvalue = array('operation' => 'html', 'html' => $this->yystack[$this->yyidx + 0]->minor, 'line' => $this->lex->getLine() ); } -#line 1636 "lib/Haanga/Compiler/Parser.php" +#line 1638 "lib/Haanga/Compiler/Parser.php" #line 89 "lib/Haanga/Compiler/Parser.y" function yy_r5(){ $this->yystack[$this->yyidx + 0]->minor=rtrim($this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = array('operation' => 'comment', 'comment' => $this->yystack[$this->yyidx + 0]->minor); } -#line 1641 "lib/Haanga/Compiler/Parser.php" +#line 1643 "lib/Haanga/Compiler/Parser.php" #line 92 "lib/Haanga/Compiler/Parser.y" function yy_r6(){ $this->_retvalue = array('operation' => 'print_var', 'variable' => $this->yystack[$this->yyidx + -1]->minor, 'line' => $this->lex->getLine() ); } -#line 1646 "lib/Haanga/Compiler/Parser.php" +#line 1648 "lib/Haanga/Compiler/Parser.php" #line 96 "lib/Haanga/Compiler/Parser.y" function yy_r7(){ $this->_retvalue = array('operation' => 'base', $this->yystack[$this->yyidx + -1]->minor); } -#line 1649 "lib/Haanga/Compiler/Parser.php" +#line 1651 "lib/Haanga/Compiler/Parser.php" #line 97 "lib/Haanga/Compiler/Parser.y" function yy_r8(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; } -#line 1652 "lib/Haanga/Compiler/Parser.php" +#line 1654 "lib/Haanga/Compiler/Parser.php" #line 98 "lib/Haanga/Compiler/Parser.y" function yy_r9(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } -#line 1655 "lib/Haanga/Compiler/Parser.php" +#line 1657 "lib/Haanga/Compiler/Parser.php" #line 103 "lib/Haanga/Compiler/Parser.y" function yy_r14(){ $this->_retvalue = array('operation' => 'include', $this->yystack[$this->yyidx + -1]->minor); } -#line 1658 "lib/Haanga/Compiler/Parser.php" +#line 1660 "lib/Haanga/Compiler/Parser.php" #line 107 "lib/Haanga/Compiler/Parser.y" function yy_r18(){ $this->yystack[$this->yyidx + -5]->minor = strtolower($this->yystack[$this->yyidx + -5]->minor); @@ -1661,27 +1663,27 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'autoescape', 'value' => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1670 "lib/Haanga/Compiler/Parser.php" +#line 1672 "lib/Haanga/Compiler/Parser.php" #line 121 "lib/Haanga/Compiler/Parser.y" function yy_r19(){ $this->_retvalue = array('operation' => 'custom_tag', 'name' => $this->yystack[$this->yyidx + -1]->minor, 'list'=>array()); } -#line 1675 "lib/Haanga/Compiler/Parser.php" +#line 1677 "lib/Haanga/Compiler/Parser.php" #line 124 "lib/Haanga/Compiler/Parser.y" function yy_r20(){ $this->_retvalue = array('operation' => 'custom_tag', 'name' => $this->yystack[$this->yyidx + -3]->minor, 'as' => $this->yystack[$this->yyidx + -1]->minor, 'list'=>array()); } -#line 1680 "lib/Haanga/Compiler/Parser.php" +#line 1682 "lib/Haanga/Compiler/Parser.php" #line 127 "lib/Haanga/Compiler/Parser.y" function yy_r21(){ $this->_retvalue = array('operation' => 'custom_tag', 'name' => $this->yystack[$this->yyidx + -2]->minor, 'list' => $this->yystack[$this->yyidx + -1]->minor); } -#line 1685 "lib/Haanga/Compiler/Parser.php" +#line 1687 "lib/Haanga/Compiler/Parser.php" #line 130 "lib/Haanga/Compiler/Parser.y" function yy_r22(){ $this->_retvalue = array('operation' => 'custom_tag', 'name' => $this->yystack[$this->yyidx + -4]->minor, 'as' => $this->yystack[$this->yyidx + -1]->minor, 'list' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1690 "lib/Haanga/Compiler/Parser.php" +#line 1692 "lib/Haanga/Compiler/Parser.php" #line 135 "lib/Haanga/Compiler/Parser.y" function yy_r23(){ if ('end'.$this->yystack[$this->yyidx + -5]->minor != $this->yystack[$this->yyidx + -1]->minor) { @@ -1689,7 +1691,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'custom_tag', 'name' => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor, 'list' => array()); } -#line 1698 "lib/Haanga/Compiler/Parser.php" +#line 1700 "lib/Haanga/Compiler/Parser.php" #line 141 "lib/Haanga/Compiler/Parser.y" function yy_r24(){ if ('end'.$this->yystack[$this->yyidx + -6]->minor != $this->yystack[$this->yyidx + -1]->minor) { @@ -1697,7 +1699,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'custom_tag', 'name' => $this->yystack[$this->yyidx + -6]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor, 'list' => $this->yystack[$this->yyidx + -5]->minor); } -#line 1706 "lib/Haanga/Compiler/Parser.php" +#line 1708 "lib/Haanga/Compiler/Parser.php" #line 149 "lib/Haanga/Compiler/Parser.y" function yy_r25(){ if ('endspacefull' != $this->yystack[$this->yyidx + -1]->minor) { @@ -1705,7 +1707,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'spacefull', 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1714 "lib/Haanga/Compiler/Parser.php" +#line 1716 "lib/Haanga/Compiler/Parser.php" #line 157 "lib/Haanga/Compiler/Parser.y" function yy_r26(){ if ($this->yystack[$this->yyidx + -1]->minor != "endwith") { @@ -1713,7 +1715,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'alias', 'var' => $this->yystack[$this->yyidx + -7]->minor, 'as' => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1722 "lib/Haanga/Compiler/Parser.php" +#line 1724 "lib/Haanga/Compiler/Parser.php" #line 166 "lib/Haanga/Compiler/Parser.y" function yy_r28(){ if (!is_file($this->yystack[$this->yyidx + 0]->minor) || !Haanga_Compiler::getOption('enable_load')) { @@ -1721,17 +1723,17 @@ static public $yy_action = array( } require_once $this->yystack[$this->yyidx + 0]->minor; } -#line 1730 "lib/Haanga/Compiler/Parser.php" +#line 1732 "lib/Haanga/Compiler/Parser.php" #line 175 "lib/Haanga/Compiler/Parser.y" function yy_r29(){ $this->_retvalue = array('operation' => 'loop', 'variable' => $this->yystack[$this->yyidx + -3]->minor, 'index' => NULL, 'array' => $this->yystack[$this->yyidx + -1]->minor); } -#line 1735 "lib/Haanga/Compiler/Parser.php" +#line 1737 "lib/Haanga/Compiler/Parser.php" #line 179 "lib/Haanga/Compiler/Parser.y" function yy_r30(){ $this->_retvalue = array('operation' => 'loop', 'variable' => $this->yystack[$this->yyidx + -3]->minor, 'index' => $this->yystack[$this->yyidx + -5]->minor, 'array' => $this->yystack[$this->yyidx + -1]->minor); } -#line 1740 "lib/Haanga/Compiler/Parser.php" +#line 1742 "lib/Haanga/Compiler/Parser.php" #line 184 "lib/Haanga/Compiler/Parser.y" function yy_r31(){ if ($this->yystack[$this->yyidx + -1]->minor != "endfor") { @@ -1740,7 +1742,7 @@ static public $yy_action = array( $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor; $this->_retvalue['body'] = $this->yystack[$this->yyidx + -3]->minor; } -#line 1749 "lib/Haanga/Compiler/Parser.php" +#line 1751 "lib/Haanga/Compiler/Parser.php" #line 192 "lib/Haanga/Compiler/Parser.y" function yy_r32(){ if ($this->yystack[$this->yyidx + -1]->minor != "endfor") { @@ -1748,7 +1750,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'loop', 'variable' => $this->yystack[$this->yyidx + -7]->minor, 'range' => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor, 'variable' => $this->yystack[$this->yyidx + -7]->minor, 'step' => 1); } -#line 1757 "lib/Haanga/Compiler/Parser.php" +#line 1759 "lib/Haanga/Compiler/Parser.php" #line 199 "lib/Haanga/Compiler/Parser.y" function yy_r33(){ if ($this->yystack[$this->yyidx + -1]->minor != "endfor") { @@ -1756,7 +1758,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'loop', 'variable' => $this->yystack[$this->yyidx + -9]->minor, 'range' => $this->yystack[$this->yyidx + -7]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor, 'variable' => $this->yystack[$this->yyidx + -9]->minor, 'step' => $this->yystack[$this->yyidx + -5]->minor); } -#line 1765 "lib/Haanga/Compiler/Parser.php" +#line 1767 "lib/Haanga/Compiler/Parser.php" #line 206 "lib/Haanga/Compiler/Parser.y" function yy_r34(){ if ($this->yystack[$this->yyidx + -1]->minor != "endfor") { @@ -1766,7 +1768,7 @@ static public $yy_action = array( $this->_retvalue['body'] = $this->yystack[$this->yyidx + -7]->minor; $this->_retvalue['empty'] = $this->yystack[$this->yyidx + -3]->minor; } -#line 1775 "lib/Haanga/Compiler/Parser.php" +#line 1777 "lib/Haanga/Compiler/Parser.php" #line 215 "lib/Haanga/Compiler/Parser.y" function yy_r35(){ if ($this->yystack[$this->yyidx + -1]->minor != "endif") { @@ -1774,7 +1776,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'if', 'expr' => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1783 "lib/Haanga/Compiler/Parser.php" +#line 1785 "lib/Haanga/Compiler/Parser.php" #line 221 "lib/Haanga/Compiler/Parser.y" function yy_r36(){ if ($this->yystack[$this->yyidx + -1]->minor != "endif") { @@ -1782,7 +1784,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'if', 'expr' => $this->yystack[$this->yyidx + -9]->minor, 'body' => $this->yystack[$this->yyidx + -7]->minor, 'else' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1791 "lib/Haanga/Compiler/Parser.php" +#line 1793 "lib/Haanga/Compiler/Parser.php" #line 229 "lib/Haanga/Compiler/Parser.y" function yy_r37(){ if ($this->yystack[$this->yyidx + -1]->minor != "endifchanged") { @@ -1790,7 +1792,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'ifchanged', 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1799 "lib/Haanga/Compiler/Parser.php" +#line 1801 "lib/Haanga/Compiler/Parser.php" #line 236 "lib/Haanga/Compiler/Parser.y" function yy_r38(){ if ($this->yystack[$this->yyidx + -1]->minor != "endifchanged") { @@ -1798,7 +1800,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'ifchanged', 'body' => $this->yystack[$this->yyidx + -3]->minor, 'check' => $this->yystack[$this->yyidx + -5]->minor); } -#line 1807 "lib/Haanga/Compiler/Parser.php" +#line 1809 "lib/Haanga/Compiler/Parser.php" #line 242 "lib/Haanga/Compiler/Parser.y" function yy_r39(){ if ($this->yystack[$this->yyidx + -1]->minor != "endifchanged") { @@ -1806,7 +1808,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'ifchanged', 'body' => $this->yystack[$this->yyidx + -7]->minor, 'else' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1815 "lib/Haanga/Compiler/Parser.php" +#line 1817 "lib/Haanga/Compiler/Parser.php" #line 249 "lib/Haanga/Compiler/Parser.y" function yy_r40(){ if ($this->yystack[$this->yyidx + -1]->minor != "endifchanged") { @@ -1814,7 +1816,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'ifchanged', 'body' => $this->yystack[$this->yyidx + -7]->minor, 'check' => $this->yystack[$this->yyidx + -9]->minor, 'else' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1823 "lib/Haanga/Compiler/Parser.php" +#line 1825 "lib/Haanga/Compiler/Parser.php" #line 257 "lib/Haanga/Compiler/Parser.y" function yy_r41(){ if ($this->yystack[$this->yyidx + -1]->minor != "endifequal") { @@ -1822,7 +1824,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'ifequal', 'cmp' => '==', 1 => $this->yystack[$this->yyidx + -6]->minor, 2 => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1831 "lib/Haanga/Compiler/Parser.php" +#line 1833 "lib/Haanga/Compiler/Parser.php" #line 263 "lib/Haanga/Compiler/Parser.y" function yy_r42(){ if ($this->yystack[$this->yyidx + -1]->minor != "endifequal") { @@ -1830,7 +1832,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'ifequal', 'cmp' => '==', 1 => $this->yystack[$this->yyidx + -10]->minor, 2 => $this->yystack[$this->yyidx + -9]->minor, 'body' => $this->yystack[$this->yyidx + -7]->minor, 'else' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1839 "lib/Haanga/Compiler/Parser.php" +#line 1841 "lib/Haanga/Compiler/Parser.php" #line 269 "lib/Haanga/Compiler/Parser.y" function yy_r43(){ if ($this->yystack[$this->yyidx + -1]->minor != "endifnotequal") { @@ -1838,7 +1840,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'ifequal', 'cmp' => '!=', 1 => $this->yystack[$this->yyidx + -6]->minor, 2 => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1847 "lib/Haanga/Compiler/Parser.php" +#line 1849 "lib/Haanga/Compiler/Parser.php" #line 275 "lib/Haanga/Compiler/Parser.y" function yy_r44(){ if ($this->yystack[$this->yyidx + -1]->minor != "endifnotequal") { @@ -1846,7 +1848,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'ifequal', 'cmp' => '!=', 1 => $this->yystack[$this->yyidx + -10]->minor, 2 => $this->yystack[$this->yyidx + -9]->minor, 'body' => $this->yystack[$this->yyidx + -7]->minor, 'else' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1855 "lib/Haanga/Compiler/Parser.php" +#line 1857 "lib/Haanga/Compiler/Parser.php" #line 283 "lib/Haanga/Compiler/Parser.y" function yy_r45(){ if ($this->yystack[$this->yyidx + -1]->minor != "endblock") { @@ -1854,7 +1856,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'block', 'name' => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1863 "lib/Haanga/Compiler/Parser.php" +#line 1865 "lib/Haanga/Compiler/Parser.php" #line 290 "lib/Haanga/Compiler/Parser.y" function yy_r46(){ if ($this->yystack[$this->yyidx + -2]->minor != "endblock") { @@ -1862,7 +1864,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'block', 'name' => $this->yystack[$this->yyidx + -6]->minor, 'body' => $this->yystack[$this->yyidx + -4]->minor); } -#line 1871 "lib/Haanga/Compiler/Parser.php" +#line 1873 "lib/Haanga/Compiler/Parser.php" #line 297 "lib/Haanga/Compiler/Parser.y" function yy_r47(){ if ($this->yystack[$this->yyidx + -1]->minor != "endblock") { @@ -1870,7 +1872,7 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'block', 'name' => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1879 "lib/Haanga/Compiler/Parser.php" +#line 1881 "lib/Haanga/Compiler/Parser.php" #line 312 "lib/Haanga/Compiler/Parser.y" function yy_r49(){ if ($this->yystack[$this->yyidx + -1]->minor != "endfilter") { @@ -1878,64 +1880,64 @@ static public $yy_action = array( } $this->_retvalue = array('operation' => 'filter', 'functions' => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1887 "lib/Haanga/Compiler/Parser.php" +#line 1889 "lib/Haanga/Compiler/Parser.php" #line 320 "lib/Haanga/Compiler/Parser.y" function yy_r50(){ $this->_retvalue=array('operation' => 'regroup', 'array' => $this->yystack[$this->yyidx + -4]->minor, 'row' => $this->yystack[$this->yyidx + -2]->minor, 'as' => $this->yystack[$this->yyidx + 0]->minor); } -#line 1890 "lib/Haanga/Compiler/Parser.php" +#line 1892 "lib/Haanga/Compiler/Parser.php" #line 323 "lib/Haanga/Compiler/Parser.y" function yy_r51(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor; } -#line 1893 "lib/Haanga/Compiler/Parser.php" +#line 1895 "lib/Haanga/Compiler/Parser.php" #line 324 "lib/Haanga/Compiler/Parser.y" function yy_r52(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); } -#line 1896 "lib/Haanga/Compiler/Parser.php" +#line 1898 "lib/Haanga/Compiler/Parser.php" #line 326 "lib/Haanga/Compiler/Parser.y" function yy_r53(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor, 'args'=>array($this->yystack[$this->yyidx + 0]->minor)); } -#line 1899 "lib/Haanga/Compiler/Parser.php" +#line 1901 "lib/Haanga/Compiler/Parser.php" #line 330 "lib/Haanga/Compiler/Parser.y" function yy_r55(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor; } -#line 1902 "lib/Haanga/Compiler/Parser.php" +#line 1904 "lib/Haanga/Compiler/Parser.php" #line 336 "lib/Haanga/Compiler/Parser.y" function yy_r58(){ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + 0]->minor); } -#line 1905 "lib/Haanga/Compiler/Parser.php" +#line 1907 "lib/Haanga/Compiler/Parser.php" #line 337 "lib/Haanga/Compiler/Parser.y" function yy_r59(){ $this->_retvalue = array('number' => $this->yystack[$this->yyidx + 0]->minor); } -#line 1908 "lib/Haanga/Compiler/Parser.php" +#line 1910 "lib/Haanga/Compiler/Parser.php" #line 338 "lib/Haanga/Compiler/Parser.y" function yy_r60(){ $this->_retvalue = trim(@$this->yystack[$this->yyidx + 0]->minor); } -#line 1911 "lib/Haanga/Compiler/Parser.php" +#line 1913 "lib/Haanga/Compiler/Parser.php" #line 339 "lib/Haanga/Compiler/Parser.y" function yy_r61(){ $this->_retvalue = array('string' => $this->yystack[$this->yyidx + 0]->minor); } -#line 1914 "lib/Haanga/Compiler/Parser.php" +#line 1916 "lib/Haanga/Compiler/Parser.php" #line 342 "lib/Haanga/Compiler/Parser.y" function yy_r62(){ $this->_retvalue = array('var_filter' => $this->yystack[$this->yyidx + 0]->minor); } -#line 1917 "lib/Haanga/Compiler/Parser.php" +#line 1919 "lib/Haanga/Compiler/Parser.php" #line 352 "lib/Haanga/Compiler/Parser.y" function yy_r68(){ $this->_retvalue = array('op_expr' => 'not', $this->yystack[$this->yyidx + 0]->minor); } -#line 1920 "lib/Haanga/Compiler/Parser.php" +#line 1922 "lib/Haanga/Compiler/Parser.php" #line 353 "lib/Haanga/Compiler/Parser.y" function yy_r69(){ $this->_retvalue = array('op_expr' => @$this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 1923 "lib/Haanga/Compiler/Parser.php" +#line 1925 "lib/Haanga/Compiler/Parser.php" #line 356 "lib/Haanga/Compiler/Parser.y" function yy_r72(){ $this->_retvalue = array('op_expr' => trim(@$this->yystack[$this->yyidx + -1]->minor), $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 1926 "lib/Haanga/Compiler/Parser.php" +#line 1928 "lib/Haanga/Compiler/Parser.php" #line 358 "lib/Haanga/Compiler/Parser.y" function yy_r74(){ $this->_retvalue = array('op_expr' => 'expr', $this->yystack[$this->yyidx + -1]->minor); } -#line 1929 "lib/Haanga/Compiler/Parser.php" +#line 1931 "lib/Haanga/Compiler/Parser.php" #line 362 "lib/Haanga/Compiler/Parser.y" function yy_r76(){ if (!is_array($this->yystack[$this->yyidx + -2]->minor)) { $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor); } else { $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; } $this->_retvalue[]=array('object' => $this->yystack[$this->yyidx + 0]->minor); } -#line 1932 "lib/Haanga/Compiler/Parser.php" +#line 1934 "lib/Haanga/Compiler/Parser.php" #line 363 "lib/Haanga/Compiler/Parser.y" function yy_r77(){ if (!is_array($this->yystack[$this->yyidx + -2]->minor)) { $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor); } else { $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; } $this->_retvalue[] = array('object' => $this->yystack[$this->yyidx + 0]->minor); } -#line 1935 "lib/Haanga/Compiler/Parser.php" +#line 1937 "lib/Haanga/Compiler/Parser.php" #line 364 "lib/Haanga/Compiler/Parser.y" function yy_r78(){ if (!is_array($this->yystack[$this->yyidx + -3]->minor)) { $this->_retvalue = array($this->yystack[$this->yyidx + -3]->minor); } else { $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor; } $this->_retvalue[]=$this->yystack[$this->yyidx + -1]->minor; } -#line 1938 "lib/Haanga/Compiler/Parser.php" +#line 1940 "lib/Haanga/Compiler/Parser.php" #line 369 "lib/Haanga/Compiler/Parser.y" - function yy_r81(){ $this->_retvalue = array($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 1941 "lib/Haanga/Compiler/Parser.php" + function yy_r81(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } +#line 1943 "lib/Haanga/Compiler/Parser.php" #line 375 "lib/Haanga/Compiler/Parser.y" function yy_r85(){ $this->_retvalue = -1 * ($this->yystack[$this->yyidx + 0]->minor); } -#line 1944 "lib/Haanga/Compiler/Parser.php" +#line 1946 "lib/Haanga/Compiler/Parser.php" /** * placeholder for the left hand side in a reduce operation. @@ -2054,7 +2056,7 @@ static public $yy_action = array( $expect[] = self::$yyTokenName[$token]; } $this->Error('Unexpected ' . $this->tokenName($yymajor) . '(' . $TOKEN. '), expected one of: ' . implode(',', $expect)); -#line 2064 "lib/Haanga/Compiler/Parser.php" +#line 2066 "lib/Haanga/Compiler/Parser.php" } /** @@ -2074,7 +2076,7 @@ static public $yy_action = array( ** parser accepts */ #line 57 "lib/Haanga/Compiler/Parser.y" -#line 2085 "lib/Haanga/Compiler/Parser.php" +#line 2087 "lib/Haanga/Compiler/Parser.php" } /** diff --git a/lib/Haanga/Compiler/Parser.y b/lib/Haanga/Compiler/Parser.y index b458c4b..9645471 100644 --- a/lib/Haanga/Compiler/Parser.y +++ b/lib/Haanga/Compiler/Parser.y @@ -360,17 +360,17 @@ expr(A) ::= T_LPARENT expr(B) T_RPARENT. { A = array('op_expr' => 'expr', B); } expr(A) ::= fvar_or_string(B). { A = B; } /* Variable name */ -varname(A) ::= varname(B) T_OBJ T_ALPHA(C). { if (!is_array(B)) { A = array(B); } else { A = B; } A[]=array('object' => C);} -varname(A) ::= varname(B) T_DOT T_ALPHA(C). { if (!is_array(B)) { A = array(B); } else { A = B; } A[] = array('object' => C);} +varname(A) ::= varname(B) T_OBJ T_ALPHA|T_CUSTOM_TAG|T_CUSTOM_BLOCK(C). { if (!is_array(B)) { A = array(B); } else { A = B; } A[]=array('object' => C);} +varname(A) ::= varname(B) T_DOT T_ALPHA|T_CUSTOM_TAG|T_CUSTOM_BLOCK(C). { if (!is_array(B)) { A = array(B); } else { A = B; } A[] = array('object' => C);} varname(A) ::= varname(B) T_BRACKETS_OPEN var_or_string(C) T_BRACKETS_CLOSE. { if (!is_array(B)) { A = array(B); } else { A = B; } A[]=C;} varname(A) ::= T_ALPHA(B). { A = B; } /* T_BLOCK|T_CUSTOM|T_CUSTOM_BLOCK are also T_ALPHA */ varname(A) ::= T_BLOCK|T_CUSTOM_TAG|T_CUSTOM_BLOCK(B). { A = B; } -range(A) ::= numvar(B) T_DOT T_DOT numvar(C). { A = array(B, C); } +range(A) ::= numvar(B) T_DOTDOT numvar(C). { A = array(B, C); } numvar(A) ::= number(B). { A = B; } -numvar(A) ::= varname(B). { A = B; } +numvar(A) ::= varname(B). { A = array('var' => B); } number(A) ::= T_NUMERIC(B). { A = B; } number(A) ::= T_MINUS T_NUMERIC(B). { A = -1 * (B); } diff --git a/lib/Haanga/Compiler/Tokenizer.php b/lib/Haanga/Compiler/Tokenizer.php index bf0b79c..e3703fe 100644 --- a/lib/Haanga/Compiler/Tokenizer.php +++ b/lib/Haanga/Compiler/Tokenizer.php @@ -107,6 +107,7 @@ class Haanga_Compiler_Tokenizer '==' => HG_Parser::T_EQ, '>=' => HG_Parser::T_GE, '||' => HG_Parser::T_OR, + '..' => HG_Parser::T_DOTDOT, ); static $close_tags = array(); diff --git a/lib/Haanga/Generator/PHP.php b/lib/Haanga/Generator/PHP.php index 0fabf49..3fbb7a3 100644 --- a/lib/Haanga/Generator/PHP.php +++ b/lib/Haanga/Generator/PHP.php @@ -296,9 +296,13 @@ class Haanga_Generator_PHP protected function php_for($op) { $index = $this->php_get_varname($op['index']); - $min = $op['min']; - $max = $op['max']; - $step = $op['step']; + foreach (array('min', 'max', 'step') as $type) { + if (is_array($op[$type])) { + $$type = $this->php_get_varname($op[$type]['var']); + } else { + $$type = $op[$type]; + } + } $cmp = "<="; if (is_numeric($step) && $step < 0) { $cmp = ">="; diff --git a/tests/assert_templates/for_range4.tpl b/tests/assert_templates/for_range4.tpl index 2d76397..3618603 100644 --- a/tests/assert_templates/for_range4.tpl +++ b/tests/assert_templates/for_range4.tpl @@ -1,3 +1,3 @@ -{% for i in 5 .. 1 step 2 %} +{% for i in min .. max step -2 %} {{i}} {% endfor %} diff --git a/tests/assert_templates/for_range5.html b/tests/assert_templates/for_range5.html new file mode 100644 index 0000000..3f331d8 --- /dev/null +++ b/tests/assert_templates/for_range5.html @@ -0,0 +1,7 @@ + + 5 + + 3 + + 1 + diff --git a/tests/assert_templates/for_range5.php b/tests/assert_templates/for_range5.php new file mode 100644 index 0000000..250f292 --- /dev/null +++ b/tests/assert_templates/for_range5.php @@ -0,0 +1,3 @@ + array('min' => 5, 'max' => 1)); diff --git a/tests/assert_templates/for_range5.tpl b/tests/assert_templates/for_range5.tpl new file mode 100644 index 0000000..efa6419 --- /dev/null +++ b/tests/assert_templates/for_range5.tpl @@ -0,0 +1,3 @@ +{% for i in e.min .. e.max step -2 %} + {{i}} +{% endfor %} diff --git a/tests/assert_templates/for_range5.tpl.txt b/tests/assert_templates/for_range5.tpl.txt new file mode 100644 index 0000000..cdd667c --- /dev/null +++ b/tests/assert_templates/for_range5.tpl.txt @@ -0,0 +1,35 @@ +Array +( + [0] => 1 + [1] => {% +) +Array +( + [0] => 32 + [1] => for +) +Array +( + [0] => 54 + [1] => i +) +Array +( + [0] => 11 + [1] => in +) +Array +( + [0] => 54 + [1] => e +) +Array +( + [0] => 55 + [1] => . +) +Array +( + [0] => 26 + [1] => min +) diff --git a/tests/tmp/assert_templates/for_range.tpl.php.dump b/tests/tmp/assert_templates/for_range.tpl.php.dump new file mode 100644 index 0000000..4ef1ea3 --- /dev/null +++ b/tests/tmp/assert_templates/for_range.tpl.php.dump @@ -0,0 +1,217 @@ +Array +( + [0] => Array + ( + [op] => declare + [name] => HAANGA_VERSION + [0] => Array + ( + [string] => 1.0.4 + ) + + ) + + [1] => Array + ( + [op] => comment + [comment] => Generated from /home/crodas/projects/playground/haanga/tests/assert_templates/for_range.tpl + ) + + [2] => Array + ( + [op] => function + [name] => haanga_4d539b8ce541e6398b254786c86ca7fd1338ca04 + ) + + [3] => Array + ( + [op] => global + [vars] => Array + ( + [0] => test_global + [1] => global1 + ) + + ) + + [4] => Array + ( + [op] => expr + [0] => Array + ( + [exec] => extract + [args] => Array + ( + [0] => Array + ( + [var] => vars + ) + + ) + + ) + + ) + + [5] => Array + ( + [op] => if + [expr] => Array + ( + [op_expr] => == + [0] => Array + ( + [var] => return + ) + + [1] => Array + ( + [expr] => 1 + ) + + ) + + ) + + [6] => Array + ( + [op] => expr + [0] => Array + ( + [exec] => ob_start + [args] => Array + ( + ) + + ) + + ) + + [7] => Array + ( + [op] => end_if + ) + + [8] => Array + ( + [op] => for + [index] => i + [min] => 1 + [max] => 5 + [step] => 1 + ) + + [9] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [10] => Array + ( + [op] => print + [0] => Array + ( + [var] => i + ) + + ) + + [11] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [12] => Array + ( + [op] => end_for + ) + + [13] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [14] => Array + ( + [op] => if + [expr] => Array + ( + [op_expr] => == + [0] => Array + ( + [var] => return + ) + + [1] => Array + ( + [expr] => 1 + ) + + ) + + ) + + [15] => Array + ( + [op] => return + [0] => Array + ( + [exec] => ob_get_clean + [args] => Array + ( + ) + + ) + + ) + + [16] => Array + ( + [op] => end_if + ) + + [17] => Array + ( + [op] => end_function + ) + + [php] => +$HAANGA_VERSION = '1.0.4'; +/* Generated from /home/crodas/projects/playground/haanga/tests/assert_templates/for_range.tpl */ +function haanga_4d539b8ce541e6398b254786c86ca7fd1338ca04($vars, $return=FALSE, $blocks=array()) +{ + global $test_global, $global1; + extract($vars); + if ($return == TRUE) { + ob_start(); + } + for ($i = 1; $i <= 5; $i += 1) { + echo ' + '.$i.' +'; + } + echo ' +'; + if ($return == TRUE) { + return ob_get_clean(); + } +} +) diff --git a/tests/tmp/assert_templates/for_range1.tpl.php b/tests/tmp/assert_templates/for_range1.tpl.php new file mode 100644 index 0000000..0718365 --- /dev/null +++ b/tests/tmp/assert_templates/for_range1.tpl.php @@ -0,0 +1,21 @@ + Array + ( + [op] => declare + [name] => HAANGA_VERSION + [0] => Array + ( + [string] => 1.0.4 + ) + + ) + + [1] => Array + ( + [op] => comment + [comment] => Generated from /home/crodas/projects/playground/haanga/tests/assert_templates/for_range1.tpl + ) + + [2] => Array + ( + [op] => function + [name] => haanga_6153c3274a39928f85c724583ea8ab169cbc4b9b + ) + + [3] => Array + ( + [op] => global + [vars] => Array + ( + [0] => test_global + [1] => global1 + ) + + ) + + [4] => Array + ( + [op] => expr + [0] => Array + ( + [exec] => extract + [args] => Array + ( + [0] => Array + ( + [var] => vars + ) + + ) + + ) + + ) + + [5] => Array + ( + [op] => if + [expr] => Array + ( + [op_expr] => == + [0] => Array + ( + [var] => return + ) + + [1] => Array + ( + [expr] => 1 + ) + + ) + + ) + + [6] => Array + ( + [op] => expr + [0] => Array + ( + [exec] => ob_start + [args] => Array + ( + ) + + ) + + ) + + [7] => Array + ( + [op] => end_if + ) + + [8] => Array + ( + [op] => for + [index] => i + [min] => 1 + [max] => 5 + [step] => 2 + ) + + [9] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [10] => Array + ( + [op] => print + [0] => Array + ( + [var] => i + ) + + ) + + [11] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [12] => Array + ( + [op] => end_for + ) + + [13] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [14] => Array + ( + [op] => if + [expr] => Array + ( + [op_expr] => == + [0] => Array + ( + [var] => return + ) + + [1] => Array + ( + [expr] => 1 + ) + + ) + + ) + + [15] => Array + ( + [op] => return + [0] => Array + ( + [exec] => ob_get_clean + [args] => Array + ( + ) + + ) + + ) + + [16] => Array + ( + [op] => end_if + ) + + [17] => Array + ( + [op] => end_function + ) + + [php] => +$HAANGA_VERSION = '1.0.4'; +/* Generated from /home/crodas/projects/playground/haanga/tests/assert_templates/for_range1.tpl */ +function haanga_6153c3274a39928f85c724583ea8ab169cbc4b9b($vars, $return=FALSE, $blocks=array()) +{ + global $test_global, $global1; + extract($vars); + if ($return == TRUE) { + ob_start(); + } + for ($i = 1; $i <= 5; $i += 2) { + echo ' + '.$i.' +'; + } + echo ' +'; + if ($return == TRUE) { + return ob_get_clean(); + } +} +) diff --git a/tests/tmp/assert_templates/for_range2.tpl.php b/tests/tmp/assert_templates/for_range2.tpl.php new file mode 100644 index 0000000..54a8a09 --- /dev/null +++ b/tests/tmp/assert_templates/for_range2.tpl.php @@ -0,0 +1,21 @@ += 1; $i += -2) { + echo ' + '.$i.' +'; + } + echo ' +'; + if ($return == TRUE) { + return ob_get_clean(); + } +} \ No newline at end of file diff --git a/tests/tmp/assert_templates/for_range2.tpl.php.dump b/tests/tmp/assert_templates/for_range2.tpl.php.dump new file mode 100644 index 0000000..85fb83d --- /dev/null +++ b/tests/tmp/assert_templates/for_range2.tpl.php.dump @@ -0,0 +1,217 @@ +Array +( + [0] => Array + ( + [op] => declare + [name] => HAANGA_VERSION + [0] => Array + ( + [string] => 1.0.4 + ) + + ) + + [1] => Array + ( + [op] => comment + [comment] => Generated from /home/crodas/projects/playground/haanga/tests/assert_templates/for_range2.tpl + ) + + [2] => Array + ( + [op] => function + [name] => haanga_24ef455b6f61d9f2c1060d3bf0ffe3695f34e451 + ) + + [3] => Array + ( + [op] => global + [vars] => Array + ( + [0] => test_global + [1] => global1 + ) + + ) + + [4] => Array + ( + [op] => expr + [0] => Array + ( + [exec] => extract + [args] => Array + ( + [0] => Array + ( + [var] => vars + ) + + ) + + ) + + ) + + [5] => Array + ( + [op] => if + [expr] => Array + ( + [op_expr] => == + [0] => Array + ( + [var] => return + ) + + [1] => Array + ( + [expr] => 1 + ) + + ) + + ) + + [6] => Array + ( + [op] => expr + [0] => Array + ( + [exec] => ob_start + [args] => Array + ( + ) + + ) + + ) + + [7] => Array + ( + [op] => end_if + ) + + [8] => Array + ( + [op] => for + [index] => i + [min] => 5 + [max] => 1 + [step] => -2 + ) + + [9] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [10] => Array + ( + [op] => print + [0] => Array + ( + [var] => i + ) + + ) + + [11] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [12] => Array + ( + [op] => end_for + ) + + [13] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [14] => Array + ( + [op] => if + [expr] => Array + ( + [op_expr] => == + [0] => Array + ( + [var] => return + ) + + [1] => Array + ( + [expr] => 1 + ) + + ) + + ) + + [15] => Array + ( + [op] => return + [0] => Array + ( + [exec] => ob_get_clean + [args] => Array + ( + ) + + ) + + ) + + [16] => Array + ( + [op] => end_if + ) + + [17] => Array + ( + [op] => end_function + ) + + [php] => +$HAANGA_VERSION = '1.0.4'; +/* Generated from /home/crodas/projects/playground/haanga/tests/assert_templates/for_range2.tpl */ +function haanga_24ef455b6f61d9f2c1060d3bf0ffe3695f34e451($vars, $return=FALSE, $blocks=array()) +{ + global $test_global, $global1; + extract($vars); + if ($return == TRUE) { + ob_start(); + } + for ($i = 5; $i >= 1; $i += -2) { + echo ' + '.$i.' +'; + } + echo ' +'; + if ($return == TRUE) { + return ob_get_clean(); + } +} +) diff --git a/tests/tmp/assert_templates/for_range3.tpl.php b/tests/tmp/assert_templates/for_range3.tpl.php new file mode 100644 index 0000000..8b897c7 --- /dev/null +++ b/tests/tmp/assert_templates/for_range3.tpl.php @@ -0,0 +1,21 @@ += 1; $i += -2) { + echo ' + '.$i.' +'; + } + echo ' +'; + if ($return == TRUE) { + return ob_get_clean(); + } +} \ No newline at end of file diff --git a/tests/tmp/assert_templates/for_range3.tpl.php.dump b/tests/tmp/assert_templates/for_range3.tpl.php.dump new file mode 100644 index 0000000..a4cef97 --- /dev/null +++ b/tests/tmp/assert_templates/for_range3.tpl.php.dump @@ -0,0 +1,217 @@ +Array +( + [0] => Array + ( + [op] => declare + [name] => HAANGA_VERSION + [0] => Array + ( + [string] => 1.0.4 + ) + + ) + + [1] => Array + ( + [op] => comment + [comment] => Generated from /home/crodas/projects/playground/haanga/tests/assert_templates/for_range3.tpl + ) + + [2] => Array + ( + [op] => function + [name] => haanga_859654b3095e22d09c8658e87249d91cf6234bff + ) + + [3] => Array + ( + [op] => global + [vars] => Array + ( + [0] => test_global + [1] => global1 + ) + + ) + + [4] => Array + ( + [op] => expr + [0] => Array + ( + [exec] => extract + [args] => Array + ( + [0] => Array + ( + [var] => vars + ) + + ) + + ) + + ) + + [5] => Array + ( + [op] => if + [expr] => Array + ( + [op_expr] => == + [0] => Array + ( + [var] => return + ) + + [1] => Array + ( + [expr] => 1 + ) + + ) + + ) + + [6] => Array + ( + [op] => expr + [0] => Array + ( + [exec] => ob_start + [args] => Array + ( + ) + + ) + + ) + + [7] => Array + ( + [op] => end_if + ) + + [8] => Array + ( + [op] => for + [index] => i + [min] => 5 + [max] => 1 + [step] => 2 + ) + + [9] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [10] => Array + ( + [op] => print + [0] => Array + ( + [var] => i + ) + + ) + + [11] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [12] => Array + ( + [op] => end_for + ) + + [13] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [14] => Array + ( + [op] => if + [expr] => Array + ( + [op_expr] => == + [0] => Array + ( + [var] => return + ) + + [1] => Array + ( + [expr] => 1 + ) + + ) + + ) + + [15] => Array + ( + [op] => return + [0] => Array + ( + [exec] => ob_get_clean + [args] => Array + ( + ) + + ) + + ) + + [16] => Array + ( + [op] => end_if + ) + + [17] => Array + ( + [op] => end_function + ) + + [php] => +$HAANGA_VERSION = '1.0.4'; +/* Generated from /home/crodas/projects/playground/haanga/tests/assert_templates/for_range3.tpl */ +function haanga_859654b3095e22d09c8658e87249d91cf6234bff($vars, $return=FALSE, $blocks=array()) +{ + global $test_global, $global1; + extract($vars); + if ($return == TRUE) { + ob_start(); + } + for ($i = 5; $i >= 1; $i += -2) { + echo ' + '.$i.' +'; + } + echo ' +'; + if ($return == TRUE) { + return ob_get_clean(); + } +} +) diff --git a/tests/tmp/assert_templates/for_range4.tpl.php b/tests/tmp/assert_templates/for_range4.tpl.php new file mode 100644 index 0000000..e889c39 --- /dev/null +++ b/tests/tmp/assert_templates/for_range4.tpl.php @@ -0,0 +1,21 @@ += $max; $i += -2) { + echo ' + '.$i.' +'; + } + echo ' +'; + if ($return == TRUE) { + return ob_get_clean(); + } +} \ No newline at end of file diff --git a/tests/tmp/assert_templates/for_range4.tpl.php.dump b/tests/tmp/assert_templates/for_range4.tpl.php.dump new file mode 100644 index 0000000..3510271 --- /dev/null +++ b/tests/tmp/assert_templates/for_range4.tpl.php.dump @@ -0,0 +1,225 @@ +Array +( + [0] => Array + ( + [op] => declare + [name] => HAANGA_VERSION + [0] => Array + ( + [string] => 1.0.4 + ) + + ) + + [1] => Array + ( + [op] => comment + [comment] => Generated from /home/crodas/projects/playground/haanga/tests/assert_templates/for_range4.tpl + ) + + [2] => Array + ( + [op] => function + [name] => haanga_862550ab5e80dc16c8f0f5fafed8f6b4d4b7e56f + ) + + [3] => Array + ( + [op] => global + [vars] => Array + ( + [0] => test_global + [1] => global1 + ) + + ) + + [4] => Array + ( + [op] => expr + [0] => Array + ( + [exec] => extract + [args] => Array + ( + [0] => Array + ( + [var] => vars + ) + + ) + + ) + + ) + + [5] => Array + ( + [op] => if + [expr] => Array + ( + [op_expr] => == + [0] => Array + ( + [var] => return + ) + + [1] => Array + ( + [expr] => 1 + ) + + ) + + ) + + [6] => Array + ( + [op] => expr + [0] => Array + ( + [exec] => ob_start + [args] => Array + ( + ) + + ) + + ) + + [7] => Array + ( + [op] => end_if + ) + + [8] => Array + ( + [op] => for + [index] => i + [min] => Array + ( + [var] => min + ) + + [max] => Array + ( + [var] => max + ) + + [step] => -2 + ) + + [9] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [10] => Array + ( + [op] => print + [0] => Array + ( + [var] => i + ) + + ) + + [11] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [12] => Array + ( + [op] => end_for + ) + + [13] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [14] => Array + ( + [op] => if + [expr] => Array + ( + [op_expr] => == + [0] => Array + ( + [var] => return + ) + + [1] => Array + ( + [expr] => 1 + ) + + ) + + ) + + [15] => Array + ( + [op] => return + [0] => Array + ( + [exec] => ob_get_clean + [args] => Array + ( + ) + + ) + + ) + + [16] => Array + ( + [op] => end_if + ) + + [17] => Array + ( + [op] => end_function + ) + + [php] => +$HAANGA_VERSION = '1.0.4'; +/* Generated from /home/crodas/projects/playground/haanga/tests/assert_templates/for_range4.tpl */ +function haanga_862550ab5e80dc16c8f0f5fafed8f6b4d4b7e56f($vars, $return=FALSE, $blocks=array()) +{ + global $test_global, $global1; + extract($vars); + if ($return == TRUE) { + ob_start(); + } + for ($i = $min; $i >= $max; $i += -2) { + echo ' + '.$i.' +'; + } + echo ' +'; + if ($return == TRUE) { + return ob_get_clean(); + } +} +) diff --git a/tests/tmp/assert_templates/for_range5.tpl.php b/tests/tmp/assert_templates/for_range5.tpl.php new file mode 100644 index 0000000..a870bb9 --- /dev/null +++ b/tests/tmp/assert_templates/for_range5.tpl.php @@ -0,0 +1,21 @@ += $e['max']; $i += -2) { + echo ' + '.$i.' +'; + } + echo ' +'; + if ($return == TRUE) { + return ob_get_clean(); + } +} \ No newline at end of file diff --git a/tests/tmp/assert_templates/for_range5.tpl.php.dump b/tests/tmp/assert_templates/for_range5.tpl.php.dump new file mode 100644 index 0000000..e5aad6f --- /dev/null +++ b/tests/tmp/assert_templates/for_range5.tpl.php.dump @@ -0,0 +1,235 @@ +Array +( + [0] => Array + ( + [op] => declare + [name] => HAANGA_VERSION + [0] => Array + ( + [string] => 1.0.4 + ) + + ) + + [1] => Array + ( + [op] => comment + [comment] => Generated from /home/crodas/projects/playground/haanga/tests/assert_templates/for_range5.tpl + ) + + [2] => Array + ( + [op] => function + [name] => haanga_ce579af7079d634f492d7742076d8a6ef88b4895 + ) + + [3] => Array + ( + [op] => global + [vars] => Array + ( + [0] => test_global + [1] => global1 + ) + + ) + + [4] => Array + ( + [op] => expr + [0] => Array + ( + [exec] => extract + [args] => Array + ( + [0] => Array + ( + [var] => vars + ) + + ) + + ) + + ) + + [5] => Array + ( + [op] => if + [expr] => Array + ( + [op_expr] => == + [0] => Array + ( + [var] => return + ) + + [1] => Array + ( + [expr] => 1 + ) + + ) + + ) + + [6] => Array + ( + [op] => expr + [0] => Array + ( + [exec] => ob_start + [args] => Array + ( + ) + + ) + + ) + + [7] => Array + ( + [op] => end_if + ) + + [8] => Array + ( + [op] => for + [index] => i + [min] => Array + ( + [var] => Array + ( + [0] => e + [1] => min + ) + + ) + + [max] => Array + ( + [var] => Array + ( + [0] => e + [1] => max + ) + + ) + + [step] => -2 + ) + + [9] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [10] => Array + ( + [op] => print + [0] => Array + ( + [var] => i + ) + + ) + + [11] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [12] => Array + ( + [op] => end_for + ) + + [13] => Array + ( + [op] => print + [0] => Array + ( + [string] => + + ) + + ) + + [14] => Array + ( + [op] => if + [expr] => Array + ( + [op_expr] => == + [0] => Array + ( + [var] => return + ) + + [1] => Array + ( + [expr] => 1 + ) + + ) + + ) + + [15] => Array + ( + [op] => return + [0] => Array + ( + [exec] => ob_get_clean + [args] => Array + ( + ) + + ) + + ) + + [16] => Array + ( + [op] => end_if + ) + + [17] => Array + ( + [op] => end_function + ) + + [php] => +$HAANGA_VERSION = '1.0.4'; +/* Generated from /home/crodas/projects/playground/haanga/tests/assert_templates/for_range5.tpl */ +function haanga_ce579af7079d634f492d7742076d8a6ef88b4895($vars, $return=FALSE, $blocks=array()) +{ + global $test_global, $global1; + extract($vars); + if ($return == TRUE) { + ob_start(); + } + for ($i = $e['min']; $i >= $e['max']; $i += -2) { + echo ' + '.$i.' +'; + } + echo ' +'; + if ($return == TRUE) { + return ob_get_clean(); + } +} +) -- 2.11.4.GIT