From ed0f18a121144b8f5d2180565563c4f27dc99c60 Mon Sep 17 00:00:00 2001 From: =?utf8?q?C=C3=A9sar=20D=2E=20Rodas?= Date: Wed, 28 Jul 2010 01:24:27 -0400 Subject: [PATCH] - Added reference to object property (PHP style) + It is better brake compatibilities with Django template at this small point than overhead check for each variable if they are object or arrays - Moved build.sh to the root repository --- lib/Haanga/Compiler/Lexer.lex | 9 + lib/Haanga/Compiler/Lexer.php | 316 ++- lib/Haanga/Compiler/Parser.out | 2882 ++++++++++---------- lib/Haanga/Compiler/Parser.php | 1018 +++---- lib/Haanga/Compiler/Parser.y | 1 + lib/Haanga/Generator/PHP.php | 21 +- lib/Haanga/build.sh | 3 - tests/assert_templates/object.html | 2 + tests/assert_templates/object.php | 6 + tests/assert_templates/object.tpl | 2 + tests/errorTest.php | 2 +- .../c1df77e2249dc4876d6380db8edd1ed30a7f89cd.php | 12 + 12 files changed, 2202 insertions(+), 2072 deletions(-) delete mode 100755 lib/Haanga/build.sh create mode 100644 tests/assert_templates/object.html create mode 100644 tests/assert_templates/object.php create mode 100644 tests/assert_templates/object.tpl create mode 100644 tests/tmp/c1df77e2249dc4876d6380db8edd1ed30a7f89cd.php diff --git a/lib/Haanga/Compiler/Lexer.lex b/lib/Haanga/Compiler/Lexer.lex index 74a0e26..e18c7ed 100644 --- a/lib/Haanga/Compiler/Lexer.lex +++ b/lib/Haanga/Compiler/Lexer.lex @@ -140,6 +140,11 @@ html { $this->yypopstate(); } +"->" { + $this->token = HG_Parser::T_OBJ; +} + + "." { $this->token = HG_Parser::T_DOT; } @@ -396,6 +401,10 @@ whitespace { $this->token = HG_Parser::T_COLON; } +"->" { + $this->token = HG_Parser::T_OBJ; +} + "." { $this->token = HG_Parser::T_DOT; diff --git a/lib/Haanga/Compiler/Lexer.php b/lib/Haanga/Compiler/Lexer.php index bf62c4d..68fd7dd 100644 --- a/lib/Haanga/Compiler/Lexer.php +++ b/lib/Haanga/Compiler/Lexer.php @@ -312,18 +312,19 @@ class Haanga_Compiler_Lexer 51 => 0, 52 => 0, 53 => 0, - 54 => 1, - 56 => 0, + 54 => 0, + 55 => 1, 57 => 0, - 58 => 1, - 60 => 2, - 63 => 1, - 65 => 0, + 58 => 0, + 59 => 1, + 61 => 2, + 64 => 1, + 66 => 0, ); if ($this->N >= strlen($this->data)) { return false; // end of input } - $yy_global_pattern = "/^(%\\})|^(\\.)|^(for[^a-zA-Z0-9_\.])|^(empty[^a-zA-Z0-9_\.])|^(load[^a-zA-Z0-9_\.])|^(block[^a-zA-Z0-9_\.])|^(&&)|^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)/"; + $yy_global_pattern = "/^(%\\})|^(->)|^(\\.)|^(for[^a-zA-Z0-9_\.])|^(empty[^a-zA-Z0-9_\.])|^(load[^a-zA-Z0-9_\.])|^(block[^a-zA-Z0-9_\.])|^(&&)|^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)/"; do { if (preg_match($yy_global_pattern, substr($this->data, $this->N), $yymatches)) { @@ -363,66 +364,67 @@ class Haanga_Compiler_Lexer // skip this token continue; } else { $yy_yymore_patterns = array( - 1 => array(0, "^(\\.)|^(for[^a-zA-Z0-9_\.])|^(empty[^a-zA-Z0-9_\.])|^(load[^a-zA-Z0-9_\.])|^(block[^a-zA-Z0-9_\.])|^(&&)|^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 2 => array(0, "^(for[^a-zA-Z0-9_\.])|^(empty[^a-zA-Z0-9_\.])|^(load[^a-zA-Z0-9_\.])|^(block[^a-zA-Z0-9_\.])|^(&&)|^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 3 => array(0, "^(empty[^a-zA-Z0-9_\.])|^(load[^a-zA-Z0-9_\.])|^(block[^a-zA-Z0-9_\.])|^(&&)|^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 4 => array(0, "^(load[^a-zA-Z0-9_\.])|^(block[^a-zA-Z0-9_\.])|^(&&)|^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 5 => array(0, "^(block[^a-zA-Z0-9_\.])|^(&&)|^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 6 => array(0, "^(&&)|^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 7 => array(0, "^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 8 => array(0, "^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 9 => array(0, "^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 10 => array(0, "^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 11 => array(0, "^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 12 => array(0, "^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 13 => array(0, "^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 14 => array(0, "^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 15 => array(0, "^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 16 => array(0, "^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 17 => array(0, "^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 18 => array(0, "^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 19 => array(0, "^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 20 => array(0, "^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 21 => array(0, "^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 22 => array(0, "^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 23 => array(0, "^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 24 => array(0, "^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 25 => array(0, "^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 26 => array(0, "^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 27 => array(0, "^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 28 => array(0, "^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 29 => array(0, "^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 30 => array(0, "^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 31 => array(0, "^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 32 => array(0, "^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 33 => array(0, "^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 34 => array(0, "^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 35 => array(0, "^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 36 => array(0, "^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 37 => array(0, "^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 38 => array(0, "^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 39 => array(0, "^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 40 => array(0, "^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 41 => array(0, "^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 42 => array(0, "^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 43 => array(0, "^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 44 => array(0, "^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 45 => array(0, "^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 46 => array(0, "^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 47 => array(0, "^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 48 => array(0, "^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 49 => array(0, "^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 50 => array(0, "^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 51 => array(0, "^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 52 => array(0, "^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 53 => array(0, "^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 54 => array(1, "^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 56 => array(1, "^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 57 => array(1, "^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 58 => array(2, "^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 60 => array(4, "^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 63 => array(5, "^([ \r\t\n]+)"), - 65 => array(5, ""), + 1 => array(0, "^(->)|^(\\.)|^(for[^a-zA-Z0-9_\.])|^(empty[^a-zA-Z0-9_\.])|^(load[^a-zA-Z0-9_\.])|^(block[^a-zA-Z0-9_\.])|^(&&)|^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 2 => array(0, "^(\\.)|^(for[^a-zA-Z0-9_\.])|^(empty[^a-zA-Z0-9_\.])|^(load[^a-zA-Z0-9_\.])|^(block[^a-zA-Z0-9_\.])|^(&&)|^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 3 => array(0, "^(for[^a-zA-Z0-9_\.])|^(empty[^a-zA-Z0-9_\.])|^(load[^a-zA-Z0-9_\.])|^(block[^a-zA-Z0-9_\.])|^(&&)|^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 4 => array(0, "^(empty[^a-zA-Z0-9_\.])|^(load[^a-zA-Z0-9_\.])|^(block[^a-zA-Z0-9_\.])|^(&&)|^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 5 => array(0, "^(load[^a-zA-Z0-9_\.])|^(block[^a-zA-Z0-9_\.])|^(&&)|^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 6 => array(0, "^(block[^a-zA-Z0-9_\.])|^(&&)|^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 7 => array(0, "^(&&)|^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 8 => array(0, "^(AND)|^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 9 => array(0, "^(\\|\\|)|^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 10 => array(0, "^(OR)|^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 11 => array(0, "^(==)|^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 12 => array(0, "^(!=)|^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 13 => array(0, "^(>=)|^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 14 => array(0, "^(\\[)|^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 15 => array(0, "^(\\])|^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 16 => array(0, "^(>)|^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 17 => array(0, "^(<)|^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 18 => array(0, "^(=<)|^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 19 => array(0, "^(\\|)|^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 20 => array(0, "^(:)|^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 21 => array(0, "^(filter[^a-zA-Z0-9_\.])|^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 22 => array(0, "^(regroup[^a-zA-Z0-9_\.])|^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 23 => array(0, "^(endfilter[^a-zA-Z0-9_\.])|^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 24 => array(0, "^(autoescape[^a-zA-Z0-9_\.])|^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 25 => array(0, "^(endautoescape[^a-zA-Z0-9_\.])|^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 26 => array(0, "^(endblock[^a-zA-Z0-9_\.])|^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 27 => array(0, "^(ifchanged[^a-zA-Z0-9_\.])|^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 28 => array(0, "^(ifequal[^a-zA-Z0-9_\.])|^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 29 => array(0, "^(endifequal[^a-zA-Z0-9_\.])|^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 30 => array(0, "^(ifnotequal[^a-zA-Z0-9_\.])|^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 31 => array(0, "^(endifnotequal[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 32 => array(0, "^(else[^a-zA-Z0-9_\.])|^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 33 => array(0, "^(endifchanged[^a-zA-Z0-9_\.])|^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 34 => array(0, "^(in[^a-zA-Z0-9_\.])|^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 35 => array(0, "^(endfor[^a-zA-Z0-9_\.])|^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 36 => array(0, "^(with[^a-zA-Z0-9_\.])|^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 37 => array(0, "^(endwith[^a-zA-Z0-9_\.])|^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 38 => array(0, "^(as)|^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 39 => array(0, "^(on)|^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 40 => array(0, "^(off)|^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 41 => array(0, "^(by)|^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 42 => array(0, "^(if[^a-zA-Z0-9_\.])|^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 43 => array(0, "^(else[^a-zA-Z0-9_\.])|^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 44 => array(0, "^(endif[^a-zA-Z0-9_\.])|^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 45 => array(0, "^(\\()|^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 46 => array(0, "^(\\))|^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 47 => array(0, "^(%)|^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 48 => array(0, "^(,)|^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 49 => array(0, "^(\\+)|^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 50 => array(0, "^(\\*)|^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 51 => array(0, "^(\/)|^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 52 => array(0, "^(')|^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 53 => array(0, "^(\")|^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 54 => array(0, "^(end([a-zA-Z][a-zA-Z0-9]*))|^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 55 => array(1, "^(extends[^a-zA-Z0-9_\.])|^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 57 => array(1, "^(include[^a-zA-Z0-9_\.])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 58 => array(1, "^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 59 => array(2, "^(([0-9])+\\.([0-9])+)|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 61 => array(4, "^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 64 => array(5, "^([ \r\t\n]+)"), + 66 => array(5, ""), ); // yymore is needed @@ -488,42 +490,42 @@ class Haanga_Compiler_Lexer function yy_r2_2($yy_subpatterns) { - $this->token = HG_Parser::T_DOT; + $this->token = HG_Parser::T_OBJ; } function yy_r2_3($yy_subpatterns) { - $this->token = HG_Parser::T_FOR; + $this->token = HG_Parser::T_DOT; } function yy_r2_4($yy_subpatterns) { - $this->token = HG_Parser::T_EMPTY; + $this->token = HG_Parser::T_FOR; } function yy_r2_5($yy_subpatterns) { - $this->token = HG_Parser::T_LOAD; + $this->token = HG_Parser::T_EMPTY; } function yy_r2_6($yy_subpatterns) { - $this->token = HG_Parser::T_BLOCK; + $this->token = HG_Parser::T_LOAD; } function yy_r2_7($yy_subpatterns) { - - $this->token = HG_Parser::T_AND; + + $this->token = HG_Parser::T_BLOCK; } function yy_r2_8($yy_subpatterns) { - + $this->token = HG_Parser::T_AND; } function yy_r2_9($yy_subpatterns) { - $this->token = HG_Parser::T_OR; + $this->token = HG_Parser::T_AND; } function yy_r2_10($yy_subpatterns) { @@ -533,251 +535,256 @@ class Haanga_Compiler_Lexer function yy_r2_11($yy_subpatterns) { - $this->token = HG_Parser::T_EQ; + $this->token = HG_Parser::T_OR; } function yy_r2_12($yy_subpatterns) { - $this->token = HG_Parser::T_NE; + $this->token = HG_Parser::T_EQ; } function yy_r2_13($yy_subpatterns) { - $this->token = HG_Parser::T_GE; + $this->token = HG_Parser::T_NE; } function yy_r2_14($yy_subpatterns) { - $this->token = HG_Parser::T_BRACKETS_OPEN; + $this->token = HG_Parser::T_GE; } function yy_r2_15($yy_subpatterns) { - $this->token = HG_Parser::T_BRACKETS_CLOSE; + $this->token = HG_Parser::T_BRACKETS_OPEN; } function yy_r2_16($yy_subpatterns) { - $this->token = HG_Parser::T_GT; + $this->token = HG_Parser::T_BRACKETS_CLOSE; } function yy_r2_17($yy_subpatterns) { - $this->token = HG_Parser::T_LT; + $this->token = HG_Parser::T_GT; } function yy_r2_18($yy_subpatterns) { - $this->token = HG_Parser::T_LE; + $this->token = HG_Parser::T_LT; } function yy_r2_19($yy_subpatterns) { - $this->token = HG_Parser::T_PIPE; + $this->token = HG_Parser::T_LE; } function yy_r2_20($yy_subpatterns) { - $this->token = HG_Parser::T_COLON; + $this->token = HG_Parser::T_PIPE; } function yy_r2_21($yy_subpatterns) { - $this->token = HG_Parser::T_FILTER; + $this->token = HG_Parser::T_COLON; } function yy_r2_22($yy_subpatterns) { - $this->token = HG_Parser::T_REGROUP; + $this->token = HG_Parser::T_FILTER; } function yy_r2_23($yy_subpatterns) { - $this->token = HG_Parser::T_END_FILTER; + $this->token = HG_Parser::T_REGROUP; } function yy_r2_24($yy_subpatterns) { - $this->token = HG_Parser::T_AUTOESCAPE; + $this->token = HG_Parser::T_END_FILTER; } function yy_r2_25($yy_subpatterns) { - $this->token = HG_Parser::T_END_AUTOESCAPE; + $this->token = HG_Parser::T_AUTOESCAPE; } function yy_r2_26($yy_subpatterns) { - $this->token = HG_Parser::T_END_BLOCK; + $this->token = HG_Parser::T_END_AUTOESCAPE; } function yy_r2_27($yy_subpatterns) { - $this->token = HG_Parser::T_IFCHANGED; + $this->token = HG_Parser::T_END_BLOCK; } function yy_r2_28($yy_subpatterns) { - $this->token = HG_Parser::T_IFEQUAL; + $this->token = HG_Parser::T_IFCHANGED; } function yy_r2_29($yy_subpatterns) { - $this->token = HG_Parser::T_END_IFEQUAL; + $this->token = HG_Parser::T_IFEQUAL; } function yy_r2_30($yy_subpatterns) { - $this->token = HG_Parser::T_IFNOTEQUAL; + $this->token = HG_Parser::T_END_IFEQUAL; } function yy_r2_31($yy_subpatterns) { - $this->token = HG_Parser::T_END_IFNOTEQUAL; + $this->token = HG_Parser::T_IFNOTEQUAL; } function yy_r2_32($yy_subpatterns) { - $this->token = HG_Parser::T_ELSE; + $this->token = HG_Parser::T_END_IFNOTEQUAL; } function yy_r2_33($yy_subpatterns) { - $this->token = HG_Parser::T_ENDIFCHANGED; + $this->token = HG_Parser::T_ELSE; } function yy_r2_34($yy_subpatterns) { - $this->token = HG_Parser::T_IN; + $this->token = HG_Parser::T_ENDIFCHANGED; } function yy_r2_35($yy_subpatterns) { - $this->token = HG_Parser::T_CLOSEFOR; + $this->token = HG_Parser::T_IN; } function yy_r2_36($yy_subpatterns) { - $this->token = HG_Parser::T_WITH; + $this->token = HG_Parser::T_CLOSEFOR; } function yy_r2_37($yy_subpatterns) { - $this->token = HG_Parser::T_ENDWITH; + $this->token = HG_Parser::T_WITH; } function yy_r2_38($yy_subpatterns) { - $this->token = HG_Parser::T_AS; + $this->token = HG_Parser::T_ENDWITH; } function yy_r2_39($yy_subpatterns) { - $this->token = HG_Parser::T_ON; + $this->token = HG_Parser::T_AS; } function yy_r2_40($yy_subpatterns) { - $this->token = HG_Parser::T_OFF; + $this->token = HG_Parser::T_ON; } function yy_r2_41($yy_subpatterns) { - $this->token = HG_Parser::T_BY; + $this->token = HG_Parser::T_OFF; } function yy_r2_42($yy_subpatterns) { - $this->token = HG_Parser::T_IF; + $this->token = HG_Parser::T_BY; } function yy_r2_43($yy_subpatterns) { - $this->token = HG_Parser::T_ELSE; + $this->token = HG_Parser::T_IF; } function yy_r2_44($yy_subpatterns) { - $this->token = HG_Parser::T_ENDIF; + $this->token = HG_Parser::T_ELSE; } function yy_r2_45($yy_subpatterns) { - $this->token = HG_Parser::T_LPARENT; + $this->token = HG_Parser::T_ENDIF; } function yy_r2_46($yy_subpatterns) { - $this->token = HG_Parser::T_RPARENT; + $this->token = HG_Parser::T_LPARENT; } function yy_r2_47($yy_subpatterns) { - $this->token = HG_Parser::T_MOD; + $this->token = HG_Parser::T_RPARENT; } function yy_r2_48($yy_subpatterns) { - $this->token = HG_Parser::T_COMMA; + $this->token = HG_Parser::T_MOD; } function yy_r2_49($yy_subpatterns) { - $this->token = HG_Parser::T_PLUS; + $this->token = HG_Parser::T_COMMA; } function yy_r2_50($yy_subpatterns) { - $this->token = HG_Parser::T_TIMES; + $this->token = HG_Parser::T_PLUS; } function yy_r2_51($yy_subpatterns) { - $this->token = HG_Parser::T_DIV; + $this->token = HG_Parser::T_TIMES; } function yy_r2_52($yy_subpatterns) { + $this->token = HG_Parser::T_DIV; + } + function yy_r2_53($yy_subpatterns) + { + $this->token = HG_Parser::T_STRING_SINGLE_INIT; $this->yypushstate(self::IN_STRING_SINGLE); } - function yy_r2_53($yy_subpatterns) + function yy_r2_54($yy_subpatterns) { $this->token = HG_Parser::T_STRING_DOUBLE_INIT; $this->yypushstate(self::IN_STRING_DOUBLE); } - function yy_r2_54($yy_subpatterns) + function yy_r2_55($yy_subpatterns) { $this->token = HG_Parser::T_CUSTOM_END; } - function yy_r2_56($yy_subpatterns) + function yy_r2_57($yy_subpatterns) { $this->token = HG_Parser::T_EXTENDS; } - function yy_r2_57($yy_subpatterns) + function yy_r2_58($yy_subpatterns) { $this->token = HG_Parser::T_INCLUDE; } - function yy_r2_58($yy_subpatterns) + function yy_r2_59($yy_subpatterns) { $this->token = HG_Parser::T_NUMERIC; } - function yy_r2_60($yy_subpatterns) + function yy_r2_61($yy_subpatterns) { $this->token = HG_Parser::T_NUMERIC; } - function yy_r2_63($yy_subpatterns) + function yy_r2_64($yy_subpatterns) { $this->is_custom_tag(); } - function yy_r2_65($yy_subpatterns) + function yy_r2_66($yy_subpatterns) { return FALSE; @@ -793,17 +800,18 @@ class Haanga_Compiler_Lexer 4 => 0, 5 => 0, 6 => 0, - 7 => 1, - 9 => 2, - 12 => 0, + 7 => 0, + 8 => 1, + 10 => 2, 13 => 0, - 14 => 1, - 16 => 0, + 14 => 0, + 15 => 1, + 17 => 0, ); if ($this->N >= strlen($this->data)) { return false; // end of input } - $yy_global_pattern = "/^(\\}\\})|^(\\|)|^(:)|^(\\.)|^(\\[)|^(\\])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)/"; + $yy_global_pattern = "/^(\\}\\})|^(\\|)|^(:)|^(->)|^(\\.)|^(\\[)|^(\\])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)/"; do { if (preg_match($yy_global_pattern, substr($this->data, $this->N), $yymatches)) { @@ -843,18 +851,19 @@ class Haanga_Compiler_Lexer // skip this token continue; } else { $yy_yymore_patterns = array( - 1 => array(0, "^(\\|)|^(:)|^(\\.)|^(\\[)|^(\\])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 2 => array(0, "^(:)|^(\\.)|^(\\[)|^(\\])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 3 => array(0, "^(\\.)|^(\\[)|^(\\])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 4 => array(0, "^(\\[)|^(\\])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 5 => array(0, "^(\\])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 6 => array(0, "^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 7 => array(1, "^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 9 => array(3, "^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 12 => array(3, "^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 13 => array(3, "^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), - 14 => array(4, "^([ \r\t\n]+)"), - 16 => array(4, ""), + 1 => array(0, "^(\\|)|^(:)|^(->)|^(\\.)|^(\\[)|^(\\])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 2 => array(0, "^(:)|^(->)|^(\\.)|^(\\[)|^(\\])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 3 => array(0, "^(->)|^(\\.)|^(\\[)|^(\\])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 4 => array(0, "^(\\.)|^(\\[)|^(\\])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 5 => array(0, "^(\\[)|^(\\])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 6 => array(0, "^(\\])|^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 7 => array(0, "^(([0-9])+)|^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 8 => array(1, "^(([0-9])+\\.([0-9])+)|^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 10 => array(3, "^(')|^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 13 => array(3, "^(\")|^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 14 => array(3, "^(([a-zA-Z_][a-zA-Z_0-9]*))|^([ \r\t\n]+)"), + 15 => array(4, "^([ \r\t\n]+)"), + 17 => array(4, ""), ); // yymore is needed @@ -930,46 +939,51 @@ class Haanga_Compiler_Lexer function yy_r3_4($yy_subpatterns) { - $this->token = HG_Parser::T_DOT; + $this->token = HG_Parser::T_OBJ; } function yy_r3_5($yy_subpatterns) { - $this->token = HG_Parser::T_BRACKETS_OPEN; + $this->token = HG_Parser::T_DOT; } function yy_r3_6($yy_subpatterns) { - $this->token = HG_Parser::T_BRACKETS_CLOSE; + $this->token = HG_Parser::T_BRACKETS_OPEN; } function yy_r3_7($yy_subpatterns) { + $this->token = HG_Parser::T_BRACKETS_CLOSE; + } + function yy_r3_8($yy_subpatterns) + { + $this->token = HG_Parser::T_NUMERIC; } - function yy_r3_9($yy_subpatterns) + function yy_r3_10($yy_subpatterns) { $this->token = HG_Parser::T_NUMERIC; } - function yy_r3_12($yy_subpatterns) + function yy_r3_13($yy_subpatterns) { $this->token = HG_Parser::T_STRING_SINGLE_INIT; $this->yypushstate(self::IN_STRING_SINGLE); } - function yy_r3_13($yy_subpatterns) + function yy_r3_14($yy_subpatterns) { $this->token = HG_Parser::T_STRING_DOUBLE_INIT; $this->yypushstate(self::IN_STRING_DOUBLE); } - function yy_r3_14($yy_subpatterns) + function yy_r3_15($yy_subpatterns) { $this->token = HG_Parser::T_ALPHA; } - function yy_r3_16($yy_subpatterns) + function yy_r3_17($yy_subpatterns) { return FALSE; diff --git a/lib/Haanga/Compiler/Parser.out b/lib/Haanga/Compiler/Parser.out index b186d2e..edf9209 100644 --- a/lib/Haanga/Compiler/Parser.out +++ b/lib/Haanga/Compiler/Parser.out @@ -4,7 +4,7 @@ State 0: (2) body ::= * start accept - body shift 57 + body shift 60 {default} reduce 2 State 1: @@ -34,12 +34,12 @@ State 1: for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG + if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG * T_ENDIF T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG + if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG * T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG * T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG * T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG @@ -52,34 +52,34 @@ State 1: filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 T_IF shift 25 - T_ELSE shift 159 + T_ENDIF shift 163 + T_ELSE shift 167 T_IFCHANGED shift 34 - T_ENDIFCHANGED shift 156 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 2: code ::= T_OPEN_TAG * stmts @@ -108,13 +108,13 @@ State 2: for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG - if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG * T_ENDIF T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG - if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG * T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG * T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG * T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG @@ -126,34 +126,34 @@ State 2: filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 T_IF shift 25 - T_ENDIF shift 139 - T_ELSE shift 165 + T_ELSE shift 131 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_ENDIFCHANGED shift 143 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 3: code ::= T_OPEN_TAG * stmts @@ -178,10 +178,8 @@ State 3: stmt ::= * regroup stmt ::= * T_LOAD string for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG * T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG * T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG @@ -190,7 +188,9 @@ State 3: ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG + ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG * T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG + ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG * T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG @@ -200,34 +200,34 @@ State 3: filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 - T_CLOSEFOR shift 143 - T_EMPTY shift 155 + T_FOR shift 75 T_IF shift 25 + T_ELSE shift 157 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_END_IFEQUAL shift 160 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 4: code ::= T_OPEN_TAG * stmts @@ -262,11 +262,11 @@ State 4: ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG - ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG * T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG - ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG * T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG * T_END_IFNOTEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG * T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG block_stmt ::= * T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG @@ -274,34 +274,34 @@ State 4: filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 T_IF shift 25 - T_ELSE shift 158 + T_ELSE shift 164 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_END_IFEQUAL shift 160 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_END_IFNOTEQUAL shift 159 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 5: code ::= T_OPEN_TAG * stmts @@ -327,8 +327,10 @@ State 5: stmt ::= * T_LOAD string for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG * T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG * T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG @@ -338,9 +340,7 @@ State 5: ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG - ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG * T_END_IFNOTEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG - ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG * T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG block_stmt ::= * T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG @@ -348,34 +348,34 @@ State 5: filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 + T_CLOSEFOR shift 135 + T_EMPTY shift 137 T_IF shift 25 - T_ELSE shift 138 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_END_IFNOTEQUAL shift 130 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 6: code ::= T_OPEN_TAG * stmts @@ -401,15 +401,15 @@ State 6: stmt ::= * T_LOAD string for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG * T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG * T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG * T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG * T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG @@ -422,34 +422,34 @@ State 6: filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 - T_CLOSEFOR shift 153 - T_EMPTY shift 151 + T_FOR shift 75 T_IF shift 25 + T_ELSE shift 156 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_ENDIFCHANGED shift 155 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 7: code ::= T_OPEN_TAG * stmts @@ -474,17 +474,17 @@ State 7: stmt ::= * regroup stmt ::= * T_LOAD string for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG * T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG * T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG * T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG * T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG @@ -496,34 +496,34 @@ State 7: filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 + T_CLOSEFOR shift 161 + T_EMPTY shift 162 T_IF shift 25 - T_ELSE shift 161 T_IFCHANGED shift 34 - T_ENDIFCHANGED shift 157 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 8: code ::= T_OPEN_TAG * stmts @@ -544,13 +544,13 @@ State 8: custom_tag ::= * T_CUSTOM_TAG var_list T_CLOSE_TAG custom_tag ::= * T_CUSTOM_TAG var_list T_AS varname T_CLOSE_TAG custom_tag ::= * T_CUSTOM_BLOCK T_CLOSE_TAG body T_OPEN_TAG T_CUSTOM_END T_CLOSE_TAG + custom_tag ::= T_CUSTOM_BLOCK T_CLOSE_TAG body T_OPEN_TAG * T_CUSTOM_END T_CLOSE_TAG alias ::= * T_WITH varname T_AS varname T_CLOSE_TAG body T_OPEN_TAG T_ENDWITH T_CLOSE_TAG stmt ::= * regroup stmt ::= * T_LOAD string for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG * T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG @@ -569,33 +569,33 @@ State 8: filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_CUSTOM_END shift 139 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 - T_CLOSEFOR shift 144 + T_FOR shift 75 T_IF shift 25 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 9: code ::= T_OPEN_TAG * stmts @@ -634,40 +634,41 @@ State 9: ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG + block_stmt ::= T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG * T_END_BLOCK T_CLOSE_TAG block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG + block_stmt ::= T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG * T_END_BLOCK varname T_CLOSE_TAG block_stmt ::= * T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG block_stmt ::= * T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_NUMERIC T_CLOSE_TAG filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG - filter_stmt ::= T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG * T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 T_IF shift 25 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_END_FILTER shift 135 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_END_BLOCK shift 53 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 10: code ::= T_OPEN_TAG * stmts @@ -695,7 +696,6 @@ State 10: for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG * T_CLOSEFOR T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG @@ -711,35 +711,36 @@ State 10: block_stmt ::= * T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG block_stmt ::= * T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_NUMERIC T_CLOSE_TAG filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG + filter_stmt ::= T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG * T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 - T_CLOSEFOR shift 148 + T_FOR shift 75 T_IF shift 25 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_END_FILTER shift 130 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 11: code ::= T_OPEN_TAG * stmts @@ -761,7 +762,6 @@ State 11: custom_tag ::= * T_CUSTOM_TAG var_list T_AS varname T_CLOSE_TAG custom_tag ::= * T_CUSTOM_BLOCK T_CLOSE_TAG body T_OPEN_TAG T_CUSTOM_END T_CLOSE_TAG alias ::= * T_WITH varname T_AS varname T_CLOSE_TAG body T_OPEN_TAG T_ENDWITH T_CLOSE_TAG - alias ::= T_WITH varname T_AS varname T_CLOSE_TAG body T_OPEN_TAG * T_ENDWITH T_CLOSE_TAG stmt ::= * regroup stmt ::= * T_LOAD string for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG @@ -776,6 +776,7 @@ State 11: ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG + ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG * T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG @@ -785,33 +786,33 @@ State 11: filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 - T_ENDWITH shift 142 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 T_IF shift 25 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_END_IFEQUAL shift 158 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 12: code ::= T_OPEN_TAG * stmts @@ -832,7 +833,6 @@ State 12: custom_tag ::= * T_CUSTOM_TAG var_list T_CLOSE_TAG custom_tag ::= * T_CUSTOM_TAG var_list T_AS varname T_CLOSE_TAG custom_tag ::= * T_CUSTOM_BLOCK T_CLOSE_TAG body T_OPEN_TAG T_CUSTOM_END T_CLOSE_TAG - custom_tag ::= T_CUSTOM_BLOCK T_CLOSE_TAG body T_OPEN_TAG * T_CUSTOM_END T_CLOSE_TAG alias ::= * T_WITH varname T_AS varname T_CLOSE_TAG body T_OPEN_TAG T_ENDWITH T_CLOSE_TAG stmt ::= * regroup stmt ::= * T_LOAD string @@ -853,37 +853,39 @@ State 12: block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG block_stmt ::= * T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG + block_stmt ::= T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG * T_END_BLOCK T_CLOSE_TAG block_stmt ::= * T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_NUMERIC T_CLOSE_TAG + block_stmt ::= T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG * T_END_BLOCK T_NUMERIC T_CLOSE_TAG filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_CUSTOM_END shift 140 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 T_IF shift 25 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_END_BLOCK shift 120 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 13: code ::= T_OPEN_TAG * stmts @@ -905,6 +907,7 @@ State 13: custom_tag ::= * T_CUSTOM_TAG var_list T_AS varname T_CLOSE_TAG custom_tag ::= * T_CUSTOM_BLOCK T_CLOSE_TAG body T_OPEN_TAG T_CUSTOM_END T_CLOSE_TAG alias ::= * T_WITH varname T_AS varname T_CLOSE_TAG body T_OPEN_TAG T_ENDWITH T_CLOSE_TAG + alias ::= T_WITH varname T_AS varname T_CLOSE_TAG body T_OPEN_TAG * T_ENDWITH T_CLOSE_TAG stmt ::= * regroup stmt ::= * T_LOAD string for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG @@ -913,7 +916,6 @@ State 13: for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG - if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG * T_ENDIF T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG @@ -929,33 +931,33 @@ State 13: filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 + T_ENDWITH shift 144 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 T_IF shift 25 - T_ENDIF shift 166 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 14: code ::= T_OPEN_TAG * stmts @@ -985,11 +987,11 @@ State 14: for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG + if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG * T_ENDIF T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG * T_ENDIFCHANGED T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG @@ -1001,33 +1003,33 @@ State 14: filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 T_IF shift 25 + T_ENDIF shift 148 T_IFCHANGED shift 34 - T_ENDIFCHANGED shift 154 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 15: code ::= T_OPEN_TAG * stmts @@ -1060,12 +1062,12 @@ State 15: ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG * T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG - ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG * T_END_IFNOTEQUAL T_CLOSE_TAG block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG block_stmt ::= * T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG @@ -1073,33 +1075,33 @@ State 15: filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 T_IF shift 25 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_END_IFNOTEQUAL shift 136 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_ENDIFCHANGED shift 151 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 16: code ::= T_OPEN_TAG * stmts @@ -1145,33 +1147,33 @@ State 16: filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 - T_END_AUTOESCAPE shift 146 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 + T_END_AUTOESCAPE shift 154 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 T_IF shift 25 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 17: code ::= T_OPEN_TAG * stmts @@ -1198,6 +1200,7 @@ State 17: for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG * T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG @@ -1207,7 +1210,6 @@ State 17: ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG - ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG * T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG @@ -1217,33 +1219,33 @@ State 17: filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 + T_CLOSEFOR shift 152 T_IF shift 25 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_END_IFEQUAL shift 162 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 18: code ::= T_OPEN_TAG * stmts @@ -1281,42 +1283,41 @@ State 18: ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG * T_END_IFNOTEQUAL T_CLOSE_TAG block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG block_stmt ::= * T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG - block_stmt ::= T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG * T_END_BLOCK T_CLOSE_TAG block_stmt ::= * T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_NUMERIC T_CLOSE_TAG - block_stmt ::= T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG * T_END_BLOCK T_NUMERIC T_CLOSE_TAG filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 T_IF shift 25 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_END_BLOCK shift 123 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_END_IFNOTEQUAL shift 145 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 19: code ::= T_OPEN_TAG * stmts @@ -1344,6 +1345,7 @@ State 19: for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= * T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG * T_CLOSEFOR T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG if_stmt ::= * T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG @@ -1355,41 +1357,39 @@ State 19: ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG - block_stmt ::= T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG * T_END_BLOCK T_CLOSE_TAG block_stmt ::= * T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG - block_stmt ::= T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG * T_END_BLOCK varname T_CLOSE_TAG block_stmt ::= * T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG block_stmt ::= * T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_NUMERIC T_CLOSE_TAG filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 + T_CLOSEFOR shift 136 T_IF shift 25 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_END_BLOCK shift 49 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 20: code ::= T_OPEN_TAG * stmts @@ -1422,8 +1422,8 @@ State 20: ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG * T_ENDIFCHANGED T_CLOSE_TAG ifchanged_stmt ::= * T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG * T_ENDIFCHANGED T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG ifequal ::= * T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG @@ -1435,33 +1435,33 @@ State 20: filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 T_IF shift 25 T_IFCHANGED shift 34 - T_ENDIFCHANGED shift 163 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_ENDIFCHANGED shift 138 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 21: code ::= T_OPEN_TAG * stmts @@ -1506,32 +1506,32 @@ State 21: filter_stmt ::= * T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG regroup ::= * T_REGROUP filtered_var T_BY varname T_AS varname - T_EXTENDS shift 37 - T_INCLUDE shift 38 - T_AUTOESCAPE shift 120 + T_EXTENDS shift 39 + T_INCLUDE shift 41 + T_AUTOESCAPE shift 121 T_CUSTOM_TAG shift 33 - T_CUSTOM_BLOCK shift 141 - T_WITH shift 77 + T_CUSTOM_BLOCK shift 149 + T_WITH shift 78 T_LOAD shift 81 - T_FOR shift 71 + T_FOR shift 75 T_IF shift 25 T_IFCHANGED shift 34 - T_IFEQUAL shift 32 - T_IFNOTEQUAL shift 31 - T_BLOCK shift 54 - T_FILTER shift 44 - T_REGROUP shift 46 - stmts shift 174 - stmt shift 150 - for_stmt shift 201 - ifchanged_stmt shift 202 - block_stmt shift 206 - filter_stmt shift 205 - if_stmt shift 204 - custom_tag shift 195 - alias shift 194 - ifequal shift 186 - regroup shift 208 + T_IFEQUAL shift 29 + T_IFNOTEQUAL shift 30 + T_BLOCK shift 64 + T_FILTER shift 42 + T_REGROUP shift 45 + stmts shift 183 + stmt shift 129 + for_stmt shift 212 + ifchanged_stmt shift 209 + block_stmt shift 222 + filter_stmt shift 208 + if_stmt shift 200 + custom_tag shift 205 + alias shift 217 + ifequal shift 230 + regroup shift 219 State 22: filtered_var ::= * filtered_var T_PIPE varname_args @@ -1546,31 +1546,32 @@ State 22: string ::= * T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END expr ::= * expr T_AND expr - expr ::= expr T_AND * expr expr ::= * expr T_OR expr + expr ::= expr T_OR * expr expr ::= * expr T_PLUS|T_MINUS expr expr ::= * expr T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr expr ::= * expr T_TIMES|T_DIV|T_MOD expr expr ::= * T_LPARENT expr T_RPARENT expr ::= * fvar_or_string + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 180 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_LPARENT shift 26 - T_ALPHA shift 198 - filtered_var shift 137 - varname shift 108 - string shift 170 - expr shift 104 - fvar_or_string shift 177 - varname_args shift 217 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 225 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_LPARENT shift 24 + T_ALPHA shift 199 + filtered_var shift 142 + varname shift 115 + string shift 224 + expr shift 106 + fvar_or_string shift 195 + varname_args shift 228 State 23: filtered_var ::= * filtered_var T_PIPE varname_args @@ -1586,30 +1587,31 @@ State 23: string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END expr ::= * expr T_AND expr expr ::= * expr T_OR expr - expr ::= expr T_OR * expr expr ::= * expr T_PLUS|T_MINUS expr expr ::= * expr T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr + expr ::= expr T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN * expr expr ::= * expr T_TIMES|T_DIV|T_MOD expr expr ::= * T_LPARENT expr T_RPARENT expr ::= * fvar_or_string + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 180 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_LPARENT shift 26 - T_ALPHA shift 198 - filtered_var shift 137 - varname shift 108 - string shift 170 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 225 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_LPARENT shift 24 + T_ALPHA shift 199 + filtered_var shift 142 + varname shift 115 + string shift 224 expr shift 105 - fvar_or_string shift 177 - varname_args shift 217 + fvar_or_string shift 195 + varname_args shift 228 State 24: filtered_var ::= * filtered_var T_PIPE varname_args @@ -1626,29 +1628,30 @@ State 24: expr ::= * expr T_AND expr expr ::= * expr T_OR expr expr ::= * expr T_PLUS|T_MINUS expr - expr ::= expr T_PLUS|T_MINUS * expr expr ::= * expr T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr expr ::= * expr T_TIMES|T_DIV|T_MOD expr expr ::= * T_LPARENT expr T_RPARENT + expr ::= T_LPARENT * expr T_RPARENT expr ::= * fvar_or_string + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 180 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_LPARENT shift 26 - T_ALPHA shift 198 - filtered_var shift 137 - varname shift 108 - string shift 170 - expr shift 115 - fvar_or_string shift 177 - varname_args shift 217 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 225 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_LPARENT shift 24 + T_ALPHA shift 199 + filtered_var shift 142 + varname shift 115 + string shift 224 + expr shift 102 + fvar_or_string shift 195 + varname_args shift 228 State 25: if_stmt ::= T_IF * expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG @@ -1671,24 +1674,25 @@ State 25: expr ::= * expr T_TIMES|T_DIV|T_MOD expr expr ::= * T_LPARENT expr T_RPARENT expr ::= * fvar_or_string + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 180 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_LPARENT shift 26 - T_ALPHA shift 198 - filtered_var shift 137 - varname shift 108 - string shift 170 - expr shift 102 - fvar_or_string shift 177 - varname_args shift 217 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 225 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_LPARENT shift 24 + T_ALPHA shift 199 + filtered_var shift 142 + varname shift 115 + string shift 224 + expr shift 103 + fvar_or_string shift 195 + varname_args shift 228 State 26: filtered_var ::= * filtered_var T_PIPE varname_args @@ -1703,31 +1707,32 @@ State 26: string ::= * T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END expr ::= * expr T_AND expr + expr ::= expr T_AND * expr expr ::= * expr T_OR expr expr ::= * expr T_PLUS|T_MINUS expr expr ::= * expr T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr expr ::= * expr T_TIMES|T_DIV|T_MOD expr expr ::= * T_LPARENT expr T_RPARENT - expr ::= T_LPARENT * expr T_RPARENT expr ::= * fvar_or_string + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 180 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_LPARENT shift 26 - T_ALPHA shift 198 - filtered_var shift 137 - varname shift 108 - string shift 170 - expr shift 103 - fvar_or_string shift 177 - varname_args shift 217 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 225 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_LPARENT shift 24 + T_ALPHA shift 199 + filtered_var shift 142 + varname shift 115 + string shift 224 + expr shift 104 + fvar_or_string shift 195 + varname_args shift 228 State 27: filtered_var ::= * filtered_var T_PIPE varname_args @@ -1745,28 +1750,29 @@ State 27: expr ::= * expr T_OR expr expr ::= * expr T_PLUS|T_MINUS expr expr ::= * expr T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr - expr ::= expr T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN * expr expr ::= * expr T_TIMES|T_DIV|T_MOD expr + expr ::= expr T_TIMES|T_DIV|T_MOD * expr expr ::= * T_LPARENT expr T_RPARENT expr ::= * fvar_or_string + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 180 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_LPARENT shift 26 - T_ALPHA shift 198 - filtered_var shift 137 - varname shift 108 - string shift 170 - expr shift 106 - fvar_or_string shift 177 - varname_args shift 217 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 225 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_LPARENT shift 24 + T_ALPHA shift 199 + filtered_var shift 142 + varname shift 115 + string shift 224 + expr shift 190 + fvar_or_string shift 195 + varname_args shift 228 State 28: filtered_var ::= * filtered_var T_PIPE varname_args @@ -1783,33 +1789,34 @@ State 28: expr ::= * expr T_AND expr expr ::= * expr T_OR expr expr ::= * expr T_PLUS|T_MINUS expr + expr ::= expr T_PLUS|T_MINUS * expr expr ::= * expr T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr expr ::= * expr T_TIMES|T_DIV|T_MOD expr - expr ::= expr T_TIMES|T_DIV|T_MOD * expr expr ::= * T_LPARENT expr T_RPARENT expr ::= * fvar_or_string + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 180 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_LPARENT shift 26 - T_ALPHA shift 198 - filtered_var shift 137 - varname shift 108 - string shift 170 - expr shift 179 - fvar_or_string shift 177 - varname_args shift 217 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 225 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_LPARENT shift 24 + T_ALPHA shift 199 + filtered_var shift 142 + varname shift 115 + string shift 224 + expr shift 119 + fvar_or_string shift 195 + varname_args shift 228 State 29: - ifequal ::= T_IFNOTEQUAL fvar_or_string * fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG - ifequal ::= T_IFNOTEQUAL fvar_or_string * fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG + ifequal ::= T_IFEQUAL * fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG + ifequal ::= T_IFEQUAL * fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG filtered_var ::= * filtered_var T_PIPE varname_args filtered_var ::= * varname_args varname_args ::= * varname T_COLON var_or_string @@ -1821,26 +1828,27 @@ State 29: string ::= * T_STRING_DOUBLE_INIT T_STRING_DOUBLE_END string ::= * T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 180 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_ALPHA shift 198 - filtered_var shift 137 - varname shift 108 - string shift 170 - fvar_or_string shift 145 - varname_args shift 217 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 225 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_ALPHA shift 199 + filtered_var shift 142 + varname shift 115 + string shift 224 + fvar_or_string shift 31 + varname_args shift 228 State 30: - ifequal ::= T_IFEQUAL fvar_or_string * fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG - ifequal ::= T_IFEQUAL fvar_or_string * fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL * fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL * fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG filtered_var ::= * filtered_var T_PIPE varname_args filtered_var ::= * varname_args varname_args ::= * varname T_COLON var_or_string @@ -1852,26 +1860,27 @@ State 30: string ::= * T_STRING_DOUBLE_INIT T_STRING_DOUBLE_END string ::= * T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 180 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_ALPHA shift 198 - filtered_var shift 137 - varname shift 108 - string shift 170 - fvar_or_string shift 164 - varname_args shift 217 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 225 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_ALPHA shift 199 + filtered_var shift 142 + varname shift 115 + string shift 224 + fvar_or_string shift 32 + varname_args shift 228 State 31: - ifequal ::= T_IFNOTEQUAL * fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG - ifequal ::= T_IFNOTEQUAL * fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG + ifequal ::= T_IFEQUAL fvar_or_string * fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG + ifequal ::= T_IFEQUAL fvar_or_string * fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG filtered_var ::= * filtered_var T_PIPE varname_args filtered_var ::= * varname_args varname_args ::= * varname T_COLON var_or_string @@ -1883,26 +1892,27 @@ State 31: string ::= * T_STRING_DOUBLE_INIT T_STRING_DOUBLE_END string ::= * T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 180 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_ALPHA shift 198 - filtered_var shift 137 - varname shift 108 - string shift 170 - fvar_or_string shift 29 - varname_args shift 217 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 225 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_ALPHA shift 199 + filtered_var shift 142 + varname shift 115 + string shift 224 + fvar_or_string shift 165 + varname_args shift 228 State 32: - ifequal ::= T_IFEQUAL * fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG - ifequal ::= T_IFEQUAL * fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL fvar_or_string * fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL fvar_or_string * fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG filtered_var ::= * filtered_var T_PIPE varname_args filtered_var ::= * varname_args varname_args ::= * varname T_COLON var_or_string @@ -1914,22 +1924,23 @@ State 32: string ::= * T_STRING_DOUBLE_INIT T_STRING_DOUBLE_END string ::= * T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 180 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_ALPHA shift 198 - filtered_var shift 137 - varname shift 108 - string shift 170 - fvar_or_string shift 30 - varname_args shift 217 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 225 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_ALPHA shift 199 + filtered_var shift 142 + varname shift 115 + string shift 224 + fvar_or_string shift 153 + varname_args shift 228 State 33: custom_tag ::= T_CUSTOM_TAG * T_CLOSE_TAG @@ -1946,23 +1957,24 @@ State 33: string ::= * T_STRING_DOUBLE_INIT T_STRING_DOUBLE_END string ::= * T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CLOSE_TAG shift 184 - T_CUSTOM_TAG shift 196 - T_AS shift 76 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 229 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_ALPHA shift 198 - var_or_string shift 192 - varname shift 126 + T_CLOSE_TAG shift 196 + T_CUSTOM_TAG shift 206 + T_AS shift 73 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 169 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_ALPHA shift 199 + var_or_string shift 232 + varname shift 117 var_list shift 35 - string shift 232 + string shift 176 State 34: ifchanged_stmt ::= T_IFCHANGED * T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG @@ -1979,22 +1991,23 @@ State 34: string ::= * T_STRING_DOUBLE_INIT T_STRING_DOUBLE_END string ::= * T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CLOSE_TAG shift 92 - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 229 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_ALPHA shift 198 - var_or_string shift 192 - varname shift 126 + T_CLOSE_TAG shift 84 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 169 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_ALPHA shift 199 + var_or_string shift 232 + varname shift 117 var_list shift 36 - string shift 232 + string shift 176 State 35: custom_tag ::= T_CUSTOM_TAG var_list * T_CLOSE_TAG @@ -2008,23 +2021,24 @@ State 35: string ::= * T_STRING_DOUBLE_INIT T_STRING_DOUBLE_END string ::= * T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CLOSE_TAG shift 183 - T_CUSTOM_TAG shift 196 - T_AS shift 75 - T_CUSTOM_BLOCK shift 196 - T_COMMA shift 41 - T_NUMERIC shift 229 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_ALPHA shift 198 - var_or_string shift 188 - varname shift 126 - string shift 232 + T_CLOSE_TAG shift 187 + T_CUSTOM_TAG shift 206 + T_AS shift 74 + T_CUSTOM_BLOCK shift 206 + T_COMMA shift 38 + T_NUMERIC shift 169 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_ALPHA shift 199 + var_or_string shift 178 + varname shift 117 + string shift 176 State 36: ifchanged_stmt ::= T_IFCHANGED var_list * T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG @@ -2038,25 +2052,25 @@ State 36: string ::= * T_STRING_DOUBLE_INIT T_STRING_DOUBLE_END string ::= * T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CLOSE_TAG shift 91 - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_COMMA shift 41 - T_NUMERIC shift 229 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_ALPHA shift 198 - var_or_string shift 188 - varname shift 126 - string shift 232 + T_CLOSE_TAG shift 90 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_COMMA shift 38 + T_NUMERIC shift 169 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_ALPHA shift 199 + var_or_string shift 178 + varname shift 117 + string shift 176 State 37: - stmts ::= T_EXTENDS * var_or_string T_CLOSE_TAG var_or_string ::= * varname var_or_string ::= * T_NUMERIC var_or_string ::= * string @@ -2064,23 +2078,25 @@ State 37: string ::= * T_STRING_DOUBLE_INIT T_STRING_DOUBLE_END string ::= * T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE + varname ::= varname T_BRACKETS_OPEN * var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 229 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_ALPHA shift 198 - var_or_string shift 131 - varname shift 126 - string shift 232 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 169 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_ALPHA shift 199 + var_or_string shift 147 + varname shift 117 + string shift 176 State 38: - stmts ::= T_INCLUDE * var_or_string T_CLOSE_TAG + var_list ::= var_list T_COMMA * var_or_string var_or_string ::= * varname var_or_string ::= * T_NUMERIC var_or_string ::= * string @@ -2088,23 +2104,24 @@ State 38: string ::= * T_STRING_DOUBLE_INIT T_STRING_DOUBLE_END string ::= * T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 229 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_ALPHA shift 198 - var_or_string shift 152 - varname shift 126 - string shift 232 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 169 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_ALPHA shift 199 + var_or_string shift 189 + varname shift 117 + string shift 176 State 39: - varname_args ::= varname T_COLON * var_or_string + stmts ::= T_EXTENDS * var_or_string T_CLOSE_TAG var_or_string ::= * varname var_or_string ::= * T_NUMERIC var_or_string ::= * string @@ -2112,22 +2129,24 @@ State 39: string ::= * T_STRING_DOUBLE_INIT T_STRING_DOUBLE_END string ::= * T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 229 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_ALPHA shift 198 - var_or_string shift 218 - varname shift 126 - string shift 232 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 169 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_ALPHA shift 199 + var_or_string shift 134 + varname shift 117 + string shift 176 State 40: + varname_args ::= varname T_COLON * var_or_string var_or_string ::= * varname var_or_string ::= * T_NUMERIC var_or_string ::= * string @@ -2135,24 +2154,24 @@ State 40: string ::= * T_STRING_DOUBLE_INIT T_STRING_DOUBLE_END string ::= * T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE - varname ::= varname T_BRACKETS_OPEN * var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 229 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_ALPHA shift 198 - var_or_string shift 149 - varname shift 126 - string shift 232 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 169 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_ALPHA shift 199 + var_or_string shift 229 + varname shift 117 + string shift 176 State 41: - var_list ::= var_list T_COMMA * var_or_string + stmts ::= T_INCLUDE * var_or_string T_CLOSE_TAG var_or_string ::= * varname var_or_string ::= * T_NUMERIC var_or_string ::= * string @@ -2160,39 +2179,40 @@ State 41: string ::= * T_STRING_DOUBLE_INIT T_STRING_DOUBLE_END string ::= * T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 229 - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - T_ALPHA shift 198 - var_or_string shift 193 - varname shift 126 - string shift 232 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 169 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + T_ALPHA shift 199 + var_or_string shift 150 + varname shift 117 + string shift 176 State 42: - for_stmt ::= T_FOR varname T_IN * filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR varname T_IN * filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + filter_stmt ::= T_FILTER * filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG filtered_var ::= * filtered_var T_PIPE varname_args filtered_var ::= * varname_args varname_args ::= * varname T_COLON var_or_string varname_args ::= * varname + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_ALPHA shift 198 - filtered_var shift 128 - varname shift 108 - varname_args shift 217 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_ALPHA shift 199 + filtered_var shift 126 + varname shift 115 + varname_args shift 228 State 43: code ::= T_PRINT_OPEN * filtered_var T_PRINT_CLOSE @@ -2200,87 +2220,93 @@ State 43: filtered_var ::= * varname_args varname_args ::= * varname T_COLON var_or_string varname_args ::= * varname + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_ALPHA shift 198 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_ALPHA shift 199 filtered_var shift 122 - varname shift 108 - varname_args shift 217 + varname shift 115 + varname_args shift 228 State 44: - filter_stmt ::= T_FILTER * filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG + for_stmt ::= T_FOR varname T_IN * filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR varname T_IN * filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG filtered_var ::= * filtered_var T_PIPE varname_args filtered_var ::= * varname_args varname_args ::= * varname T_COLON var_or_string varname_args ::= * varname + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_ALPHA shift 198 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_ALPHA shift 199 filtered_var shift 124 - varname shift 108 - varname_args shift 217 + varname shift 115 + varname_args shift 228 State 45: - for_stmt ::= T_FOR varname T_COMMA varname T_IN * filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR varname T_COMMA varname T_IN * filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + regroup ::= T_REGROUP * filtered_var T_BY varname T_AS varname filtered_var ::= * filtered_var T_PIPE varname_args filtered_var ::= * varname_args varname_args ::= * varname T_COLON var_or_string varname_args ::= * varname + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_ALPHA shift 198 - filtered_var shift 125 - varname shift 108 - varname_args shift 217 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_ALPHA shift 199 + filtered_var shift 128 + varname shift 115 + varname_args shift 228 State 46: - regroup ::= T_REGROUP * filtered_var T_BY varname T_AS varname + for_stmt ::= T_FOR varname T_COMMA varname T_IN * filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR varname T_COMMA varname T_IN * filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG filtered_var ::= * filtered_var T_PIPE varname_args filtered_var ::= * varname_args varname_args ::= * varname T_COLON var_or_string varname_args ::= * varname + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_ALPHA shift 198 - filtered_var shift 127 - varname shift 108 - varname_args shift 217 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_ALPHA shift 199 + filtered_var shift 125 + varname shift 115 + varname_args shift 228 State 47: filtered_var ::= filtered_var T_PIPE * varname_args varname_args ::= * varname T_COLON var_or_string varname_args ::= * varname + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_ALPHA shift 198 - varname shift 108 - varname_args shift 219 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_ALPHA shift 199 + varname shift 115 + varname_args shift 216 State 48: body ::= body * code @@ -2288,27 +2314,28 @@ State 48: code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - custom_tag ::= T_CUSTOM_BLOCK T_CLOSE_TAG body * T_OPEN_TAG T_CUSTOM_END T_CLOSE_TAG + filter_stmt ::= T_FILTER filtered_var T_CLOSE_TAG body * T_OPEN_TAG T_END_FILTER T_CLOSE_TAG - T_OPEN_TAG shift 12 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 10 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 49: - block_stmt ::= T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK * T_CLOSE_TAG - block_stmt ::= T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK * varname T_CLOSE_TAG - varname ::= * varname T_DOT T_ALPHA - varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE - varname ::= * T_ALPHA - varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK + body ::= body * code + code ::= * T_OPEN_TAG stmts + code ::= * T_HTML + code ::= * T_COMMENT_OPEN T_COMMENT + code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE + block_stmt ::= T_BLOCK varname T_CLOSE_TAG body * T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG + block_stmt ::= T_BLOCK varname T_CLOSE_TAG body * T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG - T_CLOSE_TAG shift 209 - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_ALPHA shift 198 - varname shift 116 + T_OPEN_TAG shift 9 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 + T_PRINT_OPEN shift 43 + code shift 186 State 50: body ::= body * code @@ -2319,11 +2346,11 @@ State 50: block_stmt ::= T_BLOCK T_NUMERIC T_CLOSE_TAG body * T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG block_stmt ::= T_BLOCK T_NUMERIC T_CLOSE_TAG body * T_OPEN_TAG T_END_BLOCK T_NUMERIC T_CLOSE_TAG - T_OPEN_TAG shift 18 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 12 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 51: body ::= body * code @@ -2331,13 +2358,13 @@ State 51: code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body * T_OPEN_TAG T_ENDIF T_CLOSE_TAG + for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body * T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - T_OPEN_TAG shift 13 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 17 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 52: body ::= body * code @@ -2345,44 +2372,42 @@ State 52: code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - if_stmt ::= T_IF expr T_CLOSE_TAG body * T_OPEN_TAG T_ENDIF T_CLOSE_TAG - if_stmt ::= T_IF expr T_CLOSE_TAG body * T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG + for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body * T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - T_OPEN_TAG shift 2 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 19 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 53: + block_stmt ::= T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK * T_CLOSE_TAG + block_stmt ::= T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK * varname T_CLOSE_TAG + varname ::= * varname T_OBJ T_ALPHA + varname ::= * varname T_DOT T_ALPHA + varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE + varname ::= * T_ALPHA + varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK + + T_CLOSE_TAG shift 214 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_ALPHA shift 199 + varname shift 110 + +State 54: body ::= body * code code ::= * T_OPEN_TAG stmts code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body * T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body * T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - T_OPEN_TAG shift 10 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 20 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 - -State 54: - block_stmt ::= T_BLOCK * varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG - block_stmt ::= T_BLOCK * varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG - block_stmt ::= T_BLOCK * T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG - block_stmt ::= T_BLOCK * T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_NUMERIC T_CLOSE_TAG - varname ::= * varname T_DOT T_ALPHA - varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE - varname ::= * T_ALPHA - varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_NUMERIC shift 132 - T_ALPHA shift 198 - varname shift 117 + code shift 186 State 55: body ::= body * code @@ -2390,13 +2415,13 @@ State 55: code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body * T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body * T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG - T_OPEN_TAG shift 20 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 11 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 56: body ::= body * code @@ -2404,29 +2429,29 @@ State 56: code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body * T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG - ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body * T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG + for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body * T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body * T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - T_OPEN_TAG shift 5 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 7 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 57: - (0) start ::= body * body ::= body * code code ::= * T_OPEN_TAG stmts code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE + if_stmt ::= T_IF expr T_CLOSE_TAG body * T_OPEN_TAG T_ENDIF T_CLOSE_TAG + if_stmt ::= T_IF expr T_CLOSE_TAG body * T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG - T_OPEN_TAG shift 21 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 1 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 - {default} reduce 0 + code shift 186 State 58: body ::= body * code @@ -2434,13 +2459,14 @@ State 58: code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body * T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body * T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body * T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - T_OPEN_TAG shift 14 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 5 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 59: body ::= body * code @@ -2448,28 +2474,28 @@ State 59: code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body * T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body * T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body * T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG - T_OPEN_TAG shift 6 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 18 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 60: + (0) start ::= body * body ::= body * code code ::= * T_OPEN_TAG stmts code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body * T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG - T_OPEN_TAG shift 17 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 21 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 + {default} reduce 0 State 61: body ::= body * code @@ -2477,14 +2503,14 @@ State 61: code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - block_stmt ::= T_BLOCK varname T_CLOSE_TAG body * T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG - block_stmt ::= T_BLOCK varname T_CLOSE_TAG body * T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG + ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body * T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG + ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body * T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG - T_OPEN_TAG shift 19 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 3 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 62: body ::= body * code @@ -2492,14 +2518,14 @@ State 62: code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body * T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body * T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body * T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body * T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - T_OPEN_TAG shift 1 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 2 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 63: body ::= body * code @@ -2507,28 +2533,31 @@ State 63: code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body * T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body * T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body * T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body * T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - T_OPEN_TAG shift 3 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 6 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 64: - body ::= body * code - code ::= * T_OPEN_TAG stmts - code ::= * T_HTML - code ::= * T_COMMENT_OPEN T_COMMENT - code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body * T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG + block_stmt ::= T_BLOCK * varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG + block_stmt ::= T_BLOCK * varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG + block_stmt ::= T_BLOCK * T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG + block_stmt ::= T_BLOCK * T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_NUMERIC T_CLOSE_TAG + varname ::= * varname T_OBJ T_ALPHA + varname ::= * varname T_DOT T_ALPHA + varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE + varname ::= * T_ALPHA + varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_OPEN_TAG shift 15 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 - T_PRINT_OPEN shift 43 - code shift 168 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_NUMERIC shift 141 + T_ALPHA shift 199 + varname shift 113 State 65: body ::= body * code @@ -2536,13 +2565,14 @@ State 65: code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - stmts ::= T_AUTOESCAPE T_OFF|T_ON T_CLOSE_TAG body * T_OPEN_TAG T_END_AUTOESCAPE T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body * T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body * T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG - T_OPEN_TAG shift 16 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 4 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 66: body ::= body * code @@ -2550,13 +2580,13 @@ State 66: code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - filter_stmt ::= T_FILTER filtered_var T_CLOSE_TAG body * T_OPEN_TAG T_END_FILTER T_CLOSE_TAG + alias ::= T_WITH varname T_AS varname T_CLOSE_TAG body * T_OPEN_TAG T_ENDWITH T_CLOSE_TAG - T_OPEN_TAG shift 9 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 13 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 67: body ::= body * code @@ -2564,13 +2594,13 @@ State 67: code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body * T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body * T_OPEN_TAG T_ENDIF T_CLOSE_TAG - T_OPEN_TAG shift 8 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 14 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 68: body ::= body * code @@ -2578,14 +2608,13 @@ State 68: code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body * T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body * T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body * T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - T_OPEN_TAG shift 7 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 15 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 69: body ::= body * code @@ -2593,14 +2622,13 @@ State 69: code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body * T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG - ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body * T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG + stmts ::= T_AUTOESCAPE T_OFF|T_ON T_CLOSE_TAG body * T_OPEN_TAG T_END_AUTOESCAPE T_CLOSE_TAG - T_OPEN_TAG shift 4 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 16 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 70: body ::= body * code @@ -2608,133 +2636,141 @@ State 70: code ::= * T_HTML code ::= * T_COMMENT_OPEN T_COMMENT code ::= * T_PRINT_OPEN filtered_var T_PRINT_CLOSE - alias ::= T_WITH varname T_AS varname T_CLOSE_TAG body * T_OPEN_TAG T_ENDWITH T_CLOSE_TAG + custom_tag ::= T_CUSTOM_BLOCK T_CLOSE_TAG body * T_OPEN_TAG T_CUSTOM_END T_CLOSE_TAG - T_OPEN_TAG shift 11 - T_HTML shift 216 - T_COMMENT_OPEN shift 129 + T_OPEN_TAG shift 8 + T_HTML shift 231 + T_COMMENT_OPEN shift 146 T_PRINT_OPEN shift 43 - code shift 168 + code shift 186 State 71: - for_stmt ::= T_FOR * varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR * varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR * varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR * varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + regroup ::= T_REGROUP filtered_var T_BY varname T_AS * varname + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_ALPHA shift 198 - varname shift 107 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_ALPHA shift 199 + varname shift 118 State 72: regroup ::= T_REGROUP filtered_var T_BY * varname T_AS varname + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_ALPHA shift 198 - varname shift 110 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_ALPHA shift 199 + varname shift 108 State 73: - regroup ::= T_REGROUP filtered_var T_BY varname T_AS * varname + custom_tag ::= T_CUSTOM_TAG T_AS * varname T_CLOSE_TAG + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_ALPHA shift 198 - varname shift 118 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_ALPHA shift 199 + varname shift 109 State 74: - for_stmt ::= T_FOR varname T_COMMA * varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR varname T_COMMA * varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + custom_tag ::= T_CUSTOM_TAG var_list T_AS * varname T_CLOSE_TAG + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_ALPHA shift 198 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_ALPHA shift 199 varname shift 112 State 75: - custom_tag ::= T_CUSTOM_TAG var_list T_AS * varname T_CLOSE_TAG + for_stmt ::= T_FOR * varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR * varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR * varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR * varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_ALPHA shift 198 - varname shift 111 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_ALPHA shift 199 + varname shift 107 State 76: - custom_tag ::= T_CUSTOM_TAG T_AS * varname T_CLOSE_TAG + alias ::= T_WITH varname T_AS * varname T_CLOSE_TAG body T_OPEN_TAG T_ENDWITH T_CLOSE_TAG + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_ALPHA shift 198 - varname shift 113 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_ALPHA shift 199 + varname shift 114 State 77: - alias ::= T_WITH * varname T_AS varname T_CLOSE_TAG body T_OPEN_TAG T_ENDWITH T_CLOSE_TAG + for_stmt ::= T_FOR varname T_COMMA * varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR varname T_COMMA * varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_ALPHA shift 198 - varname shift 109 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_ALPHA shift 199 + varname shift 116 State 78: - alias ::= T_WITH varname T_AS * varname T_CLOSE_TAG body T_OPEN_TAG T_ENDWITH T_CLOSE_TAG + alias ::= T_WITH * varname T_AS varname T_CLOSE_TAG body T_OPEN_TAG T_ENDWITH T_CLOSE_TAG + varname ::= * varname T_OBJ T_ALPHA varname ::= * varname T_DOT T_ALPHA varname ::= * varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE varname ::= * T_ALPHA varname ::= * T_CUSTOM_TAG|T_CUSTOM_BLOCK - T_CUSTOM_TAG shift 196 - T_CUSTOM_BLOCK shift 196 - T_ALPHA shift 198 - varname shift 114 + T_CUSTOM_TAG shift 206 + T_CUSTOM_BLOCK shift 206 + T_ALPHA shift 199 + varname shift 111 State 79: - string ::= T_STRING_DOUBLE_INIT * T_STRING_DOUBLE_END - string ::= T_STRING_DOUBLE_INIT * s_content T_STRING_DOUBLE_END + string ::= T_STRING_SINGLE_INIT * T_STRING_SINGLE_END + string ::= T_STRING_SINGLE_INIT * s_content T_STRING_SINGLE_END s_content ::= * s_content T_STRING_CONTENT s_content ::= * T_STRING_CONTENT - T_STRING_DOUBLE_END shift 221 - T_STRING_CONTENT shift 191 - s_content shift 119 + T_STRING_SINGLE_END shift 175 + T_STRING_CONTENT shift 218 + s_content shift 123 State 80: - string ::= T_STRING_SINGLE_INIT * T_STRING_SINGLE_END - string ::= T_STRING_SINGLE_INIT * s_content T_STRING_SINGLE_END + string ::= T_STRING_DOUBLE_INIT * T_STRING_DOUBLE_END + string ::= T_STRING_DOUBLE_INIT * s_content T_STRING_DOUBLE_END s_content ::= * s_content T_STRING_CONTENT s_content ::= * T_STRING_CONTENT - T_STRING_SINGLE_END shift 223 - T_STRING_CONTENT shift 191 - s_content shift 121 + T_STRING_DOUBLE_END shift 233 + T_STRING_CONTENT shift 218 + s_content shift 127 State 81: stmt ::= T_LOAD * string @@ -2743,67 +2779,66 @@ State 81: string ::= * T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END string ::= * T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END - T_STRING_SINGLE_INIT shift 80 - T_STRING_DOUBLE_INIT shift 79 - string shift 226 + T_STRING_SINGLE_INIT shift 79 + T_STRING_DOUBLE_INIT shift 80 + string shift 220 State 82: body ::= * body code (2) body ::= * - ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG * body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + stmts ::= T_AUTOESCAPE T_OFF|T_ON T_CLOSE_TAG * body T_OPEN_TAG T_END_AUTOESCAPE T_CLOSE_TAG - body shift 58 + body shift 69 {default} reduce 2 State 83: body ::= * body code (2) body ::= * - filter_stmt ::= T_FILTER filtered_var T_CLOSE_TAG * body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG * body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - body shift 66 + body shift 68 {default} reduce 2 State 84: body ::= * body code (2) body ::= * - for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG * body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG * body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG * body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG * body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - body shift 59 + body shift 63 {default} reduce 2 State 85: body ::= * body code (2) body ::= * - if_stmt ::= T_IF expr T_CLOSE_TAG * body T_OPEN_TAG T_ENDIF T_CLOSE_TAG - if_stmt ::= T_IF expr T_CLOSE_TAG * body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG + if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG * body T_OPEN_TAG T_ENDIF T_CLOSE_TAG - body shift 52 + body shift 67 {default} reduce 2 State 86: body ::= * body code (2) body ::= * - for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG * body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG * body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG + ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG * body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG - body shift 53 + body shift 61 {default} reduce 2 State 87: body ::= * body code (2) body ::= * - if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG * body T_OPEN_TAG T_ENDIF T_CLOSE_TAG + for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG * body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - body shift 51 + body shift 52 {default} reduce 2 State 88: body ::= * body code (2) body ::= * - ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG * body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG - ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG * body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG * body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG - body shift 56 + body shift 59 {default} reduce 2 State 89: @@ -2818,51 +2853,51 @@ State 89: State 90: body ::= * body code (2) body ::= * - ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG * body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG * body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG * body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - body shift 60 + body shift 62 {default} reduce 2 State 91: body ::= * body code (2) body ::= * - ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG * body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG * body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG * body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - body shift 68 + body shift 54 {default} reduce 2 State 92: body ::= * body code (2) body ::= * - ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG * body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG * body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + if_stmt ::= T_IF expr T_CLOSE_TAG * body T_OPEN_TAG T_ENDIF T_CLOSE_TAG + if_stmt ::= T_IF expr T_CLOSE_TAG * body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG - body shift 62 + body shift 57 {default} reduce 2 State 93: body ::= * body code (2) body ::= * - block_stmt ::= T_BLOCK varname T_CLOSE_TAG * body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG - block_stmt ::= T_BLOCK varname T_CLOSE_TAG * body T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG + for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG * body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG * body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - body shift 61 + body shift 58 {default} reduce 2 State 94: body ::= * body code (2) body ::= * - ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG * body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG - ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG * body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG * body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG * body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG - body shift 69 + body shift 65 {default} reduce 2 State 95: body ::= * body code (2) body ::= * - custom_tag ::= T_CUSTOM_BLOCK T_CLOSE_TAG * body T_OPEN_TAG T_CUSTOM_END T_CLOSE_TAG + filter_stmt ::= T_FILTER filtered_var T_CLOSE_TAG * body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG body shift 48 {default} reduce 2 @@ -2870,7 +2905,7 @@ State 95: State 96: body ::= * body code (2) body ::= * - ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG * body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG * body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG body shift 55 {default} reduce 2 @@ -2878,9 +2913,10 @@ State 96: State 97: body ::= * body code (2) body ::= * - ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG * body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG + block_stmt ::= T_BLOCK varname T_CLOSE_TAG * body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG + block_stmt ::= T_BLOCK varname T_CLOSE_TAG * body T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG - body shift 64 + body shift 49 {default} reduce 2 State 98: @@ -2889,7 +2925,7 @@ State 98: for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG * body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG * body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - body shift 63 + body shift 56 {default} reduce 2 State 99: @@ -2897,13 +2933,13 @@ State 99: (2) body ::= * for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG * body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - body shift 67 + body shift 51 {default} reduce 2 State 100: body ::= * body code (2) body ::= * - alias ::= T_WITH varname T_AS varname T_CLOSE_TAG * body T_OPEN_TAG T_ENDWITH T_CLOSE_TAG + custom_tag ::= T_CUSTOM_BLOCK T_CLOSE_TAG * body T_OPEN_TAG T_CUSTOM_END T_CLOSE_TAG body shift 70 {default} reduce 2 @@ -2911,59 +2947,59 @@ State 100: State 101: body ::= * body code (2) body ::= * - stmts ::= T_AUTOESCAPE T_OFF|T_ON T_CLOSE_TAG * body T_OPEN_TAG T_END_AUTOESCAPE T_CLOSE_TAG + alias ::= T_WITH varname T_AS varname T_CLOSE_TAG * body T_OPEN_TAG T_ENDWITH T_CLOSE_TAG - body shift 65 + body shift 66 {default} reduce 2 State 102: - if_stmt ::= T_IF expr * T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG - if_stmt ::= T_IF expr * T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG expr ::= expr * T_AND expr expr ::= expr * T_OR expr expr ::= expr * T_PLUS|T_MINUS expr expr ::= expr * T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr expr ::= expr * T_TIMES|T_DIV|T_MOD expr + expr ::= T_LPARENT expr * T_RPARENT - T_AND shift 22 - T_OR shift 23 - T_EQ shift 27 - T_NE shift 27 - T_GT shift 27 - T_GE shift 27 - T_LT shift 27 - T_LE shift 27 - T_IN shift 27 - T_PLUS shift 24 - T_MINUS shift 24 - T_TIMES shift 28 - T_DIV shift 28 - T_MOD shift 28 - T_CLOSE_TAG shift 85 + T_AND shift 26 + T_OR shift 22 + T_EQ shift 23 + T_NE shift 23 + T_GT shift 23 + T_GE shift 23 + T_LT shift 23 + T_LE shift 23 + T_IN shift 23 + T_PLUS shift 28 + T_MINUS shift 28 + T_TIMES shift 27 + T_DIV shift 27 + T_MOD shift 27 + T_RPARENT shift 193 State 103: + if_stmt ::= T_IF expr * T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG + if_stmt ::= T_IF expr * T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG expr ::= expr * T_AND expr expr ::= expr * T_OR expr expr ::= expr * T_PLUS|T_MINUS expr expr ::= expr * T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr expr ::= expr * T_TIMES|T_DIV|T_MOD expr - expr ::= T_LPARENT expr * T_RPARENT - T_AND shift 22 - T_OR shift 23 - T_EQ shift 27 - T_NE shift 27 - T_GT shift 27 - T_GE shift 27 - T_LT shift 27 - T_LE shift 27 - T_IN shift 27 - T_PLUS shift 24 - T_MINUS shift 24 - T_TIMES shift 28 - T_DIV shift 28 - T_MOD shift 28 - T_RPARENT shift 171 + T_AND shift 26 + T_OR shift 22 + T_EQ shift 23 + T_NE shift 23 + T_GT shift 23 + T_GE shift 23 + T_LT shift 23 + T_LE shift 23 + T_IN shift 23 + T_PLUS shift 28 + T_MINUS shift 28 + T_TIMES shift 27 + T_DIV shift 27 + T_MOD shift 27 + T_CLOSE_TAG shift 92 State 104: expr ::= expr * T_AND expr @@ -2973,226 +3009,253 @@ State 104: expr ::= expr * T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr expr ::= expr * T_TIMES|T_DIV|T_MOD expr - T_OR shift 23 - T_EQ shift 27 - T_NE shift 27 - T_GT shift 27 - T_GE shift 27 - T_LT shift 27 - T_LE shift 27 - T_IN shift 27 - T_PLUS shift 24 - T_MINUS shift 24 - T_TIMES shift 28 - T_DIV shift 28 - T_MOD shift 28 + T_OR shift 22 + T_EQ shift 23 + T_NE shift 23 + T_GT shift 23 + T_GE shift 23 + T_LT shift 23 + T_LE shift 23 + T_IN shift 23 + T_PLUS shift 28 + T_MINUS shift 28 + T_TIMES shift 27 + T_DIV shift 27 + T_MOD shift 27 {default} reduce 66 State 105: expr ::= expr * T_AND expr expr ::= expr * T_OR expr - (67) expr ::= expr T_OR expr * expr ::= expr * T_PLUS|T_MINUS expr expr ::= expr * T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr + (69) expr ::= expr T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr * expr ::= expr * T_TIMES|T_DIV|T_MOD expr - T_EQ shift 27 - T_NE shift 27 - T_GT shift 27 - T_GE shift 27 - T_LT shift 27 - T_LE shift 27 - T_IN shift 27 - T_PLUS shift 24 - T_MINUS shift 24 - T_TIMES shift 28 - T_DIV shift 28 - T_MOD shift 28 - {default} reduce 67 + T_EQ shift 23 + T_EQ reduce 69 ** Parsing conflict ** + T_NE shift 23 + T_NE reduce 69 ** Parsing conflict ** + T_GT shift 23 + T_GE shift 23 + T_LT shift 23 + T_LE shift 23 + T_IN shift 23 + T_PLUS shift 28 + T_MINUS shift 28 + T_TIMES shift 27 + T_DIV shift 27 + T_MOD shift 27 + {default} reduce 69 State 106: expr ::= expr * T_AND expr expr ::= expr * T_OR expr + (67) expr ::= expr T_OR expr * expr ::= expr * T_PLUS|T_MINUS expr expr ::= expr * T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr - (69) expr ::= expr T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr * expr ::= expr * T_TIMES|T_DIV|T_MOD expr - T_EQ shift 27 - T_EQ reduce 69 ** Parsing conflict ** - T_NE shift 27 - T_NE reduce 69 ** Parsing conflict ** - T_GT shift 27 - T_GE shift 27 - T_LT shift 27 - T_LE shift 27 - T_IN shift 27 - T_PLUS shift 24 - T_MINUS shift 24 - T_TIMES shift 28 - T_DIV shift 28 - T_MOD shift 28 - {default} reduce 69 + T_EQ shift 23 + T_NE shift 23 + T_GT shift 23 + T_GE shift 23 + T_LT shift 23 + T_LE shift 23 + T_IN shift 23 + T_PLUS shift 28 + T_MINUS shift 28 + T_TIMES shift 27 + T_DIV shift 27 + T_MOD shift 27 + {default} reduce 67 State 107: for_stmt ::= T_FOR varname * T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= T_FOR varname * T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= T_FOR varname * T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG for_stmt ::= T_FOR varname * T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + varname ::= varname * T_OBJ T_ALPHA varname ::= varname * T_DOT T_ALPHA varname ::= varname * T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE - T_IN shift 42 - T_COMMA shift 74 + T_IN shift 44 + T_COMMA shift 77 + T_OBJ shift 132 T_DOT shift 133 - T_BRACKETS_OPEN shift 40 + T_BRACKETS_OPEN shift 37 State 108: - varname_args ::= varname * T_COLON var_or_string - (50) varname_args ::= varname * + regroup ::= T_REGROUP filtered_var T_BY varname * T_AS varname + varname ::= varname * T_OBJ T_ALPHA varname ::= varname * T_DOT T_ALPHA varname ::= varname * T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE - T_COLON shift 39 + T_AS shift 71 + T_OBJ shift 132 T_DOT shift 133 - T_BRACKETS_OPEN shift 40 - {default} reduce 50 + T_BRACKETS_OPEN shift 37 State 109: - alias ::= T_WITH varname * T_AS varname T_CLOSE_TAG body T_OPEN_TAG T_ENDWITH T_CLOSE_TAG + custom_tag ::= T_CUSTOM_TAG T_AS varname * T_CLOSE_TAG + varname ::= varname * T_OBJ T_ALPHA varname ::= varname * T_DOT T_ALPHA varname ::= varname * T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE - T_AS shift 78 + T_CLOSE_TAG shift 188 + T_OBJ shift 132 T_DOT shift 133 - T_BRACKETS_OPEN shift 40 + T_BRACKETS_OPEN shift 37 State 110: - regroup ::= T_REGROUP filtered_var T_BY varname * T_AS varname + block_stmt ::= T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK varname * T_CLOSE_TAG + varname ::= varname * T_OBJ T_ALPHA varname ::= varname * T_DOT T_ALPHA varname ::= varname * T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE - T_AS shift 73 + T_CLOSE_TAG shift 207 + T_OBJ shift 132 T_DOT shift 133 - T_BRACKETS_OPEN shift 40 + T_BRACKETS_OPEN shift 37 State 111: - custom_tag ::= T_CUSTOM_TAG var_list T_AS varname * T_CLOSE_TAG + alias ::= T_WITH varname * T_AS varname T_CLOSE_TAG body T_OPEN_TAG T_ENDWITH T_CLOSE_TAG + varname ::= varname * T_OBJ T_ALPHA varname ::= varname * T_DOT T_ALPHA varname ::= varname * T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE - T_CLOSE_TAG shift 187 + T_AS shift 76 + T_OBJ shift 132 T_DOT shift 133 - T_BRACKETS_OPEN shift 40 + T_BRACKETS_OPEN shift 37 State 112: - for_stmt ::= T_FOR varname T_COMMA varname * T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR varname T_COMMA varname * T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + custom_tag ::= T_CUSTOM_TAG var_list T_AS varname * T_CLOSE_TAG + varname ::= varname * T_OBJ T_ALPHA varname ::= varname * T_DOT T_ALPHA varname ::= varname * T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE - T_IN shift 45 + T_CLOSE_TAG shift 185 + T_OBJ shift 132 T_DOT shift 133 - T_BRACKETS_OPEN shift 40 + T_BRACKETS_OPEN shift 37 State 113: - custom_tag ::= T_CUSTOM_TAG T_AS varname * T_CLOSE_TAG + block_stmt ::= T_BLOCK varname * T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG + block_stmt ::= T_BLOCK varname * T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG + varname ::= varname * T_OBJ T_ALPHA varname ::= varname * T_DOT T_ALPHA varname ::= varname * T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE - T_CLOSE_TAG shift 182 + T_CLOSE_TAG shift 97 + T_OBJ shift 132 T_DOT shift 133 - T_BRACKETS_OPEN shift 40 + T_BRACKETS_OPEN shift 37 State 114: alias ::= T_WITH varname T_AS varname * T_CLOSE_TAG body T_OPEN_TAG T_ENDWITH T_CLOSE_TAG + varname ::= varname * T_OBJ T_ALPHA varname ::= varname * T_DOT T_ALPHA varname ::= varname * T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE - T_CLOSE_TAG shift 100 + T_CLOSE_TAG shift 101 + T_OBJ shift 132 T_DOT shift 133 - T_BRACKETS_OPEN shift 40 + T_BRACKETS_OPEN shift 37 State 115: - expr ::= expr * T_AND expr - expr ::= expr * T_OR expr - expr ::= expr * T_PLUS|T_MINUS expr - (68) expr ::= expr T_PLUS|T_MINUS expr * - expr ::= expr * T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr - expr ::= expr * T_TIMES|T_DIV|T_MOD expr + varname_args ::= varname * T_COLON var_or_string + (50) varname_args ::= varname * + varname ::= varname * T_OBJ T_ALPHA + varname ::= varname * T_DOT T_ALPHA + varname ::= varname * T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE - T_TIMES shift 28 - T_DIV shift 28 - T_MOD shift 28 - {default} reduce 68 + T_COLON shift 40 + T_OBJ shift 132 + T_DOT shift 133 + T_BRACKETS_OPEN shift 37 + {default} reduce 50 State 116: - block_stmt ::= T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK varname * T_CLOSE_TAG + for_stmt ::= T_FOR varname T_COMMA varname * T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR varname T_COMMA varname * T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + varname ::= varname * T_OBJ T_ALPHA varname ::= varname * T_DOT T_ALPHA varname ::= varname * T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE - T_CLOSE_TAG shift 210 + T_IN shift 46 + T_OBJ shift 132 T_DOT shift 133 - T_BRACKETS_OPEN shift 40 + T_BRACKETS_OPEN shift 37 State 117: - block_stmt ::= T_BLOCK varname * T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG - block_stmt ::= T_BLOCK varname * T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG + (54) var_or_string ::= varname * + varname ::= varname * T_OBJ T_ALPHA varname ::= varname * T_DOT T_ALPHA varname ::= varname * T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE - T_CLOSE_TAG shift 93 + T_OBJ shift 132 T_DOT shift 133 - T_BRACKETS_OPEN shift 40 + T_BRACKETS_OPEN shift 37 + {default} reduce 54 State 118: (46) regroup ::= T_REGROUP filtered_var T_BY varname T_AS varname * + varname ::= varname * T_OBJ T_ALPHA varname ::= varname * T_DOT T_ALPHA varname ::= varname * T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE + T_OBJ shift 132 T_DOT shift 133 - T_BRACKETS_OPEN shift 40 + T_BRACKETS_OPEN shift 37 {default} reduce 46 State 119: - string ::= T_STRING_DOUBLE_INIT s_content * T_STRING_DOUBLE_END - s_content ::= s_content * T_STRING_CONTENT + expr ::= expr * T_AND expr + expr ::= expr * T_OR expr + expr ::= expr * T_PLUS|T_MINUS expr + (68) expr ::= expr T_PLUS|T_MINUS expr * + expr ::= expr * T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr + expr ::= expr * T_TIMES|T_DIV|T_MOD expr - T_STRING_DOUBLE_END shift 200 - T_STRING_CONTENT shift 190 + T_TIMES shift 27 + T_DIV shift 27 + T_MOD shift 27 + {default} reduce 68 State 120: - stmts ::= T_AUTOESCAPE * T_OFF|T_ON T_CLOSE_TAG body T_OPEN_TAG T_END_AUTOESCAPE T_CLOSE_TAG + block_stmt ::= T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK * T_CLOSE_TAG + block_stmt ::= T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK * T_NUMERIC T_CLOSE_TAG - T_OFF shift 147 - T_ON shift 147 + T_CLOSE_TAG shift 221 + T_NUMERIC shift 140 State 121: - string ::= T_STRING_SINGLE_INIT s_content * T_STRING_SINGLE_END - s_content ::= s_content * T_STRING_CONTENT + stmts ::= T_AUTOESCAPE * T_OFF|T_ON T_CLOSE_TAG body T_OPEN_TAG T_END_AUTOESCAPE T_CLOSE_TAG - T_STRING_SINGLE_END shift 225 - T_STRING_CONTENT shift 190 + T_OFF shift 166 + T_ON shift 166 State 122: code ::= T_PRINT_OPEN filtered_var * T_PRINT_CLOSE filtered_var ::= filtered_var * T_PIPE varname_args - T_PRINT_CLOSE shift 173 + T_PRINT_CLOSE shift 227 T_PIPE shift 47 State 123: - block_stmt ::= T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK * T_CLOSE_TAG - block_stmt ::= T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK * T_NUMERIC T_CLOSE_TAG - - T_CLOSE_TAG shift 175 - T_NUMERIC shift 134 + string ::= T_STRING_SINGLE_INIT s_content * T_STRING_SINGLE_END + s_content ::= s_content * T_STRING_CONTENT + + T_STRING_SINGLE_END shift 192 + T_STRING_CONTENT shift 223 State 124: - filter_stmt ::= T_FILTER filtered_var * T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG + for_stmt ::= T_FOR varname T_IN filtered_var * T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + for_stmt ::= T_FOR varname T_IN filtered_var * T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG filtered_var ::= filtered_var * T_PIPE varname_args - T_CLOSE_TAG shift 83 + T_CLOSE_TAG shift 98 T_PIPE shift 47 State 125: @@ -3200,252 +3263,249 @@ State 125: for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var * T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG filtered_var ::= filtered_var * T_PIPE varname_args - T_CLOSE_TAG shift 84 + T_CLOSE_TAG shift 93 T_PIPE shift 47 State 126: - (54) var_or_string ::= varname * - varname ::= varname * T_DOT T_ALPHA - varname ::= varname * T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE + filter_stmt ::= T_FILTER filtered_var * T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG + filtered_var ::= filtered_var * T_PIPE varname_args - T_DOT shift 133 - T_BRACKETS_OPEN shift 40 - {default} reduce 54 + T_CLOSE_TAG shift 95 + T_PIPE shift 47 State 127: - regroup ::= T_REGROUP filtered_var * T_BY varname T_AS varname - filtered_var ::= filtered_var * T_PIPE varname_args + string ::= T_STRING_DOUBLE_INIT s_content * T_STRING_DOUBLE_END + s_content ::= s_content * T_STRING_CONTENT - T_BY shift 72 - T_PIPE shift 47 + T_STRING_DOUBLE_END shift 203 + T_STRING_CONTENT shift 223 State 128: - for_stmt ::= T_FOR varname T_IN filtered_var * T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - for_stmt ::= T_FOR varname T_IN filtered_var * T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + regroup ::= T_REGROUP filtered_var * T_BY varname T_AS varname filtered_var ::= filtered_var * T_PIPE varname_args - T_CLOSE_TAG shift 98 + T_BY shift 72 T_PIPE shift 47 State 129: - code ::= T_COMMENT_OPEN * T_COMMENT + stmts ::= stmt * T_CLOSE_TAG - T_COMMENT shift 233 + T_CLOSE_TAG shift 215 State 130: - ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL * T_CLOSE_TAG + filter_stmt ::= T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER * T_CLOSE_TAG - T_CLOSE_TAG shift 212 + T_CLOSE_TAG shift 201 State 131: - stmts ::= T_EXTENDS var_or_string * T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE * T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - T_CLOSE_TAG shift 214 + T_CLOSE_TAG shift 91 State 132: - block_stmt ::= T_BLOCK T_NUMERIC * T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG - block_stmt ::= T_BLOCK T_NUMERIC * T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_NUMERIC T_CLOSE_TAG + varname ::= varname T_OBJ * T_ALPHA - T_CLOSE_TAG shift 89 + T_ALPHA shift 191 State 133: varname ::= varname T_DOT * T_ALPHA - T_ALPHA shift 213 + T_ALPHA shift 171 State 134: - block_stmt ::= T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_NUMERIC * T_CLOSE_TAG + stmts ::= T_EXTENDS var_or_string * T_CLOSE_TAG - T_CLOSE_TAG shift 178 + T_CLOSE_TAG shift 181 State 135: - filter_stmt ::= T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER * T_CLOSE_TAG + for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR * T_CLOSE_TAG - T_CLOSE_TAG shift 215 + T_CLOSE_TAG shift 179 State 136: - ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL * T_CLOSE_TAG + for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR * T_CLOSE_TAG - T_CLOSE_TAG shift 211 + T_CLOSE_TAG shift 184 State 137: - filtered_var ::= filtered_var * T_PIPE varname_args - (57) fvar_or_string ::= filtered_var * + for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY * T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - T_PIPE shift 47 - {default} reduce 57 + T_CLOSE_TAG shift 87 State 138: - ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE * T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED * T_CLOSE_TAG - T_CLOSE_TAG shift 97 + T_CLOSE_TAG shift 172 State 139: - if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF * T_CLOSE_TAG + custom_tag ::= T_CUSTOM_BLOCK T_CLOSE_TAG body T_OPEN_TAG T_CUSTOM_END * T_CLOSE_TAG - T_CLOSE_TAG shift 227 + T_CLOSE_TAG shift 211 State 140: - custom_tag ::= T_CUSTOM_BLOCK T_CLOSE_TAG body T_OPEN_TAG T_CUSTOM_END * T_CLOSE_TAG + block_stmt ::= T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_NUMERIC * T_CLOSE_TAG - T_CLOSE_TAG shift 189 + T_CLOSE_TAG shift 197 State 141: - custom_tag ::= T_CUSTOM_BLOCK * T_CLOSE_TAG body T_OPEN_TAG T_CUSTOM_END T_CLOSE_TAG + block_stmt ::= T_BLOCK T_NUMERIC * T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG + block_stmt ::= T_BLOCK T_NUMERIC * T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_NUMERIC T_CLOSE_TAG - T_CLOSE_TAG shift 95 + T_CLOSE_TAG shift 89 State 142: - alias ::= T_WITH varname T_AS varname T_CLOSE_TAG body T_OPEN_TAG T_ENDWITH * T_CLOSE_TAG + filtered_var ::= filtered_var * T_PIPE varname_args + (57) fvar_or_string ::= filtered_var * - T_CLOSE_TAG shift 207 + T_PIPE shift 47 + {default} reduce 57 State 143: - for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR * T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED * T_CLOSE_TAG - T_CLOSE_TAG shift 224 + T_CLOSE_TAG shift 168 State 144: - for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR * T_CLOSE_TAG + alias ::= T_WITH varname T_AS varname T_CLOSE_TAG body T_OPEN_TAG T_ENDWITH * T_CLOSE_TAG - T_CLOSE_TAG shift 222 + T_CLOSE_TAG shift 235 State 145: - ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string * T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG - ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string * T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL * T_CLOSE_TAG - T_CLOSE_TAG shift 88 + T_CLOSE_TAG shift 210 State 146: - stmts ::= T_AUTOESCAPE T_OFF|T_ON T_CLOSE_TAG body T_OPEN_TAG T_END_AUTOESCAPE * T_CLOSE_TAG + code ::= T_COMMENT_OPEN * T_COMMENT - T_CLOSE_TAG shift 185 + T_COMMENT shift 234 State 147: - stmts ::= T_AUTOESCAPE T_OFF|T_ON * T_CLOSE_TAG body T_OPEN_TAG T_END_AUTOESCAPE T_CLOSE_TAG + varname ::= varname T_BRACKETS_OPEN var_or_string * T_BRACKETS_CLOSE - T_CLOSE_TAG shift 101 + T_BRACKETS_CLOSE shift 198 State 148: - for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR * T_CLOSE_TAG + if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF * T_CLOSE_TAG - T_CLOSE_TAG shift 169 + T_CLOSE_TAG shift 194 State 149: - varname ::= varname T_BRACKETS_OPEN var_or_string * T_BRACKETS_CLOSE + custom_tag ::= T_CUSTOM_BLOCK * T_CLOSE_TAG body T_OPEN_TAG T_CUSTOM_END T_CLOSE_TAG - T_BRACKETS_CLOSE shift 199 + T_CLOSE_TAG shift 100 State 150: - stmts ::= stmt * T_CLOSE_TAG + stmts ::= T_INCLUDE var_or_string * T_CLOSE_TAG - T_CLOSE_TAG shift 197 + T_CLOSE_TAG shift 202 State 151: - for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY * T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED * T_CLOSE_TAG - T_CLOSE_TAG shift 86 + T_CLOSE_TAG shift 174 State 152: - stmts ::= T_INCLUDE var_or_string * T_CLOSE_TAG + for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR * T_CLOSE_TAG - T_CLOSE_TAG shift 203 + T_CLOSE_TAG shift 182 State 153: - for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR * T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string * T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string * T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG - T_CLOSE_TAG shift 167 + T_CLOSE_TAG shift 94 State 154: - ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED * T_CLOSE_TAG + stmts ::= T_AUTOESCAPE T_OFF|T_ON T_CLOSE_TAG body T_OPEN_TAG T_END_AUTOESCAPE * T_CLOSE_TAG - T_CLOSE_TAG shift 172 + T_CLOSE_TAG shift 177 State 155: - for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY * T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED * T_CLOSE_TAG - T_CLOSE_TAG shift 99 + T_CLOSE_TAG shift 173 State 156: - ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED * T_CLOSE_TAG + ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE * T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG - T_CLOSE_TAG shift 231 + T_CLOSE_TAG shift 83 State 157: - ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED * T_CLOSE_TAG + ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE * T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG - T_CLOSE_TAG shift 176 + T_CLOSE_TAG shift 96 State 158: - ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE * T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG + ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL * T_CLOSE_TAG - T_CLOSE_TAG shift 90 + T_CLOSE_TAG shift 204 State 159: - ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE * T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL * T_CLOSE_TAG - T_CLOSE_TAG shift 96 + T_CLOSE_TAG shift 213 State 160: ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL * T_CLOSE_TAG - T_CLOSE_TAG shift 181 + T_CLOSE_TAG shift 226 State 161: - ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE * T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG + for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR * T_CLOSE_TAG - T_CLOSE_TAG shift 82 + T_CLOSE_TAG shift 170 State 162: - ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL * T_CLOSE_TAG + for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY * T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG - T_CLOSE_TAG shift 220 + T_CLOSE_TAG shift 99 State 163: - ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED * T_CLOSE_TAG + if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF * T_CLOSE_TAG - T_CLOSE_TAG shift 230 + T_CLOSE_TAG shift 180 State 164: - ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string * T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG - ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string * T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG + ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE * T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG - T_CLOSE_TAG shift 94 + T_CLOSE_TAG shift 88 State 165: - if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE * T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG + ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string * T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG + ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string * T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG - T_CLOSE_TAG shift 87 + T_CLOSE_TAG shift 86 State 166: - if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF * T_CLOSE_TAG + stmts ::= T_AUTOESCAPE T_OFF|T_ON * T_CLOSE_TAG body T_OPEN_TAG T_END_AUTOESCAPE T_CLOSE_TAG - T_CLOSE_TAG shift 228 + T_CLOSE_TAG shift 82 State 167: - (28) for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG * + if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE * T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG - {default} reduce 28 + T_CLOSE_TAG shift 85 State 168: - (1) body ::= body code * + (34) ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG * - {default} reduce 1 + {default} reduce 34 State 169: - (30) for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG * + (55) var_or_string ::= T_NUMERIC * - {default} reduce 30 + {default} reduce 55 State 170: - (59) fvar_or_string ::= string * + (27) for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG * - {default} reduce 59 + {default} reduce 27 State 171: - (71) expr ::= T_LPARENT expr T_RPARENT * + (74) varname ::= varname T_DOT T_ALPHA * - {default} reduce 71 + {default} reduce 74 State 172: (36) ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG * @@ -3453,312 +3513,322 @@ State 172: {default} reduce 36 State 173: - (6) code ::= T_PRINT_OPEN filtered_var T_PRINT_CLOSE * + (33) ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG * - {default} reduce 6 + {default} reduce 33 State 174: - (3) code ::= T_OPEN_TAG stmts * + (35) ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG * - {default} reduce 3 + {default} reduce 35 State 175: - (43) block_stmt ::= T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG * + (60) string ::= T_STRING_SINGLE_INIT T_STRING_SINGLE_END * - {default} reduce 43 + {default} reduce 60 State 176: - (34) ifchanged_stmt ::= T_IFCHANGED var_list T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG * + (56) var_or_string ::= string * - {default} reduce 34 + {default} reduce 56 State 177: - (72) expr ::= fvar_or_string * + (18) stmts ::= T_AUTOESCAPE T_OFF|T_ON T_CLOSE_TAG body T_OPEN_TAG T_END_AUTOESCAPE T_CLOSE_TAG * - {default} reduce 72 + {default} reduce 18 State 178: - (44) block_stmt ::= T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_NUMERIC T_CLOSE_TAG * + (51) var_list ::= var_list var_or_string * - {default} reduce 44 + {default} reduce 51 State 179: - expr ::= expr * T_AND expr - expr ::= expr * T_OR expr - expr ::= expr * T_PLUS|T_MINUS expr - expr ::= expr * T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr - expr ::= expr * T_TIMES|T_DIV|T_MOD expr - (70) expr ::= expr T_TIMES|T_DIV|T_MOD expr * + (28) for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG * - {default} reduce 70 + {default} reduce 28 State 180: - (58) fvar_or_string ::= T_NUMERIC * + (31) if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG * - {default} reduce 58 + {default} reduce 31 State 181: - (37) ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG * + (7) stmts ::= T_EXTENDS var_or_string T_CLOSE_TAG * - {default} reduce 37 + {default} reduce 7 State 182: - (20) custom_tag ::= T_CUSTOM_TAG T_AS varname T_CLOSE_TAG * + (29) for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG * - {default} reduce 20 + {default} reduce 29 State 183: - (21) custom_tag ::= T_CUSTOM_TAG var_list T_CLOSE_TAG * + (3) code ::= T_OPEN_TAG stmts * - {default} reduce 21 + {default} reduce 3 State 184: - (19) custom_tag ::= T_CUSTOM_TAG T_CLOSE_TAG * + (30) for_stmt ::= T_FOR varname T_COMMA varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG * - {default} reduce 19 + {default} reduce 30 State 185: - (18) stmts ::= T_AUTOESCAPE T_OFF|T_ON T_CLOSE_TAG body T_OPEN_TAG T_END_AUTOESCAPE T_CLOSE_TAG * + (22) custom_tag ::= T_CUSTOM_TAG var_list T_AS varname T_CLOSE_TAG * - {default} reduce 18 + {default} reduce 22 State 186: - (17) stmts ::= ifequal * + (1) body ::= body code * - {default} reduce 17 + {default} reduce 1 State 187: - (22) custom_tag ::= T_CUSTOM_TAG var_list T_AS varname T_CLOSE_TAG * + (21) custom_tag ::= T_CUSTOM_TAG var_list T_CLOSE_TAG * - {default} reduce 22 + {default} reduce 21 State 188: - (51) var_list ::= var_list var_or_string * + (20) custom_tag ::= T_CUSTOM_TAG T_AS varname T_CLOSE_TAG * - {default} reduce 51 + {default} reduce 20 State 189: - (23) custom_tag ::= T_CUSTOM_BLOCK T_CLOSE_TAG body T_OPEN_TAG T_CUSTOM_END T_CLOSE_TAG * + (52) var_list ::= var_list T_COMMA var_or_string * - {default} reduce 23 + {default} reduce 52 State 190: - (64) s_content ::= s_content T_STRING_CONTENT * + expr ::= expr * T_AND expr + expr ::= expr * T_OR expr + expr ::= expr * T_PLUS|T_MINUS expr + expr ::= expr * T_EQ|T_NE|T_GT|T_GE|T_LT|T_LE|T_IN expr + expr ::= expr * T_TIMES|T_DIV|T_MOD expr + (70) expr ::= expr T_TIMES|T_DIV|T_MOD expr * - {default} reduce 64 + {default} reduce 70 State 191: - (65) s_content ::= T_STRING_CONTENT * + (73) varname ::= varname T_OBJ T_ALPHA * - {default} reduce 65 + {default} reduce 73 State 192: - (53) var_list ::= var_or_string * + (62) string ::= T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END * - {default} reduce 53 + {default} reduce 62 State 193: - (52) var_list ::= var_list T_COMMA var_or_string * + (71) expr ::= T_LPARENT expr T_RPARENT * - {default} reduce 52 + {default} reduce 71 State 194: - (16) stmts ::= alias * + (32) if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG * - {default} reduce 16 + {default} reduce 32 State 195: - (15) stmts ::= custom_tag * + (72) expr ::= fvar_or_string * - {default} reduce 15 + {default} reduce 72 State 196: - (76) varname ::= T_CUSTOM_TAG|T_CUSTOM_BLOCK * + (19) custom_tag ::= T_CUSTOM_TAG T_CLOSE_TAG * - {default} reduce 76 + {default} reduce 19 State 197: - (8) stmts ::= stmt T_CLOSE_TAG * + (44) block_stmt ::= T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_NUMERIC T_CLOSE_TAG * - {default} reduce 8 + {default} reduce 44 State 198: - (75) varname ::= T_ALPHA * + (75) varname ::= varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE * {default} reduce 75 State 199: - (74) varname ::= varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE * + (76) varname ::= T_ALPHA * - {default} reduce 74 + {default} reduce 76 State 200: - (63) string ::= T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END * + (13) stmts ::= if_stmt * - {default} reduce 63 + {default} reduce 13 State 201: - (9) stmts ::= for_stmt * + (45) filter_stmt ::= T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG * - {default} reduce 9 + {default} reduce 45 State 202: - (10) stmts ::= ifchanged_stmt * + (14) stmts ::= T_INCLUDE var_or_string T_CLOSE_TAG * - {default} reduce 10 + {default} reduce 14 State 203: - (14) stmts ::= T_INCLUDE var_or_string T_CLOSE_TAG * + (63) string ::= T_STRING_DOUBLE_INIT s_content T_STRING_DOUBLE_END * - {default} reduce 14 + {default} reduce 63 State 204: - (13) stmts ::= if_stmt * + (38) ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG * - {default} reduce 13 + {default} reduce 38 State 205: - (12) stmts ::= filter_stmt * + (15) stmts ::= custom_tag * - {default} reduce 12 + {default} reduce 15 State 206: - (11) stmts ::= block_stmt * + (77) varname ::= T_CUSTOM_TAG|T_CUSTOM_BLOCK * - {default} reduce 11 + {default} reduce 77 State 207: - (24) alias ::= T_WITH varname T_AS varname T_CLOSE_TAG body T_OPEN_TAG T_ENDWITH T_CLOSE_TAG * + (42) block_stmt ::= T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG * - {default} reduce 24 + {default} reduce 42 State 208: - (25) stmt ::= regroup * + (12) stmts ::= filter_stmt * - {default} reduce 25 + {default} reduce 12 State 209: - (41) block_stmt ::= T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG * + (10) stmts ::= ifchanged_stmt * - {default} reduce 41 + {default} reduce 10 State 210: - (42) block_stmt ::= T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK varname T_CLOSE_TAG * + (40) ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG * - {default} reduce 42 + {default} reduce 40 State 211: - (40) ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG * + (23) custom_tag ::= T_CUSTOM_BLOCK T_CLOSE_TAG body T_OPEN_TAG T_CUSTOM_END T_CLOSE_TAG * - {default} reduce 40 + {default} reduce 23 State 212: - (39) ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG * + (9) stmts ::= for_stmt * - {default} reduce 39 + {default} reduce 9 State 213: - (73) varname ::= varname T_DOT T_ALPHA * + (39) ifequal ::= T_IFNOTEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFNOTEQUAL T_CLOSE_TAG * - {default} reduce 73 + {default} reduce 39 State 214: - (7) stmts ::= T_EXTENDS var_or_string T_CLOSE_TAG * + (41) block_stmt ::= T_BLOCK varname T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG * - {default} reduce 7 + {default} reduce 41 State 215: - (45) filter_stmt ::= T_FILTER filtered_var T_CLOSE_TAG body T_OPEN_TAG T_END_FILTER T_CLOSE_TAG * + (8) stmts ::= stmt T_CLOSE_TAG * - {default} reduce 45 + {default} reduce 8 State 216: - (4) code ::= T_HTML * + (47) filtered_var ::= filtered_var T_PIPE varname_args * - {default} reduce 4 + {default} reduce 47 State 217: - (48) filtered_var ::= varname_args * + (16) stmts ::= alias * - {default} reduce 48 + {default} reduce 16 State 218: - (49) varname_args ::= varname T_COLON var_or_string * + (65) s_content ::= T_STRING_CONTENT * - {default} reduce 49 + {default} reduce 65 State 219: - (47) filtered_var ::= filtered_var T_PIPE varname_args * + (25) stmt ::= regroup * - {default} reduce 47 + {default} reduce 25 State 220: - (38) ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG * + (26) stmt ::= T_LOAD string * - {default} reduce 38 + {default} reduce 26 State 221: - (61) string ::= T_STRING_DOUBLE_INIT T_STRING_DOUBLE_END * + (43) block_stmt ::= T_BLOCK T_NUMERIC T_CLOSE_TAG body T_OPEN_TAG T_END_BLOCK T_CLOSE_TAG * - {default} reduce 61 + {default} reduce 43 State 222: - (29) for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_EMPTY T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG * + (11) stmts ::= block_stmt * - {default} reduce 29 + {default} reduce 11 State 223: - (60) string ::= T_STRING_SINGLE_INIT T_STRING_SINGLE_END * + (64) s_content ::= s_content T_STRING_CONTENT * - {default} reduce 60 + {default} reduce 64 State 224: - (27) for_stmt ::= T_FOR varname T_IN filtered_var T_CLOSE_TAG body T_OPEN_TAG T_CLOSEFOR T_CLOSE_TAG * + (59) fvar_or_string ::= string * - {default} reduce 27 + {default} reduce 59 State 225: - (62) string ::= T_STRING_SINGLE_INIT s_content T_STRING_SINGLE_END * + (58) fvar_or_string ::= T_NUMERIC * - {default} reduce 62 + {default} reduce 58 State 226: - (26) stmt ::= T_LOAD string * + (37) ifequal ::= T_IFEQUAL fvar_or_string fvar_or_string T_CLOSE_TAG body T_OPEN_TAG T_END_IFEQUAL T_CLOSE_TAG * - {default} reduce 26 + {default} reduce 37 State 227: - (31) if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG * + (6) code ::= T_PRINT_OPEN filtered_var T_PRINT_CLOSE * - {default} reduce 31 + {default} reduce 6 State 228: - (32) if_stmt ::= T_IF expr T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIF T_CLOSE_TAG * + (48) filtered_var ::= varname_args * - {default} reduce 32 + {default} reduce 48 State 229: - (55) var_or_string ::= T_NUMERIC * + (49) varname_args ::= varname T_COLON var_or_string * - {default} reduce 55 + {default} reduce 49 State 230: - (35) ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ELSE T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG * + (17) stmts ::= ifequal * - {default} reduce 35 + {default} reduce 17 State 231: - (33) ifchanged_stmt ::= T_IFCHANGED T_CLOSE_TAG body T_OPEN_TAG T_ENDIFCHANGED T_CLOSE_TAG * + (4) code ::= T_HTML * - {default} reduce 33 + {default} reduce 4 State 232: - (56) var_or_string ::= string * + (53) var_list ::= var_or_string * - {default} reduce 56 + {default} reduce 53 State 233: + (61) string ::= T_STRING_DOUBLE_INIT T_STRING_DOUBLE_END * + + {default} reduce 61 + +State 234: (5) code ::= T_COMMENT_OPEN T_COMMENT * {default} reduce 5 +State 235: + (24) alias ::= T_WITH varname T_AS varname T_CLOSE_TAG body T_OPEN_TAG T_ENDWITH T_CLOSE_TAG * + + {default} reduce 24 + diff --git a/lib/Haanga/Compiler/Parser.php b/lib/Haanga/Compiler/Parser.php index a571346..1502a18 100644 --- a/lib/Haanga/Compiler/Parser.php +++ b/lib/Haanga/Compiler/Parser.php @@ -94,7 +94,7 @@ class Haanga_yyStackEntry }; // code external to the class is included here -#line 2 "Compiler/Parser.y" +#line 2 "lib/Haanga/Compiler/Parser.y" /* +---------------------------------------------------------------------------------+ @@ -131,18 +131,18 @@ class Haanga_yyStackEntry | Authors: César Rodas | +---------------------------------------------------------------------------------+ */ -#line 136 "Compiler/Parser.php" +#line 136 "lib/Haanga/Compiler/Parser.php" // declare_class is output here -#line 39 "Compiler/Parser.y" - class Haanga_Compiler_Parser #line 141 "Compiler/Parser.php" +#line 39 "lib/Haanga/Compiler/Parser.y" + class Haanga_Compiler_Parser #line 141 "lib/Haanga/Compiler/Parser.php" { /* First off, code is included which follows the "include_class" declaration ** in the input file. */ -#line 40 "Compiler/Parser.y" +#line 40 "lib/Haanga/Compiler/Parser.y" -#line 149 "Compiler/Parser.php" +#line 149 "lib/Haanga/Compiler/Parser.php" /* Next is all token values, as class constants */ @@ -216,13 +216,14 @@ class Haanga_yyStackEntry const T_STRING_CONTENT = 61; const T_LPARENT = 62; const T_RPARENT = 63; - const T_DOT = 64; + const T_OBJ = 64; const T_ALPHA = 65; - const T_BRACKETS_OPEN = 66; - const T_BRACKETS_CLOSE = 67; - const YY_NO_ACTION = 313; - const YY_ACCEPT_ACTION = 312; - const YY_ERROR_ACTION = 311; + const T_DOT = 66; + const T_BRACKETS_OPEN = 67; + const T_BRACKETS_CLOSE = 68; + const YY_NO_ACTION = 316; + const YY_ACCEPT_ACTION = 315; + const YY_ERROR_ACTION = 314; /* Next are that tables used to determine what action to take based on the ** current state and lookahead token. These tables are used to implement @@ -274,260 +275,258 @@ class Haanga_yyStackEntry ** shifting non-terminals after a reduce. ** self::$yy_default Default action for each state. */ - const YY_SZ_ACTTAB = 953; + const YY_SZ_ACTTAB = 945; static public $yy_action = array( - /* 0 */ 37, 8, 38, 120, 209, 65, 196, 33, 196, 141, - /* 10 */ 196, 77, 196, 81, 71, 173, 216, 129, 25, 43, - /* 20 */ 138, 34, 196, 32, 196, 31, 130, 54, 180, 214, - /* 30 */ 44, 37, 46, 38, 120, 80, 168, 79, 33, 98, - /* 40 */ 141, 203, 77, 198, 81, 71, 175, 198, 215, 25, - /* 50 */ 47, 161, 34, 157, 32, 211, 31, 192, 54, 198, - /* 60 */ 231, 44, 37, 46, 38, 120, 9, 126, 36, 33, - /* 70 */ 232, 141, 47, 77, 134, 81, 71, 153, 42, 151, - /* 80 */ 25, 216, 129, 34, 43, 32, 127, 31, 192, 54, - /* 90 */ 72, 47, 44, 37, 46, 38, 120, 108, 126, 35, - /* 100 */ 33, 232, 141, 217, 77, 74, 81, 71, 187, 45, - /* 110 */ 67, 25, 223, 158, 34, 191, 32, 160, 31, 80, - /* 120 */ 54, 79, 64, 44, 37, 46, 38, 120, 20, 97, - /* 130 */ 182, 33, 133, 141, 40, 77, 55, 81, 71, 143, - /* 140 */ 86, 155, 25, 216, 129, 34, 43, 32, 100, 31, - /* 150 */ 133, 54, 40, 63, 44, 37, 46, 38, 120, 312, - /* 160 */ 57, 73, 33, 133, 141, 40, 77, 47, 81, 71, - /* 170 */ 210, 39, 133, 25, 40, 159, 34, 156, 32, 133, - /* 180 */ 31, 40, 54, 147, 147, 44, 37, 46, 38, 120, - /* 190 */ 133, 225, 40, 33, 190, 141, 133, 77, 40, 81, - /* 200 */ 71, 28, 28, 28, 25, 139, 165, 34, 78, 32, - /* 210 */ 233, 31, 133, 54, 40, 70, 44, 37, 46, 38, - /* 220 */ 120, 93, 176, 218, 33, 84, 141, 133, 77, 40, - /* 230 */ 81, 71, 94, 126, 220, 25, 232, 90, 34, 154, - /* 240 */ 32, 89, 31, 133, 54, 40, 48, 44, 37, 46, - /* 250 */ 38, 120, 7, 221, 191, 33, 83, 141, 47, 77, - /* 260 */ 212, 81, 71, 133, 230, 40, 25, 216, 129, 34, - /* 270 */ 43, 32, 181, 31, 136, 54, 213, 228, 44, 37, - /* 280 */ 46, 38, 120, 4, 200, 190, 33, 96, 141, 47, - /* 290 */ 77, 178, 81, 71, 167, 149, 99, 25, 216, 129, - /* 300 */ 34, 43, 32, 172, 31, 126, 54, 87, 232, 44, - /* 310 */ 135, 46, 37, 13, 38, 120, 108, 82, 146, 33, - /* 320 */ 107, 141, 219, 77, 69, 81, 71, 116, 216, 129, - /* 330 */ 25, 43, 110, 34, 226, 32, 185, 31, 188, 54, - /* 340 */ 118, 109, 44, 37, 46, 38, 120, 196, 126, 196, - /* 350 */ 33, 232, 141, 227, 77, 114, 81, 71, 119, 113, - /* 360 */ 111, 25, 112, 117, 34, 163, 32, 61, 31, 132, - /* 370 */ 54, 56, 51, 44, 37, 46, 38, 120, 11, 121, - /* 380 */ 224, 33, 207, 141, 198, 77, 189, 81, 71, 144, - /* 390 */ 131, 50, 25, 216, 129, 34, 43, 32, 68, 31, - /* 400 */ 126, 54, 95, 232, 44, 37, 46, 38, 120, 18, - /* 410 */ 60, 199, 33, 53, 141, 197, 77, 142, 81, 71, - /* 420 */ 88, 193, 58, 25, 216, 129, 34, 43, 32, 101, - /* 430 */ 31, 126, 54, 66, 232, 44, 37, 46, 38, 120, - /* 440 */ 10, 62, 52, 33, 169, 141, 222, 77, 59, 81, - /* 450 */ 71, 171, 171, 171, 25, 216, 129, 34, 43, 32, - /* 460 */ 171, 31, 124, 54, 123, 171, 44, 37, 46, 38, - /* 470 */ 120, 171, 171, 108, 33, 171, 141, 171, 77, 217, - /* 480 */ 81, 71, 171, 171, 171, 25, 166, 171, 34, 171, - /* 490 */ 32, 171, 31, 125, 54, 171, 171, 44, 37, 46, - /* 500 */ 38, 120, 12, 171, 108, 33, 171, 141, 140, 77, - /* 510 */ 217, 81, 71, 171, 171, 171, 25, 216, 129, 34, - /* 520 */ 43, 32, 171, 31, 122, 54, 171, 171, 44, 37, - /* 530 */ 46, 38, 120, 16, 171, 108, 33, 171, 141, 171, - /* 540 */ 77, 217, 81, 71, 171, 171, 171, 25, 216, 129, - /* 550 */ 34, 43, 32, 162, 31, 128, 54, 171, 171, 44, - /* 560 */ 37, 46, 38, 120, 19, 171, 108, 33, 171, 141, - /* 570 */ 171, 77, 217, 81, 71, 148, 152, 171, 25, 216, - /* 580 */ 129, 34, 43, 32, 171, 31, 126, 54, 171, 232, - /* 590 */ 44, 37, 46, 38, 120, 1, 171, 171, 33, 171, - /* 600 */ 141, 171, 77, 171, 81, 71, 171, 171, 171, 25, - /* 610 */ 216, 129, 34, 43, 32, 171, 31, 171, 54, 49, - /* 620 */ 171, 44, 37, 46, 38, 120, 17, 171, 171, 33, - /* 630 */ 171, 141, 171, 77, 171, 81, 71, 171, 171, 171, - /* 640 */ 25, 216, 129, 34, 43, 32, 171, 31, 171, 54, - /* 650 */ 171, 171, 44, 171, 46, 22, 23, 27, 27, 27, - /* 660 */ 27, 27, 27, 27, 24, 24, 28, 28, 28, 22, - /* 670 */ 23, 27, 27, 27, 27, 27, 27, 27, 24, 24, - /* 680 */ 28, 28, 28, 171, 171, 171, 171, 171, 171, 85, - /* 690 */ 171, 171, 171, 23, 27, 27, 27, 27, 27, 27, - /* 700 */ 27, 24, 24, 28, 28, 28, 171, 171, 171, 171, - /* 710 */ 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - /* 720 */ 171, 27, 27, 27, 27, 27, 27, 27, 24, 24, - /* 730 */ 28, 28, 28, 174, 171, 171, 150, 201, 202, 206, - /* 740 */ 205, 204, 195, 194, 186, 183, 6, 208, 184, 171, - /* 750 */ 171, 196, 75, 196, 196, 76, 196, 171, 171, 91, - /* 760 */ 41, 216, 129, 171, 43, 196, 171, 196, 171, 171, - /* 770 */ 196, 171, 196, 229, 41, 171, 229, 171, 92, 171, - /* 780 */ 80, 171, 79, 80, 196, 79, 196, 229, 198, 171, - /* 790 */ 171, 198, 180, 171, 80, 171, 79, 171, 171, 80, - /* 800 */ 137, 79, 198, 196, 26, 196, 229, 198, 171, 171, - /* 810 */ 171, 108, 137, 80, 170, 79, 29, 217, 171, 171, - /* 820 */ 171, 198, 137, 108, 171, 229, 170, 106, 177, 217, - /* 830 */ 137, 171, 80, 108, 79, 171, 170, 104, 177, 217, - /* 840 */ 198, 108, 171, 171, 170, 179, 177, 217, 171, 171, - /* 850 */ 137, 171, 171, 171, 171, 171, 171, 137, 171, 171, - /* 860 */ 171, 108, 171, 171, 170, 103, 177, 217, 108, 171, - /* 870 */ 137, 170, 102, 177, 217, 171, 171, 137, 171, 171, - /* 880 */ 171, 108, 171, 3, 170, 105, 177, 217, 108, 137, - /* 890 */ 171, 170, 115, 177, 217, 171, 137, 171, 216, 129, - /* 900 */ 108, 43, 171, 170, 137, 145, 217, 108, 2, 171, - /* 910 */ 170, 171, 164, 217, 5, 108, 171, 171, 170, 171, - /* 920 */ 30, 217, 21, 216, 129, 171, 43, 171, 15, 216, - /* 930 */ 129, 171, 43, 171, 14, 171, 171, 216, 129, 171, - /* 940 */ 43, 171, 171, 216, 129, 171, 43, 171, 171, 216, - /* 950 */ 129, 171, 43, + /* 0 */ 39, 227, 41, 121, 2, 85, 206, 33, 206, 149, + /* 10 */ 79, 78, 80, 81, 75, 135, 189, 137, 25, 231, + /* 20 */ 146, 34, 43, 29, 182, 30, 117, 64, 169, 176, + /* 30 */ 42, 39, 45, 41, 121, 79, 47, 80, 33, 98, + /* 40 */ 149, 115, 78, 199, 81, 75, 188, 216, 94, 25, + /* 50 */ 221, 156, 34, 155, 29, 82, 30, 232, 64, 166, + /* 60 */ 166, 42, 39, 45, 41, 121, 3, 117, 35, 33, + /* 70 */ 176, 149, 47, 78, 226, 81, 75, 161, 140, 162, + /* 80 */ 25, 231, 146, 34, 43, 29, 88, 30, 132, 64, + /* 90 */ 133, 37, 42, 39, 45, 41, 121, 206, 192, 206, + /* 100 */ 33, 223, 149, 93, 78, 170, 81, 75, 27, 27, + /* 110 */ 27, 25, 175, 157, 34, 218, 29, 160, 30, 232, + /* 120 */ 64, 203, 223, 42, 39, 45, 41, 121, 180, 117, + /* 130 */ 36, 33, 176, 149, 199, 78, 47, 81, 75, 70, + /* 140 */ 315, 60, 25, 213, 164, 34, 76, 29, 124, 30, + /* 150 */ 159, 64, 233, 218, 42, 39, 45, 41, 121, 115, + /* 160 */ 126, 95, 33, 204, 149, 228, 78, 66, 81, 75, + /* 170 */ 185, 115, 173, 25, 163, 167, 34, 228, 29, 122, + /* 180 */ 30, 132, 64, 133, 37, 42, 39, 45, 41, 121, + /* 190 */ 115, 51, 207, 33, 47, 149, 228, 78, 83, 81, + /* 200 */ 75, 97, 96, 86, 25, 177, 131, 34, 143, 29, + /* 210 */ 125, 30, 132, 64, 133, 37, 42, 39, 45, 41, + /* 220 */ 121, 115, 201, 47, 33, 89, 149, 228, 78, 202, + /* 230 */ 81, 75, 101, 197, 132, 25, 133, 37, 34, 138, + /* 240 */ 29, 128, 30, 132, 64, 133, 37, 42, 39, 45, + /* 250 */ 41, 121, 115, 100, 168, 33, 234, 149, 228, 78, + /* 260 */ 171, 81, 75, 72, 47, 210, 25, 148, 194, 34, + /* 270 */ 71, 29, 235, 30, 132, 64, 133, 37, 42, 39, + /* 280 */ 45, 41, 121, 21, 99, 211, 33, 191, 149, 91, + /* 290 */ 78, 198, 81, 75, 220, 181, 179, 25, 231, 146, + /* 300 */ 34, 43, 29, 158, 30, 132, 64, 133, 37, 42, + /* 310 */ 39, 45, 41, 121, 4, 172, 50, 33, 174, 149, + /* 320 */ 87, 78, 184, 81, 75, 215, 186, 63, 25, 231, + /* 330 */ 146, 34, 43, 29, 127, 30, 132, 64, 133, 37, + /* 340 */ 42, 130, 45, 39, 6, 41, 121, 214, 68, 69, + /* 350 */ 33, 67, 149, 206, 78, 206, 81, 75, 59, 231, + /* 360 */ 146, 25, 43, 52, 34, 173, 29, 123, 30, 134, + /* 370 */ 64, 120, 61, 42, 39, 45, 41, 121, 65, 117, + /* 380 */ 108, 33, 176, 149, 109, 78, 173, 81, 75, 118, + /* 390 */ 199, 112, 25, 107, 111, 34, 151, 29, 57, 30, + /* 400 */ 116, 64, 113, 114, 42, 39, 45, 41, 121, 7, + /* 410 */ 54, 110, 33, 48, 149, 55, 78, 173, 81, 75, + /* 420 */ 152, 147, 56, 25, 231, 146, 34, 43, 29, 49, + /* 430 */ 30, 117, 64, 62, 176, 42, 39, 45, 41, 121, + /* 440 */ 20, 58, 173, 33, 173, 149, 173, 78, 173, 81, + /* 450 */ 75, 173, 178, 173, 25, 231, 146, 34, 43, 29, + /* 460 */ 173, 30, 117, 64, 53, 176, 42, 39, 45, 41, + /* 470 */ 121, 11, 173, 154, 33, 173, 149, 173, 78, 173, + /* 480 */ 81, 75, 173, 173, 173, 25, 231, 146, 34, 43, + /* 490 */ 29, 173, 30, 173, 64, 173, 173, 42, 39, 45, + /* 500 */ 41, 121, 206, 173, 206, 33, 173, 149, 173, 78, + /* 510 */ 173, 81, 75, 136, 173, 173, 25, 173, 173, 34, + /* 520 */ 173, 29, 173, 30, 141, 64, 173, 173, 42, 39, + /* 530 */ 45, 41, 121, 13, 173, 173, 33, 173, 149, 199, + /* 540 */ 78, 173, 81, 75, 173, 173, 173, 25, 231, 146, + /* 550 */ 34, 43, 29, 173, 30, 145, 64, 173, 173, 42, + /* 560 */ 39, 45, 41, 121, 1, 173, 173, 33, 173, 149, + /* 570 */ 173, 78, 144, 81, 75, 173, 229, 173, 25, 231, + /* 580 */ 146, 34, 43, 29, 173, 30, 117, 64, 173, 176, + /* 590 */ 42, 39, 45, 41, 121, 5, 173, 173, 33, 173, + /* 600 */ 149, 139, 78, 173, 81, 75, 173, 173, 173, 25, + /* 610 */ 231, 146, 34, 43, 29, 173, 30, 173, 64, 173, + /* 620 */ 173, 42, 173, 45, 26, 22, 23, 23, 23, 23, + /* 630 */ 23, 23, 23, 28, 28, 27, 27, 27, 39, 18, + /* 640 */ 41, 121, 173, 173, 173, 33, 173, 149, 173, 78, + /* 650 */ 173, 81, 75, 173, 231, 146, 25, 43, 173, 34, + /* 660 */ 173, 29, 173, 30, 173, 64, 46, 173, 42, 173, + /* 670 */ 45, 26, 22, 23, 23, 23, 23, 23, 23, 23, + /* 680 */ 28, 28, 27, 27, 27, 193, 173, 173, 173, 173, + /* 690 */ 173, 92, 173, 173, 173, 22, 23, 23, 23, 23, + /* 700 */ 23, 23, 23, 28, 28, 27, 27, 27, 23, 23, + /* 710 */ 23, 23, 23, 23, 23, 28, 28, 27, 27, 27, + /* 720 */ 132, 183, 133, 37, 129, 212, 209, 222, 208, 200, + /* 730 */ 205, 217, 230, 187, 16, 219, 196, 173, 173, 206, + /* 740 */ 74, 206, 206, 73, 206, 173, 150, 90, 38, 231, + /* 750 */ 146, 173, 43, 206, 173, 206, 117, 173, 206, 176, + /* 760 */ 206, 169, 38, 173, 169, 173, 84, 173, 79, 173, + /* 770 */ 80, 79, 206, 80, 206, 169, 199, 173, 173, 199, + /* 780 */ 225, 15, 79, 173, 80, 173, 173, 79, 173, 80, + /* 790 */ 199, 142, 24, 173, 169, 199, 231, 146, 173, 43, + /* 800 */ 142, 79, 115, 80, 173, 224, 102, 195, 228, 199, + /* 810 */ 142, 115, 173, 173, 224, 105, 195, 228, 206, 142, + /* 820 */ 206, 115, 173, 173, 224, 104, 195, 228, 142, 173, + /* 830 */ 115, 44, 173, 224, 106, 195, 228, 142, 173, 115, + /* 840 */ 225, 173, 224, 103, 195, 228, 142, 79, 115, 80, + /* 850 */ 173, 224, 190, 195, 228, 199, 8, 115, 77, 142, + /* 860 */ 224, 119, 195, 228, 173, 173, 142, 173, 173, 173, + /* 870 */ 115, 231, 146, 224, 43, 153, 228, 115, 142, 173, + /* 880 */ 224, 173, 31, 228, 173, 132, 142, 133, 37, 115, + /* 890 */ 173, 173, 224, 173, 165, 228, 40, 115, 14, 173, + /* 900 */ 224, 173, 32, 228, 132, 9, 133, 37, 173, 12, + /* 910 */ 173, 173, 173, 231, 146, 17, 43, 173, 173, 173, + /* 920 */ 231, 146, 19, 43, 231, 146, 10, 43, 173, 173, + /* 930 */ 231, 146, 173, 43, 173, 173, 173, 231, 146, 173, + /* 940 */ 43, 231, 146, 173, 43, ); static public $yy_lookahead = array( - /* 0 */ 21, 1, 23, 24, 22, 70, 28, 28, 30, 30, - /* 10 */ 28, 32, 30, 34, 35, 20, 16, 17, 39, 19, - /* 20 */ 41, 42, 28, 44, 30, 46, 47, 48, 50, 22, - /* 30 */ 51, 21, 53, 23, 24, 57, 71, 59, 28, 22, - /* 40 */ 30, 22, 32, 65, 34, 35, 22, 65, 22, 39, - /* 50 */ 55, 41, 42, 43, 44, 22, 46, 74, 48, 65, - /* 60 */ 22, 51, 21, 53, 23, 24, 1, 84, 85, 28, - /* 70 */ 87, 30, 55, 32, 50, 34, 35, 36, 10, 38, - /* 80 */ 39, 16, 17, 42, 19, 44, 73, 46, 74, 48, - /* 90 */ 54, 55, 51, 21, 53, 23, 24, 84, 84, 85, - /* 100 */ 28, 87, 30, 90, 32, 37, 34, 35, 22, 10, - /* 110 */ 70, 39, 58, 41, 42, 61, 44, 45, 46, 57, - /* 120 */ 48, 59, 70, 51, 21, 53, 23, 24, 1, 22, - /* 130 */ 22, 28, 64, 30, 66, 32, 70, 34, 35, 36, - /* 140 */ 22, 38, 39, 16, 17, 42, 19, 44, 22, 46, - /* 150 */ 64, 48, 66, 70, 51, 21, 53, 23, 24, 69, - /* 160 */ 70, 29, 28, 64, 30, 66, 32, 55, 34, 35, - /* 170 */ 22, 56, 64, 39, 66, 41, 42, 43, 44, 64, - /* 180 */ 46, 66, 48, 25, 26, 51, 21, 53, 23, 24, - /* 190 */ 64, 58, 66, 28, 61, 30, 64, 32, 66, 34, - /* 200 */ 35, 13, 14, 15, 39, 40, 41, 42, 29, 44, - /* 210 */ 18, 46, 64, 48, 66, 70, 51, 21, 53, 23, - /* 220 */ 24, 22, 22, 74, 28, 22, 30, 64, 32, 66, - /* 230 */ 34, 35, 22, 84, 22, 39, 87, 22, 42, 43, - /* 240 */ 44, 22, 46, 64, 48, 66, 70, 51, 21, 53, - /* 250 */ 23, 24, 1, 60, 61, 28, 22, 30, 55, 32, - /* 260 */ 22, 34, 35, 64, 22, 66, 39, 16, 17, 42, - /* 270 */ 19, 44, 22, 46, 47, 48, 65, 22, 51, 21, - /* 280 */ 53, 23, 24, 1, 60, 61, 28, 22, 30, 55, - /* 290 */ 32, 22, 34, 35, 22, 74, 22, 39, 16, 17, - /* 300 */ 42, 19, 44, 22, 46, 84, 48, 22, 87, 51, - /* 310 */ 52, 53, 21, 1, 23, 24, 84, 22, 27, 28, - /* 320 */ 84, 30, 90, 32, 70, 34, 35, 84, 16, 17, - /* 330 */ 39, 19, 84, 42, 87, 44, 22, 46, 74, 48, - /* 340 */ 84, 84, 51, 21, 53, 23, 24, 28, 84, 30, - /* 350 */ 28, 87, 30, 22, 32, 84, 34, 35, 91, 84, - /* 360 */ 84, 39, 84, 84, 42, 43, 44, 70, 46, 50, - /* 370 */ 48, 70, 70, 51, 21, 53, 23, 24, 1, 91, - /* 380 */ 22, 28, 22, 30, 65, 32, 22, 34, 35, 36, - /* 390 */ 74, 70, 39, 16, 17, 42, 19, 44, 70, 46, - /* 400 */ 84, 48, 22, 87, 51, 21, 53, 23, 24, 1, - /* 410 */ 70, 67, 28, 70, 30, 22, 32, 33, 34, 35, - /* 420 */ 22, 74, 70, 39, 16, 17, 42, 19, 44, 22, - /* 430 */ 46, 84, 48, 70, 87, 51, 21, 53, 23, 24, - /* 440 */ 1, 70, 70, 28, 22, 30, 22, 32, 70, 34, - /* 450 */ 35, 92, 92, 92, 39, 16, 17, 42, 19, 44, - /* 460 */ 92, 46, 73, 48, 49, 92, 51, 21, 53, 23, - /* 470 */ 24, 92, 92, 84, 28, 92, 30, 92, 32, 90, - /* 480 */ 34, 35, 92, 92, 92, 39, 40, 92, 42, 92, - /* 490 */ 44, 92, 46, 73, 48, 92, 92, 51, 21, 53, - /* 500 */ 23, 24, 1, 92, 84, 28, 92, 30, 31, 32, - /* 510 */ 90, 34, 35, 92, 92, 92, 39, 16, 17, 42, - /* 520 */ 19, 44, 92, 46, 73, 48, 92, 92, 51, 21, - /* 530 */ 53, 23, 24, 1, 92, 84, 28, 92, 30, 92, - /* 540 */ 32, 90, 34, 35, 92, 92, 92, 39, 16, 17, - /* 550 */ 42, 19, 44, 45, 46, 73, 48, 92, 92, 51, - /* 560 */ 21, 53, 23, 24, 1, 92, 84, 28, 92, 30, - /* 570 */ 92, 32, 90, 34, 35, 36, 74, 92, 39, 16, - /* 580 */ 17, 42, 19, 44, 92, 46, 84, 48, 92, 87, - /* 590 */ 51, 21, 53, 23, 24, 1, 92, 92, 28, 92, - /* 600 */ 30, 92, 32, 92, 34, 35, 92, 92, 92, 39, - /* 610 */ 16, 17, 42, 19, 44, 92, 46, 92, 48, 49, - /* 620 */ 92, 51, 21, 53, 23, 24, 1, 92, 92, 28, - /* 630 */ 92, 30, 92, 32, 92, 34, 35, 92, 92, 92, - /* 640 */ 39, 16, 17, 42, 19, 44, 92, 46, 92, 48, - /* 650 */ 92, 92, 51, 92, 53, 2, 3, 4, 5, 6, - /* 660 */ 7, 8, 9, 10, 11, 12, 13, 14, 15, 2, - /* 670 */ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - /* 680 */ 13, 14, 15, 92, 92, 92, 92, 92, 92, 22, - /* 690 */ 92, 92, 92, 3, 4, 5, 6, 7, 8, 9, - /* 700 */ 10, 11, 12, 13, 14, 15, 92, 92, 92, 92, - /* 710 */ 92, 92, 92, 92, 92, 92, 63, 92, 92, 92, - /* 720 */ 92, 4, 5, 6, 7, 8, 9, 10, 11, 12, - /* 730 */ 13, 14, 15, 72, 92, 92, 75, 76, 77, 78, - /* 740 */ 79, 80, 81, 82, 83, 22, 1, 86, 22, 92, - /* 750 */ 92, 28, 29, 30, 28, 29, 30, 92, 92, 22, - /* 760 */ 37, 16, 17, 92, 19, 28, 92, 30, 92, 92, - /* 770 */ 28, 92, 30, 50, 37, 92, 50, 92, 22, 92, - /* 780 */ 57, 92, 59, 57, 28, 59, 30, 50, 65, 92, - /* 790 */ 92, 65, 50, 92, 57, 92, 59, 92, 92, 57, - /* 800 */ 73, 59, 65, 28, 62, 30, 50, 65, 92, 92, - /* 810 */ 92, 84, 73, 57, 87, 59, 89, 90, 92, 92, - /* 820 */ 92, 65, 73, 84, 92, 50, 87, 88, 89, 90, - /* 830 */ 73, 92, 57, 84, 59, 92, 87, 88, 89, 90, - /* 840 */ 65, 84, 92, 92, 87, 88, 89, 90, 92, 92, - /* 850 */ 73, 92, 92, 92, 92, 92, 92, 73, 92, 92, - /* 860 */ 92, 84, 92, 92, 87, 88, 89, 90, 84, 92, - /* 870 */ 73, 87, 88, 89, 90, 92, 92, 73, 92, 92, - /* 880 */ 92, 84, 92, 1, 87, 88, 89, 90, 84, 73, - /* 890 */ 92, 87, 88, 89, 90, 92, 73, 92, 16, 17, - /* 900 */ 84, 19, 92, 87, 73, 89, 90, 84, 1, 92, - /* 910 */ 87, 92, 89, 90, 1, 84, 92, 92, 87, 92, - /* 920 */ 89, 90, 1, 16, 17, 92, 19, 92, 1, 16, - /* 930 */ 17, 92, 19, 92, 1, 92, 92, 16, 17, 92, - /* 940 */ 19, 92, 92, 16, 17, 92, 19, 92, 92, 16, - /* 950 */ 17, 92, 19, + /* 0 */ 21, 20, 23, 24, 1, 22, 28, 28, 30, 30, + /* 10 */ 57, 32, 59, 34, 35, 36, 75, 38, 39, 16, + /* 20 */ 17, 42, 19, 44, 22, 46, 85, 48, 50, 88, + /* 30 */ 51, 21, 53, 23, 24, 57, 55, 59, 28, 22, + /* 40 */ 30, 85, 32, 65, 34, 35, 22, 91, 22, 39, + /* 50 */ 22, 41, 42, 43, 44, 22, 46, 75, 48, 25, + /* 60 */ 26, 51, 21, 53, 23, 24, 1, 85, 86, 28, + /* 70 */ 88, 30, 55, 32, 22, 34, 35, 36, 50, 38, + /* 80 */ 39, 16, 17, 42, 19, 44, 22, 46, 64, 48, + /* 90 */ 66, 67, 51, 21, 53, 23, 24, 28, 58, 30, + /* 100 */ 28, 61, 30, 22, 32, 22, 34, 35, 13, 14, + /* 110 */ 15, 39, 58, 41, 42, 61, 44, 45, 46, 75, + /* 120 */ 48, 60, 61, 51, 21, 53, 23, 24, 22, 85, + /* 130 */ 86, 28, 88, 30, 65, 32, 55, 34, 35, 71, + /* 140 */ 70, 71, 39, 22, 41, 42, 29, 44, 74, 46, + /* 150 */ 47, 48, 60, 61, 51, 21, 53, 23, 24, 85, + /* 160 */ 74, 22, 28, 22, 30, 91, 32, 71, 34, 35, + /* 170 */ 22, 85, 22, 39, 40, 41, 42, 91, 44, 74, + /* 180 */ 46, 64, 48, 66, 67, 51, 21, 53, 23, 24, + /* 190 */ 85, 71, 22, 28, 55, 30, 91, 32, 22, 34, + /* 200 */ 35, 22, 22, 22, 39, 22, 41, 42, 43, 44, + /* 210 */ 74, 46, 64, 48, 66, 67, 51, 21, 53, 23, + /* 220 */ 24, 85, 22, 55, 28, 22, 30, 91, 32, 22, + /* 230 */ 34, 35, 22, 22, 64, 39, 66, 67, 42, 43, + /* 240 */ 44, 74, 46, 64, 48, 66, 67, 51, 21, 53, + /* 250 */ 23, 24, 85, 22, 22, 28, 18, 30, 91, 32, + /* 260 */ 65, 34, 35, 54, 55, 22, 39, 40, 22, 42, + /* 270 */ 29, 44, 22, 46, 64, 48, 66, 67, 51, 21, + /* 280 */ 53, 23, 24, 1, 22, 22, 28, 65, 30, 22, + /* 290 */ 32, 68, 34, 35, 88, 22, 22, 39, 16, 17, + /* 300 */ 42, 19, 44, 45, 46, 64, 48, 66, 67, 51, + /* 310 */ 21, 53, 23, 24, 1, 22, 71, 28, 22, 30, + /* 320 */ 22, 32, 22, 34, 35, 22, 72, 71, 39, 16, + /* 330 */ 17, 42, 19, 44, 92, 46, 64, 48, 66, 67, + /* 340 */ 51, 52, 53, 21, 1, 23, 24, 22, 71, 71, + /* 350 */ 28, 71, 30, 28, 32, 30, 34, 35, 71, 16, + /* 360 */ 17, 39, 19, 71, 42, 93, 44, 92, 46, 75, + /* 370 */ 48, 49, 71, 51, 21, 53, 23, 24, 71, 85, + /* 380 */ 85, 28, 88, 30, 85, 32, 93, 34, 35, 85, + /* 390 */ 65, 85, 39, 85, 85, 42, 43, 44, 71, 46, + /* 400 */ 85, 48, 85, 85, 51, 21, 53, 23, 24, 1, + /* 410 */ 71, 85, 28, 71, 30, 71, 32, 93, 34, 35, + /* 420 */ 36, 75, 71, 39, 16, 17, 42, 19, 44, 71, + /* 430 */ 46, 85, 48, 71, 88, 51, 21, 53, 23, 24, + /* 440 */ 1, 71, 93, 28, 93, 30, 93, 32, 93, 34, + /* 450 */ 35, 93, 75, 93, 39, 16, 17, 42, 19, 44, + /* 460 */ 93, 46, 85, 48, 49, 88, 51, 21, 53, 23, + /* 470 */ 24, 1, 93, 27, 28, 93, 30, 93, 32, 93, + /* 480 */ 34, 35, 93, 93, 93, 39, 16, 17, 42, 19, + /* 490 */ 44, 93, 46, 93, 48, 93, 93, 51, 21, 53, + /* 500 */ 23, 24, 28, 93, 30, 28, 93, 30, 93, 32, + /* 510 */ 93, 34, 35, 36, 93, 93, 39, 93, 93, 42, + /* 520 */ 93, 44, 93, 46, 50, 48, 93, 93, 51, 21, + /* 530 */ 53, 23, 24, 1, 93, 93, 28, 93, 30, 65, + /* 540 */ 32, 93, 34, 35, 93, 93, 93, 39, 16, 17, + /* 550 */ 42, 19, 44, 93, 46, 47, 48, 93, 93, 51, + /* 560 */ 21, 53, 23, 24, 1, 93, 93, 28, 93, 30, + /* 570 */ 93, 32, 33, 34, 35, 93, 75, 93, 39, 16, + /* 580 */ 17, 42, 19, 44, 93, 46, 85, 48, 93, 88, + /* 590 */ 51, 21, 53, 23, 24, 1, 93, 93, 28, 93, + /* 600 */ 30, 31, 32, 93, 34, 35, 93, 93, 93, 39, + /* 610 */ 16, 17, 42, 19, 44, 93, 46, 93, 48, 93, + /* 620 */ 93, 51, 93, 53, 2, 3, 4, 5, 6, 7, + /* 630 */ 8, 9, 10, 11, 12, 13, 14, 15, 21, 1, + /* 640 */ 23, 24, 93, 93, 93, 28, 93, 30, 93, 32, + /* 650 */ 93, 34, 35, 93, 16, 17, 39, 19, 93, 42, + /* 660 */ 93, 44, 93, 46, 93, 48, 10, 93, 51, 93, + /* 670 */ 53, 2, 3, 4, 5, 6, 7, 8, 9, 10, + /* 680 */ 11, 12, 13, 14, 15, 63, 93, 93, 93, 93, + /* 690 */ 93, 22, 93, 93, 93, 3, 4, 5, 6, 7, + /* 700 */ 8, 9, 10, 11, 12, 13, 14, 15, 4, 5, + /* 710 */ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + /* 720 */ 64, 73, 66, 67, 76, 77, 78, 79, 80, 81, + /* 730 */ 82, 83, 84, 22, 1, 87, 22, 93, 93, 28, + /* 740 */ 29, 30, 28, 29, 30, 93, 75, 22, 37, 16, + /* 750 */ 17, 93, 19, 28, 93, 30, 85, 93, 28, 88, + /* 760 */ 30, 50, 37, 93, 50, 93, 22, 93, 57, 93, + /* 770 */ 59, 57, 28, 59, 30, 50, 65, 93, 93, 65, + /* 780 */ 50, 1, 57, 93, 59, 93, 93, 57, 93, 59, + /* 790 */ 65, 74, 62, 93, 50, 65, 16, 17, 93, 19, + /* 800 */ 74, 57, 85, 59, 93, 88, 89, 90, 91, 65, + /* 810 */ 74, 85, 93, 93, 88, 89, 90, 91, 28, 74, + /* 820 */ 30, 85, 93, 93, 88, 89, 90, 91, 74, 93, + /* 830 */ 85, 10, 93, 88, 89, 90, 91, 74, 93, 85, + /* 840 */ 50, 93, 88, 89, 90, 91, 74, 57, 85, 59, + /* 850 */ 93, 88, 89, 90, 91, 65, 1, 85, 37, 74, + /* 860 */ 88, 89, 90, 91, 93, 93, 74, 93, 93, 93, + /* 870 */ 85, 16, 17, 88, 19, 90, 91, 85, 74, 93, + /* 880 */ 88, 93, 90, 91, 93, 64, 74, 66, 67, 85, + /* 890 */ 93, 93, 88, 93, 90, 91, 56, 85, 1, 93, + /* 900 */ 88, 93, 90, 91, 64, 1, 66, 67, 93, 1, + /* 910 */ 93, 93, 93, 16, 17, 1, 19, 93, 93, 93, + /* 920 */ 16, 17, 1, 19, 16, 17, 1, 19, 93, 93, + /* 930 */ 16, 17, 93, 19, 93, 93, 93, 16, 17, 93, + /* 940 */ 19, 16, 17, 93, 19, ); - const YY_SHIFT_USE_DFLT = -23; - const YY_SHIFT_MAX = 166; + const YY_SHIFT_USE_DFLT = -48; + const YY_SHIFT_MAX = 167; static public $yy_shift_ofst = array( - /* 0 */ -23, 134, 165, 103, 72, -21, 41, 10, 353, 258, - /* 10 */ 539, 384, 477, 446, 196, 227, 291, 508, 415, 570, - /* 20 */ 322, 601, 742, 742, 742, 742, 742, 742, 742, -22, - /* 30 */ -22, -22, -22, 726, 756, 723, 737, 775, 775, 775, - /* 40 */ 775, 775, -6, -6, -6, -6, -6, -6, 501, -18, - /* 50 */ 408, 312, 907, 439, 319, 127, 913, 921, 933, 745, - /* 60 */ 625, 563, 594, 882, 927, 532, 65, 0, 251, 282, - /* 70 */ 377, -6, -6, -6, -6, -6, -6, -6, -6, 193, - /* 80 */ 54, 62, -23, -23, -23, -23, -23, -23, -23, -23, - /* 90 */ -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, - /* 100 */ -23, -23, 667, 653, 690, 717, 717, 68, 115, 179, - /* 110 */ 132, 86, 99, 108, 126, 188, 148, 199, 163, 224, - /* 120 */ 158, 133, -5, 24, 234, 203, 163, 36, 17, 192, - /* 130 */ 238, 7, 219, 211, 269, 26, 33, 112, 107, 331, - /* 140 */ 364, 380, 360, 358, 424, 398, 314, 407, 422, 344, - /* 150 */ 393, 118, 19, 272, 281, 274, 38, 200, 215, 265, - /* 160 */ 250, 295, 212, 242, 210, 285, 255, + /* 0 */ -48, 134, 165, 72, 103, -21, 10, 41, 570, 415, + /* 10 */ 289, 258, 322, 539, 227, 353, 446, 384, 508, 477, + /* 20 */ 196, 617, 730, 730, 730, 730, 730, 730, 730, 790, + /* 30 */ 790, 790, 790, 714, 744, 711, 725, -22, -22, -22, + /* 40 */ -22, -22, 69, 69, 69, 69, 69, 69, 925, 904, + /* 50 */ 908, 914, 921, 325, 439, 470, 408, 563, 594, 638, + /* 60 */ 282, 65, 3, 343, 474, 313, 532, 897, 780, 733, + /* 70 */ 855, 69, 69, 69, 69, 69, 69, 69, 69, 54, + /* 80 */ 92, -47, -48, -48, -48, -48, -48, -48, -48, -48, + /* 90 */ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + /* 100 */ -48, -48, 622, 669, 692, 704, 704, 821, 241, 24, + /* 110 */ 170, 117, 148, 179, 210, 840, 656, 272, 272, 95, + /* 120 */ 28, 34, -19, 40, 17, 81, 139, 61, 209, 303, + /* 130 */ 200, 267, 222, 195, 273, 274, 300, 298, 293, 263, + /* 140 */ 211, 203, 168, 232, 250, 243, 238, 223, 246, 231, + /* 150 */ 207, 296, 2, 26, 183, 150, 176, 180, 141, 121, + /* 160 */ 52, 83, 262, 106, 64, 181, 33, -17, ); - const YY_REDUCE_USE_DFLT = -66; + const YY_REDUCE_USE_DFLT = -60; const YY_REDUCE_MAX = 101; static public $yy_reduce_ofst = array( - /* 0 */ 90, 661, 661, 661, 661, 661, 661, 661, 661, 661, - /* 10 */ 661, 661, 661, 661, 661, 661, 661, 661, 661, 661, - /* 20 */ 661, 661, 749, 797, 804, 784, 777, 739, 757, 816, - /* 30 */ 823, 727, 831, 14, -17, 264, 264, 316, 502, 149, - /* 40 */ 221, 347, 482, 451, 389, 420, 13, 232, -35, 243, - /* 50 */ -35, -35, -35, -35, 279, -35, -35, -35, -35, -35, - /* 60 */ -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - /* 70 */ -35, 236, 248, 256, 278, 276, 275, 257, 271, 267, - /* 80 */ 288, 247, 352, 363, 378, 372, 343, 302, 301, 321, - /* 90 */ 340, 328, 371, 297, 254, 176, 66, 52, 83, 40, - /* 100 */ 145, -65, + /* 0 */ 70, 648, 648, 648, 648, 648, 648, 648, 648, 648, + /* 10 */ 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + /* 20 */ 648, 648, 745, 726, 717, 754, 736, 763, 772, 792, + /* 30 */ 812, 804, 785, -18, 44, 377, 377, 346, -59, 294, + /* 40 */ 501, 671, 86, 105, 74, 167, 136, -44, 254, 254, + /* 50 */ 254, 254, 254, 326, 254, 254, 254, 254, 254, 254, + /* 60 */ 254, 254, 254, 254, 317, 254, 254, 254, 254, 254, + /* 70 */ 254, 304, 295, 299, 306, 308, 318, 315, 309, 275, + /* 80 */ 242, 206, 278, 277, 256, 280, 301, 292, 287, 245, + /* 90 */ 362, 339, 327, 370, 307, 342, 344, 358, 351, 120, + /* 100 */ 68, 96, ); static public $yyExpectedTokens = array( /* 0 */ array(), - /* 1 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 41, 42, 43, 44, 46, 48, 51, 53, ), - /* 2 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 40, 41, 42, 44, 46, 48, 51, 53, ), - /* 3 */ array(21, 23, 24, 28, 30, 32, 34, 35, 36, 38, 39, 42, 44, 46, 48, 51, 53, ), - /* 4 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 41, 42, 44, 45, 46, 48, 51, 53, ), - /* 5 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 41, 42, 44, 46, 47, 48, 51, 53, ), - /* 6 */ array(21, 23, 24, 28, 30, 32, 34, 35, 36, 38, 39, 42, 44, 46, 48, 51, 53, ), - /* 7 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 41, 42, 43, 44, 46, 48, 51, 53, ), - /* 8 */ array(21, 23, 24, 28, 30, 32, 34, 35, 36, 39, 42, 44, 46, 48, 51, 53, ), - /* 9 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 42, 44, 46, 48, 51, 52, 53, ), - /* 10 */ array(21, 23, 24, 28, 30, 32, 34, 35, 36, 39, 42, 44, 46, 48, 51, 53, ), - /* 11 */ array(21, 23, 24, 28, 30, 32, 33, 34, 35, 39, 42, 44, 46, 48, 51, 53, ), - /* 12 */ array(21, 23, 24, 28, 30, 31, 32, 34, 35, 39, 42, 44, 46, 48, 51, 53, ), - /* 13 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 40, 42, 44, 46, 48, 51, 53, ), - /* 14 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 42, 43, 44, 46, 48, 51, 53, ), - /* 15 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 42, 44, 46, 47, 48, 51, 53, ), + /* 1 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 40, 41, 42, 44, 46, 48, 51, 53, ), + /* 2 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 41, 42, 43, 44, 46, 48, 51, 53, ), + /* 3 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 41, 42, 44, 45, 46, 48, 51, 53, ), + /* 4 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 41, 42, 44, 46, 47, 48, 51, 53, ), + /* 5 */ array(21, 23, 24, 28, 30, 32, 34, 35, 36, 38, 39, 42, 44, 46, 48, 51, 53, ), + /* 6 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 41, 42, 43, 44, 46, 48, 51, 53, ), + /* 7 */ array(21, 23, 24, 28, 30, 32, 34, 35, 36, 38, 39, 42, 44, 46, 48, 51, 53, ), + /* 8 */ array(21, 23, 24, 28, 30, 31, 32, 34, 35, 39, 42, 44, 46, 48, 51, 53, ), + /* 9 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 42, 44, 46, 48, 49, 51, 53, ), + /* 10 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 42, 44, 46, 48, 51, 52, 53, ), + /* 11 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 42, 44, 45, 46, 48, 51, 53, ), + /* 12 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 42, 44, 46, 48, 49, 51, 53, ), + /* 13 */ array(21, 23, 24, 28, 30, 32, 33, 34, 35, 39, 42, 44, 46, 48, 51, 53, ), + /* 14 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 40, 42, 44, 46, 48, 51, 53, ), + /* 15 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 42, 43, 44, 46, 48, 51, 53, ), /* 16 */ array(21, 23, 24, 27, 28, 30, 32, 34, 35, 39, 42, 44, 46, 48, 51, 53, ), - /* 17 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 42, 44, 45, 46, 48, 51, 53, ), - /* 18 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 42, 44, 46, 48, 49, 51, 53, ), - /* 19 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 42, 44, 46, 48, 49, 51, 53, ), + /* 17 */ array(21, 23, 24, 28, 30, 32, 34, 35, 36, 39, 42, 44, 46, 48, 51, 53, ), + /* 18 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 42, 44, 46, 47, 48, 51, 53, ), + /* 19 */ array(21, 23, 24, 28, 30, 32, 34, 35, 36, 39, 42, 44, 46, 48, 51, 53, ), /* 20 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 42, 43, 44, 46, 48, 51, 53, ), /* 21 */ array(21, 23, 24, 28, 30, 32, 34, 35, 39, 42, 44, 46, 48, 51, 53, ), /* 22 */ array(28, 30, 50, 57, 59, 62, 65, ), @@ -557,12 +556,12 @@ static public $yy_action = array( /* 46 */ array(28, 30, 65, ), /* 47 */ array(28, 30, 65, ), /* 48 */ array(1, 16, 17, 19, ), - /* 49 */ array(22, 28, 30, 65, ), + /* 49 */ array(1, 16, 17, 19, ), /* 50 */ array(1, 16, 17, 19, ), /* 51 */ array(1, 16, 17, 19, ), /* 52 */ array(1, 16, 17, 19, ), - /* 53 */ array(1, 16, 17, 19, ), - /* 54 */ array(28, 30, 50, 65, ), + /* 53 */ array(22, 28, 30, 65, ), + /* 54 */ array(1, 16, 17, 19, ), /* 55 */ array(1, 16, 17, 19, ), /* 56 */ array(1, 16, 17, 19, ), /* 57 */ array(1, 16, 17, 19, ), @@ -572,7 +571,7 @@ static public $yy_action = array( /* 61 */ array(1, 16, 17, 19, ), /* 62 */ array(1, 16, 17, 19, ), /* 63 */ array(1, 16, 17, 19, ), - /* 64 */ array(1, 16, 17, 19, ), + /* 64 */ array(28, 30, 50, 65, ), /* 65 */ array(1, 16, 17, 19, ), /* 66 */ array(1, 16, 17, 19, ), /* 67 */ array(1, 16, 17, 19, ), @@ -587,8 +586,8 @@ static public $yy_action = array( /* 76 */ array(28, 30, 65, ), /* 77 */ array(28, 30, 65, ), /* 78 */ array(28, 30, 65, ), - /* 79 */ array(60, 61, ), - /* 80 */ array(58, 61, ), + /* 79 */ array(58, 61, ), + /* 80 */ array(60, 61, ), /* 81 */ array(57, 59, ), /* 82 */ array(), /* 83 */ array(), @@ -610,54 +609,54 @@ static public $yy_action = array( /* 99 */ array(), /* 100 */ array(), /* 101 */ array(), - /* 102 */ array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 22, ), - /* 103 */ array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 63, ), + /* 102 */ array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 63, ), + /* 103 */ array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 22, ), /* 104 */ array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ), /* 105 */ array(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ), /* 106 */ array(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ), - /* 107 */ array(10, 37, 64, 66, ), - /* 108 */ array(56, 64, 66, ), - /* 109 */ array(29, 64, 66, ), - /* 110 */ array(29, 64, 66, ), - /* 111 */ array(22, 64, 66, ), - /* 112 */ array(10, 64, 66, ), - /* 113 */ array(22, 64, 66, ), - /* 114 */ array(22, 64, 66, ), - /* 115 */ array(13, 14, 15, ), - /* 116 */ array(22, 64, 66, ), - /* 117 */ array(22, 64, 66, ), - /* 118 */ array(64, 66, ), - /* 119 */ array(60, 61, ), - /* 120 */ array(25, 26, ), - /* 121 */ array(58, 61, ), + /* 107 */ array(10, 37, 64, 66, 67, ), + /* 108 */ array(29, 64, 66, 67, ), + /* 109 */ array(22, 64, 66, 67, ), + /* 110 */ array(22, 64, 66, 67, ), + /* 111 */ array(29, 64, 66, 67, ), + /* 112 */ array(22, 64, 66, 67, ), + /* 113 */ array(22, 64, 66, 67, ), + /* 114 */ array(22, 64, 66, 67, ), + /* 115 */ array(56, 64, 66, 67, ), + /* 116 */ array(10, 64, 66, 67, ), + /* 117 */ array(64, 66, 67, ), + /* 118 */ array(64, 66, 67, ), + /* 119 */ array(13, 14, 15, ), + /* 120 */ array(22, 50, ), + /* 121 */ array(25, 26, ), /* 122 */ array(20, 55, ), - /* 123 */ array(22, 50, ), + /* 123 */ array(58, 61, ), /* 124 */ array(22, 55, ), /* 125 */ array(22, 55, ), - /* 126 */ array(64, 66, ), - /* 127 */ array(54, 55, ), - /* 128 */ array(22, 55, ), - /* 129 */ array(18, ), + /* 126 */ array(22, 55, ), + /* 127 */ array(60, 61, ), + /* 128 */ array(54, 55, ), + /* 129 */ array(22, ), /* 130 */ array(22, ), /* 131 */ array(22, ), - /* 132 */ array(22, ), + /* 132 */ array(65, ), /* 133 */ array(65, ), /* 134 */ array(22, ), /* 135 */ array(22, ), /* 136 */ array(22, ), - /* 137 */ array(55, ), + /* 137 */ array(22, ), /* 138 */ array(22, ), /* 139 */ array(22, ), /* 140 */ array(22, ), /* 141 */ array(22, ), - /* 142 */ array(22, ), + /* 142 */ array(55, ), /* 143 */ array(22, ), /* 144 */ array(22, ), /* 145 */ array(22, ), - /* 146 */ array(22, ), - /* 147 */ array(22, ), + /* 146 */ array(18, ), + /* 147 */ array(68, ), /* 148 */ array(22, ), - /* 149 */ array(67, ), + /* 149 */ array(22, ), /* 150 */ array(22, ), /* 151 */ array(22, ), /* 152 */ array(22, ), @@ -675,7 +674,7 @@ static public $yy_action = array( /* 164 */ array(22, ), /* 165 */ array(22, ), /* 166 */ array(22, ), - /* 167 */ array(), + /* 167 */ array(22, ), /* 168 */ array(), /* 169 */ array(), /* 170 */ array(), @@ -742,32 +741,34 @@ static public $yy_action = array( /* 231 */ array(), /* 232 */ array(), /* 233 */ array(), + /* 234 */ array(), + /* 235 */ array(), ); static public $yy_default = array( - /* 0 */ 236, 311, 311, 311, 311, 311, 311, 311, 311, 311, - /* 10 */ 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - /* 20 */ 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - /* 30 */ 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - /* 40 */ 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - /* 50 */ 311, 311, 311, 311, 311, 311, 311, 234, 311, 311, - /* 60 */ 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - /* 70 */ 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - /* 80 */ 311, 311, 236, 236, 236, 236, 236, 236, 236, 236, - /* 90 */ 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, - /* 100 */ 236, 236, 311, 311, 300, 301, 303, 311, 284, 311, - /* 110 */ 311, 311, 311, 311, 311, 302, 311, 311, 280, 311, - /* 120 */ 311, 311, 311, 311, 311, 311, 288, 311, 311, 311, - /* 130 */ 311, 311, 311, 311, 311, 311, 311, 291, 311, 311, - /* 140 */ 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - /* 150 */ 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - /* 160 */ 311, 311, 311, 311, 311, 311, 311, 262, 235, 264, - /* 170 */ 293, 305, 270, 240, 237, 277, 268, 306, 278, 304, - /* 180 */ 292, 271, 254, 255, 253, 252, 251, 256, 285, 257, - /* 190 */ 298, 299, 287, 286, 250, 249, 310, 242, 309, 308, - /* 200 */ 297, 243, 244, 248, 247, 246, 245, 258, 259, 275, - /* 210 */ 276, 274, 273, 307, 241, 279, 238, 282, 283, 281, - /* 220 */ 272, 295, 263, 294, 261, 296, 260, 265, 266, 289, - /* 230 */ 269, 267, 290, 239, + /* 0 */ 238, 314, 314, 314, 314, 314, 314, 314, 314, 314, + /* 10 */ 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + /* 20 */ 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + /* 30 */ 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + /* 40 */ 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + /* 50 */ 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + /* 60 */ 236, 314, 314, 314, 314, 314, 314, 314, 314, 314, + /* 70 */ 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + /* 80 */ 314, 314, 238, 238, 238, 238, 238, 238, 238, 238, + /* 90 */ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, + /* 100 */ 238, 238, 314, 314, 302, 305, 303, 314, 314, 314, + /* 110 */ 314, 314, 314, 314, 314, 286, 314, 290, 282, 304, + /* 120 */ 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + /* 130 */ 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + /* 140 */ 314, 314, 293, 314, 314, 314, 314, 314, 314, 314, + /* 150 */ 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + /* 160 */ 314, 314, 314, 314, 314, 314, 314, 314, 270, 291, + /* 170 */ 263, 310, 272, 269, 271, 296, 292, 254, 287, 264, + /* 180 */ 267, 243, 265, 239, 266, 258, 237, 257, 256, 288, + /* 190 */ 306, 309, 298, 307, 268, 308, 255, 280, 311, 312, + /* 200 */ 249, 281, 250, 299, 274, 251, 313, 278, 248, 246, + /* 210 */ 276, 259, 245, 275, 277, 244, 283, 252, 301, 261, + /* 220 */ 262, 279, 247, 300, 295, 294, 273, 242, 284, 285, + /* 230 */ 253, 240, 289, 297, 241, 260, ); /* The next thing included is series of defines which control ** various aspects of the generated parser. @@ -784,11 +785,11 @@ static public $yy_action = array( ** self::YYERRORSYMBOL is the code number of the error symbol. If not ** defined, then do no error processing. */ - const YYNOCODE = 93; + const YYNOCODE = 94; const YYSTACKDEPTH = 100; - const YYNSTATE = 234; - const YYNRULE = 77; - const YYERRORSYMBOL = 68; + const YYNSTATE = 236; + const YYNRULE = 78; + const YYERRORSYMBOL = 69; const YYERRSYMDT = 'yy0'; const YYFALLBACK = 0; /** The next table maps tokens into fallback tokens. If a construct @@ -886,13 +887,14 @@ static public $yy_action = array( 'T_END_FILTER', 'T_REGROUP', 'T_BY', 'T_PIPE', 'T_COLON', 'T_STRING_SINGLE_INIT', 'T_STRING_SINGLE_END', 'T_STRING_DOUBLE_INIT', 'T_STRING_DOUBLE_END', 'T_STRING_CONTENT', 'T_LPARENT', 'T_RPARENT', - 'T_DOT', 'T_ALPHA', 'T_BRACKETS_OPEN', 'T_BRACKETS_CLOSE', - 'error', 'start', 'body', 'code', - 'stmts', 'filtered_var', 'var_or_string', 'stmt', - 'for_stmt', 'ifchanged_stmt', 'block_stmt', 'filter_stmt', - 'if_stmt', 'custom_tag', 'alias', 'ifequal', - 'varname', 'var_list', 'regroup', 'string', - 'expr', 'fvar_or_string', 'varname_args', 's_content', + 'T_OBJ', 'T_ALPHA', 'T_DOT', 'T_BRACKETS_OPEN', + 'T_BRACKETS_CLOSE', 'error', 'start', 'body', + 'code', 'stmts', 'filtered_var', 'var_or_string', + 'stmt', 'for_stmt', 'ifchanged_stmt', 'block_stmt', + 'filter_stmt', 'if_stmt', 'custom_tag', 'alias', + 'ifequal', 'varname', 'var_list', 'regroup', + 'string', 'expr', 'fvar_or_string', 'varname_args', + 's_content', ); /** @@ -973,10 +975,11 @@ static public $yy_action = array( /* 70 */ "expr ::= expr T_TIMES|T_DIV|T_MOD expr", /* 71 */ "expr ::= T_LPARENT expr T_RPARENT", /* 72 */ "expr ::= fvar_or_string", - /* 73 */ "varname ::= varname T_DOT T_ALPHA", - /* 74 */ "varname ::= varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE", - /* 75 */ "varname ::= T_ALPHA", - /* 76 */ "varname ::= T_CUSTOM_TAG|T_CUSTOM_BLOCK", + /* 73 */ "varname ::= varname T_OBJ T_ALPHA", + /* 74 */ "varname ::= varname T_DOT T_ALPHA", + /* 75 */ "varname ::= varname T_BRACKETS_OPEN var_or_string T_BRACKETS_CLOSE", + /* 76 */ "varname ::= T_ALPHA", + /* 77 */ "varname ::= T_CUSTOM_TAG|T_CUSTOM_BLOCK", ); /** @@ -1341,83 +1344,84 @@ static public $yy_action = array( * */ static public $yyRuleInfo = array( - array( 'lhs' => 69, 'rhs' => 1 ), - array( 'lhs' => 70, 'rhs' => 2 ), - array( 'lhs' => 70, 'rhs' => 0 ), + array( 'lhs' => 70, 'rhs' => 1 ), array( 'lhs' => 71, 'rhs' => 2 ), - array( 'lhs' => 71, 'rhs' => 1 ), - array( 'lhs' => 71, 'rhs' => 2 ), - array( 'lhs' => 71, 'rhs' => 3 ), - array( 'lhs' => 72, 'rhs' => 3 ), + array( 'lhs' => 71, 'rhs' => 0 ), array( 'lhs' => 72, 'rhs' => 2 ), array( 'lhs' => 72, 'rhs' => 1 ), - array( 'lhs' => 72, 'rhs' => 1 ), - array( 'lhs' => 72, 'rhs' => 1 ), - array( 'lhs' => 72, 'rhs' => 1 ), - array( 'lhs' => 72, 'rhs' => 1 ), + array( 'lhs' => 72, 'rhs' => 2 ), array( 'lhs' => 72, 'rhs' => 3 ), - array( 'lhs' => 72, 'rhs' => 1 ), - array( 'lhs' => 72, 'rhs' => 1 ), - array( 'lhs' => 72, 'rhs' => 1 ), - array( 'lhs' => 72, 'rhs' => 7 ), - array( 'lhs' => 81, 'rhs' => 2 ), - array( 'lhs' => 81, 'rhs' => 4 ), - array( 'lhs' => 81, 'rhs' => 3 ), - array( 'lhs' => 81, 'rhs' => 5 ), - array( 'lhs' => 81, 'rhs' => 6 ), - array( 'lhs' => 82, 'rhs' => 9 ), - array( 'lhs' => 75, 'rhs' => 1 ), - array( 'lhs' => 75, 'rhs' => 2 ), - array( 'lhs' => 76, 'rhs' => 9 ), - array( 'lhs' => 76, 'rhs' => 11 ), - array( 'lhs' => 76, 'rhs' => 13 ), - array( 'lhs' => 76, 'rhs' => 15 ), - array( 'lhs' => 80, 'rhs' => 7 ), - array( 'lhs' => 80, 'rhs' => 11 ), - array( 'lhs' => 77, 'rhs' => 6 ), - array( 'lhs' => 77, 'rhs' => 7 ), - array( 'lhs' => 77, 'rhs' => 10 ), + array( 'lhs' => 73, 'rhs' => 3 ), + array( 'lhs' => 73, 'rhs' => 2 ), + array( 'lhs' => 73, 'rhs' => 1 ), + array( 'lhs' => 73, 'rhs' => 1 ), + array( 'lhs' => 73, 'rhs' => 1 ), + array( 'lhs' => 73, 'rhs' => 1 ), + array( 'lhs' => 73, 'rhs' => 1 ), + array( 'lhs' => 73, 'rhs' => 3 ), + array( 'lhs' => 73, 'rhs' => 1 ), + array( 'lhs' => 73, 'rhs' => 1 ), + array( 'lhs' => 73, 'rhs' => 1 ), + array( 'lhs' => 73, 'rhs' => 7 ), + array( 'lhs' => 82, 'rhs' => 2 ), + array( 'lhs' => 82, 'rhs' => 4 ), + array( 'lhs' => 82, 'rhs' => 3 ), + array( 'lhs' => 82, 'rhs' => 5 ), + array( 'lhs' => 82, 'rhs' => 6 ), + array( 'lhs' => 83, 'rhs' => 9 ), + array( 'lhs' => 76, 'rhs' => 1 ), + array( 'lhs' => 76, 'rhs' => 2 ), + array( 'lhs' => 77, 'rhs' => 9 ), array( 'lhs' => 77, 'rhs' => 11 ), - array( 'lhs' => 83, 'rhs' => 8 ), - array( 'lhs' => 83, 'rhs' => 12 ), - array( 'lhs' => 83, 'rhs' => 8 ), - array( 'lhs' => 83, 'rhs' => 12 ), + array( 'lhs' => 77, 'rhs' => 13 ), + array( 'lhs' => 77, 'rhs' => 15 ), + array( 'lhs' => 81, 'rhs' => 7 ), + array( 'lhs' => 81, 'rhs' => 11 ), + array( 'lhs' => 78, 'rhs' => 6 ), array( 'lhs' => 78, 'rhs' => 7 ), - array( 'lhs' => 78, 'rhs' => 8 ), - array( 'lhs' => 78, 'rhs' => 7 ), - array( 'lhs' => 78, 'rhs' => 8 ), + array( 'lhs' => 78, 'rhs' => 10 ), + array( 'lhs' => 78, 'rhs' => 11 ), + array( 'lhs' => 84, 'rhs' => 8 ), + array( 'lhs' => 84, 'rhs' => 12 ), + array( 'lhs' => 84, 'rhs' => 8 ), + array( 'lhs' => 84, 'rhs' => 12 ), array( 'lhs' => 79, 'rhs' => 7 ), - array( 'lhs' => 86, 'rhs' => 6 ), - array( 'lhs' => 73, 'rhs' => 3 ), - array( 'lhs' => 73, 'rhs' => 1 ), - array( 'lhs' => 90, 'rhs' => 3 ), - array( 'lhs' => 90, 'rhs' => 1 ), - array( 'lhs' => 85, 'rhs' => 2 ), - array( 'lhs' => 85, 'rhs' => 3 ), - array( 'lhs' => 85, 'rhs' => 1 ), - array( 'lhs' => 74, 'rhs' => 1 ), - array( 'lhs' => 74, 'rhs' => 1 ), + array( 'lhs' => 79, 'rhs' => 8 ), + array( 'lhs' => 79, 'rhs' => 7 ), + array( 'lhs' => 79, 'rhs' => 8 ), + array( 'lhs' => 80, 'rhs' => 7 ), + array( 'lhs' => 87, 'rhs' => 6 ), + array( 'lhs' => 74, 'rhs' => 3 ), array( 'lhs' => 74, 'rhs' => 1 ), - array( 'lhs' => 89, 'rhs' => 1 ), - array( 'lhs' => 89, 'rhs' => 1 ), - array( 'lhs' => 89, 'rhs' => 1 ), - array( 'lhs' => 87, 'rhs' => 2 ), - array( 'lhs' => 87, 'rhs' => 2 ), - array( 'lhs' => 87, 'rhs' => 3 ), - array( 'lhs' => 87, 'rhs' => 3 ), - array( 'lhs' => 91, 'rhs' => 2 ), + array( 'lhs' => 91, 'rhs' => 3 ), array( 'lhs' => 91, 'rhs' => 1 ), + array( 'lhs' => 86, 'rhs' => 2 ), + array( 'lhs' => 86, 'rhs' => 3 ), + array( 'lhs' => 86, 'rhs' => 1 ), + array( 'lhs' => 75, 'rhs' => 1 ), + array( 'lhs' => 75, 'rhs' => 1 ), + array( 'lhs' => 75, 'rhs' => 1 ), + array( 'lhs' => 90, 'rhs' => 1 ), + array( 'lhs' => 90, 'rhs' => 1 ), + array( 'lhs' => 90, 'rhs' => 1 ), + array( 'lhs' => 88, 'rhs' => 2 ), + array( 'lhs' => 88, 'rhs' => 2 ), array( 'lhs' => 88, 'rhs' => 3 ), array( 'lhs' => 88, 'rhs' => 3 ), - array( 'lhs' => 88, 'rhs' => 3 ), - array( 'lhs' => 88, 'rhs' => 3 ), - array( 'lhs' => 88, 'rhs' => 3 ), - array( 'lhs' => 88, 'rhs' => 3 ), - array( 'lhs' => 88, 'rhs' => 1 ), - array( 'lhs' => 84, 'rhs' => 3 ), - array( 'lhs' => 84, 'rhs' => 4 ), - array( 'lhs' => 84, 'rhs' => 1 ), - array( 'lhs' => 84, 'rhs' => 1 ), + array( 'lhs' => 92, 'rhs' => 2 ), + array( 'lhs' => 92, 'rhs' => 1 ), + array( 'lhs' => 89, 'rhs' => 3 ), + array( 'lhs' => 89, 'rhs' => 3 ), + array( 'lhs' => 89, 'rhs' => 3 ), + array( 'lhs' => 89, 'rhs' => 3 ), + array( 'lhs' => 89, 'rhs' => 3 ), + array( 'lhs' => 89, 'rhs' => 3 ), + array( 'lhs' => 89, 'rhs' => 1 ), + array( 'lhs' => 85, 'rhs' => 3 ), + array( 'lhs' => 85, 'rhs' => 3 ), + array( 'lhs' => 85, 'rhs' => 4 ), + array( 'lhs' => 85, 'rhs' => 1 ), + array( 'lhs' => 85, 'rhs' => 1 ), ); /** @@ -1443,8 +1447,8 @@ static public $yy_action = array( 50 => 3, 65 => 3, 72 => 3, - 75 => 3, 76 => 3, + 77 => 3, 4 => 4, 5 => 5, 6 => 6, @@ -1504,6 +1508,7 @@ static public $yy_action = array( 71 => 71, 73 => 73, 74 => 74, + 75 => 75, ); /* Beginning here are the reduction cases. A typical example ** follows: @@ -1511,183 +1516,186 @@ static public $yy_action = array( ** function yy_r0($yymsp){ ... } // User supplied code ** #line */ -#line 65 "Compiler/Parser.y" +#line 65 "lib/Haanga/Compiler/Parser.y" function yy_r0(){ $this->body = $this->yystack[$this->yyidx + 0]->minor; } -#line 1522 "Compiler/Parser.php" -#line 67 "Compiler/Parser.y" +#line 1527 "lib/Haanga/Compiler/Parser.php" +#line 67 "lib/Haanga/Compiler/Parser.y" function yy_r1(){ $this->_retvalue=$this->yystack[$this->yyidx + -1]->minor; $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor; } -#line 1525 "Compiler/Parser.php" -#line 68 "Compiler/Parser.y" +#line 1530 "lib/Haanga/Compiler/Parser.php" +#line 68 "lib/Haanga/Compiler/Parser.y" function yy_r2(){ $this->_retvalue = array(); } -#line 1528 "Compiler/Parser.php" -#line 71 "Compiler/Parser.y" +#line 1533 "lib/Haanga/Compiler/Parser.php" +#line 71 "lib/Haanga/Compiler/Parser.y" function yy_r3(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } -#line 1531 "Compiler/Parser.php" -#line 72 "Compiler/Parser.y" +#line 1536 "lib/Haanga/Compiler/Parser.php" +#line 72 "lib/Haanga/Compiler/Parser.y" function yy_r4(){ $this->_retvalue = array('operation' => 'html', 'html' => $this->yystack[$this->yyidx + 0]->minor); } -#line 1534 "Compiler/Parser.php" -#line 73 "Compiler/Parser.y" +#line 1539 "lib/Haanga/Compiler/Parser.php" +#line 73 "lib/Haanga/Compiler/Parser.y" function yy_r5(){ $this->yystack[$this->yyidx + 0]->minor=rtrim($this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = array('operation' => 'comment', 'comment' => substr($this->yystack[$this->yyidx + 0]->minor, 0, strlen($this->yystack[$this->yyidx + 0]->minor)-2)); } -#line 1537 "Compiler/Parser.php" -#line 74 "Compiler/Parser.y" +#line 1542 "lib/Haanga/Compiler/Parser.php" +#line 74 "lib/Haanga/Compiler/Parser.y" function yy_r6(){ $this->_retvalue = array('operation' => 'print_var', 'variable' => $this->yystack[$this->yyidx + -1]->minor); } -#line 1540 "Compiler/Parser.php" -#line 76 "Compiler/Parser.y" +#line 1545 "lib/Haanga/Compiler/Parser.php" +#line 76 "lib/Haanga/Compiler/Parser.y" function yy_r7(){ $this->_retvalue = array('operation' => 'base', $this->yystack[$this->yyidx + -1]->minor); } -#line 1543 "Compiler/Parser.php" -#line 77 "Compiler/Parser.y" +#line 1548 "lib/Haanga/Compiler/Parser.php" +#line 77 "lib/Haanga/Compiler/Parser.y" function yy_r8(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; } -#line 1546 "Compiler/Parser.php" -#line 83 "Compiler/Parser.y" +#line 1551 "lib/Haanga/Compiler/Parser.php" +#line 83 "lib/Haanga/Compiler/Parser.y" function yy_r14(){ $this->_retvalue = array('operation' => 'include', $this->yystack[$this->yyidx + -1]->minor); } -#line 1549 "Compiler/Parser.php" -#line 87 "Compiler/Parser.y" +#line 1554 "lib/Haanga/Compiler/Parser.php" +#line 87 "lib/Haanga/Compiler/Parser.y" function yy_r18(){ $this->_retvalue = array('operation' => 'autoescape', 'value' => strtolower(@$this->yystack[$this->yyidx + -5]->minor), 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1552 "Compiler/Parser.php" -#line 92 "Compiler/Parser.y" +#line 1557 "lib/Haanga/Compiler/Parser.php" +#line 92 "lib/Haanga/Compiler/Parser.y" function yy_r19(){ $this->_retvalue = array('operation' => 'custom_tag', 'name' => $this->yystack[$this->yyidx + -1]->minor, 'list'=>array()); } -#line 1555 "Compiler/Parser.php" -#line 93 "Compiler/Parser.y" +#line 1560 "lib/Haanga/Compiler/Parser.php" +#line 93 "lib/Haanga/Compiler/Parser.y" function yy_r20(){ $this->_retvalue = array('operation' => 'custom_tag', 'name' => $this->yystack[$this->yyidx + -3]->minor, 'as' => $this->yystack[$this->yyidx + -1]->minor, 'list'=>array()); } -#line 1558 "Compiler/Parser.php" -#line 94 "Compiler/Parser.y" +#line 1563 "lib/Haanga/Compiler/Parser.php" +#line 94 "lib/Haanga/Compiler/Parser.y" function yy_r21(){ $this->_retvalue = array('operation' => 'custom_tag', 'name' => $this->yystack[$this->yyidx + -2]->minor, 'list' => $this->yystack[$this->yyidx + -1]->minor); } -#line 1561 "Compiler/Parser.php" -#line 95 "Compiler/Parser.y" +#line 1566 "lib/Haanga/Compiler/Parser.php" +#line 95 "lib/Haanga/Compiler/Parser.y" function yy_r22(){ $this->_retvalue = array('operation' => 'custom_tag', 'name' => $this->yystack[$this->yyidx + -4]->minor, 'as' => $this->yystack[$this->yyidx + -1]->minor, 'list' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1564 "Compiler/Parser.php" -#line 97 "Compiler/Parser.y" +#line 1569 "lib/Haanga/Compiler/Parser.php" +#line 97 "lib/Haanga/Compiler/Parser.y" function yy_r23(){ if ('end'.$this->yystack[$this->yyidx + -5]->minor != $this->yystack[$this->yyidx + -1]->minor) { throw new Exception("Unexpected ".$this->yystack[$this->yyidx + -1]->minor); } $this->_retvalue = array('operation' => 'custom_tag', 'name' => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor, 'list' => array()); } -#line 1567 "Compiler/Parser.php" -#line 100 "Compiler/Parser.y" +#line 1572 "lib/Haanga/Compiler/Parser.php" +#line 100 "lib/Haanga/Compiler/Parser.y" function yy_r24(){ $this->_retvalue = array('operation' => 'alias', 'var' => $this->yystack[$this->yyidx + -7]->minor, 'as' => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1570 "Compiler/Parser.php" -#line 104 "Compiler/Parser.y" +#line 1575 "lib/Haanga/Compiler/Parser.php" +#line 104 "lib/Haanga/Compiler/Parser.y" function yy_r26(){ if (!is_file($this->yystack[$this->yyidx + 0]->minor)) { throw new Haanga_Compiler_Exception($this->yystack[$this->yyidx + 0]->minor." is not a valid file"); } require_once $this->yystack[$this->yyidx + 0]->minor; } -#line 1578 "Compiler/Parser.php" -#line 112 "Compiler/Parser.y" +#line 1583 "lib/Haanga/Compiler/Parser.php" +#line 112 "lib/Haanga/Compiler/Parser.y" function yy_r27(){ $this->_retvalue = array('operation' => 'loop', 'variable' => $this->yystack[$this->yyidx + -7]->minor, 'array' => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor, 'index' => NULL); } -#line 1583 "Compiler/Parser.php" -#line 115 "Compiler/Parser.y" +#line 1588 "lib/Haanga/Compiler/Parser.php" +#line 115 "lib/Haanga/Compiler/Parser.y" function yy_r28(){ $this->_retvalue = array('operation' => 'loop', 'variable' => $this->yystack[$this->yyidx + -7]->minor, 'array' => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor, 'index' => $this->yystack[$this->yyidx + -9]->minor); } -#line 1588 "Compiler/Parser.php" -#line 118 "Compiler/Parser.y" +#line 1593 "lib/Haanga/Compiler/Parser.php" +#line 118 "lib/Haanga/Compiler/Parser.y" function yy_r29(){ $this->_retvalue = array('operation' => 'loop', 'variable' => $this->yystack[$this->yyidx + -11]->minor, 'array' => $this->yystack[$this->yyidx + -9]->minor, 'body' => $this->yystack[$this->yyidx + -7]->minor, 'empty' => $this->yystack[$this->yyidx + -3]->minor, 'index' => NULL); } -#line 1593 "Compiler/Parser.php" -#line 121 "Compiler/Parser.y" +#line 1598 "lib/Haanga/Compiler/Parser.php" +#line 121 "lib/Haanga/Compiler/Parser.y" function yy_r30(){ $this->_retvalue = array('operation' => 'loop', 'variable' => $this->yystack[$this->yyidx + -11]->minor, 'array' => $this->yystack[$this->yyidx + -9]->minor, 'body' => $this->yystack[$this->yyidx + -7]->minor, 'empty' => $this->yystack[$this->yyidx + -3]->minor, 'index' => $this->yystack[$this->yyidx + -13]->minor); } -#line 1598 "Compiler/Parser.php" -#line 125 "Compiler/Parser.y" +#line 1603 "lib/Haanga/Compiler/Parser.php" +#line 125 "lib/Haanga/Compiler/Parser.y" function yy_r31(){ $this->_retvalue = array('operation' => 'if', 'expr' => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1601 "Compiler/Parser.php" -#line 126 "Compiler/Parser.y" +#line 1606 "lib/Haanga/Compiler/Parser.php" +#line 126 "lib/Haanga/Compiler/Parser.y" function yy_r32(){ $this->_retvalue = array('operation' => 'if', 'expr' => $this->yystack[$this->yyidx + -9]->minor, 'body' => $this->yystack[$this->yyidx + -7]->minor, 'else' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1604 "Compiler/Parser.php" -#line 129 "Compiler/Parser.y" +#line 1609 "lib/Haanga/Compiler/Parser.php" +#line 129 "lib/Haanga/Compiler/Parser.y" function yy_r33(){ $this->_retvalue = array('operation' => 'ifchanged', 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1609 "Compiler/Parser.php" -#line 133 "Compiler/Parser.y" +#line 1614 "lib/Haanga/Compiler/Parser.php" +#line 133 "lib/Haanga/Compiler/Parser.y" function yy_r34(){ $this->_retvalue = array('operation' => 'ifchanged', 'body' => $this->yystack[$this->yyidx + -3]->minor, 'check' => $this->yystack[$this->yyidx + -5]->minor); } -#line 1614 "Compiler/Parser.php" -#line 136 "Compiler/Parser.y" +#line 1619 "lib/Haanga/Compiler/Parser.php" +#line 136 "lib/Haanga/Compiler/Parser.y" function yy_r35(){ $this->_retvalue = array('operation' => 'ifchanged', 'body' => $this->yystack[$this->yyidx + -7]->minor, 'else' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1619 "Compiler/Parser.php" -#line 140 "Compiler/Parser.y" +#line 1624 "lib/Haanga/Compiler/Parser.php" +#line 140 "lib/Haanga/Compiler/Parser.y" function yy_r36(){ $this->_retvalue = array('operation' => 'ifchanged', 'body' => $this->yystack[$this->yyidx + -7]->minor, 'check' => $this->yystack[$this->yyidx + -9]->minor, 'else' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1624 "Compiler/Parser.php" -#line 145 "Compiler/Parser.y" +#line 1629 "lib/Haanga/Compiler/Parser.php" +#line 145 "lib/Haanga/Compiler/Parser.y" function yy_r37(){ $this->_retvalue = array('operation' => 'ifequal', 'cmp' => '==', 1 => $this->yystack[$this->yyidx + -6]->minor, 2 => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1627 "Compiler/Parser.php" -#line 146 "Compiler/Parser.y" +#line 1632 "lib/Haanga/Compiler/Parser.php" +#line 146 "lib/Haanga/Compiler/Parser.y" function yy_r38(){ $this->_retvalue = array('operation' => 'ifequal', 'cmp' => '==', 1 => $this->yystack[$this->yyidx + -10]->minor, 2 => $this->yystack[$this->yyidx + -9]->minor, 'body' => $this->yystack[$this->yyidx + -7]->minor, 'else' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1630 "Compiler/Parser.php" -#line 147 "Compiler/Parser.y" +#line 1635 "lib/Haanga/Compiler/Parser.php" +#line 147 "lib/Haanga/Compiler/Parser.y" function yy_r39(){ $this->_retvalue = array('operation' => 'ifequal', 'cmp' => '!=', 1 => $this->yystack[$this->yyidx + -6]->minor, 2 => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1633 "Compiler/Parser.php" -#line 148 "Compiler/Parser.y" +#line 1638 "lib/Haanga/Compiler/Parser.php" +#line 148 "lib/Haanga/Compiler/Parser.y" function yy_r40(){ $this->_retvalue = array('operation' => 'ifequal', 'cmp' => '!=', 1 => $this->yystack[$this->yyidx + -10]->minor, 2 => $this->yystack[$this->yyidx + -9]->minor, 'body' => $this->yystack[$this->yyidx + -7]->minor, 'else' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1636 "Compiler/Parser.php" -#line 152 "Compiler/Parser.y" +#line 1641 "lib/Haanga/Compiler/Parser.php" +#line 152 "lib/Haanga/Compiler/Parser.y" function yy_r41(){ $this->_retvalue = array('operation' => 'block', 'name' => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1639 "Compiler/Parser.php" -#line 154 "Compiler/Parser.y" +#line 1644 "lib/Haanga/Compiler/Parser.php" +#line 154 "lib/Haanga/Compiler/Parser.y" function yy_r42(){ $this->_retvalue = array('operation' => 'block', 'name' => $this->yystack[$this->yyidx + -6]->minor, 'body' => $this->yystack[$this->yyidx + -4]->minor); } -#line 1642 "Compiler/Parser.php" -#line 161 "Compiler/Parser.y" +#line 1647 "lib/Haanga/Compiler/Parser.php" +#line 161 "lib/Haanga/Compiler/Parser.y" function yy_r45(){ $this->_retvalue = array('operation' => 'filter', 'functions' => $this->yystack[$this->yyidx + -5]->minor, 'body' => $this->yystack[$this->yyidx + -3]->minor); } -#line 1645 "Compiler/Parser.php" -#line 164 "Compiler/Parser.y" +#line 1650 "lib/Haanga/Compiler/Parser.php" +#line 164 "lib/Haanga/Compiler/Parser.y" function yy_r46(){ $this->_retvalue=array('operation' => 'regroup', 'array' => $this->yystack[$this->yyidx + -4]->minor, 'row' => $this->yystack[$this->yyidx + -2]->minor, 'as' => $this->yystack[$this->yyidx + 0]->minor); } -#line 1648 "Compiler/Parser.php" -#line 167 "Compiler/Parser.y" +#line 1653 "lib/Haanga/Compiler/Parser.php" +#line 167 "lib/Haanga/Compiler/Parser.y" function yy_r47(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor; } -#line 1651 "Compiler/Parser.php" -#line 168 "Compiler/Parser.y" +#line 1656 "lib/Haanga/Compiler/Parser.php" +#line 168 "lib/Haanga/Compiler/Parser.y" function yy_r48(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); } -#line 1654 "Compiler/Parser.php" -#line 170 "Compiler/Parser.y" +#line 1659 "lib/Haanga/Compiler/Parser.php" +#line 170 "lib/Haanga/Compiler/Parser.y" function yy_r49(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor, 'args'=>array($this->yystack[$this->yyidx + 0]->minor)); } -#line 1657 "Compiler/Parser.php" -#line 174 "Compiler/Parser.y" +#line 1662 "lib/Haanga/Compiler/Parser.php" +#line 174 "lib/Haanga/Compiler/Parser.y" function yy_r51(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor; } -#line 1660 "Compiler/Parser.php" -#line 180 "Compiler/Parser.y" +#line 1665 "lib/Haanga/Compiler/Parser.php" +#line 180 "lib/Haanga/Compiler/Parser.y" function yy_r54(){ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + 0]->minor); } -#line 1663 "Compiler/Parser.php" -#line 181 "Compiler/Parser.y" +#line 1668 "lib/Haanga/Compiler/Parser.php" +#line 181 "lib/Haanga/Compiler/Parser.y" function yy_r55(){ $this->_retvalue = array('number' => $this->yystack[$this->yyidx + 0]->minor); } -#line 1666 "Compiler/Parser.php" -#line 182 "Compiler/Parser.y" +#line 1671 "lib/Haanga/Compiler/Parser.php" +#line 182 "lib/Haanga/Compiler/Parser.y" function yy_r56(){ $this->_retvalue = array('string' => $this->yystack[$this->yyidx + 0]->minor); } -#line 1669 "Compiler/Parser.php" -#line 184 "Compiler/Parser.y" +#line 1674 "lib/Haanga/Compiler/Parser.php" +#line 184 "lib/Haanga/Compiler/Parser.y" function yy_r57(){ $this->_retvalue = array('var_filter' => $this->yystack[$this->yyidx + 0]->minor); } -#line 1672 "Compiler/Parser.php" -#line 189 "Compiler/Parser.y" +#line 1677 "lib/Haanga/Compiler/Parser.php" +#line 189 "lib/Haanga/Compiler/Parser.y" function yy_r60(){ $this->_retvalue = ""; } -#line 1675 "Compiler/Parser.php" -#line 191 "Compiler/Parser.y" +#line 1680 "lib/Haanga/Compiler/Parser.php" +#line 191 "lib/Haanga/Compiler/Parser.y" function yy_r62(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; } -#line 1678 "Compiler/Parser.php" -#line 193 "Compiler/Parser.y" +#line 1683 "lib/Haanga/Compiler/Parser.php" +#line 193 "lib/Haanga/Compiler/Parser.y" function yy_r64(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; } -#line 1681 "Compiler/Parser.php" -#line 197 "Compiler/Parser.y" +#line 1686 "lib/Haanga/Compiler/Parser.php" +#line 197 "lib/Haanga/Compiler/Parser.y" function yy_r66(){ $this->_retvalue = array('op_expr' => @$this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 1684 "Compiler/Parser.php" -#line 200 "Compiler/Parser.y" +#line 1689 "lib/Haanga/Compiler/Parser.php" +#line 200 "lib/Haanga/Compiler/Parser.y" function yy_r69(){ $this->_retvalue = array('op_expr' => trim(@$this->yystack[$this->yyidx + -1]->minor), $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 1687 "Compiler/Parser.php" -#line 202 "Compiler/Parser.y" +#line 1692 "lib/Haanga/Compiler/Parser.php" +#line 202 "lib/Haanga/Compiler/Parser.y" function yy_r71(){ $this->_retvalue = array('op_expr' => 'expr', $this->yystack[$this->yyidx + -1]->minor); } -#line 1690 "Compiler/Parser.php" -#line 206 "Compiler/Parser.y" - function yy_r73(){ if (!is_array($this->yystack[$this->yyidx + -2]->minor)) { $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor); } else { $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; } $this->_retvalue[]=$this->yystack[$this->yyidx + 0]->minor; } -#line 1693 "Compiler/Parser.php" -#line 207 "Compiler/Parser.y" - function yy_r74(){ if (!is_array($this->yystack[$this->yyidx + -3]->minor)) { $this->_retvalue = array($this->yystack[$this->yyidx + -3]->minor); } else { $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor; } $this->_retvalue[]=$this->yystack[$this->yyidx + -1]->minor; } -#line 1696 "Compiler/Parser.php" +#line 1695 "lib/Haanga/Compiler/Parser.php" +#line 206 "lib/Haanga/Compiler/Parser.y" + function yy_r73(){ if (!is_array($this->yystack[$this->yyidx + -2]->minor)) { $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor); } else { $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; } $this->_retvalue[]=array('object' => $this->yystack[$this->yyidx + 0]->minor); } +#line 1698 "lib/Haanga/Compiler/Parser.php" +#line 207 "lib/Haanga/Compiler/Parser.y" + function yy_r74(){ if (!is_array($this->yystack[$this->yyidx + -2]->minor)) { $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor); } else { $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; } $this->_retvalue[]=$this->yystack[$this->yyidx + 0]->minor; } +#line 1701 "lib/Haanga/Compiler/Parser.php" +#line 208 "lib/Haanga/Compiler/Parser.y" + function yy_r75(){ if (!is_array($this->yystack[$this->yyidx + -3]->minor)) { $this->_retvalue = array($this->yystack[$this->yyidx + -3]->minor); } else { $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor; } $this->_retvalue[]=$this->yystack[$this->yyidx + -1]->minor; } +#line 1704 "lib/Haanga/Compiler/Parser.php" /** * placeholder for the left hand side in a reduce operation. @@ -1799,14 +1807,14 @@ static public $yy_action = array( */ function yy_syntax_error($yymajor, $TOKEN) { -#line 56 "Compiler/Parser.y" +#line 56 "lib/Haanga/Compiler/Parser.y" $expect = array(); foreach ($this->yy_get_expected_tokens($yymajor) as $token) { $expect[] = self::$yyTokenName[$token]; } throw new Exception('Unexpected ' . $this->tokenName($yymajor) . '(' . $TOKEN. '), expected one of: ' . implode(',', $expect)); -#line 1816 "Compiler/Parser.php" +#line 1824 "lib/Haanga/Compiler/Parser.php" } /** @@ -1824,9 +1832,9 @@ static public $yy_action = array( } /* Here code is inserted which will be executed whenever the ** parser accepts */ -#line 44 "Compiler/Parser.y" +#line 44 "lib/Haanga/Compiler/Parser.y" -#line 1837 "Compiler/Parser.php" +#line 1845 "lib/Haanga/Compiler/Parser.php" } /** diff --git a/lib/Haanga/Compiler/Parser.y b/lib/Haanga/Compiler/Parser.y index 7931e97..ee5b4f2 100644 --- a/lib/Haanga/Compiler/Parser.y +++ b/lib/Haanga/Compiler/Parser.y @@ -204,6 +204,7 @@ expr(A) ::= T_LPARENT expr(B) T_RPARENT. { A = array('op_expr' => 'expr', B); } expr(A) ::= fvar_or_string(B). { A = B; } /* Variable name */ +varname(A) ::= varname(B) T_OBJ T_ALPHA(C). { if (!is_array(B)) { A = array(B); } else { A = B; } A[]=array('object' => C);} varname(A) ::= varname(B) T_DOT T_ALPHA(C). { if (!is_array(B)) { A = array(B); } else { A = B; } A[]=C;} varname(A) ::= varname(B) T_BRACKETS_OPEN var_or_string(C) T_BRACKETS_CLOSE. { if (!is_array(B)) { A = array(B); } else { A = B; } A[]=C;} varname(A) ::= T_ALPHA(B). { A = B; } diff --git a/lib/Haanga/Generator/PHP.php b/lib/Haanga/Generator/PHP.php index d83234c..7ef9361 100644 --- a/lib/Haanga/Generator/PHP.php +++ b/lib/Haanga/Generator/PHP.php @@ -491,19 +491,28 @@ class Haanga_Generator_PHP } $var_str = $this->php_get_varname($var[0]); for ($i=1; $i < count($var); $i++) { - $var_str .= "["; if (is_string($var[$i])) { - $var_str .= '"'.$var[$i].'"'; + $var_str .= '["'.$var[$i].'"]'; } else if (is_array($var[$i])) { if (isset($var[$i]['var'])) { - $var_str .= $this->php_get_varname($var[$i]['var']); + /* index is a variable */ + $var_str .= '['.$this->php_get_varname($var[$i]['var']).']'; } else if (isset($var[$i]['string'])) { - $var_str .= '"'.addslashes($var[$i]['string']).'"'; + /* index is a string */ + $var_str .= '["'.addslashes($var[$i]['string']).'"]'; } else if (isset($var[$i]['number'])) { - $var_str .= $var[$i]['number']; + /* index is a number */ + $var_str .= '['.$var[$i]['number'].']'; + } else if (isset($var[$i]['object'])) { + /* Accessing a object's property */ + $var_str .= '->'.$var[$i]['object']; + } else if ($var[$i] === array()) { + /* index is a NULL (do append) */ + $var_str .= '[]'; + } else { + throw new Haanga_Compiler_Exception('Unknown variable definition '.print_r($var, TRUE)); } } - $var_str .= "]"; } return $var_str; } else { diff --git a/lib/Haanga/build.sh b/lib/Haanga/build.sh deleted file mode 100755 index 644e358..0000000 --- a/lib/Haanga/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#/bin/bash -x -plex Compiler/Lexer.lex -phplemon Compiler/Parser.y diff --git a/tests/assert_templates/object.html b/tests/assert_templates/object.html new file mode 100644 index 0000000..3bd1f0e --- /dev/null +++ b/tests/assert_templates/object.html @@ -0,0 +1,2 @@ +foo +bar diff --git a/tests/assert_templates/object.php b/tests/assert_templates/object.php new file mode 100644 index 0000000..2a7ea20 --- /dev/null +++ b/tests/assert_templates/object.php @@ -0,0 +1,6 @@ +name = 'foo'; +$obj->obj->name = 'bar'; + +$data = compact('obj'); diff --git a/tests/assert_templates/object.tpl b/tests/assert_templates/object.tpl new file mode 100644 index 0000000..32162e8 --- /dev/null +++ b/tests/assert_templates/object.tpl @@ -0,0 +1,2 @@ +{{ obj->name }} +{{ obj->obj->name }} diff --git a/tests/errorTest.php b/tests/errorTest.php index ddda9d8..36fafdb 100644 --- a/tests/errorTest.php +++ b/tests/errorTest.php @@ -9,7 +9,7 @@ class errorTest extends PHPUnit_Framework_TestCase * @dataProvider tplProvider * */ - function testInvalidForloop($tpl) + function testInvalidTemplates($tpl) { TestSuite::init(); $this->setExpectedException('Haanga_Compiler_Exception'); diff --git a/tests/tmp/c1df77e2249dc4876d6380db8edd1ed30a7f89cd.php b/tests/tmp/c1df77e2249dc4876d6380db8edd1ed30a7f89cd.php new file mode 100644 index 0000000..5047bc2 --- /dev/null +++ b/tests/tmp/c1df77e2249dc4876d6380db8edd1ed30a7f89cd.php @@ -0,0 +1,12 @@ +name)."\n".htmlentities($obj->obj->name)."\n"; + if ($return == TRUE) { + return $buffer1; + } else { + print($buffer1); + } +} \ No newline at end of file -- 2.11.4.GIT