From e99b47dd4ad94112830b5157fb732eec003dafc1 Mon Sep 17 00:00:00 2001 From: vitalif Date: Sun, 12 Oct 2014 11:55:02 +0000 Subject: [PATCH] Allow nested method/varref calls --- template.lime | 10 + template.parser.php | 2058 ++++++++++++++++++------------------------- 2 files changed, 875 insertions(+), 1193 deletions(-) diff --git a/template.lime b/template.lime index c82ec57..7095d2c 100644 --- a/template.lime +++ b/template.lime @@ -338,6 +338,16 @@ varpart: '.' namekw/n { | '[' exp/e ']' { $$ = '['.$e[0].']'; } +| '.' name/n '(' ')' { + $$ = '->'.$n.'()'; + } +| '.' name/n '(' list/l ')' { + $argv = []; + foreach ($args as $a) { + $argv[] = $a[0]; + } + $$ = '->'.$n.'('.implode(', ', $argv).')'; + } . varpath: { $$ = ''; diff --git a/template.parser.php b/template.parser.php index 1c346c4..c93696e 100644 --- a/template.parser.php +++ b/template.parser.php @@ -134,7 +134,7 @@ class VMXTemplateCompiler 'count' => self::Q_ALWAYS, 'subarray' => 1, 'subarray_divmod' => 1, - 'set' => 2, // TODO: set(x, y) should return empty value + 'set' => 2, 'array_merge' => self::Q_IF_ALL, 'shift' => 1, 'pop' => 1, @@ -516,7 +516,7 @@ $code } /* присваивание (только lvalue) */ - function function_set($l, $r) { return "($l = $r)"; } + function function_set($l, $r) { return "self::void($l = $r)"; } /* объединение массивов */ function function_array_merge() { $a = func_get_args(); return "array_merge(" . join(",", $a) . ")"; } @@ -620,6 +620,7 @@ $code } /* map() */ + // FIXME: Я думаю, что это не работает :-) function function_map($f) { if (!method_exists($this, "function_$f")) @@ -1336,7 +1337,7 @@ class VMXTemplateParser extends lime_parser { public $i = array( array( 'chunks' => 's 1', - 'template' => 's 190', + 'template' => 's 171', "'start'" => "a 'start'", 'literal' => 'r 1', '' => 's 6' @@ -1432,13 +1432,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 31', @@ -1461,9 +1460,9 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46', '-->' => 'r 31', ')' => 'r 31', - ']' => 'r 31', - '=>' => 'r 31', ',' => 'r 31', + '=>' => 'r 31', + ']' => 'r 31', '}}' => 'r 31', '}' => 'r 31' ), @@ -1474,13 +1473,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 32', @@ -1503,9 +1501,9 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46', '-->' => 'r 32', ')' => 'r 32', - ']' => 'r 32', - '=>' => 'r 32', ',' => 'r 32', + '=>' => 'r 32', + ']' => 'r 32', '}}' => 'r 32', '}' => 'r 32' ), @@ -1516,13 +1514,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 33', @@ -1545,9 +1542,9 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46', '-->' => 'r 33', ')' => 'r 33', - ']' => 'r 33', - '=>' => 'r 33', ',' => 'r 33', + '=>' => 'r 33', + ']' => 'r 33', '}}' => 'r 33', '}' => 'r 33' ), @@ -1558,13 +1555,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 34', @@ -1587,9 +1583,9 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46', '-->' => 'r 34', ')' => 'r 34', - ']' => 'r 34', - '=>' => 'r 34', ',' => 'r 34', + '=>' => 'r 34', + ']' => 'r 34', '}}' => 'r 34', '}' => 'r 34' ), @@ -1600,13 +1596,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 35', @@ -1629,9 +1624,9 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46', '-->' => 'r 35', ')' => 'r 35', - ']' => 'r 35', - '=>' => 'r 35', ',' => 'r 35', + '=>' => 'r 35', + ']' => 'r 35', '}}' => 'r 35', '}' => 'r 35' ), @@ -1642,13 +1637,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 36', @@ -1671,9 +1665,9 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46', '-->' => 'r 36', ')' => 'r 36', - ']' => 'r 36', - '=>' => 'r 36', ',' => 'r 36', + '=>' => 'r 36', + ']' => 'r 36', '}}' => 'r 36', '}' => 'r 36' ), @@ -1684,13 +1678,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 37', @@ -1707,9 +1700,9 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46', '-->' => 'r 37', ')' => 'r 37', - ']' => 'r 37', - '=>' => 'r 37', ',' => 'r 37', + '=>' => 'r 37', + ']' => 'r 37', '}}' => 'r 37', '}' => 'r 37' ), @@ -1720,13 +1713,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 38', @@ -1743,9 +1735,9 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46', '-->' => 'r 38', ')' => 'r 38', - ']' => 'r 38', - '=>' => 'r 38', ',' => 'r 38', + '=>' => 'r 38', + ']' => 'r 38', '}}' => 'r 38', '}' => 'r 38' ), @@ -1756,13 +1748,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 39', @@ -1779,9 +1770,9 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46', '-->' => 'r 39', ')' => 'r 39', - ']' => 'r 39', - '=>' => 'r 39', ',' => 'r 39', + '=>' => 'r 39', + ']' => 'r 39', '}}' => 'r 39', '}' => 'r 39' ), @@ -1792,13 +1783,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 40', @@ -1815,9 +1805,9 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46', '-->' => 'r 40', ')' => 'r 40', - ']' => 'r 40', - '=>' => 'r 40', ',' => 'r 40', + '=>' => 'r 40', + ']' => 'r 40', '}}' => 'r 40', '}' => 'r 40' ), @@ -1828,13 +1818,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 41', @@ -1851,9 +1840,9 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46', '-->' => 'r 41', ')' => 'r 41', - ']' => 'r 41', - '=>' => 'r 41', ',' => 'r 41', + '=>' => 'r 41', + ']' => 'r 41', '}}' => 'r 41', '}' => 'r 41' ), @@ -1864,13 +1853,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 42', @@ -1887,9 +1875,9 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46', '-->' => 'r 42', ')' => 'r 42', - ']' => 'r 42', - '=>' => 'r 42', ',' => 'r 42', + '=>' => 'r 42', + ']' => 'r 42', '}}' => 'r 42', '}' => 'r 42' ), @@ -1900,13 +1888,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 43', @@ -1929,9 +1916,9 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46', '-->' => 'r 43', ')' => 'r 43', - ']' => 'r 43', - '=>' => 'r 43', ',' => 'r 43', + '=>' => 'r 43', + ']' => 'r 43', '}}' => 'r 43', '}' => 'r 43' ), @@ -1942,13 +1929,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 44', @@ -1971,9 +1957,9 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46', '-->' => 'r 44', ')' => 'r 44', - ']' => 'r 44', - '=>' => 'r 44', ',' => 'r 44', + '=>' => 'r 44', + ']' => 'r 44', '}}' => 'r 44', '}' => 'r 44' ), @@ -1984,13 +1970,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 45', @@ -2013,9 +1998,9 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46', '-->' => 'r 45', ')' => 'r 45', - ']' => 'r 45', - '=>' => 'r 45', ',' => 'r 45', + '=>' => 'r 45', + ']' => 'r 45', '}}' => 'r 45', '}' => 'r 45' ), @@ -2026,13 +2011,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '' => 'r 46' @@ -2044,13 +2028,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '' => 'r 47' @@ -2062,13 +2045,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '' => 'r 48' @@ -2083,13 +2065,12 @@ class VMXTemplateParser extends lime_parser { 'p11' => 's 51', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '' => 'r 51' @@ -2104,13 +2085,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 's 12', @@ -2135,38 +2115,38 @@ class VMXTemplateParser extends lime_parser { ), array( 'varpath' => 's 56', - '.' => 'r 83', - '[' => 'r 83', - '%' => 'r 83', - '/' => 'r 83', - '*' => 'r 83', - '&' => 'r 83', - '-' => 'r 83', - '+' => 'r 83', - '>=' => 'r 83', - '<=' => 'r 83', - '>' => 'r 83', - '<' => 'r 83', - '!=' => 'r 83', - '==' => 'r 83', - 'AND' => 'r 83', - '&&' => 'r 83', - 'XOR' => 'r 83', - 'OR' => 'r 83', - '||' => 'r 83', - '..' => 'r 83', - '-->' => 'r 83', - ')' => 'r 83', - ']' => 'r 83', - '=>' => 'r 83', - ',' => 'r 83', - '}}' => 'r 83', - '}' => 'r 83' + '.' => 'r 82', + '[' => 'r 82', + '%' => 'r 82', + '/' => 'r 82', + '*' => 'r 82', + '&' => 'r 82', + '-' => 'r 82', + '+' => 'r 82', + '>=' => 'r 82', + '<=' => 'r 82', + '>' => 'r 82', + '<' => 'r 82', + '!=' => 'r 82', + '==' => 'r 82', + 'AND' => 'r 82', + '&&' => 'r 82', + 'XOR' => 'r 82', + 'OR' => 'r 82', + '||' => 'r 82', + '..' => 'r 82', + '-->' => 'r 82', + ')' => 'r 82', + ',' => 'r 82', + '=>' => 'r 82', + ']' => 'r 82', + '}}' => 'r 82', + '}' => 'r 82' ), array( '.' => 's 57', - '[' => 's 75', - 'varpart' => 's 120', + '[' => 's 73', + 'varpart' => 's 101', '%' => 'r 53', '/' => 'r 53', '*' => 'r 53', @@ -2187,96 +2167,61 @@ class VMXTemplateParser extends lime_parser { '..' => 'r 53', '-->' => 'r 53', ')' => 'r 53', - ']' => 'r 53', - '=>' => 'r 53', ',' => 'r 53', + '=>' => 'r 53', + ']' => 'r 53', '}}' => 'r 53', '}' => 'r 53' ), array( - 'namekw' => 's 58', - 'name' => 's 59', - 'IF' => 's 60', - 'END' => 's 61', - 'ELSE' => 's 62', - 'ELSIF' => 's 63', - 'ELSEIF' => 's 64', - 'SET' => 's 65', - 'OR' => 's 66', - 'XOR' => 's 67', - 'AND' => 's 68', - 'NOT' => 's 69', - 'FUNCTION' => 's 70', - 'BLOCK' => 's 71', - 'MACRO' => 's 72', - 'FOR' => 's 73', - 'FOREACH' => 's 74' + 'name' => 's 58' ), array( - '' => 'r 81' + '(' => 's 59', + '.' => 'r 78', + '[' => 'r 78', + '%' => 'r 78', + '/' => 'r 78', + '*' => 'r 78', + '&' => 'r 78', + '-' => 'r 78', + '+' => 'r 78', + '>=' => 'r 78', + '<=' => 'r 78', + '>' => 'r 78', + '<' => 'r 78', + '!=' => 'r 78', + '==' => 'r 78', + 'AND' => 'r 78', + '&&' => 'r 78', + 'XOR' => 'r 78', + 'OR' => 'r 78', + '||' => 'r 78', + '..' => 'r 78', + '-->' => 'r 78', + ')' => 'r 78', + ',' => 'r 78', + '=>' => 'r 78', + '=' => 'r 78', + ']' => 'r 78', + '}}' => 'r 78', + '}' => 'r 78' ), array( - '' => 'r 85' - ), - array( - '' => 'r 86' - ), - array( - '' => 'r 87' - ), - array( - '' => 'r 88' - ), - array( - '' => 'r 89' - ), - array( - '' => 'r 90' - ), - array( - '' => 'r 91' - ), - array( - '' => 'r 92' - ), - array( - '' => 'r 93' - ), - array( - '' => 'r 94' - ), - array( - '' => 'r 95' - ), - array( - '' => 'r 96' - ), - array( - '' => 'r 97' - ), - array( - '' => 'r 98' - ), - array( - '' => 'r 99' - ), - array( - '' => 'r 100' - ), - array( - 'exp' => 's 76', + 'exp' => 's 60', 'p10' => 's 48', 'p11' => 's 49', '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76', + ')' => 's 98', + 'list' => 's 99' ), array( '..' => 's 12', @@ -2297,22 +2242,34 @@ class VMXTemplateParser extends lime_parser { '*' => 's 42', '/' => 's 44', '%' => 's 46', - ']' => 's 77' + ',' => 's 61', + ')' => 'r 63' ), array( - '' => 'r 82' + 'exp' => 's 60', + 'p10' => 's 48', + 'p11' => 's 49', + '-' => 's 50', + 'nonbrace' => 's 52', + '(' => 's 53', + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76', + 'list' => 's 97' ), array( 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'p11' => 's 79', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'p11' => 's 63', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '' => 'r 54' @@ -2320,103 +2277,100 @@ class VMXTemplateParser extends lime_parser { array( 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - 'p11' => 's 81', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + 'p11' => 's 65', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '' => 'r 55' ), array( - 'exp' => 's 83', + 'exp' => 's 67', 'p10' => 's 48', 'p11' => 's 49', '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'hash' => 's 114', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96', - 'pair' => 's 116', - 'gtpair' => 's 119', + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'hash' => 's 91', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76', + 'pair' => 's 93', + 'gtpair' => 's 96', + '}' => 'r 70' + ), + array( + '..' => 's 12', + '||' => 's 14', + 'OR' => 's 16', + 'XOR' => 's 18', + '&&' => 's 20', + 'AND' => 's 22', + '==' => 's 24', + '!=' => 's 26', + '<' => 's 28', + '>' => 's 30', + '<=' => 's 32', + '>=' => 's 34', + '+' => 's 36', + '-' => 's 38', + '&' => 's 40', + '*' => 's 42', + '/' => 's 44', + '%' => 's 46', + ',' => 's 68', + '=>' => 's 79' + ), + array( + 'exp' => 's 69', + 'p10' => 's 48', + 'p11' => 's 49', + '-' => 's 50', + 'nonbrace' => 's 52', + '(' => 's 53', + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' + ), + array( + '..' => 's 12', + '||' => 's 14', + 'OR' => 's 16', + 'XOR' => 's 18', + '&&' => 's 20', + 'AND' => 's 22', + '==' => 's 24', + '!=' => 's 26', + '<' => 's 28', + '>' => 's 30', + '<=' => 's 32', + '>=' => 's 34', + '+' => 's 36', + '-' => 's 38', + '&' => 's 40', + '*' => 's 42', + '/' => 's 44', + '%' => 's 46', + ',' => 'r 73', '}' => 'r 73' ), - array( - '..' => 's 12', - '||' => 's 14', - 'OR' => 's 16', - 'XOR' => 's 18', - '&&' => 's 20', - 'AND' => 's 22', - '==' => 's 24', - '!=' => 's 26', - '<' => 's 28', - '>' => 's 30', - '<=' => 's 32', - '>=' => 's 34', - '+' => 's 36', - '-' => 's 38', - '&' => 's 40', - '*' => 's 42', - '/' => 's 44', - '%' => 's 46', - ',' => 's 84', - '=>' => 's 102' - ), - array( - 'exp' => 's 85', - 'p10' => 's 48', - 'p11' => 's 49', - '-' => 's 50', - 'nonbrace' => 's 52', - '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' - ), - array( - '..' => 's 12', - '||' => 's 14', - 'OR' => 's 16', - 'XOR' => 's 18', - '&&' => 's 20', - 'AND' => 's 22', - '==' => 's 24', - '!=' => 's 26', - '<' => 's 28', - '>' => 's 30', - '<=' => 's 32', - '>=' => 's 34', - '+' => 's 36', - '-' => 's 38', - '&' => 's 40', - '*' => 's 42', - '/' => 's 44', - '%' => 's 46', - ',' => 'r 76', - '}' => 'r 76' - ), array( '' => 'r 57' ), array( - '.' => 's 88', - 'varpart' => 's 90', - '[' => 's 75', + 'varpart' => 's 72', + '.' => 's 57', + '[' => 's 73', '%' => 'r 58', '/' => 'r 58', '*' => 'r 58', @@ -2437,118 +2391,28 @@ class VMXTemplateParser extends lime_parser { '..' => 'r 58', '-->' => 'r 58', ')' => 'r 58', - ']' => 'r 58', - '=>' => 'r 58', ',' => 'r 58', + '=>' => 'r 58', + ']' => 'r 58', '}}' => 'r 58', '}' => 'r 58' ), array( - 'namekw' => 's 89', - 'name' => 's 59', - 'IF' => 's 60', - 'END' => 's 61', - 'ELSE' => 's 62', - 'ELSIF' => 's 63', - 'ELSEIF' => 's 64', - 'SET' => 's 65', - 'OR' => 's 66', - 'XOR' => 's 67', - 'AND' => 's 68', - 'NOT' => 's 69', - 'FUNCTION' => 's 70', - 'BLOCK' => 's 71', - 'MACRO' => 's 72', - 'FOR' => 's 73', - 'FOREACH' => 's 74' + '' => 'r 77' ), array( - '(' => 'r 65', - '.' => 'r 81', - '[' => 'r 81', - '%' => 'r 81', - '/' => 'r 81', - '*' => 'r 81', - '&' => 'r 81', - '-' => 'r 81', - '+' => 'r 81', - '>=' => 'r 81', - '<=' => 'r 81', - '>' => 'r 81', - '<' => 'r 81', - '!=' => 'r 81', - '==' => 'r 81', - 'AND' => 'r 81', - '&&' => 'r 81', - 'XOR' => 'r 81', - 'OR' => 'r 81', - '||' => 'r 81', - '..' => 'r 81', - '-->' => 'r 81', - ')' => 'r 81', - ']' => 'r 81', - '=>' => 'r 81', - ',' => 'r 81', - '}}' => 'r 81', - '}' => 'r 81' - ), - array( - '' => 'r 80' - ), - array( - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - '(' => 's 92', - 'nonbrace' => 's 113', - 'method' => 's 96', - '.' => 'r 79', - '[' => 'r 79', - '%' => 'r 79', - '/' => 'r 79', - '*' => 'r 79', - '&' => 'r 79', - '-' => 'r 79', - '+' => 'r 79', - '>=' => 'r 79', - '<=' => 'r 79', - '>' => 'r 79', - '<' => 'r 79', - '!=' => 'r 79', - '==' => 'r 79', - 'AND' => 'r 79', - '&&' => 'r 79', - 'XOR' => 'r 79', - 'OR' => 'r 79', - '||' => 'r 79', - '..' => 'r 79', - '-->' => 'r 79', - ')' => 'r 79', - ']' => 'r 79', - '=>' => 'r 79', - ',' => 'r 79', - '}}' => 'r 79', - '}' => 'r 79' - ), - array( - 'exp' => 's 93', + 'exp' => 's 74', 'p10' => 's 48', 'p11' => 's 49', '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - ')' => 's 104', - 'list' => 's 105', - 'gthash' => 's 107', - 'method' => 's 96', - 'gtpair' => 's 109' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 's 12', @@ -2569,25 +2433,63 @@ class VMXTemplateParser extends lime_parser { '*' => 's 42', '/' => 's 44', '%' => 's 46', - ',' => 's 94', - '=>' => 's 102', - ')' => 'r 66' + ']' => 's 75' ), array( - 'exp' => 's 95', + '' => 'r 79' + ), + array( + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76', + '(' => 's 77', + 'nonbrace' => 's 90', + '.' => 'r 76', + '[' => 'r 76', + '%' => 'r 76', + '/' => 'r 76', + '*' => 'r 76', + '&' => 'r 76', + '-' => 'r 76', + '+' => 'r 76', + '>=' => 'r 76', + '<=' => 'r 76', + '>' => 'r 76', + '<' => 'r 76', + '!=' => 'r 76', + '==' => 'r 76', + 'AND' => 'r 76', + '&&' => 'r 76', + 'XOR' => 'r 76', + 'OR' => 'r 76', + '||' => 'r 76', + '..' => 'r 76', + '-->' => 'r 76', + ')' => 'r 76', + ',' => 'r 76', + '=>' => 'r 76', + ']' => 'r 76', + '}}' => 'r 76', + '}' => 'r 76' + ), + array( + 'exp' => 's 78', 'p10' => 's 48', 'p11' => 's 49', '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96', - 'list' => 's 101' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76', + ')' => 's 81', + 'list' => 's 82', + 'gthash' => 's 84', + 'gtpair' => 's 86' ), array( '..' => 's 12', @@ -2608,40 +2510,157 @@ class VMXTemplateParser extends lime_parser { '*' => 's 42', '/' => 's 44', '%' => 's 46', - ',' => 's 94', - ')' => 'r 66' + ',' => 's 61', + '=>' => 's 79', + ')' => 'r 63' ), array( - '(' => 's 97' - ), - array( - 'exp' => 's 95', + 'exp' => 's 80', 'p10' => 's 48', 'p11' => 's 49', '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96', - ')' => 's 98', - 'list' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( - '' => 'r 63' + '..' => 's 12', + '||' => 's 14', + 'OR' => 's 16', + 'XOR' => 's 18', + '&&' => 's 20', + 'AND' => 's 22', + '==' => 's 24', + '!=' => 's 26', + '<' => 's 28', + '>' => 's 30', + '<=' => 's 32', + '>=' => 's 34', + '+' => 's 36', + '-' => 's 38', + '&' => 's 40', + '*' => 's 42', + '/' => 's 44', + '%' => 's 46', + ',' => 'r 75', + '}' => 'r 75', + ')' => 'r 75' ), array( - ')' => 's 100' + '' => 'r 59' + ), + array( + ')' => 's 83' + ), + array( + '' => 'r 60' + ), + array( + ')' => 's 85' + ), + array( + '' => 'r 61' + ), + array( + ',' => 's 87', + ')' => 'r 71' + ), + array( + 'exp' => 's 88', + 'p10' => 's 48', + 'p11' => 's 49', + '-' => 's 50', + 'nonbrace' => 's 52', + '(' => 's 53', + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76', + 'gtpair' => 's 86', + 'gthash' => 's 89' + ), + array( + '..' => 's 12', + '||' => 's 14', + 'OR' => 's 16', + 'XOR' => 's 18', + '&&' => 's 20', + 'AND' => 's 22', + '==' => 's 24', + '!=' => 's 26', + '<' => 's 28', + '>' => 's 30', + '<=' => 's 32', + '>=' => 's 34', + '+' => 's 36', + '-' => 's 38', + '&' => 's 40', + '*' => 's 42', + '/' => 's 44', + '%' => 's 46', + '=>' => 's 79' + ), + array( + '' => 'r 72' + ), + array( + '' => 'r 62' + ), + array( + '}' => 's 92' + ), + array( + '' => 'r 56' + ), + array( + ',' => 's 94', + '}' => 'r 68' + ), + array( + 'exp' => 's 67', + 'p10' => 's 48', + 'p11' => 's 49', + '-' => 's 50', + 'nonbrace' => 's 52', + '(' => 's 53', + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76', + 'pair' => 's 93', + 'hash' => 's 95', + 'gtpair' => 's 96', + '}' => 'r 70' + ), + array( + '' => 'r 69' + ), + array( + '' => 'r 74' ), array( '' => 'r 64' ), array( - '' => 'r 67' + '' => 'r 80' + ), + array( + ')' => 's 100' + ), + array( + '' => 'r 81' + ), + array( + '' => 'r 83' ), array( 'exp' => 's 103', @@ -2650,155 +2669,15 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( - '..' => 's 12', - '||' => 's 14', - 'OR' => 's 16', - 'XOR' => 's 18', - '&&' => 's 20', - 'AND' => 's 22', - '==' => 's 24', - '!=' => 's 26', - '<' => 's 28', - '>' => 's 30', - '<=' => 's 32', - '>=' => 's 34', - '+' => 's 36', - '-' => 's 38', - '&' => 's 40', - '*' => 's 42', - '/' => 's 44', - '%' => 's 46', - ',' => 'r 78', - '}' => 'r 78', - ')' => 'r 78' - ), - array( - '' => 'r 59' - ), - array( - ')' => 's 106' - ), - array( - '' => 'r 60' - ), - array( - ')' => 's 108' - ), - array( - '' => 'r 61' - ), - array( - ',' => 's 110', - ')' => 'r 74' - ), - array( - 'exp' => 's 111', - 'p10' => 's 48', - 'p11' => 's 49', - '-' => 's 50', - 'nonbrace' => 's 52', - '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96', - 'gtpair' => 's 109', - 'gthash' => 's 112' - ), - array( - '..' => 's 12', - '||' => 's 14', - 'OR' => 's 16', - 'XOR' => 's 18', - '&&' => 's 20', - 'AND' => 's 22', - '==' => 's 24', - '!=' => 's 26', - '<' => 's 28', - '>' => 's 30', - '<=' => 's 32', - '>=' => 's 34', - '+' => 's 36', - '-' => 's 38', - '&' => 's 40', - '*' => 's 42', - '/' => 's 44', - '%' => 's 46', - '=>' => 's 102' - ), - array( - '' => 'r 75' - ), - array( - '' => 'r 62' - ), - array( - '}' => 's 115' - ), - array( - '' => 'r 56' - ), - array( - ',' => 's 117', - '}' => 'r 71' - ), - array( - 'exp' => 's 83', - 'p10' => 's 48', - 'p11' => 's 49', - '-' => 's 50', - 'nonbrace' => 's 52', - '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96', - 'pair' => 's 116', - 'hash' => 's 118', - 'gtpair' => 's 119', - '}' => 'r 73' - ), - array( - '' => 'r 72' - ), - array( - '' => 'r 77' - ), - array( - '' => 'r 84' - ), - array( - 'exp' => 's 122', - 'p10' => 's 48', - 'p11' => 's 49', - '-' => 's 50', - 'nonbrace' => 's 52', - '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' - ), - array( - '-->' => 's 123', + '-->' => 's 104', '..' => 's 12', '||' => 's 14', 'OR' => 's 16', @@ -2819,7 +2698,7 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46' ), array( - 'chunks' => 's 124', + 'chunks' => 's 105', 'literal' => 'r 1', '' => 's 128', - 'IF' => 's 172' + '-->' => 's 109', + 'IF' => 's 153' ), array( - 'chunks' => 's 129', + 'chunks' => 's 110', 'literal' => 'r 1', '' => 's 136', - 'varpart' => 's 90', + '=' => 's 115', + '-->' => 's 117', + 'varpart' => 's 72', '.' => 's 57', - '[' => 's 75' + '[' => 's 73' ), array( - 'exp' => 's 135', + 'exp' => 's 116', 'p10' => 's 48', 'p11' => 's 49', '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 's 12', @@ -2967,7 +2843,7 @@ class VMXTemplateParser extends lime_parser { '-->' => 'r 18' ), array( - 'chunks' => 's 137', + 'chunks' => 's 118', 'literal' => 'r 1', '' => 's 147' + '=' => 's 126', + '-->' => 's 128' ), array( - 'exp' => 's 146', + 'exp' => 's 127', 'p10' => 's 48', 'p11' => 's 49', '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 78', - 'NOT' => 's 80', - '{' => 's 82', - 'literal' => 's 86', - 'varref' => 's 87', - 'name' => 's 91', - 'method' => 's 96' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 's 12', @@ -3067,7 +2941,7 @@ class VMXTemplateParser extends lime_parser { '-->' => 'r 20' ), array( - 'chunks' => 's 148', + 'chunks' => 's 129', 'literal' => 'r 1', '' => 's 155', + '-->' => 's 136', '..' => 's 12', '||' => 's 14', 'OR' => 's 16', @@ -3159,7 +3031,7 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46' ), array( - 'chunks' => 's 156', + 'chunks' => 's 137', 'literal' => 'r 1', '' => 's 175', + '-->' => 's 156', '..' => 's 12', '||' => 's 14', 'OR' => 's 16', @@ -3325,7 +3194,7 @@ class VMXTemplateParser extends lime_parser { '' => 'r 30' ), array( - 'chunks' => 's 179', + 'chunks' => 's 160', 'literal' => 'r 1', '' => 's 183', - 'IF' => 's 172' + '-->' => 's 164', + 'IF' => 's 153' ), array( - 'chunks' => 's 184', + 'chunks' => 's 165', 'literal' => 'r 1', '' => 's 189', + '-->' => 's 170', '..' => 's 12', '||' => 's 14', 'OR' => 's 16', @@ -3464,7 +3330,7 @@ class VMXTemplateParser extends lime_parser { '' => 'r 17' ), array( - '' => 'r 101' + '' => 'r 84' ) ); public $d = array( @@ -4021,46 +3887,16 @@ class VMXTemplateParser extends lime_parser { $result = $this->template->compile_function($f, [ $arg ]); } - function reduce_63_nonbrace_8($tokens, &$result) { - // (63) nonbrace := method ( ) - $result = reset($tokens); - $f = &$tokens[0]; - - $result = [ $f.'()', true ]; - } - - function reduce_64_nonbrace_9($tokens, &$result) { - // (64) nonbrace := method ( list ) - $result = reset($tokens); - $f = &$tokens[0]; - $args = &$tokens[2]; - - $argv = []; - foreach ($args as $a) { - $argv[] = $a[0]; - } - $result = [ $f.'('.implode(', ', $argv).')', true ]; - } - - function reduce_65_method_1($tokens, &$result) { - // (65) method := varref . namekw - $result = reset($tokens); - $v = &$tokens[0]; - $m = &$tokens[2]; - - $result = $v[0].'->'.$m; - } - - function reduce_66_list_1($tokens, &$result) { - // (66) list := exp + function reduce_63_list_1($tokens, &$result) { + // (63) list := exp $result = reset($tokens); $e = &$tokens[0]; $result = [ $e ]; } - function reduce_67_list_2($tokens, &$result) { - // (67) list := exp , list + function reduce_64_list_2($tokens, &$result) { + // (64) list := exp , list $result = reset($tokens); $e = &$tokens[0]; $l = &$tokens[2]; @@ -4069,16 +3905,16 @@ class VMXTemplateParser extends lime_parser { array_unshift($result, $e); } - function reduce_68_arglist_1($tokens, &$result) { - // (68) arglist := name + function reduce_65_arglist_1($tokens, &$result) { + // (65) arglist := name $result = reset($tokens); $n = &$tokens[0]; $result = [ $n ]; } - function reduce_69_arglist_2($tokens, &$result) { - // (69) arglist := name , arglist + function reduce_66_arglist_2($tokens, &$result) { + // (66) arglist := name , arglist $result = reset($tokens); $n = &$tokens[0]; $args = &$tokens[2]; @@ -4087,20 +3923,20 @@ class VMXTemplateParser extends lime_parser { array_unshift($result, $n); } - function reduce_70_arglist_3($tokens, &$result) { - // (70) arglist := ε + function reduce_67_arglist_3($tokens, &$result) { + // (67) arglist := ε $result = reset($tokens); $result = []; } - function reduce_71_hash_1($tokens, &$result) { - // (71) hash := pair + function reduce_68_hash_1($tokens, &$result) { + // (68) hash := pair $result = $tokens[0]; } - function reduce_72_hash_2($tokens, &$result) { - // (72) hash := pair , hash + function reduce_69_hash_2($tokens, &$result) { + // (69) hash := pair , hash $result = reset($tokens); $p = &$tokens[0]; $h = &$tokens[2]; @@ -4108,23 +3944,20 @@ class VMXTemplateParser extends lime_parser { $result = $p . ', ' . $h; } - function reduce_73_hash_3($tokens, &$result) { - // (73) hash := ε + function reduce_70_hash_3($tokens, &$result) { + // (70) hash := ε $result = reset($tokens); $result = ''; } - function reduce_74_gthash_1($tokens, &$result) { - // (74) gthash := gtpair - $result = reset($tokens); - $p = &$tokens[0]; - - $result = $p; + function reduce_71_gthash_1($tokens, &$result) { + // (71) gthash := gtpair + $result = $tokens[0]; } - function reduce_75_gthash_2($tokens, &$result) { - // (75) gthash := gtpair , gthash + function reduce_72_gthash_2($tokens, &$result) { + // (72) gthash := gtpair , gthash $result = reset($tokens); $p = &$tokens[0]; $h = &$tokens[2]; @@ -4132,8 +3965,8 @@ class VMXTemplateParser extends lime_parser { $result = $p . ', ' . $h; } - function reduce_76_pair_1($tokens, &$result) { - // (76) pair := exp , exp + function reduce_73_pair_1($tokens, &$result) { + // (73) pair := exp , exp $result = reset($tokens); $k = &$tokens[0]; $v = &$tokens[2]; @@ -4141,13 +3974,13 @@ class VMXTemplateParser extends lime_parser { $result = $k[0] . ' => ' . $v[0]; } - function reduce_77_pair_2($tokens, &$result) { - // (77) pair := gtpair + function reduce_74_pair_2($tokens, &$result) { + // (74) pair := gtpair $result = $tokens[0]; } - function reduce_78_gtpair_1($tokens, &$result) { - // (78) gtpair := exp => exp + function reduce_75_gtpair_1($tokens, &$result) { + // (75) gtpair := exp => exp $result = reset($tokens); $k = &$tokens[0]; $v = &$tokens[2]; @@ -4155,16 +3988,16 @@ class VMXTemplateParser extends lime_parser { $result = $k[0] . ' => ' . $v[0]; } - function reduce_79_varref_1($tokens, &$result) { - // (79) varref := name + function reduce_76_varref_1($tokens, &$result) { + // (76) varref := name $result = reset($tokens); $n = &$tokens[0]; $result = [ "\$this->tpldata['".addcslashes($n, "\\\'")."']", false ]; } - function reduce_80_varref_2($tokens, &$result) { - // (80) varref := varref varpart + function reduce_77_varref_2($tokens, &$result) { + // (77) varref := varref varpart $result = reset($tokens); $v = &$tokens[0]; $p = &$tokens[1]; @@ -4172,31 +4005,52 @@ class VMXTemplateParser extends lime_parser { $result = [ $v[0] . $p, false ]; } - function reduce_81_varpart_1($tokens, &$result) { - // (81) varpart := . namekw + function reduce_78_varpart_1($tokens, &$result) { + // (78) varpart := . name $result = reset($tokens); $n = &$tokens[1]; $result = "['".addcslashes($n, "\\\'")."']"; } - function reduce_82_varpart_2($tokens, &$result) { - // (82) varpart := [ exp ] + function reduce_79_varpart_2($tokens, &$result) { + // (79) varpart := [ exp ] $result = reset($tokens); $e = &$tokens[1]; $result = '['.$e[0].']'; } - function reduce_83_varpath_1($tokens, &$result) { - // (83) varpath := ε + function reduce_80_varpart_3($tokens, &$result) { + // (80) varpart := . name ( ) + $result = reset($tokens); + $n = &$tokens[1]; + + $result = '->'.$n.'()'; + } + + function reduce_81_varpart_4($tokens, &$result) { + // (81) varpart := . name ( list ) + $result = reset($tokens); + $n = &$tokens[1]; + $l = &$tokens[3]; + + $argv = []; + foreach ($args as $a) { + $argv[] = $a[0]; + } + $result = '->'.$n.'('.implode(', ', $argv).')'; + } + + function reduce_82_varpath_1($tokens, &$result) { + // (82) varpath := ε $result = reset($tokens); $result = ''; } - function reduce_84_varpath_2($tokens, &$result) { - // (84) varpath := varpath varpart + function reduce_83_varpath_2($tokens, &$result) { + // (83) varpath := varpath varpart $result = reset($tokens); $a = &$tokens[0]; $p = &$tokens[1]; @@ -4204,88 +4058,8 @@ class VMXTemplateParser extends lime_parser { $result = $a . $p; } - function reduce_85_namekw_1($tokens, &$result) { - // (85) namekw := name - $result = reset($tokens); - } - - function reduce_86_namekw_2($tokens, &$result) { - // (86) namekw := IF - $result = reset($tokens); - } - - function reduce_87_namekw_3($tokens, &$result) { - // (87) namekw := END - $result = reset($tokens); - } - - function reduce_88_namekw_4($tokens, &$result) { - // (88) namekw := ELSE - $result = reset($tokens); - } - - function reduce_89_namekw_5($tokens, &$result) { - // (89) namekw := ELSIF - $result = reset($tokens); - } - - function reduce_90_namekw_6($tokens, &$result) { - // (90) namekw := ELSEIF - $result = reset($tokens); - } - - function reduce_91_namekw_7($tokens, &$result) { - // (91) namekw := SET - $result = reset($tokens); - } - - function reduce_92_namekw_8($tokens, &$result) { - // (92) namekw := OR - $result = reset($tokens); - } - - function reduce_93_namekw_9($tokens, &$result) { - // (93) namekw := XOR - $result = reset($tokens); - } - - function reduce_94_namekw_10($tokens, &$result) { - // (94) namekw := AND - $result = reset($tokens); - } - - function reduce_95_namekw_11($tokens, &$result) { - // (95) namekw := NOT - $result = reset($tokens); - } - - function reduce_96_namekw_12($tokens, &$result) { - // (96) namekw := FUNCTION - $result = reset($tokens); - } - - function reduce_97_namekw_13($tokens, &$result) { - // (97) namekw := BLOCK - $result = reset($tokens); - } - - function reduce_98_namekw_14($tokens, &$result) { - // (98) namekw := MACRO - $result = reset($tokens); - } - - function reduce_99_namekw_15($tokens, &$result) { - // (99) namekw := FOR - $result = reset($tokens); - } - - function reduce_100_namekw_16($tokens, &$result) { - // (100) namekw := FOREACH - $result = reset($tokens); - } - - function reduce_101_start_1($tokens, &$result) { - // (101) 'start' := template + function reduce_84_start_1($tokens, &$result) { + // (84) 'start' := template $result = reset($tokens); } @@ -4353,45 +4127,28 @@ class VMXTemplateParser extends lime_parser { 'reduce_60_nonbrace_5', 'reduce_61_nonbrace_6', 'reduce_62_nonbrace_7', - 'reduce_63_nonbrace_8', - 'reduce_64_nonbrace_9', - 'reduce_65_method_1', - 'reduce_66_list_1', - 'reduce_67_list_2', - 'reduce_68_arglist_1', - 'reduce_69_arglist_2', - 'reduce_70_arglist_3', - 'reduce_71_hash_1', - 'reduce_72_hash_2', - 'reduce_73_hash_3', - 'reduce_74_gthash_1', - 'reduce_75_gthash_2', - 'reduce_76_pair_1', - 'reduce_77_pair_2', - 'reduce_78_gtpair_1', - 'reduce_79_varref_1', - 'reduce_80_varref_2', - 'reduce_81_varpart_1', - 'reduce_82_varpart_2', - 'reduce_83_varpath_1', - 'reduce_84_varpath_2', - 'reduce_85_namekw_1', - 'reduce_86_namekw_2', - 'reduce_87_namekw_3', - 'reduce_88_namekw_4', - 'reduce_89_namekw_5', - 'reduce_90_namekw_6', - 'reduce_91_namekw_7', - 'reduce_92_namekw_8', - 'reduce_93_namekw_9', - 'reduce_94_namekw_10', - 'reduce_95_namekw_11', - 'reduce_96_namekw_12', - 'reduce_97_namekw_13', - 'reduce_98_namekw_14', - 'reduce_99_namekw_15', - 'reduce_100_namekw_16', - 'reduce_101_start_1' + 'reduce_63_list_1', + 'reduce_64_list_2', + 'reduce_65_arglist_1', + 'reduce_66_arglist_2', + 'reduce_67_arglist_3', + 'reduce_68_hash_1', + 'reduce_69_hash_2', + 'reduce_70_hash_3', + 'reduce_71_gthash_1', + 'reduce_72_gthash_2', + 'reduce_73_pair_1', + 'reduce_74_pair_2', + 'reduce_75_gtpair_1', + 'reduce_76_varref_1', + 'reduce_77_varref_2', + 'reduce_78_varpart_1', + 'reduce_79_varpart_2', + 'reduce_80_varpart_3', + 'reduce_81_varpart_4', + 'reduce_82_varpath_1', + 'reduce_83_varpath_2', + 'reduce_84_start_1' ); public $a = array( array( @@ -4709,21 +4466,6 @@ class VMXTemplateParser extends lime_parser { 'len' => 2, 'replace' => true ), - array( - 'symbol' => 'nonbrace', - 'len' => 3, - 'replace' => true - ), - array( - 'symbol' => 'nonbrace', - 'len' => 4, - 'replace' => true - ), - array( - 'symbol' => 'method', - 'len' => 3, - 'replace' => true - ), array( 'symbol' => 'list', 'len' => 1, @@ -4809,6 +4551,16 @@ class VMXTemplateParser extends lime_parser { 'len' => 3, 'replace' => true ), + array( + 'symbol' => 'varpart', + 'len' => 4, + 'replace' => true + ), + array( + 'symbol' => 'varpart', + 'len' => 5, + 'replace' => true + ), array( 'symbol' => 'varpath', 'len' => 0, @@ -4819,86 +4571,6 @@ class VMXTemplateParser extends lime_parser { 'len' => 2, 'replace' => true ), - array( - 'symbol' => 'namekw', - 'len' => 1, - 'replace' => true - ), - array( - 'symbol' => 'namekw', - 'len' => 1, - 'replace' => true - ), - array( - 'symbol' => 'namekw', - 'len' => 1, - 'replace' => true - ), - array( - 'symbol' => 'namekw', - 'len' => 1, - 'replace' => true - ), - array( - 'symbol' => 'namekw', - 'len' => 1, - 'replace' => true - ), - array( - 'symbol' => 'namekw', - 'len' => 1, - 'replace' => true - ), - array( - 'symbol' => 'namekw', - 'len' => 1, - 'replace' => true - ), - array( - 'symbol' => 'namekw', - 'len' => 1, - 'replace' => true - ), - array( - 'symbol' => 'namekw', - 'len' => 1, - 'replace' => true - ), - array( - 'symbol' => 'namekw', - 'len' => 1, - 'replace' => true - ), - array( - 'symbol' => 'namekw', - 'len' => 1, - 'replace' => true - ), - array( - 'symbol' => 'namekw', - 'len' => 1, - 'replace' => true - ), - array( - 'symbol' => 'namekw', - 'len' => 1, - 'replace' => true - ), - array( - 'symbol' => 'namekw', - 'len' => 1, - 'replace' => true - ), - array( - 'symbol' => 'namekw', - 'len' => 1, - 'replace' => true - ), - array( - 'symbol' => 'namekw', - 'len' => 1, - 'replace' => true - ), array( 'symbol' => "'start'", 'len' => 1, @@ -4907,5 +4579,5 @@ class VMXTemplateParser extends lime_parser { ); } -// Time: 2.54209303856 seconds -// Memory: 11662892 bytes +// Time: 0.805341005325 seconds +// Memory: 10772024 bytes