From b94652978c50411adc4b9cdf67e46ec6031bb976 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Sun, 12 Apr 2015 22:55:30 +0300 Subject: [PATCH] Remove duplicate varref.method() handling from grammar, use namekw in all grammars --- VMXTemplate/Parser.pm | 3138 +++++++++++++++++++++-------------------- template.lime | 18 +- template.parser.php | 2047 ++++++++++++--------------- template.php | 2 +- template.y | 5 +- template.yp | 8 +- 6 files changed, 2573 insertions(+), 2645 deletions(-) diff --git a/VMXTemplate/Parser.pm b/VMXTemplate/Parser.pm index f6ff0f7..d76ba91 100644 --- a/VMXTemplate/Parser.pm +++ b/VMXTemplate/Parser.pm @@ -503,2072 +503,2138 @@ sub new {#State 0 DEFAULT => -2, GOTOS => { - 'chunks' => 2, - 'template' => 1 + 'chunks' => 1, + 'template' => 2 } }, {#State 1 ACTIONS => { - '' => 3 + '' => -1, + 'literal' => 3, + 'error' => 5, + "{{" => 4, + "" => 69 + } + }, + {#State 24 DEFAULT => -9 }, + {#State 25 + DEFAULT => -8 + }, + {#State 26 + ACTIONS => { + "-->" => 70, + "=" => 71 + } + }, {#State 27 - DEFAULT => -10 + DEFAULT => -29 }, {#State 28 - DEFAULT => -11 + ACTIONS => { + 'name' => 72 + } }, {#State 29 ACTIONS => { - 'name' => 70 + ".." => 39, + "-" => 38, + "OR" => 41, + "<" => 40, + "+" => 42, + "%" => 43, + "==" => 44, + ">=" => 45, + "*" => 47, + "!=" => 48, + "AND" => 49, + "&&" => 50, + "||" => 51, + "&" => 52, + "/" => 53, + "XOR" => 54, + "<=" => 55, + ">" => 56 }, - GOTOS => { - 'varref' => 69 - } + DEFAULT => -12 }, {#State 30 ACTIONS => { - 'name' => 71 + 'name' => 74 + }, + GOTOS => { + 'varref' => 73 } }, {#State 31 - DEFAULT => -29 + ACTIONS => { + 'name' => 74 + }, + GOTOS => { + 'varref' => 75 + } }, {#State 32 ACTIONS => { - "=" => 73, - "-->" => 72 + 'literal' => 15, + "-" => 9, + "(" => 17, + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 + }, + GOTOS => { + 'exp' => 76, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 } }, {#State 33 - ACTIONS => { - 'name' => 70 - }, - GOTOS => { - 'varref' => 74 - } + DEFAULT => -28 }, {#State 34 - ACTIONS => { - "-->" => 75 - } + DEFAULT => -11 }, {#State 35 - ACTIONS => { - "{" => 12, - "!" => 11, - 'name' => 19, - "NOT" => 18, - 'literal' => 10, - "(" => 17, - "-" => 14 - }, - GOTOS => { - 'p11' => 13, - 'nonbrace' => 9, - 'p10' => 15, - 'exp' => 76, - 'varref' => 16 - } + DEFAULT => -10 }, {#State 36 - DEFAULT => -8 + DEFAULT => -25 }, {#State 37 - DEFAULT => -56 + DEFAULT => -53 }, {#State 38 ACTIONS => { - "||" => 63, - "%" => 62, - "AND" => 64, - ".." => 59, - "*" => 60, - ">=" => 68, - "-" => 65, - "&&" => 67, - "==" => 66, - "," => 77, - "!=" => 50, - "&" => 51, - ">" => 55, - "=>" => 78, - "/" => 56, - "+" => 57, - "OR" => 58, - "XOR" => 52, - "<" => 53, - "<=" => 54 + 'literal' => 15, + "-" => 9, + "(" => 17, + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 + }, + GOTOS => { + 'exp' => 77, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 } }, {#State 39 - DEFAULT => -76 + ACTIONS => { + 'literal' => 15, + "-" => 9, + "(" => 17, + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 + }, + GOTOS => { + 'exp' => 78, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 + } }, {#State 40 ACTIONS => { - "," => 79 + 'literal' => 15, + "-" => 9, + "(" => 17, + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 }, - DEFAULT => -70 + GOTOS => { + 'exp' => 79, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 + } }, {#State 41 ACTIONS => { - "}" => 80 + 'literal' => 15, + "-" => 9, + "(" => 17, + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 + }, + GOTOS => { + 'exp' => 80, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 } }, {#State 42 - DEFAULT => -53 + ACTIONS => { + 'literal' => 15, + "-" => 9, + "(" => 17, + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 + }, + GOTOS => { + 'exp' => 81, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 + } }, {#State 43 - DEFAULT => -79 + ACTIONS => { + 'literal' => 15, + "-" => 9, + "(" => 17, + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 + }, + GOTOS => { + 'exp' => 82, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 + } }, {#State 44 ACTIONS => { + 'literal' => 15, + "-" => 9, "(" => 17, - "-" => 14, - "!" => 11, - "{" => 12, - "NOT" => 18, - 'name' => 19, - 'literal' => 10 + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 }, GOTOS => { - 'varref' => 16, - 'exp' => 81, - 'p10' => 15, - 'p11' => 13, - 'nonbrace' => 9 + 'exp' => 83, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 } }, {#State 45 ACTIONS => { - 'name' => 82 + 'literal' => 15, + "-" => 9, + "(" => 17, + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 + }, + GOTOS => { + 'exp' => 84, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 } }, {#State 46 - ACTIONS => { - "&" => 51, - "!=" => 50, - "<=" => 54, - "<" => 53, - "XOR" => 52, - ")" => 83, - "OR" => 58, - "+" => 57, - "/" => 56, - ">" => 55, - "*" => 60, - ".." => 59, - "AND" => 64, - "||" => 63, - "%" => 62, - "==" => 66, - "-" => 65, - "&&" => 67, - ">=" => 68 - } + DEFAULT => -7 }, {#State 47 - DEFAULT => -57 + ACTIONS => { + 'literal' => 15, + "-" => 9, + "(" => 17, + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 + }, + GOTOS => { + 'exp' => 85, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 + } }, {#State 48 ACTIONS => { - "{" => 12, - "!" => 11, - 'literal' => 10, - ")" => 87, + 'literal' => 15, + "-" => 9, "(" => 17, - "-" => 14, - "NOT" => 18, - 'name' => 19 + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 }, GOTOS => { - 'varref' => 16, - 'p10' => 15, - 'gthash' => 88, - 'gtpair' => 86, - 'p11' => 13, - 'nonbrace' => 9, - 'list' => 85, - 'exp' => 84 + 'exp' => 86, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 } }, {#State 49 - DEFAULT => -64 + ACTIONS => { + 'literal' => 15, + "-" => 9, + "(" => 17, + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 + }, + GOTOS => { + 'exp' => 87, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 + } }, {#State 50 ACTIONS => { - "-" => 14, + 'literal' => 15, + "-" => 9, "(" => 17, - 'literal' => 10, - "NOT" => 18, - 'name' => 19, - "!" => 11, - "{" => 12 + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 }, GOTOS => { - 'varref' => 16, - 'p10' => 15, - 'exp' => 89, - 'nonbrace' => 9, - 'p11' => 13 + 'exp' => 88, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 } }, {#State 51 ACTIONS => { - "-" => 14, + 'literal' => 15, + "-" => 9, "(" => 17, - 'literal' => 10, - "NOT" => 18, - 'name' => 19, - "!" => 11, - "{" => 12 + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 }, GOTOS => { - 'p10' => 15, - 'exp' => 90, - 'varref' => 16, - 'nonbrace' => 9, - 'p11' => 13 + 'exp' => 89, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 } }, {#State 52 ACTIONS => { - "-" => 14, + 'literal' => 15, + "-" => 9, "(" => 17, - 'literal' => 10, - "!" => 11, - "{" => 12, - "NOT" => 18, - 'name' => 19 + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 }, GOTOS => { - 'exp' => 91, - 'p10' => 15, - 'varref' => 16, - 'nonbrace' => 9, - 'p11' => 13 + 'exp' => 90, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 } }, {#State 53 ACTIONS => { - "{" => 12, - "!" => 11, - "NOT" => 18, - 'name' => 19, - 'literal' => 10, + 'literal' => 15, + "-" => 9, "(" => 17, - "-" => 14 + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 }, GOTOS => { - 'varref' => 16, - 'p10' => 15, - 'exp' => 92, - 'nonbrace' => 9, - 'p11' => 13 + 'exp' => 91, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 } }, {#State 54 ACTIONS => { - "-" => 14, + 'literal' => 15, + "-" => 9, "(" => 17, - 'literal' => 10, - "NOT" => 18, - 'name' => 19, - "!" => 11, - "{" => 12 + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 }, GOTOS => { - 'nonbrace' => 9, - 'p11' => 13, - 'p10' => 15, - 'exp' => 93, - 'varref' => 16 + 'exp' => 92, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 } }, {#State 55 ACTIONS => { + 'literal' => 15, + "-" => 9, "(" => 17, - "-" => 14, - "{" => 12, - "!" => 11, - "NOT" => 18, - 'name' => 19, - 'literal' => 10 + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 }, GOTOS => { - 'p11' => 13, - 'nonbrace' => 9, - 'varref' => 16, - 'exp' => 94, - 'p10' => 15 + 'exp' => 93, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 } }, {#State 56 ACTIONS => { + 'literal' => 15, + "-" => 9, "(" => 17, - "-" => 14, - "{" => 12, - "!" => 11, - "NOT" => 18, - 'name' => 19, - 'literal' => 10 + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 }, GOTOS => { - 'p11' => 13, - 'nonbrace' => 9, - 'varref' => 16, - 'p10' => 15, - 'exp' => 95 + 'exp' => 94, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 } }, {#State 57 - ACTIONS => { - "(" => 17, - "-" => 14, - "!" => 11, - "{" => 12, - "NOT" => 18, - 'name' => 19, - 'literal' => 10 - }, - GOTOS => { - 'varref' => 16, - 'exp' => 96, - 'p10' => 15, - 'p11' => 13, - 'nonbrace' => 9 - } + DEFAULT => -64 }, {#State 58 ACTIONS => { - "!" => 11, - "{" => 12, - 'name' => 19, - "NOT" => 18, - 'literal' => 10, + "-" => 9, + "{" => 13, + 'name' => 12, + 'literal' => 15, + "!" => 18, "(" => 17, - "-" => 14 + "NOT" => 20, + ")" => 95 }, GOTOS => { - 'p10' => 15, 'exp' => 97, - 'varref' => 16, - 'nonbrace' => 9, - 'p11' => 13 + 'nonbrace' => 11, + 'gtpair' => 98, + 'varref' => 14, + 'p11' => 16, + 'p10' => 19, + 'gthash' => 99, + 'list' => 96 } }, {#State 59 ACTIONS => { - "-" => 14, - "(" => 17, - 'literal' => 10, - "NOT" => 18, - 'name' => 19, - "!" => 11, - "{" => 12 + "," => 100 }, - GOTOS => { - 'varref' => 16, - 'exp' => 98, - 'p10' => 15, - 'p11' => 13, - 'nonbrace' => 9 - } + DEFAULT => -70 }, {#State 60 ACTIONS => { - 'name' => 19, - "NOT" => 18, - "{" => 12, - "!" => 11, - 'literal' => 10, - "(" => 17, - "-" => 14 - }, - GOTOS => { - 'nonbrace' => 9, - 'p11' => 13, - 'varref' => 16, - 'exp' => 99, - 'p10' => 15 + ".." => 39, + "-" => 38, + "OR" => 41, + "<" => 40, + "+" => 42, + "%" => 43, + "," => 101, + "==" => 44, + ">=" => 45, + "*" => 47, + "!=" => 48, + "AND" => 49, + "&&" => 50, + "||" => 51, + "&" => 52, + "/" => 53, + "XOR" => 54, + "=>" => 102, + "<=" => 55, + ">" => 56 } }, {#State 61 - DEFAULT => -7 + DEFAULT => -76 }, {#State 62 ACTIONS => { - "(" => 17, - "-" => 14, - 'name' => 19, - "NOT" => 18, - "!" => 11, - "{" => 12, - 'literal' => 10 - }, - GOTOS => { - 'p11' => 13, - 'nonbrace' => 9, - 'exp' => 100, - 'p10' => 15, - 'varref' => 16 + "}" => 103 } }, {#State 63 ACTIONS => { + 'literal' => 15, + "-" => 9, "(" => 17, - "-" => 14, - "!" => 11, - "{" => 12, - "NOT" => 18, - 'name' => 19, - 'literal' => 10 + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 }, GOTOS => { - 'nonbrace' => 9, - 'p11' => 13, - 'varref' => 16, - 'p10' => 15, - 'exp' => 101 + 'exp' => 104, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 } }, {#State 64 ACTIONS => { - 'name' => 19, - "NOT" => 18, - "!" => 11, - "{" => 12, - 'literal' => 10, - "(" => 17, - "-" => 14 + "OR" => 105, + "MACRO" => 106, + "BLOCK" => 107, + "ELSIF" => 108, + "FOREACH" => 109, + "ELSE" => 110, + "SET" => 112, + "END" => 113, + "AND" => 114, + 'name' => 115, + "XOR" => 116, + "ELSEIF" => 117, + "IF" => 118, + "FOR" => 119, + "NOT" => 120, + "FUNCTION" => 121 }, GOTOS => { - 'nonbrace' => 9, - 'p11' => 13, - 'varref' => 16, - 'exp' => 102, - 'p10' => 15 + 'namekw' => 111 } }, {#State 65 - ACTIONS => { - "(" => 17, - "-" => 14, - 'name' => 19, - "NOT" => 18, - "!" => 11, - "{" => 12, - 'literal' => 10 - }, - GOTOS => { - 'p11' => 13, - 'nonbrace' => 9, - 'p10' => 15, - 'exp' => 103, - 'varref' => 16 - } + DEFAULT => -79 }, {#State 66 ACTIONS => { - 'literal' => 10, - "!" => 11, - "{" => 12, - 'name' => 19, - "NOT" => 18, - "-" => 14, - "(" => 17 - }, - GOTOS => { - 'varref' => 16, - 'exp' => 104, - 'p10' => 15, - 'nonbrace' => 9, - 'p11' => 13 + ".." => 39, + "-" => 38, + "OR" => 41, + "<" => 40, + "+" => 42, + "%" => 43, + "==" => 44, + ">=" => 45, + "*" => 47, + ")" => 122, + "!=" => 48, + "AND" => 49, + "&&" => 50, + "||" => 51, + "&" => 52, + "/" => 53, + "XOR" => 54, + "<=" => 55, + ">" => 56 } }, {#State 67 - ACTIONS => { - "!" => 11, - "{" => 12, - 'name' => 19, - "NOT" => 18, - 'literal' => 10, - "(" => 17, - "-" => 14 - }, - GOTOS => { - 'exp' => 105, - 'p10' => 15, - 'varref' => 16, - 'p11' => 13, - 'nonbrace' => 9 - } + DEFAULT => -56 }, {#State 68 - ACTIONS => { - "NOT" => 18, - 'name' => 19, - "{" => 12, - "!" => 11, - 'literal' => 10, - "(" => 17, - "-" => 14 - }, - GOTOS => { - 'p11' => 13, - 'nonbrace' => 9, - 'exp' => 106, - 'p10' => 15, - 'varref' => 16 - } + DEFAULT => -57 }, {#State 69 - ACTIONS => { - "[" => 44, - "-->" => 108, - "=" => 107, - "." => 45 - }, - GOTOS => { - 'varpart' => 43 - } + DEFAULT => -6 }, {#State 70 - DEFAULT => -78 + DEFAULT => -2, + GOTOS => { + 'chunks' => 123 + } }, {#State 71 ACTIONS => { - "(" => 109 + 'literal' => 15, + "-" => 9, + "(" => 17, + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 + }, + GOTOS => { + 'exp' => 124, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 } }, {#State 72 - DEFAULT => -2, - GOTOS => { - 'chunks' => 110 + ACTIONS => { + "(" => 125 } }, {#State 73 ACTIONS => { - "-" => 14, - "(" => 17, - 'literal' => 10, - "!" => 11, - "{" => 12, - "NOT" => 18, - 'name' => 19 + "-->" => 126, + "[" => 63, + "." => 64, + "=" => 127 }, GOTOS => { - 'p11' => 13, - 'nonbrace' => 9, - 'varref' => 16, - 'p10' => 15, - 'exp' => 111 + 'varpart' => 65 } }, {#State 74 - ACTIONS => { - "[" => 44, - "." => 45, - "=" => 112 - }, - GOTOS => { - 'varpart' => 43 - } + DEFAULT => -78 }, {#State 75 - DEFAULT => -6 + ACTIONS => { + "[" => 63, + "." => 64, + "=" => 128 + }, + GOTOS => { + 'varpart' => 65 + } }, {#State 76 ACTIONS => { - "-->" => 113, - "!=" => 50, - "&" => 51, - ">" => 55, - "/" => 56, - "+" => 57, - "OR" => 58, - "XOR" => 52, - "<" => 53, - "<=" => 54, - "%" => 62, - "||" => 63, - "AND" => 64, - ".." => 59, - "*" => 60, - ">=" => 68, - "&&" => 67, - "-" => 65, - "==" => 66 + ".." => 39, + "-" => 38, + "OR" => 41, + "<" => 40, + "+" => 42, + "%" => 43, + "==" => 44, + ">=" => 45, + "*" => 47, + "!=" => 48, + "AND" => 49, + "&&" => 50, + "||" => 51, + "&" => 52, + "/" => 53, + "-->" => 129, + "XOR" => 54, + "<=" => 55, + ">" => 56 } }, {#State 77 ACTIONS => { - "-" => 14, - "(" => 17, - 'literal' => 10, - "NOT" => 18, - 'name' => 19, - "!" => 11, - "{" => 12 + "%" => 43, + "*" => 47, + "&" => 52, + "/" => 53 }, - GOTOS => { - 'nonbrace' => 9, - 'p11' => 13, - 'varref' => 16, - 'exp' => 114, - 'p10' => 15 - } + DEFAULT => -46 }, {#State 78 ACTIONS => { - "-" => 14, - "(" => 17, - 'literal' => 10, - "NOT" => 18, - 'name' => 19, - "!" => 11, - "{" => 12 + "-" => 38, + "OR" => 41, + "<" => 40, + "+" => 42, + "%" => 43, + "==" => 44, + ">=" => 45, + "*" => 47, + "!=" => 48, + "AND" => 49, + "&&" => 50, + "||" => 51, + "&" => 52, + "/" => 53, + "XOR" => 54, + "<=" => 55, + ">" => 56 }, - GOTOS => { - 'p10' => 15, - 'exp' => 115, - 'varref' => 16, - 'nonbrace' => 9, - 'p11' => 13 - } + DEFAULT => -33 }, {#State 79 ACTIONS => { - "-" => 14, - "(" => 17, - 'literal' => 10, - "!" => 11, - "{" => 12, - "NOT" => 18, - 'name' => 19 + "-" => 38, + "<" => undef, + "+" => 42, + "%" => 43, + "==" => undef, + ">=" => undef, + "*" => 47, + "!=" => undef, + "&" => 52, + "/" => 53, + "<=" => undef, + ">" => undef }, - DEFAULT => -72, - GOTOS => { - 'varref' => 16, - 'pair' => 40, - 'gtpair' => 39, - 'p10' => 15, - 'p11' => 13, - 'nonbrace' => 9, - 'hash' => 116, - 'exp' => 38 - } + DEFAULT => -41 }, {#State 80 - DEFAULT => -58 + ACTIONS => { + "-" => 38, + "<" => 40, + "+" => 42, + "%" => 43, + "==" => 44, + ">=" => 45, + "*" => 47, + "!=" => 48, + "AND" => 49, + "&&" => 50, + "&" => 52, + "/" => 53, + "<=" => 55, + ">" => 56 + }, + DEFAULT => -35 }, {#State 81 ACTIONS => { - "&" => 51, - "]" => 117, - "!=" => 50, - "<=" => 54, - "<" => 53, - "XOR" => 52, - "OR" => 58, - "+" => 57, - "/" => 56, - ">" => 55, - "*" => 60, - ".." => 59, - "AND" => 64, - "%" => 62, - "||" => 63, - "&&" => 67, - "-" => 65, - "==" => 66, - ">=" => 68 - } + "%" => 43, + "*" => 47, + "&" => 52, + "/" => 53 + }, + DEFAULT => -45 }, {#State 82 - ACTIONS => { - "(" => 118 - }, - DEFAULT => -80 + DEFAULT => -50 }, {#State 83 - DEFAULT => -84, - GOTOS => { - 'varpath' => 119 - } + ACTIONS => { + "-" => 38, + "<" => undef, + "+" => 42, + "%" => 43, + "==" => undef, + ">=" => undef, + "*" => 47, + "!=" => undef, + "&" => 52, + "/" => 53, + "<=" => undef, + ">" => undef + }, + DEFAULT => -39 }, {#State 84 ACTIONS => { - "XOR" => 52, - "<=" => 54, - "<" => 53, - "+" => 57, - ">" => 55, - "/" => 56, - "=>" => 78, - "OR" => 58, - "!=" => 50, - "&" => 51, - "," => 120, - "==" => 66, - "&&" => 67, - "-" => 65, - ">=" => 68, - "*" => 60, - ".." => 59, - "AND" => 64, - "%" => 62, - "||" => 63 + "-" => 38, + "<" => undef, + "+" => 42, + "%" => 43, + "==" => undef, + ">=" => undef, + "*" => 47, + "!=" => undef, + "&" => 52, + "/" => 53, + "<=" => undef, + ">" => undef }, - DEFAULT => -65 + DEFAULT => -44 }, {#State 85 - ACTIONS => { - ")" => 121 - } + DEFAULT => -48 }, {#State 86 ACTIONS => { - "," => 122 - }, - DEFAULT => -73 - }, - {#State 87 - DEFAULT => -61 - }, - {#State 88 - ACTIONS => { - ")" => 123 - } - }, - {#State 89 - ACTIONS => { - "<=" => undef, + "-" => 38, "<" => undef, - "+" => 57, - ">" => undef, - "/" => 56, - "!=" => undef, - "&" => 51, + "+" => 42, + "%" => 43, "==" => undef, - "-" => 65, ">=" => undef, - "*" => 60, - "%" => 62 + "*" => 47, + "!=" => undef, + "&" => 52, + "/" => 53, + "<=" => undef, + ">" => undef }, DEFAULT => -40 }, + {#State 87 + ACTIONS => { + "-" => 38, + "<" => 40, + "+" => 42, + "%" => 43, + "==" => 44, + ">=" => 45, + "*" => 47, + "!=" => 48, + "&" => 52, + "/" => 53, + "<=" => 55, + ">" => 56 + }, + DEFAULT => -38 + }, + {#State 88 + ACTIONS => { + "-" => 38, + "<" => 40, + "+" => 42, + "%" => 43, + "==" => 44, + ">=" => 45, + "*" => 47, + "!=" => 48, + "&" => 52, + "/" => 53, + "<=" => 55, + ">" => 56 + }, + DEFAULT => -37 + }, + {#State 89 + ACTIONS => { + "-" => 38, + "<" => 40, + "+" => 42, + "%" => 43, + "==" => 44, + ">=" => 45, + "*" => 47, + "!=" => 48, + "AND" => 49, + "&&" => 50, + "&" => 52, + "/" => 53, + "<=" => 55, + ">" => 56 + }, + DEFAULT => -34 + }, {#State 90 ACTIONS => { - "%" => 62, - "*" => 60, - "/" => 56 + "%" => 43, + "*" => 47, + "/" => 53 }, DEFAULT => -47 }, {#State 91 - ACTIONS => { - "*" => 60, - "AND" => 64, - "%" => 62, - "&&" => 67, - "-" => 65, - "==" => 66, - ">=" => 68, - "&" => 51, - "!=" => 50, - "<=" => 54, - "<" => 53, - "+" => 57, - "/" => 56, - ">" => 55 - }, - DEFAULT => -36 + DEFAULT => -49 }, {#State 92 ACTIONS => { - ">=" => undef, - "==" => undef, - "-" => 65, - "%" => 62, - "*" => 60, - ">" => undef, - "/" => 56, - "+" => 57, - "<" => undef, - "<=" => undef, - "&" => 51, - "!=" => undef + "-" => 38, + "<" => 40, + "+" => 42, + "%" => 43, + "==" => 44, + ">=" => 45, + "*" => 47, + "!=" => 48, + "AND" => 49, + "&&" => 50, + "&" => 52, + "/" => 53, + "<=" => 55, + ">" => 56 }, - DEFAULT => -41 + DEFAULT => -36 }, {#State 93 ACTIONS => { - "*" => 60, - "%" => 62, - "==" => undef, - "-" => 65, - ">=" => undef, - "!=" => undef, - "&" => 51, - "<=" => undef, + "-" => 38, "<" => undef, - "+" => 57, - ">" => undef, - "/" => 56 + "+" => 42, + "%" => 43, + "==" => undef, + ">=" => undef, + "*" => 47, + "!=" => undef, + "&" => 52, + "/" => 53, + "<=" => undef, + ">" => undef }, DEFAULT => -43 }, {#State 94 ACTIONS => { - "<=" => undef, + "-" => 38, "<" => undef, - "+" => 57, - "/" => 56, - ">" => undef, - "&" => 51, - "!=" => undef, + "+" => 42, + "%" => 43, "==" => undef, - "-" => 65, ">=" => undef, - "*" => 60, - "%" => 62 + "*" => 47, + "!=" => undef, + "&" => 52, + "/" => 53, + "<=" => undef, + ">" => undef }, DEFAULT => -42 }, {#State 95 - DEFAULT => -49 + DEFAULT => -61 }, {#State 96 ACTIONS => { - "/" => 56, - "&" => 51, - "*" => 60, - "%" => 62 - }, - DEFAULT => -45 + ")" => 130 + } }, {#State 97 ACTIONS => { - "*" => 60, - "%" => 62, - "AND" => 64, - "&&" => 67, - "-" => 65, - "==" => 66, - ">=" => 68, - "&" => 51, - "!=" => 50, - "<" => 53, - "<=" => 54, - ">" => 55, - "/" => 56, - "+" => 57 + ".." => 39, + "-" => 38, + "OR" => 41, + "<" => 40, + "+" => 42, + "%" => 43, + "," => 131, + "==" => 44, + ">=" => 45, + "*" => 47, + "!=" => 48, + "AND" => 49, + "&&" => 50, + "||" => 51, + "&" => 52, + "/" => 53, + "XOR" => 54, + "=>" => 102, + "<=" => 55, + ">" => 56 }, - DEFAULT => -35 + DEFAULT => -65 }, {#State 98 ACTIONS => { - "==" => 66, - "&&" => 67, - "-" => 65, - ">=" => 68, - "*" => 60, - "%" => 62, - "||" => 63, - "AND" => 64, - "XOR" => 52, - "<" => 53, - "<=" => 54, - ">" => 55, - "/" => 56, - "+" => 57, - "OR" => 58, - "!=" => 50, - "&" => 51 + "," => 132 }, - DEFAULT => -33 + DEFAULT => -73 }, {#State 99 - DEFAULT => -48 + ACTIONS => { + ")" => 133 + } }, {#State 100 - DEFAULT => -50 + ACTIONS => { + "-" => 9, + "{" => 13, + 'name' => 12, + 'literal' => 15, + "!" => 18, + "(" => 17, + "NOT" => 20 + }, + DEFAULT => -72, + GOTOS => { + 'exp' => 60, + 'nonbrace' => 11, + 'gtpair' => 61, + 'varref' => 14, + 'hash' => 134, + 'p11' => 16, + 'pair' => 59, + 'p10' => 19 + } }, {#State 101 ACTIONS => { - "!=" => 50, - "&" => 51, - "+" => 57, - ">" => 55, - "/" => 56, - "<=" => 54, - "<" => 53, - "AND" => 64, - "%" => 62, - "*" => 60, - ">=" => 68, - "==" => 66, - "-" => 65, - "&&" => 67 + 'literal' => 15, + "-" => 9, + "(" => 17, + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 }, - DEFAULT => -34 + GOTOS => { + 'exp' => 135, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 + } }, {#State 102 ACTIONS => { - "<" => 53, - "<=" => 54, - ">" => 55, - "/" => 56, - "+" => 57, - "&" => 51, - "!=" => 50, - "==" => 66, - "-" => 65, - ">=" => 68, - "*" => 60, - "%" => 62 + 'literal' => 15, + "-" => 9, + "(" => 17, + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 }, - DEFAULT => -38 + GOTOS => { + 'exp' => 136, + 'varref' => 14, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 + } }, {#State 103 - ACTIONS => { - "&" => 51, - "/" => 56, - "*" => 60, - "%" => 62 - }, - DEFAULT => -46 + DEFAULT => -58 }, {#State 104 ACTIONS => { - "!=" => undef, - "&" => 51, - "/" => 56, - ">" => undef, - "+" => 57, - "<" => undef, - "<=" => undef, - "%" => 62, - "*" => 60, - ">=" => undef, - "==" => undef, - "-" => 65 - }, - DEFAULT => -39 + ".." => 39, + "-" => 38, + "OR" => 41, + "<" => 40, + "+" => 42, + "%" => 43, + "==" => 44, + ">=" => 45, + "*" => 47, + "]" => 137, + "!=" => 48, + "AND" => 49, + "&&" => 50, + "||" => 51, + "&" => 52, + "/" => 53, + "XOR" => 54, + "<=" => 55, + ">" => 56 + } }, {#State 105 - ACTIONS => { - "*" => 60, - "%" => 62, - "-" => 65, - "==" => 66, - ">=" => 68, - "!=" => 50, - "&" => 51, - "<=" => 54, - "<" => 53, - "+" => 57, - ">" => 55, - "/" => 56 - }, - DEFAULT => -37 + DEFAULT => -93 }, {#State 106 - ACTIONS => { - "+" => 57, - "/" => 56, - ">" => undef, - "<=" => undef, - "<" => undef, - "!=" => undef, - "&" => 51, - ">=" => undef, - "-" => 65, - "==" => undef, - "%" => 62, - "*" => 60 - }, - DEFAULT => -44 + DEFAULT => -99 }, {#State 107 - ACTIONS => { - "{" => 12, - "!" => 11, - "NOT" => 18, - 'name' => 19, - 'literal' => 10, - "(" => 17, - "-" => 14 - }, - GOTOS => { - 'varref' => 16, - 'exp' => 124, - 'p10' => 15, - 'nonbrace' => 9, - 'p11' => 13 - } + DEFAULT => -98 }, {#State 108 - DEFAULT => -2, - GOTOS => { - 'chunks' => 125 - } + DEFAULT => -90 }, {#State 109 - ACTIONS => { - 'name' => 127 - }, - DEFAULT => -69, - GOTOS => { - 'arglist' => 126 - } + DEFAULT => -101 }, {#State 110 - ACTIONS => { - 'error' => 7, - 'literal' => 6, - "" => 142, - "<" => 53, - "<=" => 54, - "XOR" => 52, - "OR" => 58, - ">" => 55, - "/" => 56, - "+" => 57, - ".." => 59, - "*" => 60, - "%" => 62, - "||" => 63, - "AND" => 64, - "==" => 66, - "&&" => 67, - "-" => 65, - ">=" => 68 + DEFAULT => -2, + GOTOS => { + 'chunks' => 146 } }, {#State 130 - ACTIONS => { - "{{" => 4, - 'literal' => 6, - "" => 158, + "XOR" => 54, + "<=" => 55, + ">" => 56 + } }, {#State 146 - DEFAULT => -20 + ACTIONS => { + 'literal' => 3, + "{{" => 4, + 'error' => 5, + "" => 158, - "IF" => 159 - } + DEFAULT => -23 }, {#State 155 ACTIONS => { - "-" => 14, - "(" => 17, - 'literal' => 10, - "BLOCK" => 25, - "{" => 12, - "!" => 11, - "FUNCTION" => 21, - "FOR" => 22, - "IF" => 35, - "MACRO" => 23, - "END" => 160, - "SET" => 29, - "FOREACH" => 31, - 'name' => 19, - "NOT" => 18 + 'name' => 141 }, + DEFAULT => -69, GOTOS => { - 'c_set' => 26, - 'c_fn' => 27, - 'varref' => 16, - 'p10' => 15, - 'nonbrace' => 9, - 'p11' => 13, - 'code_chunk' => 34, - 'for' => 33, - 'c_if' => 36, - 'exp' => 24, - 'c_for' => 28, - 'fn' => 30, - 'fn_def' => 32 + 'arglist' => 162 } }, {#State 156 - ACTIONS => { - "MACRO" => 23, - "FOR" => 22, - "NOT" => 18, - 'name' => 19, - "ELSIF" => 151, - "-" => 14, - "FUNCTION" => 21, - 'literal' => 10, - "IF" => 35, - "ELSE" => 162, - "FOREACH" => 31, - "END" => 163, - "SET" => 29, - "(" => 17, - "ELSEIF" => 150, - "{" => 12, - "!" => 11, - "BLOCK" => 25 - }, - GOTOS => { - 'exp' => 24, - 'c_if' => 36, - 'for' => 33, - 'code_chunk' => 34, - 'fn_def' => 32, - 'fn' => 30, - 'c_for' => 28, - 'p10' => 15, - 'varref' => 16, - 'c_fn' => 27, - 'c_set' => 26, - 'p11' => 13, - 'elseif' => 161, - 'nonbrace' => 9 - } + DEFAULT => -21 }, {#State 157 ACTIONS => { - "OR" => 58, - ">" => 55, - "/" => 56, - "+" => 57, - "<" => 53, - "<=" => 54, - "XOR" => 52, - "-->" => 164, - "&" => 51, - "!=" => 50, - ">=" => 68, - "-" => 65, - "&&" => 67, - "==" => 66, - "%" => 62, - "||" => 63, - "AND" => 64, - ".." => 59, - "*" => 60 + "END" => 163, + "SET" => 30, + "-" => 9, + "MACRO" => 21, + "{" => 13, + 'name' => 12, + "BLOCK" => 22, + "IF" => 32, + 'literal' => 15, + "(" => 17, + "!" => 18, + "FOR" => 33, + "NOT" => 20, + "FOREACH" => 27, + "FUNCTION" => 36 + }, + GOTOS => { + 'exp' => 29, + 'nonbrace' => 11, + 'for' => 31, + 'code_chunk' => 23, + 'varref' => 14, + 'p11' => 16, + 'c_set' => 24, + 'p10' => 19, + 'c_if' => 25, + 'fn_def' => 26, + 'c_for' => 34, + 'c_fn' => 35, + 'fn' => 28 } }, {#State 158 DEFAULT => -2, GOTOS => { - 'chunks' => 165 + 'chunks' => 164 } }, {#State 159 - DEFAULT => -30 + DEFAULT => -2, + GOTOS => { + 'chunks' => 165 + } }, {#State 160 - DEFAULT => -24 - }, - {#State 161 ACTIONS => { - 'name' => 19, - "NOT" => 18, - "{" => 12, - "!" => 11, - 'literal' => 10, + "-" => 9, + "MACRO" => 21, + "BLOCK" => 22, + "ELSIF" => 166, + 'literal' => 15, + "!" => 18, + "FOREACH" => 27, + "ELSE" => 169, + "END" => 167, + "SET" => 30, + "{" => 13, + 'name' => 12, + "ELSEIF" => 168, + "IF" => 32, "(" => 17, - "-" => 14 + "FOR" => 33, + "NOT" => 20, + "FUNCTION" => 36 }, GOTOS => { - 'nonbrace' => 9, - 'p11' => 13, - 'exp' => 166, - 'p10' => 15, - 'varref' => 16 + 'exp' => 29, + 'nonbrace' => 11, + 'for' => 31, + 'code_chunk' => 23, + 'varref' => 14, + 'p11' => 16, + 'c_set' => 24, + 'p10' => 19, + 'c_if' => 25, + 'fn_def' => 26, + 'c_for' => 34, + 'elseif' => 170, + 'c_fn' => 35, + 'fn' => 28 } }, + {#State 161 + DEFAULT => -83 + }, {#State 162 - ACTIONS => { - "-->" => 167, - "IF" => 159 - } + DEFAULT => -68 }, {#State 163 - DEFAULT => -15 + DEFAULT => -20 }, {#State 164 - DEFAULT => -17 + ACTIONS => { + 'literal' => 3, + 'error' => 5, + "{{" => 4, + "" => 169, - "XOR" => 52, - "<=" => 54, - "<" => 53, - "+" => 57, - ">" => 55, - "/" => 56, - "OR" => 58, - "*" => 60, - ".." => 59, - "AND" => 64, - "||" => 63, - "%" => 62, - "==" => 66, - "&&" => 67, - "-" => 65, - ">=" => 68 - } + DEFAULT => -31 }, {#State 167 - DEFAULT => -2, - GOTOS => { - 'chunks' => 170 - } + DEFAULT => -13 }, {#State 168 - ACTIONS => { - "FUNCTION" => 21, - "{" => 12, - "!" => 11, - "BLOCK" => 25, - 'literal' => 10, - "(" => 17, - "-" => 14, - 'name' => 19, - "NOT" => 18, - "FOREACH" => 31, - "SET" => 29, - "END" => 171, - "IF" => 35, - "MACRO" => 23, - "FOR" => 22 - }, - GOTOS => { - 'c_fn' => 27, - 'c_set' => 26, - 'p10' => 15, - 'varref' => 16, - 'nonbrace' => 9, - 'p11' => 13, - 'c_if' => 36, - 'exp' => 24, - 'for' => 33, - 'code_chunk' => 34, - 'fn' => 30, - 'c_for' => 28, - 'fn_def' => 32 - } + DEFAULT => -32 }, {#State 169 - DEFAULT => -18 + ACTIONS => { + "IF" => 173, + "-->" => 174 + } }, {#State 170 ACTIONS => { - 'error' => 7, - "" => 181, + "/" => 53, + "XOR" => 54, + "<=" => 55, + ">" => 56 + } + }, + {#State 176 + DEFAULT => -24 + }, + {#State 177 + DEFAULT => -15 + }, + {#State 178 + ACTIONS => { + "IF" => 173, + "-->" => 182 + } + }, + {#State 179 + ACTIONS => { + 'literal' => 15, + "-" => 9, + "(" => 17, + "!" => 18, + "NOT" => 20, + "{" => 13, + 'name' => 12 + }, + GOTOS => { + 'varref' => 14, + 'exp' => 183, + 'p11' => 16, + 'nonbrace' => 11, + 'p10' => 19 + } + }, + {#State 180 + ACTIONS => { + 'literal' => 3, + 'error' => 5, + "{{" => 4, + "" => 186, + "/" => 53, + "XOR" => 54, + "<=" => 55, + ">" => 56 + } + }, + {#State 184 + ACTIONS => { + "SET" => 30, + "END" => 187, + "-" => 9, + "MACRO" => 21, + "{" => 13, + 'name' => 12, + "BLOCK" => 22, + 'literal' => 15, + "IF" => 32, + "(" => 17, + "!" => 18, + "FOR" => 33, + "NOT" => 20, + "FOREACH" => 27, + "FUNCTION" => 36 + }, + GOTOS => { + 'exp' => 29, + 'nonbrace' => 11, + 'for' => 31, + 'code_chunk' => 23, + 'varref' => 14, + 'p11' => 16, + 'c_set' => 24, + 'p10' => 19, + 'c_if' => 25, + 'fn_def' => 26, + 'c_for' => 34, + 'c_fn' => 35, + 'fn' => 28 + } + }, + {#State 185 + ACTIONS => { + 'literal' => 3, + 'error' => 5, + "{{" => 4, + "' => 's 6' @@ -1443,13 +1442,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 31', @@ -1485,13 +1483,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 32', @@ -1527,13 +1524,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 33', @@ -1569,13 +1565,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 34', @@ -1611,13 +1606,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 35', @@ -1653,13 +1647,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 36', @@ -1695,13 +1688,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 37', @@ -1731,13 +1723,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 38', @@ -1767,13 +1758,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 39', @@ -1803,13 +1793,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 40', @@ -1839,13 +1828,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 41', @@ -1875,13 +1863,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 42', @@ -1911,13 +1898,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 43', @@ -1953,13 +1939,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 44', @@ -1995,13 +1980,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 'r 45', @@ -2037,13 +2021,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '' => 'r 46' @@ -2055,13 +2038,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '' => 'r 47' @@ -2073,13 +2055,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '' => 'r 48' @@ -2094,13 +2075,12 @@ class VMXTemplateParser extends lime_parser { 'p11' => 's 51', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '' => 'r 51' @@ -2115,13 +2095,12 @@ class VMXTemplateParser extends lime_parser { '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 's 12', @@ -2146,38 +2125,38 @@ class VMXTemplateParser extends lime_parser { ), array( 'varpath' => 's 56', - '.' => 'r 85', - '[' => 'r 85', - '%' => 'r 85', - '/' => 'r 85', - '*' => 'r 85', - '&' => 'r 85', - '-' => 'r 85', - '+' => 'r 85', - '>=' => 'r 85', - '<=' => 'r 85', - '>' => 'r 85', - '<' => 'r 85', - '!=' => 'r 85', - '==' => 'r 85', - 'AND' => 'r 85', - '&&' => 'r 85', - 'XOR' => 'r 85', - 'OR' => 'r 85', - '||' => 'r 85', - '..' => 'r 85', - '-->' => 'r 85', - ')' => 'r 85', - ',' => 'r 85', - '=>' => 'r 85', - ']' => 'r 85', - '}}' => 'r 85', - '}' => 'r 85' + '.' => '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 91', - 'varpart' => 's 124', + '[' => 's 73', + 'varpart' => 's 117', '%' => 'r 53', '/' => 'r 53', '*' => 'r 53', @@ -2206,73 +2185,69 @@ class VMXTemplateParser extends lime_parser { ), array( 'namekw' => 's 58', - 'name' => 's 59', - 'IF' => 's 75', - 'END' => 's 76', - 'ELSE' => 's 77', - 'ELSIF' => 's 78', - 'ELSEIF' => 's 79', - 'SET' => 's 80', - 'OR' => 's 81', - 'XOR' => 's 82', - 'AND' => 's 83', - 'NOT' => 's 84', - 'FUNCTION' => 's 85', - 'BLOCK' => 's 86', - 'MACRO' => 's 87', - 'FOR' => 's 88', - 'FOREACH' => 's 89' + 'name' => 's 101', + 'IF' => 's 102', + 'END' => 's 103', + 'ELSE' => 's 104', + 'ELSIF' => 's 105', + 'ELSEIF' => 's 106', + 'SET' => 's 107', + 'OR' => 's 108', + 'XOR' => 's 109', + 'AND' => 's 110', + 'NOT' => 's 111', + 'FUNCTION' => 's 112', + 'BLOCK' => 's 113', + 'MACRO' => 's 114', + 'FOR' => 's 115', + 'FOREACH' => 's 116' ), 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( - '(' => 's 60', - '.' => 'r 87', - '[' => 'r 87', - '%' => 'r 87', - '/' => 'r 87', - '*' => 'r 87', - '&' => 'r 87', - '-' => 'r 87', - '+' => 'r 87', - '>=' => 'r 87', - '<=' => 'r 87', - '>' => 'r 87', - '<' => 'r 87', - '!=' => 'r 87', - '==' => 'r 87', - 'AND' => 'r 87', - '&&' => 'r 87', - 'XOR' => 'r 87', - 'OR' => 'r 87', - '||' => 'r 87', - '..' => 'r 87', - '-->' => 'r 87', - ')' => 'r 87', - ',' => 'r 87', - '=>' => 'r 87', - ']' => 'r 87', - '}}' => 'r 87', - '=' => 'r 87', - '}' => 'r 87' - ), - array( - 'exp' => 's 61', + 'exp' => 's 60', 'p10' => 's 48', 'p11' => 's 49', '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99', - ')' => 's 121', - 'list' => 's 122' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76', + ')' => 's 98', + 'list' => 's 99' ), array( '..' => 's 12', @@ -2293,36 +2268,34 @@ class VMXTemplateParser extends lime_parser { '*' => 's 42', '/' => 's 44', '%' => 's 46', - ',' => 's 62', - ')' => 'r 66' + ',' => 's 61', + ')' => 'r 63' ), array( - 'exp' => 's 61', + 'exp' => 's 60', 'p10' => 's 48', 'p11' => 's 49', '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99', - 'list' => 's 120' + '!' => '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 63', - 'p11' => 's 64', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'p11' => 's 63', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '' => 'r 54' @@ -2330,103 +2303,100 @@ class VMXTemplateParser extends lime_parser { array( 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - 'p11' => 's 66', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => '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 68', + 'exp' => 's 67', 'p10' => 's 48', 'p11' => 's 49', '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'hash' => 's 114', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99', - '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 69', - '=>' => 's 97' - ), - array( - 'exp' => 's 70', - 'p10' => 's 48', - 'p11' => 's 49', - '-' => 's 50', - 'nonbrace' => 's 52', - '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' - ), - 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 73', - 'varpart' => 's 90', - '[' => 's 91', + 'varpart' => 's 72', + '.' => 's 57', + '[' => 's 73', '%' => 'r 58', '/' => 'r 58', '*' => 'r 58', @@ -2454,53 +2424,278 @@ class VMXTemplateParser extends lime_parser { '}' => 'r 58' ), array( - 'namekw' => 's 74', - 'name' => 's 59', - 'IF' => 's 75', - 'END' => 's 76', - 'ELSE' => 's 77', - 'ELSIF' => 's 78', - 'ELSEIF' => 's 79', - 'SET' => 's 80', - 'OR' => 's 81', - 'XOR' => 's 82', - 'AND' => 's 83', - 'NOT' => 's 84', - 'FUNCTION' => 's 85', - 'BLOCK' => 's 86', - 'MACRO' => 's 87', - 'FOR' => 's 88', - 'FOREACH' => 's 89' + '' => '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' + 'exp' => 's 74', + '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', + ']' => 's 75' + ), + array( + '' => '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 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', + '||' => '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 61', + '=>' => 's 79', + ')' => 'r 63' + ), + array( + 'exp' => 's 80', + '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 75', + '}' => 'r 75', + ')' => 'r 75' + ), + array( + '' => '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 80' + ), + array( + ')' => 's 100' + ), + array( + '' => 'r 81' + ), + array( + '' => 'r 84' + ), + array( + '' => 'r 85' + ), + array( + '' => 'r 86' + ), + array( + '' => 'r 87' ), array( '' => 'r 88' @@ -2538,332 +2733,25 @@ class VMXTemplateParser extends lime_parser { array( '' => 'r 99' ), - array( - '' => 'r 100' - ), - array( - '' => 'r 101' - ), - array( - '' => 'r 102' - ), - array( - '' => 'r 80' - ), - array( - 'exp' => 's 92', - 'p10' => 's 48', - 'p11' => 's 49', - '-' => 's 50', - 'nonbrace' => 's 52', - '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' - ), - 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 93' - ), - array( - '' => 'r 82' - ), - array( - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - '(' => 's 95', - 'nonbrace' => 's 113', - 'method' => 's 99', - '.' => '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 96', - 'p10' => 's 48', - 'p11' => 's 49', - '-' => 's 50', - 'nonbrace' => 's 52', - '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - ')' => 's 104', - 'list' => 's 105', - 'gthash' => 's 107', - 'method' => 's 99', - 'gtpair' => 's 109' - ), - 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 62', - '=>' => 's 97', - ')' => 'r 66' - ), - array( - 'exp' => 's 98', - 'p10' => 's 48', - 'p11' => 's 49', - '-' => 's 50', - 'nonbrace' => 's 52', - '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' - ), - 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( - '(' => 's 100' - ), - array( - 'exp' => 's 61', - 'p10' => 's 48', - 'p11' => 's 49', - '-' => 's 50', - 'nonbrace' => 's 52', - '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99', - ')' => 's 101', - 'list' => 's 102' - ), - array( - '' => 'r 63' - ), - array( - ')' => 's 103' - ), - array( - '' => 'r 64' - ), - 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 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99', - '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 97' - ), - array( - '' => 'r 75' - ), - array( - '' => 'r 62' - ), - array( - '}' => 's 115' - ), - array( - '' => 'r 56' - ), - array( - ',' => 's 117', - '}' => 'r 71' - ), - array( - 'exp' => 's 68', - 'p10' => 's 48', - 'p11' => 's 49', - '-' => 's 50', - 'nonbrace' => 's 52', - '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99', - 'pair' => 's 116', - 'hash' => 's 118', - 'gtpair' => 's 119', - '}' => 'r 73' - ), - array( - '' => 'r 72' - ), - array( - '' => 'r 77' - ), - array( - '' => 'r 67' - ), array( '' => 'r 83' ), array( - ')' => 's 123' - ), - array( - '' => 'r 84' - ), - array( - '' => 'r 86' - ), - array( - 'exp' => 's 126', + 'exp' => 's 119', 'p10' => 's 48', 'p11' => 's 49', '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( - '-->' => 's 127', + '-->' => 's 120', '..' => 's 12', '||' => 's 14', 'OR' => 's 16', @@ -2884,7 +2772,7 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46' ), array( - 'chunks' => 's 128', + 'chunks' => 's 121', 'literal' => 'r 1', '' => 's 132', - 'IF' => 's 176' + '-->' => 's 125', + 'IF' => 's 169' ), array( - 'chunks' => 's 133', + 'chunks' => 's 126', 'literal' => 'r 1', '' => 's 140', - 'varpart' => 's 90', + '=' => 's 131', + '-->' => 's 133', + 'varpart' => 's 72', '.' => 's 57', - '[' => 's 91' + '[' => 's 73' ), array( - 'exp' => 's 139', + 'exp' => 's 132', 'p10' => 's 48', 'p11' => 's 49', '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 's 12', @@ -3032,7 +2917,7 @@ class VMXTemplateParser extends lime_parser { '-->' => 'r 18' ), array( - 'chunks' => 's 141', + 'chunks' => 's 134', 'literal' => 'r 1', '' => 's 151' + '=' => 's 142', + '-->' => 's 144' ), array( - 'exp' => 's 150', + 'exp' => 's 143', 'p10' => 's 48', 'p11' => 's 49', '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', - '!' => 's 63', - 'NOT' => 's 65', - '{' => 's 67', - 'literal' => 's 71', - 'varref' => 's 72', - 'name' => 's 94', - 'method' => 's 99' + '!' => 's 62', + 'NOT' => 's 64', + '{' => 's 66', + 'literal' => 's 70', + 'varref' => 's 71', + 'name' => 's 76' ), array( '..' => 's 12', @@ -3132,7 +3015,7 @@ class VMXTemplateParser extends lime_parser { '-->' => 'r 20' ), array( - 'chunks' => 's 152', + 'chunks' => 's 145', 'literal' => 'r 1', '' => 's 159', + '-->' => 's 152', '..' => 's 12', '||' => 's 14', 'OR' => 's 16', @@ -3224,7 +3105,7 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46' ), array( - 'chunks' => 's 160', + 'chunks' => 's 153', 'literal' => 'r 1', '' => 's 179', + '-->' => 's 172', '..' => 's 12', '||' => 's 14', 'OR' => 's 16', @@ -3390,7 +3268,7 @@ class VMXTemplateParser extends lime_parser { '' => 'r 30' ), array( - 'chunks' => 's 183', + 'chunks' => 's 176', 'literal' => 'r 1', '' => 's 187', - 'IF' => 's 176' + '-->' => 's 180', + 'IF' => 's 169' ), array( - 'chunks' => 's 188', + 'chunks' => 's 181', 'literal' => 'r 1', '' => 's 193', + '-->' => 's 186', '..' => 's 12', '||' => 's 14', 'OR' => 's 16', @@ -3529,7 +3404,7 @@ class VMXTemplateParser extends lime_parser { '' => 'r 17' ), array( - '' => 'r 103' + '' => 'r 100' ) ); public $d = array( @@ -4086,46 +3961,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]; @@ -4134,16 +3979,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]; @@ -4152,20 +3997,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]; @@ -4173,20 +4018,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 + 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]; @@ -4194,8 +4039,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]; @@ -4203,13 +4048,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]; @@ -4217,16 +4062,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]; @@ -4234,32 +4079,32 @@ 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 := . namekw $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_varpart_3($tokens, &$result) { - // (83) varpart := . name ( ) + function reduce_80_varpart_3($tokens, &$result) { + // (80) varpart := . namekw ( ) $result = reset($tokens); $n = &$tokens[1]; $result = '->'.$n.'()'; } - function reduce_84_varpart_4($tokens, &$result) { - // (84) varpart := . name ( list ) + function reduce_81_varpart_4($tokens, &$result) { + // (81) varpart := . namekw ( list ) $result = reset($tokens); $n = &$tokens[1]; $l = &$tokens[3]; @@ -4271,15 +4116,15 @@ class VMXTemplateParser extends lime_parser { $result = '->'.$n.'('.implode(', ', $argv).')'; } - function reduce_85_varpath_1($tokens, &$result) { - // (85) varpath := ε + function reduce_82_varpath_1($tokens, &$result) { + // (82) varpath := ε $result = reset($tokens); $result = ''; } - function reduce_86_varpath_2($tokens, &$result) { - // (86) varpath := varpath varpart + function reduce_83_varpath_2($tokens, &$result) { + // (83) varpath := varpath varpart $result = reset($tokens); $a = &$tokens[0]; $p = &$tokens[1]; @@ -4287,88 +4132,88 @@ class VMXTemplateParser extends lime_parser { $result = $a . $p; } - function reduce_87_namekw_1($tokens, &$result) { - // (87) namekw := name + function reduce_84_namekw_1($tokens, &$result) { + // (84) namekw := name $result = reset($tokens); } - function reduce_88_namekw_2($tokens, &$result) { - // (88) namekw := IF + function reduce_85_namekw_2($tokens, &$result) { + // (85) namekw := IF $result = reset($tokens); } - function reduce_89_namekw_3($tokens, &$result) { - // (89) namekw := END + function reduce_86_namekw_3($tokens, &$result) { + // (86) namekw := END $result = reset($tokens); } - function reduce_90_namekw_4($tokens, &$result) { - // (90) namekw := ELSE + function reduce_87_namekw_4($tokens, &$result) { + // (87) namekw := ELSE $result = reset($tokens); } - function reduce_91_namekw_5($tokens, &$result) { - // (91) namekw := ELSIF + function reduce_88_namekw_5($tokens, &$result) { + // (88) namekw := ELSIF $result = reset($tokens); } - function reduce_92_namekw_6($tokens, &$result) { - // (92) namekw := ELSEIF + function reduce_89_namekw_6($tokens, &$result) { + // (89) namekw := ELSEIF $result = reset($tokens); } - function reduce_93_namekw_7($tokens, &$result) { - // (93) namekw := SET + function reduce_90_namekw_7($tokens, &$result) { + // (90) namekw := SET $result = reset($tokens); } - function reduce_94_namekw_8($tokens, &$result) { - // (94) namekw := OR + function reduce_91_namekw_8($tokens, &$result) { + // (91) namekw := OR $result = reset($tokens); } - function reduce_95_namekw_9($tokens, &$result) { - // (95) namekw := XOR + function reduce_92_namekw_9($tokens, &$result) { + // (92) namekw := XOR $result = reset($tokens); } - function reduce_96_namekw_10($tokens, &$result) { - // (96) namekw := AND + function reduce_93_namekw_10($tokens, &$result) { + // (93) namekw := AND $result = reset($tokens); } - function reduce_97_namekw_11($tokens, &$result) { - // (97) namekw := NOT + function reduce_94_namekw_11($tokens, &$result) { + // (94) namekw := NOT $result = reset($tokens); } - function reduce_98_namekw_12($tokens, &$result) { - // (98) namekw := FUNCTION + function reduce_95_namekw_12($tokens, &$result) { + // (95) namekw := FUNCTION $result = reset($tokens); } - function reduce_99_namekw_13($tokens, &$result) { - // (99) namekw := BLOCK + function reduce_96_namekw_13($tokens, &$result) { + // (96) namekw := BLOCK $result = reset($tokens); } - function reduce_100_namekw_14($tokens, &$result) { - // (100) namekw := MACRO + function reduce_97_namekw_14($tokens, &$result) { + // (97) namekw := MACRO $result = reset($tokens); } - function reduce_101_namekw_15($tokens, &$result) { - // (101) namekw := FOR + function reduce_98_namekw_15($tokens, &$result) { + // (98) namekw := FOR $result = reset($tokens); } - function reduce_102_namekw_16($tokens, &$result) { - // (102) namekw := FOREACH + function reduce_99_namekw_16($tokens, &$result) { + // (99) namekw := FOREACH $result = reset($tokens); } - function reduce_103_start_1($tokens, &$result) { - // (103) 'start' := template + function reduce_100_start_1($tokens, &$result) { + // (100) 'start' := template $result = reset($tokens); } @@ -4436,47 +4281,44 @@ 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_varpart_3', - 'reduce_84_varpart_4', - 'reduce_85_varpath_1', - 'reduce_86_varpath_2', - 'reduce_87_namekw_1', - 'reduce_88_namekw_2', - 'reduce_89_namekw_3', - 'reduce_90_namekw_4', - 'reduce_91_namekw_5', - 'reduce_92_namekw_6', - 'reduce_93_namekw_7', - 'reduce_94_namekw_8', - 'reduce_95_namekw_9', - 'reduce_96_namekw_10', - 'reduce_97_namekw_11', - 'reduce_98_namekw_12', - 'reduce_99_namekw_13', - 'reduce_100_namekw_14', - 'reduce_101_namekw_15', - 'reduce_102_namekw_16', - 'reduce_103_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_namekw_1', + 'reduce_85_namekw_2', + 'reduce_86_namekw_3', + 'reduce_87_namekw_4', + 'reduce_88_namekw_5', + 'reduce_89_namekw_6', + 'reduce_90_namekw_7', + 'reduce_91_namekw_8', + 'reduce_92_namekw_9', + 'reduce_93_namekw_10', + 'reduce_94_namekw_11', + 'reduce_95_namekw_12', + 'reduce_96_namekw_13', + 'reduce_97_namekw_14', + 'reduce_98_namekw_15', + 'reduce_99_namekw_16', + 'reduce_100_start_1' ); public $a = array( array( @@ -4794,21 +4636,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, @@ -5002,5 +4829,5 @@ class VMXTemplateParser extends lime_parser { ); } -// Time: 3,1172089576721 seconds -// Memory: 11886108 bytes +// Time: 4,2855579853058 seconds +// Memory: 11192016 bytes diff --git a/template.php b/template.php index 1c0e8ba..7e16ee4 100644 --- a/template.php +++ b/template.php @@ -8,7 +8,7 @@ * Homepage: http://yourcmc.ru/wiki/VMX::Template * License: GNU GPLv3 or later * Author: Vitaliy Filippov, 2006-2015 - * Version: V3 (LALR), 2015-04-10 + * Version: V3 (LALR), 2015-04-12 * * The template engine is split into two parts: * (1) This file - always used when running templates diff --git a/template.y b/template.y index 7cff19a..b0c415e 100644 --- a/template.y +++ b/template.y @@ -50,8 +50,7 @@ exp: exp ".." exp | p10 p10: p11 | '-' p11 p11: nonbrace | '(' exp ')' varpath | '!' p11 | "NOT" p11 -nonbrace: '{' hash '}' | literal | varref | name '(' ')' | name '(' list ')' | name '(' gthash ')' | name nonbrace | method '(' ')' | method '(' list ')' -method: varref '.' namekw +nonbrace: '{' hash '}' | literal | varref | name '(' ')' | name '(' list ')' | name '(' gthash ')' | name nonbrace list: exp | exp ',' list arglist: name | name ',' arglist | hash: pair | pair ',' hash | @@ -59,7 +58,7 @@ gthash: gtpair | gtpair ',' gthash pair: exp ',' exp | gtpair gtpair: exp "=>" exp varref: name | varref varpart -varpart: '.' namekw | '[' exp ']' +varpart: '.' namekw | '[' exp ']' | '.' namekw '(' ')' | '.' namekw '(' list ')' varpath: | varpath varpart namekw: name | "IF" | "END" | "ELSE" | "ELSIF" | "ELSEIF" | "SET" | "OR" | "XOR" | "AND" | "NOT" | "FUNCTION" | "BLOCK" | "MACRO" | "FOR" | "FOREACH" %% diff --git a/template.yp b/template.yp index 5edb070..7c06166 100644 --- a/template.yp +++ b/template.yp @@ -316,16 +316,16 @@ varref: name { [ $_[1][0] . $_[2], 0 ]; } ; -varpart: '.' name { +varpart: '.' namekw { "->{'".addcslashes($_[2], "'")."'}"; } | '[' exp ']' { ($_[2][1] eq 'i' ? '->['.$_[2][0].']' : "->{".$_[2][0]."}"); } -| '.' name '(' ')' { +| '.' namekw '(' ')' { '->'.$_[2].'()'; } -| '.' name '(' list ')' { +| '.' namekw '(' list ')' { '->'.$_[2].'('.join(', ', map { $_->[0] } @{$_[4]}).')'; } ; @@ -336,5 +336,7 @@ varpath: { $_[1] . $_[2]; } ; +namekw: name | 'IF' | 'END' | 'ELSE' | 'ELSIF' | 'ELSEIF' | 'SET' | 'OR' | 'XOR' | 'AND' | 'NOT' | 'FUNCTION' | 'BLOCK' | 'MACRO' | 'FOR' | 'FOREACH' +; %%