diff --git a/template.lime b/template.lime index c3e8b8b..bbd5804 100644 --- a/template.lime +++ b/template.lime @@ -1,11 +1,15 @@ # Контекстно-свободная LIME-грамматика шаблонизатора # -# ЗАМЕЧАНИЯ: -# (!) Для разбора нужен патченый LIME, в котором лексема 'lit' подменена на 'str'. +# Для корректной работы нужен патченый LIME со следующими изменениями: +# (*) Подменой лексемы 'lit' на 'str' в метаграмматике. # Это нужно, чтобы можно было юзать строковые лексемы типа '" "directive end '-->'" %left ".." -%left "||" "or" "xor" -%left "&&" "and" +%left "||" "OR" "XOR" +%left "&&" "AND" %nonassoc "==" "!=" "<" ">" "<=" ">=" %left "+" "-" %left "&" @@ -80,7 +84,6 @@ chunk = literal { $$ = '$t .= ' . $e . ";\n"; } | error/e { - $this->template->lexer->skip_error($e); $$ = ''; } . @@ -88,16 +91,16 @@ code_chunk = c_if/$ | c_set/$ | c_fn/$ | c_for/$ | exp { $$ = '$t .= ' . $1 . ";\n"; } . -c_if = "if" exp/e "-->" chunks/if "" chunks/if "" chunks/if "" chunks/else "" chunks/if "" chunks/else "" chunks/if c_elseifs/ei chunks/ec "" chunks/if c_elseifs/ei chunks/ec "" chunks/if c_elseifs/ei chunks/ec "" chunks/else "" chunks/if c_elseifs/ei chunks/ec "" chunks/else "" { $$ = $p . $cs . "} elseif (" . $e . ") {\n"; } . -c_set = "set" varref/v "=" exp/e { +c_set = "SET" varref/v "=" exp/e { $$ = $v . ' = ' . $e . ";\n"; } -| "set" varref/v "-->" chunks/cs "" chunks/cs "" chunks/cs "" chunks/cs "" chunks/cs "" chunks/cs "' => 's 6' ), array( - 'literal' => 'r 4', - '' => 'r 7' + '' => 'r 7' ), array( - '-->' => 'r 8' + '' => 'r 8' ), array( - '-->' => 'r 9' + '' => 'r 9' ), array( - '-->' => 'r 10' + '' => 'r 10' ), array( '..' => 's 12', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -2030,7 +2020,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2040,10 +2030,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 'r 31', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -2071,7 +2061,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2081,10 +2071,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 'r 32', '||' => 'r 32', - 'or' => 'r 32', - 'xor' => 'r 32', + 'OR' => 'r 32', + 'XOR' => 'r 32', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -2112,7 +2102,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2122,10 +2112,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 'r 33', '||' => 'r 33', - 'or' => 'r 33', - 'xor' => 'r 33', + 'OR' => 'r 33', + 'XOR' => 'r 33', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -2153,7 +2143,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2163,10 +2153,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 'r 34', '||' => 'r 34', - 'or' => 'r 34', - 'xor' => 'r 34', + 'OR' => 'r 34', + 'XOR' => 'r 34', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -2194,7 +2184,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2204,10 +2194,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 'r 35', '||' => 'r 35', - 'or' => 'r 35', - 'xor' => 'r 35', + 'OR' => 'r 35', + 'XOR' => 'r 35', '&&' => 'r 35', - 'and' => 'r 35', + 'AND' => 'r 35', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -2235,7 +2225,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2245,10 +2235,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 'r 36', '||' => 'r 36', - 'or' => 'r 36', - 'xor' => 'r 36', + 'OR' => 'r 36', + 'XOR' => 'r 36', '&&' => 'r 36', - 'and' => 'r 36', + 'AND' => 'r 36', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -2276,7 +2266,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2286,10 +2276,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 'r 37', '||' => 'r 37', - 'or' => 'r 37', - 'xor' => 'r 37', + 'OR' => 'r 37', + 'XOR' => 'r 37', '&&' => 'r 37', - 'and' => 'r 37', + 'AND' => 'r 37', '+' => 's 36', '-' => 's 38', '&' => 's 40', @@ -2311,7 +2301,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2321,10 +2311,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 'r 38', '||' => 'r 38', - 'or' => 'r 38', - 'xor' => 'r 38', + 'OR' => 'r 38', + 'XOR' => 'r 38', '&&' => 'r 38', - 'and' => 'r 38', + 'AND' => 'r 38', '+' => 's 36', '-' => 's 38', '&' => 's 40', @@ -2346,7 +2336,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2356,10 +2346,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 'r 39', '||' => 'r 39', - 'or' => 'r 39', - 'xor' => 'r 39', + 'OR' => 'r 39', + 'XOR' => 'r 39', '&&' => 'r 39', - 'and' => 'r 39', + 'AND' => 'r 39', '+' => 's 36', '-' => 's 38', '&' => 's 40', @@ -2381,7 +2371,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2391,10 +2381,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 'r 40', '||' => 'r 40', - 'or' => 'r 40', - 'xor' => 'r 40', + 'OR' => 'r 40', + 'XOR' => 'r 40', '&&' => 'r 40', - 'and' => 'r 40', + 'AND' => 'r 40', '+' => 's 36', '-' => 's 38', '&' => 's 40', @@ -2416,7 +2406,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2426,10 +2416,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 'r 41', '||' => 'r 41', - 'or' => 'r 41', - 'xor' => 'r 41', + 'OR' => 'r 41', + 'XOR' => 'r 41', '&&' => 'r 41', - 'and' => 'r 41', + 'AND' => 'r 41', '+' => 's 36', '-' => 's 38', '&' => 's 40', @@ -2451,7 +2441,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2461,10 +2451,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 'r 42', '||' => 'r 42', - 'or' => 'r 42', - 'xor' => 'r 42', + 'OR' => 'r 42', + 'XOR' => 'r 42', '&&' => 'r 42', - 'and' => 'r 42', + 'AND' => 'r 42', '+' => 's 36', '-' => 's 38', '&' => 's 40', @@ -2486,7 +2476,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2496,10 +2486,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 'r 43', '||' => 'r 43', - 'or' => 'r 43', - 'xor' => 'r 43', + 'OR' => 'r 43', + 'XOR' => 'r 43', '&&' => 'r 43', - 'and' => 'r 43', + 'AND' => 'r 43', '==' => 'r 43', '!=' => 'r 43', '<' => 'r 43', @@ -2527,7 +2517,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2537,10 +2527,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 'r 44', '||' => 'r 44', - 'or' => 'r 44', - 'xor' => 'r 44', + 'OR' => 'r 44', + 'XOR' => 'r 44', '&&' => 'r 44', - 'and' => 'r 44', + 'AND' => 'r 44', '==' => 'r 44', '!=' => 'r 44', '<' => 'r 44', @@ -2568,7 +2558,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2578,10 +2568,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 'r 45', '||' => 'r 45', - 'or' => 'r 45', - 'xor' => 'r 45', + 'OR' => 'r 45', + 'XOR' => 'r 45', '&&' => 'r 45', - 'and' => 'r 45', + 'AND' => 'r 45', '==' => 'r 45', '!=' => 'r 45', '<' => 'r 45', @@ -2609,7 +2599,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2617,30 +2607,7 @@ class VMXTemplateParser extends lime_parser { 'method' => 's 80' ), array( - '..' => 'r 46', - '||' => 'r 46', - 'or' => 'r 46', - 'xor' => 'r 46', - '&&' => 'r 46', - 'and' => 'r 46', - '==' => 'r 46', - '!=' => 'r 46', - '<' => 'r 46', - '>' => 'r 46', - '<=' => 'r 46', - '>=' => 'r 46', - '+' => 'r 46', - '-' => 'r 46', - '&' => 'r 46', - '*' => 'r 46', - '/' => 'r 46', - '%' => 'r 46', - '-->' => 'r 46', - ')' => 'r 46', - ']' => 'r 46', - '=>' => 'r 46', - ',' => 'r 46', - '}' => 'r 46' + '' => 'r 46' ), array( 'exp' => 's 45', @@ -2650,7 +2617,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2658,30 +2625,7 @@ class VMXTemplateParser extends lime_parser { 'method' => 's 80' ), array( - '..' => 'r 47', - '||' => 'r 47', - 'or' => 'r 47', - 'xor' => 'r 47', - '&&' => 'r 47', - 'and' => 'r 47', - '==' => 'r 47', - '!=' => 'r 47', - '<' => 'r 47', - '>' => 'r 47', - '<=' => 'r 47', - '>=' => 'r 47', - '+' => 'r 47', - '-' => 'r 47', - '&' => 'r 47', - '*' => 'r 47', - '/' => 'r 47', - '%' => 'r 47', - '-->' => 'r 47', - ')' => 'r 47', - ']' => 'r 47', - '=>' => 'r 47', - ',' => 'r 47', - '}' => 'r 47' + '' => 'r 47' ), array( 'exp' => 's 47', @@ -2691,7 +2635,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2699,89 +2643,20 @@ class VMXTemplateParser extends lime_parser { 'method' => 's 80' ), array( - '..' => 'r 48', - '||' => 'r 48', - 'or' => 'r 48', - 'xor' => 'r 48', - '&&' => 'r 48', - 'and' => 'r 48', - '==' => 'r 48', - '!=' => 'r 48', - '<' => 'r 48', - '>' => 'r 48', - '<=' => 'r 48', - '>=' => 'r 48', - '+' => 'r 48', - '-' => 'r 48', - '&' => 'r 48', - '*' => 'r 48', - '/' => 'r 48', - '%' => 'r 48', - '-->' => 'r 48', - ')' => 'r 48', - ']' => 'r 48', - '=>' => 'r 48', - ',' => 'r 48', - '}' => 'r 48' + '' => 'r 48' ), array( - '%' => 'r 49', - '/' => 'r 49', - '*' => 'r 49', - '&' => 'r 49', - '-' => 'r 49', - '+' => 'r 49', - '>=' => 'r 49', - '<=' => 'r 49', - '>' => 'r 49', - '<' => 'r 49', - '!=' => 'r 49', - '==' => 'r 49', - 'and' => 'r 49', - '&&' => 'r 49', - 'xor' => 'r 49', - 'or' => 'r 49', - '||' => 'r 49', - '..' => 'r 49', - '-->' => 'r 49', - ')' => 'r 49', - ']' => 'r 49', - '=>' => 'r 49', - ',' => 'r 49', - '}' => 'r 49' + '' => 'r 49' ), array( - '%' => 'r 50', - '/' => 'r 50', - '*' => 'r 50', - '&' => 'r 50', - '-' => 'r 50', - '+' => 'r 50', - '>=' => 'r 50', - '<=' => 'r 50', - '>' => 'r 50', - '<' => 'r 50', - '!=' => 'r 50', - '==' => 'r 50', - 'and' => 'r 50', - '&&' => 'r 50', - 'xor' => 'r 50', - 'or' => 'r 50', - '||' => 'r 50', - '..' => 'r 50', - '-->' => 'r 50', - ')' => 'r 50', - ']' => 'r 50', - '=>' => 'r 50', - ',' => 'r 50', - '}' => 'r 50' + '' => 'r 50' ), array( 'p11' => 's 51', 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2789,56 +2664,10 @@ class VMXTemplateParser extends lime_parser { 'method' => 's 80' ), array( - '%' => 'r 51', - '/' => 'r 51', - '*' => 'r 51', - '&' => 'r 51', - '-' => 'r 51', - '+' => 'r 51', - '>=' => 'r 51', - '<=' => 'r 51', - '>' => 'r 51', - '<' => 'r 51', - '!=' => 'r 51', - '==' => 'r 51', - 'and' => 'r 51', - '&&' => 'r 51', - 'xor' => 'r 51', - 'or' => 'r 51', - '||' => 'r 51', - '..' => 'r 51', - '-->' => 'r 51', - ')' => 'r 51', - ']' => 'r 51', - '=>' => 'r 51', - ',' => 'r 51', - '}' => 'r 51' + '' => 'r 51' ), array( - '%' => 'r 52', - '/' => 'r 52', - '*' => 'r 52', - '&' => 'r 52', - '-' => 'r 52', - '+' => 'r 52', - '>=' => 'r 52', - '<=' => 'r 52', - '>' => 'r 52', - '<' => 'r 52', - '!=' => 'r 52', - '==' => 'r 52', - 'and' => 'r 52', - '&&' => 'r 52', - 'xor' => 'r 52', - 'or' => 'r 52', - '||' => 'r 52', - '..' => 'r 52', - '-->' => 'r 52', - ')' => 'r 52', - ']' => 'r 52', - '=>' => 'r 52', - ',' => 'r 52', - '}' => 'r 52' + '' => 'r 52' ), array( 'exp' => 's 54', @@ -2848,7 +2677,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2858,10 +2687,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 's 12', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -2892,10 +2721,10 @@ class VMXTemplateParser extends lime_parser { '<' => 'r 83', '!=' => 'r 83', '==' => 'r 83', - 'and' => 'r 83', + 'AND' => 'r 83', '&&' => 'r 83', - 'xor' => 'r 83', - 'or' => 'r 83', + 'XOR' => 'r 83', + 'OR' => 'r 83', '||' => 'r 83', '..' => 'r 83', '-->' => 'r 83', @@ -2921,10 +2750,10 @@ class VMXTemplateParser extends lime_parser { '<' => 'r 53', '!=' => 'r 53', '==' => 'r 53', - 'and' => 'r 53', + 'AND' => 'r 53', '&&' => 'r 53', - 'xor' => 'r 53', - 'or' => 'r 53', + 'XOR' => 'r 53', + 'OR' => 'r 53', '||' => 'r 53', '..' => 'r 53', '-->' => 'r 53', @@ -2938,33 +2767,7 @@ class VMXTemplateParser extends lime_parser { 'name' => 's 58' ), array( - '-->' => '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', - '!=' => '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' ), array( 'exp' => 's 60', @@ -2974,7 +2777,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -2984,10 +2787,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 's 12', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -3003,40 +2806,14 @@ class VMXTemplateParser extends lime_parser { ']' => 's 61' ), array( - '.' => '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' + '' => 'r 82' ), array( 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', 'p11' => 's 63', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -3044,36 +2821,13 @@ class VMXTemplateParser extends lime_parser { 'method' => 's 80' ), array( - '%' => 'r 54', - '/' => 'r 54', - '*' => 'r 54', - '&' => 'r 54', - '-' => 'r 54', - '+' => 'r 54', - '>=' => 'r 54', - '<=' => 'r 54', - '>' => 'r 54', - '<' => 'r 54', - '!=' => 'r 54', - '==' => 'r 54', - 'and' => 'r 54', - '&&' => 'r 54', - 'xor' => 'r 54', - 'or' => 'r 54', - '||' => 'r 54', - '..' => 'r 54', - '-->' => 'r 54', - ')' => 'r 54', - ']' => 'r 54', - '=>' => 'r 54', - ',' => 'r 54', - '}' => 'r 54' + '' => 'r 54' ), array( 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', 'p11' => 's 65', '{' => 's 66', 'literal' => 's 70', @@ -3082,30 +2836,7 @@ class VMXTemplateParser extends lime_parser { 'method' => 's 80' ), array( - '%' => 'r 55', - '/' => 'r 55', - '*' => 'r 55', - '&' => 'r 55', - '-' => 'r 55', - '+' => 'r 55', - '>=' => 'r 55', - '<=' => 'r 55', - '>' => 'r 55', - '<' => 'r 55', - '!=' => 'r 55', - '==' => 'r 55', - 'and' => 'r 55', - '&&' => 'r 55', - 'xor' => 'r 55', - 'or' => 'r 55', - '||' => 'r 55', - '..' => 'r 55', - '-->' => 'r 55', - ')' => 'r 55', - ']' => 'r 55', - '=>' => 'r 55', - ',' => 'r 55', - '}' => 'r 55' + '' => 'r 55' ), array( 'exp' => 's 67', @@ -3115,7 +2846,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'hash' => 's 98', 'literal' => 's 70', @@ -3129,10 +2860,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 's 12', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -3156,7 +2887,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -3166,10 +2897,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 's 12', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -3186,30 +2917,7 @@ class VMXTemplateParser extends lime_parser { '}' => 'r 76' ), array( - '%' => 'r 57', - '/' => 'r 57', - '*' => 'r 57', - '&' => 'r 57', - '-' => 'r 57', - '+' => 'r 57', - '>=' => 'r 57', - '<=' => 'r 57', - '>' => 'r 57', - '<' => 'r 57', - '!=' => 'r 57', - '==' => 'r 57', - 'and' => 'r 57', - '&&' => 'r 57', - 'xor' => 'r 57', - 'or' => 'r 57', - '||' => 'r 57', - '..' => 'r 57', - '-->' => 'r 57', - ')' => 'r 57', - ']' => 'r 57', - '=>' => 'r 57', - ',' => 'r 57', - '}' => 'r 57' + '' => 'r 57' ), array( '.' => 's 72', @@ -3227,10 +2935,10 @@ class VMXTemplateParser extends lime_parser { '<' => 'r 58', '!=' => 'r 58', '==' => 'r 58', - 'and' => 'r 58', + 'AND' => 'r 58', '&&' => 'r 58', - 'xor' => 'r 58', - 'or' => 'r 58', + 'XOR' => 'r 58', + 'OR' => 'r 58', '||' => 'r 58', '..' => 'r 58', '-->' => 'r 58', @@ -3259,10 +2967,10 @@ class VMXTemplateParser extends lime_parser { '<' => 'r 81', '!=' => 'r 81', '==' => 'r 81', - 'and' => 'r 81', + 'AND' => 'r 81', '&&' => 'r 81', - 'xor' => 'r 81', - 'or' => 'r 81', + 'XOR' => 'r 81', + 'OR' => 'r 81', '||' => 'r 81', '..' => 'r 81', '-->' => 'r 81', @@ -3273,33 +2981,7 @@ class VMXTemplateParser extends lime_parser { '}' => 'r 81' ), array( - '.' => 'r 80', - '[' => 'r 80', - '%' => 'r 80', - '/' => 'r 80', - '*' => 'r 80', - '&' => 'r 80', - '-' => 'r 80', - '+' => 'r 80', - '>=' => 'r 80', - '<=' => 'r 80', - '>' => 'r 80', - '<' => 'r 80', - '!=' => 'r 80', - '==' => 'r 80', - 'and' => 'r 80', - '&&' => 'r 80', - 'xor' => 'r 80', - 'or' => 'r 80', - '||' => 'r 80', - '..' => 'r 80', - '-->' => 'r 80', - ')' => 'r 80', - ']' => 'r 80', - '=>' => 'r 80', - ',' => 'r 80', - '=' => 'r 80', - '}' => 'r 80' + '' => 'r 80' ), array( '{' => 's 66', @@ -3323,10 +3005,10 @@ class VMXTemplateParser extends lime_parser { '<' => 'r 79', '!=' => 'r 79', '==' => 'r 79', - 'and' => 'r 79', + 'AND' => 'r 79', '&&' => 'r 79', - 'xor' => 'r 79', - 'or' => 'r 79', + 'XOR' => 'r 79', + 'OR' => 'r 79', '||' => 'r 79', '..' => 'r 79', '-->' => 'r 79', @@ -3344,7 +3026,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -3358,10 +3040,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 's 12', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -3386,7 +3068,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -3397,10 +3079,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 's 12', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -3427,7 +3109,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -3437,62 +3119,16 @@ class VMXTemplateParser extends lime_parser { 'list' => 's 83' ), array( - '%' => 'r 63', - '/' => 'r 63', - '*' => 'r 63', - '&' => 'r 63', - '-' => 'r 63', - '+' => 'r 63', - '>=' => 'r 63', - '<=' => 'r 63', - '>' => 'r 63', - '<' => 'r 63', - '!=' => 'r 63', - '==' => 'r 63', - 'and' => 'r 63', - '&&' => 'r 63', - 'xor' => 'r 63', - 'or' => 'r 63', - '||' => 'r 63', - '..' => 'r 63', - '-->' => 'r 63', - ')' => 'r 63', - ']' => 'r 63', - '=>' => 'r 63', - ',' => 'r 63', - '}' => 'r 63' + '' => 'r 63' ), array( ')' => 's 84' ), array( - '%' => 'r 64', - '/' => 'r 64', - '*' => 'r 64', - '&' => 'r 64', - '-' => 'r 64', - '+' => 'r 64', - '>=' => 'r 64', - '<=' => 'r 64', - '>' => 'r 64', - '<' => 'r 64', - '!=' => 'r 64', - '==' => 'r 64', - 'and' => 'r 64', - '&&' => 'r 64', - 'xor' => 'r 64', - 'or' => 'r 64', - '||' => 'r 64', - '..' => 'r 64', - '-->' => 'r 64', - ')' => 'r 64', - ']' => 'r 64', - '=>' => 'r 64', - ',' => 'r 64', - '}' => 'r 64' + '' => 'r 64' ), array( - ')' => 'r 67' + '' => 'r 67' ), array( 'exp' => 's 87', @@ -3502,7 +3138,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -3512,10 +3148,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 's 12', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -3533,88 +3169,19 @@ class VMXTemplateParser extends lime_parser { ')' => 'r 78' ), array( - '%' => 'r 59', - '/' => 'r 59', - '*' => 'r 59', - '&' => 'r 59', - '-' => 'r 59', - '+' => 'r 59', - '>=' => 'r 59', - '<=' => 'r 59', - '>' => 'r 59', - '<' => 'r 59', - '!=' => 'r 59', - '==' => 'r 59', - 'and' => 'r 59', - '&&' => 'r 59', - 'xor' => 'r 59', - 'or' => 'r 59', - '||' => 'r 59', - '..' => 'r 59', - '-->' => 'r 59', - ')' => 'r 59', - ']' => 'r 59', - '=>' => 'r 59', - ',' => 'r 59', - '}' => 'r 59' + '' => 'r 59' ), array( ')' => 's 90' ), array( - '%' => 'r 60', - '/' => 'r 60', - '*' => 'r 60', - '&' => 'r 60', - '-' => 'r 60', - '+' => 'r 60', - '>=' => 'r 60', - '<=' => 'r 60', - '>' => 'r 60', - '<' => 'r 60', - '!=' => 'r 60', - '==' => 'r 60', - 'and' => 'r 60', - '&&' => 'r 60', - 'xor' => 'r 60', - 'or' => 'r 60', - '||' => 'r 60', - '..' => 'r 60', - '-->' => 'r 60', - ')' => 'r 60', - ']' => 'r 60', - '=>' => 'r 60', - ',' => 'r 60', - '}' => 'r 60' + '' => 'r 60' ), array( ')' => 's 92' ), array( - '%' => 'r 61', - '/' => 'r 61', - '*' => 'r 61', - '&' => 'r 61', - '-' => 'r 61', - '+' => 'r 61', - '>=' => 'r 61', - '<=' => 'r 61', - '>' => 'r 61', - '<' => 'r 61', - '!=' => 'r 61', - '==' => 'r 61', - 'and' => 'r 61', - '&&' => 'r 61', - 'xor' => 'r 61', - 'or' => 'r 61', - '||' => 'r 61', - '..' => 'r 61', - '-->' => 'r 61', - ')' => 'r 61', - ']' => 'r 61', - '=>' => 'r 61', - ',' => 'r 61', - '}' => 'r 61' + '' => 'r 61' ), array( ',' => 's 94', @@ -3628,7 +3195,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -3640,10 +3207,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 's 12', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -3659,62 +3226,16 @@ class VMXTemplateParser extends lime_parser { '=>' => 's 86' ), array( - ')' => 'r 75' + '' => 'r 75' ), array( - '%' => 'r 62', - '/' => 'r 62', - '*' => 'r 62', - '&' => 'r 62', - '-' => 'r 62', - '+' => 'r 62', - '>=' => 'r 62', - '<=' => 'r 62', - '>' => 'r 62', - '<' => 'r 62', - '!=' => 'r 62', - '==' => 'r 62', - 'and' => 'r 62', - '&&' => 'r 62', - 'xor' => 'r 62', - 'or' => 'r 62', - '||' => 'r 62', - '..' => 'r 62', - '-->' => 'r 62', - ')' => 'r 62', - ']' => 'r 62', - '=>' => 'r 62', - ',' => 'r 62', - '}' => 'r 62' + '' => 'r 62' ), array( '}' => 's 99' ), array( - '%' => 'r 56', - '/' => 'r 56', - '*' => 'r 56', - '&' => 'r 56', - '-' => 'r 56', - '+' => 'r 56', - '>=' => 'r 56', - '<=' => 'r 56', - '>' => 'r 56', - '<' => 'r 56', - '!=' => 'r 56', - '==' => 'r 56', - 'and' => 'r 56', - '&&' => 'r 56', - 'xor' => 'r 56', - 'or' => 'r 56', - '||' => 'r 56', - '..' => 'r 56', - '-->' => 'r 56', - ')' => 'r 56', - ']' => 'r 56', - '=>' => 'r 56', - ',' => 'r 56', - '}' => 'r 56' + '' => 'r 56' ), array( ',' => 's 101', @@ -3728,7 +3249,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -3740,39 +3261,13 @@ class VMXTemplateParser extends lime_parser { '}' => 'r 73' ), array( - '}' => 'r 72' + '' => 'r 72' ), array( - ',' => 'r 77', - '}' => 'r 77' + '' => 'r 77' ), array( - '.' => 'r 84', - '[' => 'r 84', - '%' => 'r 84', - '/' => 'r 84', - '*' => 'r 84', - '&' => 'r 84', - '-' => 'r 84', - '+' => 'r 84', - '>=' => 'r 84', - '<=' => 'r 84', - '>' => 'r 84', - '<' => 'r 84', - '!=' => 'r 84', - '==' => 'r 84', - 'and' => 'r 84', - '&&' => 'r 84', - 'xor' => 'r 84', - 'or' => 'r 84', - '||' => 'r 84', - '..' => 'r 84', - '-->' => 'r 84', - ')' => 'r 84', - ']' => 'r 84', - '=>' => 'r 84', - ',' => 'r 84', - '}' => 'r 84' + '' => 'r 84' ), array( 'exp' => 's 106', @@ -3782,7 +3277,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -3793,10 +3288,10 @@ class VMXTemplateParser extends lime_parser { '-->' => 's 107', '..' => 's 12', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -3815,22 +3310,19 @@ class VMXTemplateParser extends lime_parser { 'chunks' => 's 109', 'literal' => 's 3', '' => 'r 12' + '' => 'r 12' ), array( '-->' => 's 113', - 'if' => 's 156' + 'IF' => 's 157' ), array( 'chunk' => 's 108', 'chunks' => 's 114', 'literal' => 's 3', '' => 'r 13' + '' => 'r 13' ), array( 'varref' => 's 118', - 'name' => 's 152' + 'name' => 's 153' ), array( '=' => 's 119', @@ -3937,7 +3432,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -3947,10 +3442,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 's 12', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -3970,15 +3465,15 @@ class VMXTemplateParser extends lime_parser { 'chunks' => 's 122', 'literal' => 's 3', '' => 'r 19' + '' => 'r 19' ), array( 'name' => 's 126' @@ -4020,7 +3516,7 @@ class VMXTemplateParser extends lime_parser { ), array( 'arglist' => 's 128', - 'name' => 's 153', + 'name' => 's 154', ')' => 'r 70' ), array( @@ -4038,7 +3534,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -4048,10 +3544,10 @@ class VMXTemplateParser extends lime_parser { array( '..' => 's 12', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -4071,15 +3567,15 @@ class VMXTemplateParser extends lime_parser { 'chunks' => 's 133', 'literal' => 's 3', '' => 'r 21' + '' => 'r 21' ), array( 'varref' => 's 137', - 'name' => 's 152' + 'name' => 's 153' ), array( '=' => 's 138', @@ -4131,7 +3628,7 @@ class VMXTemplateParser extends lime_parser { 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -4142,10 +3639,10 @@ class VMXTemplateParser extends lime_parser { '-->' => 's 140', '..' => 's 12', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -4164,15 +3661,15 @@ class VMXTemplateParser extends lime_parser { 'chunks' => 's 141', 'literal' => 's 3', '' => 'r 22' + '' => 'r 22' ), array( - 'name' => 'r 23' + '' => 'r 23' ), array( - 'name' => 'r 24' + '' => 'r 24' ), array( - 'name' => 'r 25' + '' => 'r 25' ), array( - 'name' => 'r 27' + '' => 'r 26' ), array( - 'exp' => 's 149', + '' => 'r 27' + ), + array( + 'exp' => 's 150', 'p10' => 's 48', 'p11' => 's 49', '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -4234,13 +3735,13 @@ class VMXTemplateParser extends lime_parser { 'method' => 's 80' ), array( - '}' => 's 150', + '}' => 's 151', '..' => 's 12', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -4255,53 +3756,38 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46' ), array( - 'literal' => 'r 5', - '' => 'r 79', - '=' => 'r 79' + '' => 'r 79' ), array( - ',' => 's 154', + ',' => 's 155', ')' => 'r 68' ), array( - 'name' => 's 153', - 'arglist' => 's 155', + 'name' => 's 154', + 'arglist' => 's 156', ')' => 'r 70' ), array( - ')' => 'r 69' + '' => 'r 69' ), array( - '-' => 'r 28', - '(' => 'r 28', - '!' => 'r 28', - 'not' => 'r 28', - '{' => 'r 28', - 'literal' => 'r 28', - 'name' => 'r 28' + '' => 'r 28' ), array( - 'exp' => 's 158', + 'exp' => 's 159', 'p10' => 's 48', 'p11' => 's 49', '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -4309,13 +3795,13 @@ class VMXTemplateParser extends lime_parser { 'method' => 's 80' ), array( - '-->' => 's 159', + '-->' => 's 160', '..' => 's 12', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -4330,33 +3816,28 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46' ), array( - 'literal' => 'r 16', - '' => 'r 14' + '' => 'r 14' ), array( - '-->' => 's 166', - 'if' => 's 156' + '-->' => 's 168', + 'IF' => 's 157' ), array( 'chunk' => 's 108', - 'chunks' => 's 167', + 'chunks' => 's 169', 'literal' => 's 3', '' => 'r 15' + '' => 'r 15' ), array( - 'exp' => 's 171', + 'exp' => 's 173', 'p10' => 's 48', 'p11' => 's 49', '-' => 's 50', 'nonbrace' => 's 52', '(' => 's 53', '!' => 's 62', - 'not' => 's 64', + 'NOT' => 's 64', '{' => 's 66', 'literal' => 's 70', 'varref' => 's 71', @@ -4460,13 +3944,13 @@ class VMXTemplateParser extends lime_parser { 'method' => 's 80' ), array( - '-->' => 's 172', + '-->' => 's 174', '..' => 's 12', '||' => 's 14', - 'or' => 's 16', - 'xor' => 's 18', + 'OR' => 's 16', + 'XOR' => 's 18', '&&' => 's 20', - 'and' => 's 22', + 'AND' => 's 22', '==' => 's 24', '!=' => 's 26', '<' => 's 28', @@ -4481,20 +3965,18 @@ class VMXTemplateParser extends lime_parser { '%' => 's 46' ), array( - 'literal' => 'r 17', - ' chunks chunks chunks chunks chunks chunks chunks c_elseifs chunks chunks c_elseifs chunks chunks c_elseifs chunks chunks chunks c_elseifs chunks chunks chunks chunks chunks chunks chunks chunks " | "{" exp "}" | error code_chunk: c_if | c_set | c_fn | c_for | exp -c_if: "if" exp "-->" chunks "" chunks "" chunks "" chunks c_elseifs chunks "" chunks c_elseifs chunks "" chunks "" chunks "" chunks "" chunks "" chunks c_elseifs chunks "" chunks c_elseifs chunks "" chunks "" | c_elseifs chunks "" -c_set: "set" varref "=" exp | "set" varref "-->" chunks "" chunks "" chunks "" chunks "" chunks "" chunks "