summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorUwe.Tews <uwe.tews@localhost>2009-12-27 15:06:49 +0000
committerUwe.Tews <uwe.tews@localhost>2009-12-27 15:06:49 +0000
commit44dd7830ddef97f8a87f5637d191d805c7a61f51 (patch)
tree3d9872233d250af86ef2e8fb9cde4b94a2b384cf /libs
parent5f02276a2a0b9237c7801e5541ddf90ae5e5ed4f (diff)
downloadsmarty-44dd7830ddef97f8a87f5637d191d805c7a61f51.tar.gz
smarty-44dd7830ddef97f8a87f5637d191d805c7a61f51.tar.bz2
smarty-44dd7830ddef97f8a87f5637d191d805c7a61f51.zip
--- this is a major update with a couple of internal changes ---
- new config file lexer/parser (thanks to Thue Jnaus Kristensen) - template lexer/parser fixes for PHP and {literal} handing (thanks to Thue Jnaus Kristensen) - fix on registered plugins with different type but same name - rewrite of plugin handling (optimized execution speed) - closed a security hole regarding PHP code injection into cache files - fixed bug in clear cache handling - Renamed a couple of internal classes - code cleanup for merging compiled templates - couple of runtime optimizations (still not all done)
Diffstat (limited to 'libs')
-rw-r--r--libs/Smarty.class.php131
-rw-r--r--libs/plugins/modifier.debug_print_var.php120
-rw-r--r--libs/sysplugins/smarty_internal_cacher_inlinecode.php93
-rw-r--r--libs/sysplugins/smarty_internal_cacheresource_file.php91
-rw-r--r--libs/sysplugins/smarty_internal_compile_function.php12
-rw-r--r--libs/sysplugins/smarty_internal_compile_include.php59
-rw-r--r--libs/sysplugins/smarty_internal_compile_private_block_plugin.php (renamed from libs/sysplugins/smarty_internal_compile_block_plugin.php)23
-rw-r--r--libs/sysplugins/smarty_internal_compile_private_function_call.php (renamed from libs/sysplugins/smarty_internal_compile_function_call.php)2
-rw-r--r--libs/sysplugins/smarty_internal_compile_private_function_plugin.php (renamed from libs/sysplugins/smarty_internal_compile_function_plugin.php)15
-rw-r--r--libs/sysplugins/smarty_internal_compile_private_modifier.php58
-rw-r--r--libs/sysplugins/smarty_internal_compile_private_object_block_function.php (renamed from libs/sysplugins/smarty_internal_compile_object_block_function.php)2
-rw-r--r--libs/sysplugins/smarty_internal_compile_private_object_function.php (renamed from libs/sysplugins/smarty_internal_compile_object_function.php)2
-rw-r--r--libs/sysplugins/smarty_internal_compile_private_print_expression.php (renamed from libs/sysplugins/smarty_internal_compile_print_expression.php)4
-rw-r--r--libs/sysplugins/smarty_internal_compile_private_registered_block.php79
-rw-r--r--libs/sysplugins/smarty_internal_compile_private_registered_function.php51
-rw-r--r--libs/sysplugins/smarty_internal_compile_private_special_variable.php (renamed from libs/sysplugins/smarty_internal_compile_special_smarty_variable.php)6
-rw-r--r--libs/sysplugins/smarty_internal_compilebase.php6
-rw-r--r--libs/sysplugins/smarty_internal_configfilelexer.php301
-rw-r--r--libs/sysplugins/smarty_internal_configfileparser.php417
-rw-r--r--libs/sysplugins/smarty_internal_data.php (renamed from libs/sysplugins/smarty_internal_templatebase.php)23
-rw-r--r--libs/sysplugins/smarty_internal_debug.php2
-rw-r--r--libs/sysplugins/smarty_internal_filter_handler.php (renamed from libs/sysplugins/smarty_internal_run_filter.php)30
-rw-r--r--libs/sysplugins/smarty_internal_plugin_handler.php104
-rw-r--r--libs/sysplugins/smarty_internal_resource_extends.php24
-rw-r--r--libs/sysplugins/smarty_internal_resource_file.php24
-rw-r--r--libs/sysplugins/smarty_internal_resource_php.php24
-rw-r--r--libs/sysplugins/smarty_internal_resource_registered.php25
-rw-r--r--libs/sysplugins/smarty_internal_resource_stream.php25
-rw-r--r--libs/sysplugins/smarty_internal_resource_string.php25
-rw-r--r--libs/sysplugins/smarty_internal_smartytemplatecompiler.php9
-rw-r--r--libs/sysplugins/smarty_internal_template.php275
-rw-r--r--libs/sysplugins/smarty_internal_templatecompilerbase.php219
-rw-r--r--libs/sysplugins/smarty_internal_templatelexer.php341
-rw-r--r--libs/sysplugins/smarty_internal_templateparser.php3083
-rw-r--r--libs/sysplugins/smarty_method_register_block.php6
-rw-r--r--libs/sysplugins/smarty_method_register_compiler_function.php6
-rw-r--r--libs/sysplugins/smarty_method_register_function.php6
-rw-r--r--libs/sysplugins/smarty_method_register_modifier.php6
-rw-r--r--libs/sysplugins/smarty_method_unregister_block.php4
-rw-r--r--libs/sysplugins/smarty_method_unregister_compiler_function.php4
-rw-r--r--libs/sysplugins/smarty_method_unregister_function.php4
-rw-r--r--libs/sysplugins/smarty_method_unregister_modifier.php4
42 files changed, 2982 insertions, 2763 deletions
diff --git a/libs/Smarty.class.php b/libs/Smarty.class.php
index a3a360c6..5a23d848 100644
--- a/libs/Smarty.class.php
+++ b/libs/Smarty.class.php
@@ -106,9 +106,9 @@ if (SMARTY_SPL_AUTOLOAD && set_include_path(get_include_path() . PATH_SEPARATOR
/**
* This is the main Smarty class
*/
-class Smarty extends Smarty_Internal_TemplateBase {
+class Smarty extends Smarty_Internal_Data {
// smarty version
- public static $_version = 'Smarty3-SVN$Rev: 3286 $';
+ const SMARTY_VERSION = 'Smarty3-SVN$Rev: 3286 $';
// auto literal on delimiters with whitspace
public $auto_literal = true;
// display error on not assigned variables
@@ -167,7 +167,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
// config var settings
public $config_overwrite = true; //Controls whether variables with the same name overwrite each other.
public $config_booleanize = true; //Controls whether config values of on/true/yes and off/false/no get converted to boolean
- public $config_read_hidden = true; //Controls whether hidden config sections/vars are read from the file.
+ public $config_read_hidden = true; //Controls whether hidden config sections/vars are read from the file.
// config vars
public $config_vars = array();
// assigned tpl vars
@@ -186,30 +186,20 @@ class Smarty extends Smarty_Internal_TemplateBase {
public $cache_resource_types = array('file');
// config type
public $default_config_type = 'file';
- // class used for cacher
- public $cacher_class = 'Smarty_Internal_Cacher_InlineCode';
// exception handler: array('ExceptionClass','ExceptionMethod');
public $exception_handler = null;
// cached template objects
public $template_objects = null;
// check If-Modified-Since headers
public $cache_modified_check = false;
- // cached objects
- public $resource_objects = array();
// registered plugins
public $registered_plugins = array();
// plugin search order
public $plugin_search_order = array('function', 'block', 'compiler', 'class');
- // plugin handler object
- public $plugin_handler = null;
- // default plugin handler
- public $default_plugin_handler_func = null;
// registered objects
public $registered_objects = array();
// registered filters
public $registered_filters = array();
- // filter handler
- public $filter_handler = null;
// autoload filter
public $autoload_filters = array();
// status of filter on variable output
@@ -228,8 +218,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* Class constructor, initializes basic smarty properties
*/
- public function __construct()
- {
+ public function __construct() {
// self reference needed by other classes methods
$this->smarty = $this;
@@ -239,7 +228,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
$this->start_time = $this->_get_time();
// set exception handler
if (!empty($this->exception_handler))
- set_exception_handler($this->exception_handler);
+ set_exception_handler($this->exception_handler);
// set default dirs
$this->template_dir = array('.' . DS . 'templates' . DS);
$this->compile_dir = '.' . DS . 'templates_c' . DS;
@@ -247,12 +236,11 @@ class Smarty extends Smarty_Internal_TemplateBase {
$this->cache_dir = '.' . DS . 'cache' . DS;
$this->config_dir = '.' . DS . 'configs' . DS;
$this->debug_tpl = SMARTY_DIR . 'debug.tpl';
- $this->plugin_handler = new Smarty_Internal_Plugin_Handler($this);
- $this->filter_handler = new Smarty_Internal_Run_Filter($this);
if (!$this->debugging && $this->debugging_ctrl == 'URL') {
if (isset($_SERVER['QUERY_STRING'])) {
$_query_string = $_SERVER['QUERY_STRING'];
- } else {
+ }
+ else {
$_query_string = '';
}
if (false !== strpos($_query_string, $this->smarty_debug_id)) {
@@ -260,15 +248,18 @@ class Smarty extends Smarty_Internal_TemplateBase {
// enable debugging for this browser session
setcookie('SMARTY_DEBUG', true);
$this->debugging = true;
- } elseif (false !== strpos($_query_string, $this->smarty_debug_id . '=off')) {
+ }
+ elseif (false !== strpos($_query_string, $this->smarty_debug_id . '=off')) {
// disable debugging for this browser session
setcookie('SMARTY_DEBUG', false);
$this->debugging = false;
- } else {
+ }
+ else {
// enable debugging for this page
$this->debugging = true;
}
- } else {
+ }
+ else {
if (isset($_COOKIE['SMARTY_DEBUG'])) {
$this->debugging = true;
}
@@ -280,11 +271,10 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* Class destructor
*/
- public function __destruct()
- {
+ public function __destruct() {
// restore to previous exception handler, if any
if (!empty($this->exception_handler))
- restore_exception_handler();
+ restore_exception_handler();
}
/**
@@ -296,8 +286,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
* @param object $ |null $parent next higher level of Smarty variables
* @return string rendered template output
*/
- public function fetch($template, $cache_id = null, $compile_id = null, $parent = null)
- {
+ public function fetch($template, $cache_id = null, $compile_id = null, $parent = null) {
if (is_object($cache_id)) {
$parent = $cache_id;
$cache_id = null;
@@ -313,8 +302,9 @@ class Smarty extends Smarty_Internal_TemplateBase {
? $this->error_reporting : error_reporting() &~E_NOTICE);
// return redered template
if (isset($this->autoload_filters['output']) || isset($this->registered_filters['output'])) {
- $_output = $this->filter_handler->execute('output', $_template->getRenderedTemplate());
- } else {
+ $_output = Smarty_Internal_Filter_Handler::runFilter('output', $_template->getRenderedTemplate(), $this);
+ }
+ else {
$_output = $_template->getRenderedTemplate();
}
$_template->rendered_content = null;
@@ -330,8 +320,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
* @param mixed $compile_id compile id to be used with this template
* @param object $parent next higher level of Smarty variables
*/
- public function display($template, $cache_id = null, $compile_id = null, $parent = null)
- {
+ public function display($template, $cache_id = null, $compile_id = null, $parent = null) {
// display template
echo $this->fetch ($template, $cache_id, $compile_id, $parent);
// debug output
@@ -349,8 +338,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
* @param mixed $compile_id compile id to be used with this template
* @return boolean cache status
*/
- public function is_cached($template, $cache_id = null, $compile_id = null)
- {
+ public function is_cached($template, $cache_id = null, $compile_id = null) {
if (!($template instanceof $this->template_class)) {
$template = $this->createTemplate ($template, $cache_id, $compile_id, $this);
}
@@ -361,13 +349,13 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* Loads security class and enables security
*/
- public function enableSecurity()
- {
+ public function enableSecurity() {
if (isset($this->security_class)) {
$this->security_policy = new $this->security_class;
$this->security_handler = new Smarty_Internal_Security_Handler($this);
$this->security = true;
- } else {
+ }
+ else {
throw new Exception('Property security_class is not defined');
}
}
@@ -377,8 +365,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
*
* @param string $ |array $template_dir folder(s) of template sorces
*/
- public function setTemplateDir($template_dir)
- {
+ public function setTemplateDir($template_dir) {
$this->template_dir = (array)$template_dir;
return;
}
@@ -387,8 +374,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
*
* @param string $ |array $template_dir folder(s) of template sources
*/
- public function addTemplateDir($template_dir)
- {
+ public function addTemplateDir($template_dir) {
$this->template_dir = array_merge((array)$this->template_dir, (array)$template_dir);
$this->template_dir = array_unique($this->template_dir);
return;
@@ -398,8 +384,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
*
* @param string $compile_dir folder of compiled template sources
*/
- public function setCompileDir($compile_dir)
- {
+ public function setCompileDir($compile_dir) {
$this->compile_dir = $compile_dir;
return;
}
@@ -408,16 +393,14 @@ class Smarty extends Smarty_Internal_TemplateBase {
*
* @param string $cache_dir folder of cache files
*/
- public function setCacheDir($cache_dir)
- {
+ public function setCacheDir($cache_dir) {
$this->cache_dir = $cache_dir;
return;
}
/**
* Enable Caching
*/
- public function enableCaching()
- {
+ public function enableCaching() {
$this->caching = SMARTY_CACHING_LIFETIME_CURRENT;
return;
}
@@ -426,8 +409,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
*
* @param integer $lifetime lifetime of cached file in seconds
*/
- public function setCacheLifetime($lifetime)
- {
+ public function setCacheLifetime($lifetime) {
$this->cache_lifetime = $lifetime;
return;
}
@@ -437,16 +419,12 @@ class Smarty extends Smarty_Internal_TemplateBase {
* plugin filename format: plugintype.pluginname.php
*
* @param string $plugin_name class plugin name to load
- * @return boolean
+ * @return string|boolean filepath of loaded file or false
*/
- public function loadPlugin($plugin_name)
- {
- // if class exists, exit silently (already loaded)
- if (class_exists($plugin_name, false))
- return true;
- // if callable as function, exit silently (already loaded)
- if (is_callable($plugin_name))
- return true;
+ public function loadPlugin($plugin_name, $check = true) {
+ // if function or class exists, exit silently (already loaded)
+ if ($check && (is_callable($plugin_name) || class_exists($plugin_name, false)))
+ return true;
// Plugin name is expected to be: Smarty_[Type]_[Name]
$_plugin_name = strtolower($plugin_name);
$_name_parts = explode('_', $_plugin_name, 3);
@@ -457,10 +435,12 @@ class Smarty extends Smarty_Internal_TemplateBase {
}
// if type is "internal", get plugin from sysplugins
if ($_name_parts[1] == 'internal') {
- if (file_exists(SMARTY_SYSPLUGINS_DIR . $_plugin_name . '.php')) {
- require_once(SMARTY_SYSPLUGINS_DIR . $_plugin_name . '.php');
- return true;
- } else {
+ $file = SMARTY_SYSPLUGINS_DIR . $_plugin_name . '.php';
+ if (file_exists($file)) {
+ require_once($file);
+ return $file;
+ }
+ else {
return false;
}
}
@@ -471,10 +451,10 @@ class Smarty extends Smarty_Internal_TemplateBase {
if (strpos('/\\', substr($_plugin_dir, -1)) === false) {
$_plugin_dir .= DS;
}
-
- if (file_exists($_plugin_dir . $_plugin_filename)) {
- require_once($_plugin_dir . $_plugin_filename);
- return true;
+ $file = $_plugin_dir . $_plugin_filename;
+ if (file_exists($file)) {
+ require_once($file);
+ return $file;
}
}
// no plugin loaded
@@ -487,8 +467,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
* @param mixed $handler function name or array with object/method names
* @return string previous exception handler
*/
- public function setExceptionHandler($handler)
- {
+ public function setExceptionHandler($handler) {
$this->exception_handler = $handler;
return set_exception_handler($handler);
}
@@ -498,8 +477,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
*
* @return object of cache resource
*/
- public function loadCacheResource($type = null)
- {
+ public function loadCacheResource($type = null) {
if (!isset($type)) {
$type = $this->caching_type;
}
@@ -510,12 +488,14 @@ class Smarty extends Smarty_Internal_TemplateBase {
if (in_array($type, $this->cache_resource_types)) {
$cache_resource_class = 'Smarty_Internal_CacheResource_' . ucfirst($type);
return $this->cache_resource_objects[$type] = new $cache_resource_class($this);
- } else {
+ }
+ else {
// try plugins dir
$cache_resource_class = 'Smarty_CacheResource_' . ucfirst($type);
if ($this->loadPlugin($cache_resource_class)) {
return $this->cache_resource_objects[$type] = new $cache_resource_class($this);
- } else {
+ }
+ else {
throw new Exception("Unable to load cache resource '{$type}'");
}
}
@@ -527,8 +507,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
* @param string $error_msg
* @param integer $error_type
*/
- public function trigger_error($error_msg, $error_type = E_USER_WARNING)
- {
+ public function trigger_error($error_msg, $error_type = E_USER_WARNING) {
throw new Exception("Smarty error: $error_msg");
}
@@ -540,8 +519,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
* @param string $name unknown methode name
* @param array $args aurgument array
*/
- public function __call($name, $args)
- {
+ public function __call($name, $args) {
$name = strtolower($name);
if ($name == 'smarty') {
throw new Exception('Please use parent::__construct() to call parent constuctor');
@@ -557,8 +535,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
}
}
-function smartyAutoload($class)
-{
+function smartyAutoload($class) {
$_class = strtolower($class);
if (substr($_class, 0, 16) === 'smarty_internal_' || $_class == 'smarty_security') {
include SMARTY_SYSPLUGINS_DIR . $_class . '.php';
diff --git a/libs/plugins/modifier.debug_print_var.php b/libs/plugins/modifier.debug_print_var.php
index e976d12f..f0f83d27 100644
--- a/libs/plugins/modifier.debug_print_var.php
+++ b/libs/plugins/modifier.debug_print_var.php
@@ -20,70 +20,68 @@
* @param integer $
* @return string
*/
-class Smarty_Modifier_Debug_Print_Var {
- static function execute ($var, $depth = 0, $length = 40)
- {
- $_replace = array("\n" => '<i>\n</i>',
- "\r" => '<i>\r</i>',
- "\t" => '<i>\t</i>'
- );
+function smarty_modifier_debug_print_var ($var, $depth = 0, $length = 40)
+{
+ $_replace = array("\n" => '<i>\n</i>',
+ "\r" => '<i>\r</i>',
+ "\t" => '<i>\t</i>'
+ );
- switch (gettype($var)) {
- case 'array' :
- $results = '<b>Array (' . count($var) . ')</b>';
- foreach ($var as $curr_key => $curr_val) {
- $results .= '<br>' . str_repeat('&nbsp;', $depth * 2)
- . '<b>' . strtr($curr_key, $_replace) . '</b> =&gt; '
- . self::execute($curr_val, ++$depth, $length);
- $depth--;
- }
- break;
- case 'object' :
- $object_vars = get_object_vars($var);
- $results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>';
- foreach ($object_vars as $curr_key => $curr_val) {
- $results .= '<br>' . str_repeat('&nbsp;', $depth * 2)
- . '<b> -&gt;' . strtr($curr_key, $_replace) . '</b> = '
- . self::execute($curr_val, ++$depth, $length);
- $depth--;
- }
- break;
- case 'boolean' :
- case 'NULL' :
- case 'resource' :
- if (true === $var) {
- $results = 'true';
- } elseif (false === $var) {
- $results = 'false';
- } elseif (null === $var) {
- $results = 'null';
- } else {
- $results = htmlspecialchars((string) $var);
- }
- $results = '<i>' . $results . '</i>';
- break;
- case 'integer' :
- case 'float' :
+ switch (gettype($var)) {
+ case 'array' :
+ $results = '<b>Array (' . count($var) . ')</b>';
+ foreach ($var as $curr_key => $curr_val) {
+ $results .= '<br>' . str_repeat('&nbsp;', $depth * 2)
+ . '<b>' . strtr($curr_key, $_replace) . '</b> =&gt; '
+ . smarty_modifier_debug_print_var($curr_val, ++$depth, $length);
+ $depth--;
+ }
+ break;
+ case 'object' :
+ $object_vars = get_object_vars($var);
+ $results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>';
+ foreach ($object_vars as $curr_key => $curr_val) {
+ $results .= '<br>' . str_repeat('&nbsp;', $depth * 2)
+ . '<b> -&gt;' . strtr($curr_key, $_replace) . '</b> = '
+ . smarty_modifier_debug_print_var($curr_val, ++$depth, $length);
+ $depth--;
+ }
+ break;
+ case 'boolean' :
+ case 'NULL' :
+ case 'resource' :
+ if (true === $var) {
+ $results = 'true';
+ } elseif (false === $var) {
+ $results = 'false';
+ } elseif (null === $var) {
+ $results = 'null';
+ } else {
$results = htmlspecialchars((string) $var);
- break;
- case 'string' :
- $results = strtr($var, $_replace);
- if (strlen($var) > $length) {
- $results = substr($var, 0, $length - 3) . '...';
- }
- $results = htmlspecialchars('"' . $results . '"');
- break;
- case 'unknown type' :
- default :
- $results = strtr((string) $var, $_replace);
- if (strlen($results) > $length) {
- $results = substr($results, 0, $length - 3) . '...';
- }
- $results = htmlspecialchars($results);
- }
-
- return $results;
+ }
+ $results = '<i>' . $results . '</i>';
+ break;
+ case 'integer' :
+ case 'float' :
+ $results = htmlspecialchars((string) $var);
+ break;
+ case 'string' :
+ $results = strtr($var, $_replace);
+ if (strlen($var) > $length) {
+ $results = substr($var, 0, $length - 3) . '...';
+ }
+ $results = htmlspecialchars('"' . $results . '"');
+ break;
+ case 'unknown type' :
+ default :
+ $results = strtr((string) $var, $_replace);
+ if (strlen($results) > $length) {
+ $results = substr($results, 0, $length - 3) . '...';
+ }
+ $results = htmlspecialchars($results);
}
+
+ return $results;
}
?>
diff --git a/libs/sysplugins/smarty_internal_cacher_inlinecode.php b/libs/sysplugins/smarty_internal_cacher_inlinecode.php
deleted file mode 100644
index eb943fed..00000000
--- a/libs/sysplugins/smarty_internal_cacher_inlinecode.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-/**
-* Smarty Internal Plugin Cacher InlineCode
-*
-* Process nocached code.
-* Version to inject nocache code directly into cache file
-* if caching is disabled at render time the code is being evaluated
-*
-* @package Smarty
-* @subpackage Cacher
-* @author Uwe Tews
-*/
-
-/**
-* Smarty Internal Plugin Cacher InlineCode Class
-*/
-class Smarty_Internal_Cacher_InlineCode {
- function __construct($smarty)
- {
- $this->smarty = $smarty;
- }
-
- /**
- * Inject inline code for nocache template sections
- *
- * This method gets the content of each template element from the parser.
- * If the content is compiled code and it should be not cached the code is injected
- * into the rendered output.
- *
- * @param string $content content of template element
- * @param object $compiler intance of compiler class
- * @param boolean $tag_nocache true if the parser detected a nocache situation
- * @param boolean $is_code true if content is compiled code
- * @return string content
- */
- public function processNocacheCode ($content, $compiler, $is_code)
- {
- // If the template is not evaluated and we have a nocache section and or a nocache tag
- if ($is_code) {
- // generate replacement code
- if ((!$compiler->template->isEvaluated() || $compiler->template->forceNocache) && $compiler->template->caching &&
- ($compiler->nocache || $compiler->tag_nocache)) {
- $compiler->tag_nocache = false;
- $_output = str_replace("'", "\'", $content);
- $_output = '<?php echo \'' . $_output . '\';?>';
- } else {
- $_output = $content;
- }
- } else {
- $_output = $content;
- }
- // if compiled code shall be grabbed
- if ($compiler->template->extract_code == false) {
- // return output
- return $_output;
- } else {
- // store code in extract buffer
- $compiler->template->extracted_compiled_code .= $_output;
- return '';
- }
- }
-
- /**
- * Initialize cacher
- *
- * Is a noop in current implementation
- *
- * @param object $compiler intance of compiler class
- */
- public function initCacher ($compiler)
- {
- return;
- }
-
- /**
- * Close cacher
- *
- * Hook to perform any post processing on the final compiled template
- * Is a noop in current implementation
- *
- * @param object $compiler intance of compiler class
- * @param string $template_code complete compiled template
- * @return string compiled template output
- */
- public function closeCacher ($compiler, $template_code)
- {
- return $template_code;
- }
-
-}
-
-?>
diff --git a/libs/sysplugins/smarty_internal_cacheresource_file.php b/libs/sysplugins/smarty_internal_cacheresource_file.php
index f3a1329c..d4d9baf7 100644
--- a/libs/sysplugins/smarty_internal_cacheresource_file.php
+++ b/libs/sysplugins/smarty_internal_cacheresource_file.php
@@ -38,7 +38,8 @@ class Smarty_Internal_CacheResource_File {
*/
public function getCachedTimestamp($template)
{
- return ($template->getCachedFilepath() && file_exists($template->getCachedFilepath())) ? filemtime($template->getCachedFilepath()) : false ;
+ return @filemtime($template->getCachedFilepath());
+ // return ($template->getCachedFilepath() && file_exists($template->getCachedFilepath())) ? filemtime($template->getCachedFilepath()) : false ;
}
/**
@@ -63,7 +64,7 @@ class Smarty_Internal_CacheResource_File {
*/
public function writeCachedContent($template, $content)
{
- if (!$template->isEvaluated()) {
+ if (!$template->resource_object->isEvaluated) {
return Smarty_Internal_Write_File::writeFile($template->getCachedFilepath(), $content, $this->smarty);
} else {
return false;
@@ -91,51 +92,61 @@ class Smarty_Internal_CacheResource_File {
*/
public function clear($resource_name, $cache_id, $compile_id, $exp_time)
{
- $_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!','_',$cache_id) : null;
- $_compile_id = isset($compile_id) ? preg_replace('![^\w\|]+!','_',$compile_id) : null;
- $_dir_sep = $this->smarty->use_sub_dirs ? DS : '^';
- if (isset($resource_name)) {
- $_resource_part = (string)abs(crc32($resource_name)) . '.' . $resource_name . '.php';
- } else {
- $_resource_part = null;
- }
- $_dir = $this->smarty->cache_dir;
- if (strpos('/\\', substr($_dir, -1)) === false) {
- $_dir .= DS;
- }
- if ($this->smarty->use_sub_dirs && isset($_cache_id)) {
- $_dir .= str_replace('|', $_dir_sep, $_cache_id) . $_dir_sep;
+ $_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!', '_', $cache_id) : null;
+ $_compile_id = isset($compile_id) ? preg_replace('![^\w\|]+!', '_', $compile_id) : null;
+ $_dir_sep = $this->smarty->use_sub_dirs ? '/' : '^';
+ $_compile_id_offset = $this->smarty->use_sub_dirs ? 3 : 0;
+ $_dir = rtrim($this->smarty->cache_dir, '/\\') . DS;
+ $_dir_length = strlen($_dir);
+ if (isset($_cache_id)) {
+ $_cache_id_parts = explode('|', $_cache_id);
+ $_cache_id_parts_count = count($_cache_id_parts);
}
- $_compile_pos = $this->smarty->use_sub_dirs ? 5 : 2;
$_count = 0;
$_cacheDirs = new RecursiveDirectoryIterator($_dir);
$_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST);
foreach ($_cache as $_file) {
- if (strpos($_file, '.svn') !== false) continue;
+ if (strpos($_file, '.svn') !== false) continue;
+ // directory ?
if ($_file->isDir()) {
if (!$_cache->isDot()) {
// delete folder if empty
@rmdir($_file->getPathname());
}
} else {
- $_parts = explode($_dir_sep, $_file);
- $_parts_count = count($_parts);
- $_parts_compile_pos = $_parts_count - $_compile_pos;
- if ($_parts_compile_pos < 0) {
- $_parts_compile_pos = 0;
+ $_parts = explode($_dir_sep, str_replace('\\', '/', substr((string)$_file, $_dir_length)));
+ $_parts_count = count($_parts);
+ // check name
+ if (isset($resource_name)) {
+ $_filename_parts = explode('.', $_parts[$_parts_count-1]);
+ $_resourcename_parts = explode('.', $resource_name . '.php');
+ if (count($_filename_parts)-1 != count($_resourcename_parts)) {
+ continue;
+ }
+ for ($i = 0; $i < count($_resourcename_parts); $i++) {
+ if ($_filename_parts[$i + 1] != $_resourcename_parts[$i]) continue 2;
+ }
}
- if ((substr_compare((string)$_file, $_dir, 0, strlen($_dir)) == 0 &&
- (!isset($resource_name) || $_parts[$_parts_count-1] == $_resource_part) &&
- (!isset($_compile_id) || $_parts[$_parts_compile_pos] == $_compile_id)) ||
- (isset($resource_name) && (string)$_file == $_dir . $_resource_part)) {
- if (isset($exp_time)) {
- if (time() - @filemtime($_file) >= $exp_time) {
- $_count += @unlink((string) $_file) ? 1 : 0;
- }
- } else {
- $_count += @unlink((string) $_file) ? 1 : 0;
+ // check compile id
+ if (isset($_compile_id) && $_parts[$_parts_count-2 - $_compile_id_offset] != $_compile_id) {
+ continue;
+ }
+ // check cache id
+ if (isset($_cache_id)) {
+ // count of cache id parts
+ $_parts_count = (isset($_compile_id)) ? $_parts_count - 2 - $_compile_id_offset : $_parts_count - 1 - $_compile_id_offset;
+ if ($_parts_count < $_cache_id_parts_count) {
+ continue;
+ }
+ for ($i = 0; $i < $_cache_id_parts_count; $i++) {
+ if ($_parts[$i] != $_cache_id_parts[$i]) continue 2;
}
}
+ // expired ?
+ if (isset($exp_time) && time() - @filemtime($_file) < $exp_time) {
+ continue;
+ }
+ $_count += @unlink((string) $_file) ? 1 : 0;
}
}
return $_count;
@@ -143,17 +154,16 @@ class Smarty_Internal_CacheResource_File {
/**
* Get system filepath to cached file
*
- * @param string $resource_name template name
+ * @param string $source_file_path template source file path
* @param string $cache_id cache id
* @param string $compile_id compile id
* @return string filepath of cache file
*/
- private function buildCachedFilepath ($resource_name, $cache_id, $compile_id)
+ private function buildCachedFilepath ($source_file_path, $cache_id, $compile_id)
{
- $_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!','_',$cache_id) : null;
- $_compile_id = isset($compile_id) ? preg_replace('![^\w\|]+!','_',$compile_id) : null;
- $_files = explode('|', $resource_name);
- $_filepath = (string)abs(crc32($resource_name));
+ $_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!', '_', $cache_id) : null;
+ $_compile_id = isset($compile_id) ? preg_replace('![^\w\|]+!', '_', $compile_id) : null;
+ $_filepath = (string)abs(crc32($source_file_path));
// if use_sub_dirs, break file into directories
if ($this->smarty->use_sub_dirs) {
$_filepath = substr($_filepath, 0, 2) . DS
@@ -176,8 +186,7 @@ class Smarty_Internal_CacheResource_File {
if (strpos('/\\', substr($_cache_dir, -1)) === false) {
$_cache_dir .= DS;
}
-
- return $_cache_dir . $_cache_id . $_compile_id . $_filepath . '.' . basename($_files[count($_files)-1]) . '.php';
+ return $_cache_dir . $_cache_id . $_compile_id . $_filepath . '.' . basename($source_file_path) . '.php';
}
}
diff --git a/libs/sysplugins/smarty_internal_compile_function.php b/libs/sysplugins/smarty_internal_compile_function.php
index 56f451b7..e5cee180 100644
--- a/libs/sysplugins/smarty_internal_compile_function.php
+++ b/libs/sysplugins/smarty_internal_compile_function.php
@@ -29,6 +29,7 @@ class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase {
$save = array($_attr, $compiler->template->extracted_compiled_code, $compiler->template->extract_code);
$this->_open_tag('function', $save);
$_name = trim($_attr['name'], "'");
+ unset($_attr['name']);
foreach ($_attr as $_key => $_data) {
$compiler->template->properties['function'][$_name]['parameter'][$_key] = $_data;
}
@@ -56,20 +57,13 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
{
$this->compiler = $compiler;
$this->compiler->has_code = false;
- // turn off block code extraction
- $compiler->template->extract_code = false;
- // check and get attributes
- $this->optional_attributes = array('name');
$_attr = $this->_get_attributes($args);
$saved_data = $this->_close_tag(array('function'));
- // if name does match to opening tag
- if (isset($_attr['name']) && $saved_data[0]['name'] != $_attr['name']) {
- $this->compiler->trigger_template_error('mismatching name attributes "' . $saved_data[0]['name'] . '" and "' . $_attr['name'] . '"');
- }
$_name = trim($saved_data[0]['name'], "'");
- $compiler->template->properties['function'][$_name]['compiled'] = str_replace("\n",'_%n',$compiler->template->extracted_compiled_code);
+ $compiler->template->properties['function'][$_name]['compiled'] = $compiler->template->extracted_compiled_code;
$this->compiler->smarty->template_functions[$_name]['compiled'] = $compiler->template->extracted_compiled_code;
$this->compiler->smarty->template_functions[$_name]['parameter'] = $compiler->template->properties['function'][$_name]['parameter'];
+ // restore old code extraction status
$compiler->template->extracted_compiled_code = $saved_data[1];
$compiler->template->extract_code = $saved_data[2];
return true;
diff --git a/libs/sysplugins/smarty_internal_compile_include.php b/libs/sysplugins/smarty_internal_compile_include.php
index c0a8fd92..933d719a 100644
--- a/libs/sysplugins/smarty_internal_compile_include.php
+++ b/libs/sysplugins/smarty_internal_compile_include.php
@@ -36,49 +36,17 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase {
eval("\$tmp = $include_file;");
if ($this->compiler->template->template_resource != $tmp) {
$tpl = $compiler->smarty->createTemplate ($tmp, $compiler->template->cache_id, $compiler->template->compile_id, $compiler->template);
- if ($tpl->usesCompiler() && $tpl->isExisting()) {
- do {
- $must_compile = false;
- $prop = array();
- $compiled_tpl = $tpl->getCompiledTemplate();
- preg_match('/(\<\?php \$_smarty_tpl-\>decodeProperties\(\')(.*)(\'.*\?\>)/', $compiled_tpl, $matches);
- $compiled_tpl = preg_replace(array('/(\<\?php \$_smarty_tpl-\>decodeProperties\(\')(.*)(\'.*\?\>.*\n)/', '/(\<\?php if\(\!defined\(\'SMARTY_DIR\'\)\))(.*)(\?\>.*\n)/'), '', $compiled_tpl);
- // var_dump($matches, $compiled_tpl);
- if (isset($matches[2])) {
- $prop = unserialize($matches[2]);
- foreach ($prop['file_dependency'] as $_file_to_check) {
- If (is_file($_file_to_check[0])) {
- $mtime = filemtime($_file_to_check[0]);
- } else {
- $tpl->parseResourceName($_file_to_check[0], $resource_type, $resource_name, $resource_handler);
- if ($resource_type == 'file') {
- $must_compile = true; // subtemplate no longer existing
- break;
- }
- $mtime = $resource_handler->getTemplateTimestampTypeName($resource_type, $resource_name);
- }
- // If ($mtime != $_file_to_check[1]) {
- If ($mtime > $_file_to_check[1]) {
- $must_compile = true;
- break;
- }
- }
- if ($must_compile) {
- // recompile
- $tpl->compileTemplateSource();
- }
- }
- } while ($must_compile);
- if (isset($prop['file_dependency'])) {
- $compiler->template->properties['file_dependency'] = array_merge($compiler->template->properties['file_dependency'], $prop['file_dependency']);
- }
- if (isset($prop['function'])) {
- if (isset($compiler->template->properties['function'])) {
- $compiler->template->properties['function'] = array_merge((array)$compiler->template->properties['function'], $prop['function']);
- } else {
- $compiler->template->properties['function'] = $prop['function'];
- }
- }
+ if ($this->compiler->template->caching) {
+ // needs code for cached page but no cache file
+ $tpl->caching = 9999;
+ }
+ if ($tpl->resource_object->usesCompiler && $tpl->isExisting()) {
+ // make sure that template is up to date and merge template properties
+ $tpl->renderTemplate();
+ // get compiled code
+ $compiled_tpl = $tpl->getCompiledTemplate();
+ // remove header code
+ $compiled_tpl = preg_replace('/(<\?php \/\*%%SmartyHeaderCode%%\*\/(.+?)\/\*\/%%SmartyHeaderCode%%\*\/\?>\n)/s', '', $compiled_tpl);
$has_compiled_template = true;
}
}
@@ -163,6 +131,7 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase {
}
$_output .= "<?php unset(\$_template);?>";
return $_output;
- }
-}
+ }
+}
+
?>
diff --git a/libs/sysplugins/smarty_internal_compile_block_plugin.php b/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
index 0d668239..030f3a2f 100644
--- a/libs/sysplugins/smarty_internal_compile_block_plugin.php
+++ b/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
@@ -11,7 +11,7 @@
/**
* Smarty Internal Plugin Compile Block Plugin Class
*/
-class Smarty_Internal_Compile_Block_Plugin extends Smarty_Internal_CompileBase {
+class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_CompileBase {
/**
* Compiles code for the execution of block plugin
*
@@ -20,7 +20,7 @@ class Smarty_Internal_Compile_Block_Plugin extends Smarty_Internal_CompileBase {
* @param object $compiler compiler object
* @return string compiled code
*/
- public function compile($args, $compiler, $tag)
+ public function compile($args, $compiler, $tag, $function)
{
$this->compiler = $compiler;
if (strlen($tag) < 6 || substr_compare($tag, 'close', -5, 5) != 0) {
@@ -41,14 +41,14 @@ class Smarty_Internal_Compile_Block_Plugin extends Smarty_Internal_CompileBase {
$_params = 'array(' . implode(",", $_paramsArray) . ')';
$this->_open_tag($tag, array($_params, $this->compiler->nocache));
- // not cachable?
- if (isset($this->compiler->smarty->registered_plugins[$tag]) && !$this->compiler->smarty->registered_plugins[$tag][2]) {
- $this->compiler->nocache = true;
- }
- // maybe nocache because of nocache variables
+ // maybe nocache because of nocache variables or nocache plugin
$this->compiler->nocache = $this->compiler->nocache | $this->compiler->tag_nocache;
// compile code
- $output = '<?php $_block_repeat=true; $_smarty_tpl->smarty->plugin_handler->' . $tag . '(array(' . $_params . ', null, $_smarty_tpl->smarty, &$_block_repeat, $_smarty_tpl),\'block\');while ($_block_repeat) { ob_start();?>';
+ if (is_array($function)) {
+ $output = '<?php $_block_repeat=true; call_user_func_array(array(\'' . $function[0] . '\',\'' . $function[1] . '\'),(array(' . $_params . ', null, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl));while ($_block_repeat) { ob_start();?>';
+ } else {
+ $output = '<?php $_block_repeat=true; ' . $function . '(' . $_params . ', null, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl);while ($_block_repeat) { ob_start();?>';
+ }
} else {
// must endblock be nocache?
if ($this->compiler->nocache) {
@@ -59,7 +59,12 @@ class Smarty_Internal_Compile_Block_Plugin extends Smarty_Internal_CompileBase {
// This tag does create output
$this->compiler->has_output = true;
// compile code
- $output = '<?php $_block_content = ob_get_clean(); $_block_repeat=false; echo $_smarty_tpl->smarty->plugin_handler->' . substr($tag, 0, -5) . '(array(' . $_params . ', $_block_content, $_smarty_tpl->smarty, &$_block_repeat, $_smarty_tpl),\'block\'); }?>';
+ if (is_array($function)) {
+ var_dump('error');
+ $output = '<?php $_block_content = ob_get_clean(); $_block_repeat=false; echo call_user_func_array(array(\'' . $function[0] . '\',\'' . $function[1] . '\'),(array(' . $_params . ', $_block_content, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl)); }?>';
+ } else {
+ $output = '<?php $_block_content = ob_get_clean(); $_block_repeat=false; echo ' . $function . '(' . $_params . ', $_block_content, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl); }?>';
+ }
}
return $output;
}
diff --git a/libs/sysplugins/smarty_internal_compile_function_call.php b/libs/sysplugins/smarty_internal_compile_private_function_call.php
index 157842bc..05f613fc 100644
--- a/libs/sysplugins/smarty_internal_compile_function_call.php
+++ b/libs/sysplugins/smarty_internal_compile_private_function_call.php
@@ -12,7 +12,7 @@
/**
* Smarty Internal Plugin Compile Function_Call Class
*/
-class Smarty_Internal_Compile_Function_Call extends Smarty_Internal_CompileBase {
+class Smarty_Internal_Compile_Private_Function_Call extends Smarty_Internal_CompileBase {
/**
* Compiles the calls of user defined tags defined by {function}
*
diff --git a/libs/sysplugins/smarty_internal_compile_function_plugin.php b/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
index 8d9ffab4..129b5d75 100644
--- a/libs/sysplugins/smarty_internal_compile_function_plugin.php
+++ b/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
@@ -11,7 +11,7 @@
/**
* Smarty Internal Plugin Compile Function Plugin Class
*/
-class Smarty_Internal_Compile_Function_Plugin extends Smarty_Internal_CompileBase {
+class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_CompileBase {
/**
* Compiles code for the execution of function plugin
*
@@ -20,7 +20,7 @@ class Smarty_Internal_Compile_Function_Plugin extends Smarty_Internal_CompileBas
* @param object $compiler compiler object
* @return string compiled code
*/
- public function compile($args, $compiler, $tag)
+ public function compile($args, $compiler, $tag, $function)
{
$this->compiler = $compiler;
// This tag does create output
@@ -30,10 +30,6 @@ class Smarty_Internal_Compile_Function_Plugin extends Smarty_Internal_CompileBas
$this->optional_attributes = array('_any');
// check and get attributes
$_attr = $this->_get_attributes($args);
- // not cachable?
- if (isset($this->compiler->smarty->registered_plugins[$tag]) && !$this->compiler->smarty->registered_plugins[$tag][2]) {
- $this->compiler->tag_nocache = true;
- }
// convert attributes into parameter array string
$_paramsArray = array();
foreach ($_attr as $_key => $_value) {
@@ -45,8 +41,11 @@ class Smarty_Internal_Compile_Function_Plugin extends Smarty_Internal_CompileBas
}
$_params = 'array(' . implode(",", $_paramsArray) . ')';
// compile code
- $output = '<?php echo $_smarty_tpl->smarty->plugin_handler->' . $tag . '(array(' . $_params . ',$_smarty_tpl->smarty,$_smarty_tpl),\'function\');?>';
-
+ if (is_array($function)) {
+ $output = '<?php echo call_user_func_array(array(\'' . $function[0] . '\',\'' . $function[1] . '\'),(array(' . $_params . ',$_smarty_tpl->smarty,$_smarty_tpl));?>';
+ } else {
+ $output = '<?php echo ' . $function . '(' . $_params . ',$_smarty_tpl->smarty,$_smarty_tpl);?>';
+ }
return $output;
}
}
diff --git a/libs/sysplugins/smarty_internal_compile_private_modifier.php b/libs/sysplugins/smarty_internal_compile_private_modifier.php
new file mode 100644
index 00000000..a559b759
--- /dev/null
+++ b/libs/sysplugins/smarty_internal_compile_private_modifier.php
@@ -0,0 +1,58 @@
+<?php
+/**
+* Smarty Internal Plugin Compile Modifier
+*
+* Compiles code for modifier execution
+*
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+/**
+* Smarty Internal Plugin Compile Modifier Class
+*/
+class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBase {
+ /**
+ * Compiles code for modifier execution
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @return string compiled code
+ */
+ public function compile($args, $compiler)
+ {
+ $this->compiler = $compiler;
+ $this->smarty = $this->compiler->smarty;
+ $this->required_attributes = array('modifier', 'params');
+ // check and get attributes
+ $_attr = $this->_get_attributes($args);
+ // check if modifier allowed
+ if (!$this->compiler->template->security || $this->smarty->security_handler->isTrustedModifier($_attr['modifier'], $this->compiler)) {
+ // check for registered or plugin modifier
+ if (isset($compiler->smarty->registered_plugins['modifier'][$_attr['modifier']])) {
+ $function = $compiler->smarty->registered_plugins['modifier'][$_attr['modifier']][0];
+ if (!is_array($function)) {
+ $output = "{$function}({$_attr['params']})";
+ } else if (is_object($function[0])) {
+ $output = 'call_user_func_array($_smarty_tpl->smarty->registered_plugins[\'modifier\'][\'' . $_attr['modifier'] . '\'][0],array(' . $_attr['params'] . '))';
+ } else {
+ $output = 'call_user_func_array(array(\'' . $function[0] . '\',\'' . $function[1] . '\'),array(' . $_attr['params'] . '))';
+ }
+ } else if ($function = $this->compiler->getPlugin($_attr['modifier'], 'modifier')) {
+ if (!is_array($function)) {
+ $output = "{$function}({$_attr['params']})";
+ } else {
+ $output = 'call_user_func_array(array(\'' . $function[0] . '\',\'' . $function[1] . '\'),array(' . $_attr['params'] . '))';
+ }
+ // check if trusted PHP function
+ } else if (is_callable($_attr['modifier'])) {
+ $output = "{$_attr['modifier']}({$_attr['params']})";
+ } else {
+ $this->compiler->trigger_template_error ("unknown modifier \"" . $_attr['modifier'] . "\"");
+ }
+ return $output;
+ }
+ }
+}
+
+?>
diff --git a/libs/sysplugins/smarty_internal_compile_object_block_function.php b/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
index 75a1a7d0..03c2d340 100644
--- a/libs/sysplugins/smarty_internal_compile_object_block_function.php
+++ b/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
@@ -11,7 +11,7 @@
/**
* Smarty Internal Plugin Compile Object Block Function Class
*/
-class Smarty_Internal_Compile_Object_Block_Function extends Smarty_Internal_CompileBase {
+class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Internal_CompileBase {
/**
* Compiles code for the execution of block plugin
*
diff --git a/libs/sysplugins/smarty_internal_compile_object_function.php b/libs/sysplugins/smarty_internal_compile_private_object_function.php
index e0962ca3..d147949a 100644
--- a/libs/sysplugins/smarty_internal_compile_object_function.php
+++ b/libs/sysplugins/smarty_internal_compile_private_object_function.php
@@ -11,7 +11,7 @@
/**
* Smarty Internal Plugin Compile Object Function Class
*/
-class Smarty_Internal_Compile_Object_Function extends Smarty_Internal_CompileBase {
+class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_CompileBase {
/**
* Compiles code for the execution of function plugin
*
diff --git a/libs/sysplugins/smarty_internal_compile_print_expression.php b/libs/sysplugins/smarty_internal_compile_private_print_expression.php
index 57ed85df..5fb7912a 100644
--- a/libs/sysplugins/smarty_internal_compile_print_expression.php
+++ b/libs/sysplugins/smarty_internal_compile_private_print_expression.php
@@ -11,7 +11,7 @@
/**
* Smarty Internal Plugin Compile Print Expression Class
*/
-class Smarty_Internal_Compile_Print_Expression extends Smarty_Internal_CompileBase {
+class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_CompileBase {
/**
* Compiles code for gererting output from any expression
*
@@ -49,7 +49,7 @@ class Smarty_Internal_Compile_Print_Expression extends Smarty_Internal_CompileBa
// display value
$this->compiler->has_output = true;
if (isset($this->compiler->smarty->registered_filters['variable'])) {
- $output = '<?php echo $this->smarty->filter_handler->execute(\'variable\', ' . $_attr['value'] . ',' . $_attr['filter'] . ');?>';
+ $output = '<?php echo Smarty_Internal_Filter_Handler::runFilter(\'variable\', ' . $_attr['value'] . ',$this->smarty);?>';
} else {
$output = '<?php echo ' . $_attr['value'] . ';?>';
}
diff --git a/libs/sysplugins/smarty_internal_compile_private_registered_block.php b/libs/sysplugins/smarty_internal_compile_private_registered_block.php
new file mode 100644
index 00000000..218ec0e6
--- /dev/null
+++ b/libs/sysplugins/smarty_internal_compile_private_registered_block.php
@@ -0,0 +1,79 @@
+<?php
+/**
+* Smarty Internal Plugin Compile Registered Block
+*
+* Compiles code for the execution of a registered block function
+*
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+/**
+* Smarty Internal Plugin Compile Registered Block Class
+*/
+class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_CompileBase {
+ /**
+ * Compiles code for the execution of a block function
+ *
+ * @param array $args array with attributes from parser
+ * @param string $tag name of block function
+ * @param object $compiler compiler object
+ * @return string compiled code
+ */
+ public function compile($args, $compiler, $tag)
+ {
+ $this->compiler = $compiler;
+ if (strlen($tag) < 6 || substr_compare($tag, 'close', -5, 5) != 0) {
+ // opening tag of block plugin
+ $this->required_attributes = array();
+ $this->optional_attributes = array('_any');
+ // check and get attributes
+ $_attr = $this->_get_attributes($args);
+ // convert attributes into parameter array string
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ $_params = 'array(' . implode(",", $_paramsArray) . ')';
+
+ $this->_open_tag($tag, array($_params, $this->compiler->nocache));
+ // maybe nocache because of nocache variables or nocache plugin
+ $this->compiler->nocache = !$compiler->smarty->registered_plugins['block'][$tag][1] | $this->compiler->nocache | $this->compiler->tag_nocache;
+ $function = $compiler->smarty->registered_plugins['block'][$tag][0];
+ // compile code
+ if (!is_array($function)) {
+ $output = '<?php $_block_repeat=true; ' . $function . '(' . $_params . ', null, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl);while ($_block_repeat) { ob_start();?>';
+ } else if (is_object($function[0])) {
+ $output = '<?php $_block_repeat=true; call_user_func_array($_smarty_tpl->smarty->registered_plugins[\'block\'][\'' . $tag . '\'][0],array(' . $_params . ', null, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl));while ($_block_repeat) { ob_start();?>';
+ } else {
+ $output = '<?php $_block_repeat=true; call_user_func_array(array(\'' . $function[0] . '\',\'' . $function[1] . '\'),array(' . $_params . ', null, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl));while ($_block_repeat) { ob_start();?>';
+ }
+ } else {
+ // must endblock be nocache?
+ if ($this->compiler->nocache) {
+ $this->compiler->tag_nocache = true;
+ }
+ $base_tag = substr($tag, 0, -5);
+ // closing tag of block plugin, restore nocache
+ list($_params, $this->compiler->nocache) = $this->_close_tag($base_tag);
+ // This tag does create output
+ $this->compiler->has_output = true;
+ $function = $compiler->smarty->registered_plugins['block'][$base_tag][0];
+ // compile code
+ if (!is_array($function)) {
+ $output = '<?php $_block_content = ob_get_clean(); $_block_repeat=false; echo ' . $function . '(' . $_params . ', $_block_content, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl); }?>';
+ } else if (is_object($function[0])) {
+ $output = '<?php $_block_content = ob_get_clean(); $_block_repeat=false; echo call_user_func_array($_smarty_tpl->smarty->registered_plugins[\'block\'][\'' . $base_tag . '\'][0],array(' . $_params . ', $_block_content, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl)); }?>';
+ } else {
+ $output = '<?php $_block_content = ob_get_clean(); $_block_repeat=false; echo call_user_func_array(array(\'' . $function[0] . '\',\'' . $function[1] . '\'),array(' . $_params . ', $_block_content, $_smarty_tpl->smarty, $_block_repeat, $_smarty_tpl)); }?>';
+ }
+ }
+ return $output;
+ }
+}
+
+?>
diff --git a/libs/sysplugins/smarty_internal_compile_private_registered_function.php b/libs/sysplugins/smarty_internal_compile_private_registered_function.php
new file mode 100644
index 00000000..e38ee4b8
--- /dev/null
+++ b/libs/sysplugins/smarty_internal_compile_private_registered_function.php
@@ -0,0 +1,51 @@
+<?php
+/**
+* Smarty Internal Plugin Compile Registered Function
+*
+* Compiles code for the execution of a registered function
+*
+* @package Smarty
+* @subpackage Compiler
+* @author Uwe Tews
+*/
+/**
+* Smarty Internal Plugin Compile Registered Function Class
+*/
+class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Internal_CompileBase {
+ /**
+ * Compiles code for the execution of a registered function
+ *
+ * @param array $args array with attributes from parser
+ * @param string $tag name of function
+ * @param object $compiler compiler object
+ * @return string compiled code
+ */
+ public function compile($args, $compiler, $tag)
+ {
+ $this->compiler = $compiler;
+ // This tag does create output
+ $this->compiler->has_output = true;
+
+ $this->required_attributes = array();
+ $this->optional_attributes = array('_any');
+ // check and get attributes
+ $_attr = $this->_get_attributes($args);
+ // not cachable?
+ $this->compiler->tag_nocache = !$compiler->smarty->registered_plugins['function'][$tag][1];
+ // convert attributes into parameter array string
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ $_params = 'array(' . implode(",", $_paramsArray) . ')';
+ // compile code
+ $output = '<?php echo call_user_func_array($_smarty_tpl->smarty->registered_plugins[\'function\'][\'' . $tag . '\'][0],array(' . $_params . ',$_smarty_tpl->smarty,$_smarty_tpl));?>';
+ return $output;
+ }
+}
+
+?>
diff --git a/libs/sysplugins/smarty_internal_compile_special_smarty_variable.php b/libs/sysplugins/smarty_internal_compile_private_special_variable.php
index 2405385d..9e261625 100644
--- a/libs/sysplugins/smarty_internal_compile_special_smarty_variable.php
+++ b/libs/sysplugins/smarty_internal_compile_private_special_variable.php
@@ -11,7 +11,7 @@
/**
* Smarty Internal Plugin Compile special Smarty Variable Class
*/
-class Smarty_Internal_Compile_Special_Smarty_Variable extends Smarty_Internal_CompileBase {
+class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_CompileBase {
/**
* Compiles code for the speical $smarty variables
*
@@ -57,7 +57,7 @@ class Smarty_Internal_Compile_Special_Smarty_Variable extends Smarty_Internal_Co
return "'$_template_dir_name'";
case 'version':
- $_version = Smarty::$_version;
+ $_version = Smarty::SMARTY_VERSION;
return "'$_version'";
case 'const':
@@ -78,7 +78,7 @@ class Smarty_Internal_Compile_Special_Smarty_Variable extends Smarty_Internal_Co
return "'$_rdelim'";
default:
- $compiler->trigger_template_error('$smarty.' . trim($_index[0], "'") . ' is an unknown reference');
+ $compiler->trigger_template_error('$smarty.' . trim($_index[0], "'") . ' is invalid');
break;
}
if (isset($_index[1])) {
diff --git a/libs/sysplugins/smarty_internal_compilebase.php b/libs/sysplugins/smarty_internal_compilebase.php
index 61096420..7a398f53 100644
--- a/libs/sysplugins/smarty_internal_compilebase.php
+++ b/libs/sysplugins/smarty_internal_compilebase.php
@@ -8,12 +8,6 @@
* @author Uwe Tews
*/
-/*
-interface TagCompilerInterface {
- public function compile($args, $compiler);
-}
-*/
-
/**
* This class does extend all internal compile plugins
*/
diff --git a/libs/sysplugins/smarty_internal_configfilelexer.php b/libs/sysplugins/smarty_internal_configfilelexer.php
index 5034002f..d7e14164 100644
--- a/libs/sysplugins/smarty_internal_configfilelexer.php
+++ b/libs/sysplugins/smarty_internal_configfilelexer.php
@@ -28,7 +28,7 @@ class Smarty_Internal_Configfilelexer
{
// set instance object
self::instance($this);
- $this->data = $data;
+ $this->data = $data . "\n"; //now all lines are \n-terminated
$this->counter = 0;
$this->line = 1;
$this->smarty = $smarty;
@@ -69,6 +69,7 @@ class Smarty_Internal_Configfilelexer
+
function yylex1()
{
$tokenMap = array (
@@ -79,16 +80,12 @@ class Smarty_Internal_Configfilelexer
5 => 0,
6 => 0,
7 => 0,
- 8 => 1,
- 10 => 0,
- 11 => 0,
- 12 => 0,
- 13 => 0,
+ 8 => 0,
);
if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
- $yy_global_pattern = "/^(\\s*#)|^('[^'\\\\\\\\]*(?:\\\\\\\\.[^'\\\\\\\\]*)*')|^(\"\"\"[^\"\\\\\\\\]*(?:\\\\\\\\.[^\"\\\\\\\\]*)*\"\"\")|^(\"[^\"\\\\\\\\]*(?:\\\\\\\\.[^\"\\\\\\\\]*)*\")|^(\\[)|^(])|^(\\s*=\\s*)|^((\n|\r\n))|^([\s]+)|^(\\.)|^([0-9]*[a-zA-Z_]\\w*)|^(.)/";
+ $yy_global_pattern = "/^(#)|^(\\[)|^(\\])|^(=)|^([ \t\r]+)|^(\n)|^(\\.)|^(\\w+)/";
do {
if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) {
@@ -141,63 +138,321 @@ class Smarty_Internal_Configfilelexer
function yy_r1_1($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART;
+ $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART;
+ $this->yypushstate(self::COMMENT);
}
function yy_r1_2($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_SI_QSTR;
+ $this->token = Smarty_Internal_Configfileparser::TPC_OPENB;
}
function yy_r1_3($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_ML_QSTR;
+ $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB;
}
function yy_r1_4($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_DO_QSTR;
+ $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL;
+ $this->yypushstate(self::VALUE);
}
function yy_r1_5($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_OPENB;
+ return false;
}
function yy_r1_6($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB;
+ $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
}
function yy_r1_7($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL;
+ $this->token = Smarty_Internal_Configfileparser::TPC_DOT;
}
function yy_r1_8($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_EOL;
+ $this->token = Smarty_Internal_Configfileparser::TPC_ID;
}
- function yy_r1_10($yy_subpatterns)
+
+
+
+ function yylex2()
+ {
+ $tokenMap = array (
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ 9 => 0,
+ );
+ if ($this->counter >= strlen($this->data)) {
+ return false; // end of input
+ }
+ $yy_global_pattern = "/^([ \t\r]+)|^(\\d+\\.\\d+(?=[ \t\r]*[\n#]))|^(\\d+(?=[ \t\r]*[\n#]))|^('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#]))|^(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#]))|^(\"\"\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"\"\"(?=[ \t\r]*[\n#]))|^([a-zA-Z]+(?=[ \t\r]*[\n#]))|^([^\n]+?(?=[ \t\r]*\n))|^(\n)/";
+
+ do {
+ if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) {
+ $yysubmatches = $yymatches;
+ $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
+ if (!count($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ 'an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state VALUE');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ if ($tokenMap[$this->token]) {
+ // extract sub-patterns for passing to lex function
+ $yysubmatches = array_slice($yysubmatches, $this->token + 1,
+ $tokenMap[$this->token]);
+ } else {
+ $yysubmatches = array();
+ }
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r2_' . $this->token}($yysubmatches);
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= strlen($this->data)) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const VALUE = 2;
+ function yy_r2_1($yy_subpatterns)
+ {
+
+ return false;
+ }
+ function yy_r2_2($yy_subpatterns)
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_FLOAT;
+ $this->yypopstate();
+ }
+ function yy_r2_3($yy_subpatterns)
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_INT;
+ $this->yypopstate();
+ }
+ function yy_r2_4($yy_subpatterns)
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_SINGLE_QUOTED_STRING;
+ $this->yypopstate();
+ }
+ function yy_r2_5($yy_subpatterns)
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING;
+ $this->yypopstate();
+ }
+ function yy_r2_6($yy_subpatterns)
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_DOUBLE_QUOTED_STRING;
+ $this->yypopstate();
+ }
+ function yy_r2_7($yy_subpatterns)
+ {
+
+ if (!$this->smarty->config_booleanize || !in_array(strtolower($this->value), Array("true", "false", "on", "off", "yes", "no")) ) {
+ $this->yypopstate();
+ $this->yypushstate(self::NAKED_STRING_VALUE);
+ return true; //reprocess in new state
+ } else {
+ $this->token = Smarty_Internal_Configfileparser::TPC_BOOL;
+ $this->yypopstate();
+ }
+ }
+ function yy_r2_8($yy_subpatterns)
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ $this->yypopstate();
+ }
+ function yy_r2_9($yy_subpatterns)
+ {
+
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ $this->value = "";
+ $this->yypopstate();
+ }
+
+
+
+ function yylex3()
+ {
+ $tokenMap = array (
+ 1 => 0,
+ );
+ if ($this->counter >= strlen($this->data)) {
+ return false; // end of input
+ }
+ $yy_global_pattern = "/^([^\n]+?(?=[ \t\r]*\n))/";
+
+ do {
+ if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) {
+ $yysubmatches = $yymatches;
+ $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
+ if (!count($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ 'an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state NAKED_STRING_VALUE');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ if ($tokenMap[$this->token]) {
+ // extract sub-patterns for passing to lex function
+ $yysubmatches = array_slice($yysubmatches, $this->token + 1,
+ $tokenMap[$this->token]);
+ } else {
+ $yysubmatches = array();
+ }
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r3_' . $this->token}($yysubmatches);
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= strlen($this->data)) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const NAKED_STRING_VALUE = 3;
+ function yy_r3_1($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_SPACE;
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ $this->yypopstate();
}
- function yy_r1_11($yy_subpatterns)
+
+
+
+ function yylex4()
{
+ $tokenMap = array (
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ );
+ if ($this->counter >= strlen($this->data)) {
+ return false; // end of input
+ }
+ $yy_global_pattern = "/^([ \t\r]+)|^([^\n]+?(?=[ \t\r]*\n))|^(\n)/";
- $this->token = Smarty_Internal_Configfileparser::TPC_DOT;
+ do {
+ if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) {
+ $yysubmatches = $yymatches;
+ $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
+ if (!count($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ 'an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state COMMENT');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ if ($tokenMap[$this->token]) {
+ // extract sub-patterns for passing to lex function
+ $yysubmatches = array_slice($yysubmatches, $this->token + 1,
+ $tokenMap[$this->token]);
+ } else {
+ $yysubmatches = array();
+ }
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r4_' . $this->token}($yysubmatches);
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= strlen($this->data)) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ } } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+
+ } // end function
+
+
+ const COMMENT = 4;
+ function yy_r4_1($yy_subpatterns)
+ {
+
+ return false;
}
- function yy_r1_12($yy_subpatterns)
+ function yy_r4_2($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_ID;
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
}
- function yy_r1_13($yy_subpatterns)
+ function yy_r4_3($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_OTHER;
+ $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
+ $this->yypopstate();
}
+
}
?>
diff --git a/libs/sysplugins/smarty_internal_configfileparser.php b/libs/sysplugins/smarty_internal_configfileparser.php
index 299cdbd7..68fe97a0 100644
--- a/libs/sysplugins/smarty_internal_configfileparser.php
+++ b/libs/sysplugins/smarty_internal_configfileparser.php
@@ -100,8 +100,6 @@ class Smarty_Internal_Configfileparser#line 79 "smarty_internal_configfileparser
$this->lex = $lex;
$this->smarty = $compiler->smarty;
$this->compiler = $compiler;
- $this->current_section = null;
- $this->hidden_section = false;
}
public static function &instance($new_instance = null)
{
@@ -110,70 +108,145 @@ class Smarty_Internal_Configfileparser#line 79 "smarty_internal_configfileparser
$instance = $new_instance;
return $instance;
}
-
-#line 107 "smarty_internal_configfileparser.php"
- const TPC_OTHER = 1;
- const TPC_OPENB = 2;
+ private function parse_bool($str) {
+ if (in_array(strtolower($str) ,array('on','yes','true'))) {
+ $res = true;
+ } else {
+ assert(in_array(strtolower($str), array('off','no','false')));
+ $res = false;
+ }
+ return $res;
+ }
+
+ private static $escapes_single = Array('\\' => '\\',
+ '\'' => '\'');
+ private static function parse_single_quoted_string($qstr) {
+ $escaped_string = substr($qstr, 1, strlen($qstr)-2); //remove outer quotes
+
+ $ss = preg_split('/(\\\\.)/', $escaped_string, -1, PREG_SPLIT_DELIM_CAPTURE);
+
+ $str = "";
+ foreach ($ss as $s) {
+ if (strlen($s) === 2 && $s[0] === '\\') {
+ if (isset(self::$escapes_single[$s[1]])) {
+ $s = self::$escapes_single[$s[1]];
+ }
+ }
+
+ $str .= $s;
+ }
+
+ return $str;
+ }
+
+ private static function parse_double_quoted_string($qstr) {
+ $inner_str = substr($qstr, 1, strlen($qstr)-2);
+ return stripcslashes($inner_str);
+ }
+
+ private static function parse_tripple_double_quoted_string($qstr) {
+ $inner_str = substr($qstr, 3, strlen($qstr)-6);
+ return stripcslashes($inner_str);
+ }
+
+ private function set_var(Array $var, Array &$target_array) {
+ $key = $var["key"];
+ $value = $var["value"];
+
+ if ($this->smarty->config_overwrite || !isset($target_array['vars'][$key])) {
+ $target_array['vars'][$key] = $value;
+ } else {
+ settype($target_array['vars'][$key], 'array');
+ $target_array['vars'][$key][] = $value;
+ }
+ }
+
+ private function add_global_vars(Array $vars) {
+ if (!isset($this->compiler->config_data['vars'])) {
+ $this->compiler->config_data['vars'] = Array();
+ }
+ foreach ($vars as $var) {
+ $this->set_var($var, $this->compiler->config_data);
+ }
+ }
+
+ private function add_section_vars($section_name, Array $vars) {
+ if (!isset($this->compiler->config_data['sections'][$section_name]['vars'])) {
+ $this->compiler->config_data['sections'][$section_name]['vars'] = Array();
+ }
+ foreach ($vars as $var) {
+ $this->set_var($var, $this->compiler->config_data['sections'][$section_name]);
+ }
+ }
+#line 175 "smarty_internal_configfileparser.php"
+
+ const TPC_OPENB = 1;
+ const TPC_ID = 2;
const TPC_CLOSEB = 3;
const TPC_DOT = 4;
- const TPC_BOOLEANTRUE = 5;
- const TPC_BOOLEANFALSE = 6;
- const TPC_SI_QSTR = 7;
- const TPC_DO_QSTR = 8;
- const TPC_EQUAL = 9;
- const TPC_SPACE = 10;
- const TPC_ID = 11;
- const TPC_EOL = 12;
- const TPC_COMMENTSTART = 13;
- const TPC_ML_QSTR = 14;
- const YY_NO_ACTION = 49;
- const YY_ACCEPT_ACTION = 48;
- const YY_ERROR_ACTION = 47;
+ const TPC_EQUAL = 5;
+ const TPC_FLOAT = 6;
+ const TPC_INT = 7;
+ const TPC_BOOL = 8;
+ const TPC_SINGLE_QUOTED_STRING = 9;
+ const TPC_DOUBLE_QUOTED_STRING = 10;
+ const TPC_TRIPPLE_DOUBLE_QUOTED_STRING = 11;
+ const TPC_NAKED_STRING = 12;
+ const TPC_NEWLINE = 13;
+ const TPC_COMMENTSTART = 14;
+ const YY_NO_ACTION = 58;
+ const YY_ACCEPT_ACTION = 57;
+ const YY_ERROR_ACTION = 56;
- const YY_SZ_ACTTAB = 37;
+ const YY_SZ_ACTTAB = 53;
static public $yy_action = array(
- /* 0 */ 9, 21, 20, 18, 3, 14, 27, 26, 28, 12,
- /* 10 */ 15, 2, 21, 6, 16, 7, 5, 14, 48, 4,
- /* 20 */ 17, 11, 24, 23, 1, 8, 23, 10, 13, 21,
- /* 30 */ 27, 25, 22, 43, 43, 43, 19,
+ /* 0 */ 24, 34, 33, 32, 31, 35, 21, 57, 6, 14,
+ /* 10 */ 22, 7, 2, 9, 29, 8, 2, 9, 19, 11,
+ /* 20 */ 19, 11, 26, 23, 2, 9, 15, 20, 46, 2,
+ /* 30 */ 9, 12, 25, 46, 2, 9, 10, 17, 18, 27,
+ /* 40 */ 16, 5, 13, 30, 28, 46, 5, 46, 3, 4,
+ /* 50 */ 46, 46, 1,
);
static public $yy_lookahead = array(
- /* 0 */ 2, 1, 19, 19, 21, 22, 22, 7, 8, 11,
- /* 10 */ 12, 13, 1, 3, 14, 20, 21, 22, 16, 17,
- /* 20 */ 18, 4, 19, 12, 9, 3, 12, 11, 11, 1,
- /* 30 */ 22, 19, 19, 23, 23, 23, 18,
+ /* 0 */ 6, 7, 8, 9, 10, 11, 12, 16, 17, 2,
+ /* 10 */ 19, 5, 21, 22, 19, 3, 21, 22, 13, 14,
+ /* 20 */ 13, 14, 19, 13, 21, 22, 2, 19, 24, 21,
+ /* 30 */ 22, 1, 19, 24, 21, 22, 3, 12, 13, 18,
+ /* 40 */ 2, 20, 4, 23, 18, 24, 20, 24, 21, 21,
+ /* 50 */ 24, 24, 21,
);
- const YY_SHIFT_USE_DFLT = -3;
- const YY_SHIFT_MAX = 13;
+ const YY_SHIFT_USE_DFLT = -7;
+ const YY_SHIFT_MAX = 17;
static public $yy_shift_ofst = array(
- /* 0 */ -2, 0, 11, 11, -2, 28, 14, 14, 14, 17,
- /* 10 */ 10, 16, 15, 22,
+ /* 0 */ 7, 7, 7, 7, 7, 30, 30, -6, 5, 5,
+ /* 10 */ 5, 25, 38, 24, 6, 12, 33, 10,
);
- const YY_REDUCE_USE_DFLT = -18;
- const YY_REDUCE_MAX = 8;
+ const YY_REDUCE_USE_DFLT = -10;
+ const YY_REDUCE_MAX = 10;
static public $yy_reduce_ofst = array(
- /* 0 */ 2, -5, -17, -16, 18, 8, 13, 12, 3,
+ /* 0 */ -9, 8, 13, 3, -5, 21, 26, 20, 31, 28,
+ /* 10 */ 27,
);
static public $yyExpectedTokens = array(
- /* 0 */ array(2, 11, 12, 13, ),
- /* 1 */ array(1, 7, 8, 14, ),
- /* 2 */ array(1, 12, ),
- /* 3 */ array(1, 12, ),
- /* 4 */ array(2, 11, 12, 13, ),
+ /* 0 */ array(2, 13, 14, ),
+ /* 1 */ array(2, 13, 14, ),
+ /* 2 */ array(2, 13, 14, ),
+ /* 3 */ array(2, 13, 14, ),
+ /* 4 */ array(2, 13, 14, ),
/* 5 */ array(1, ),
- /* 6 */ array(12, ),
- /* 7 */ array(12, ),
- /* 8 */ array(12, ),
- /* 9 */ array(4, 11, ),
- /* 10 */ array(3, ),
- /* 11 */ array(11, ),
- /* 12 */ array(9, ),
- /* 13 */ array(3, ),
- /* 14 */ array(),
- /* 15 */ array(),
- /* 16 */ array(),
- /* 17 */ array(),
+ /* 6 */ array(1, ),
+ /* 7 */ array(6, 7, 8, 9, 10, 11, 12, ),
+ /* 8 */ array(13, 14, ),
+ /* 9 */ array(13, 14, ),
+ /* 10 */ array(13, 14, ),
+ /* 11 */ array(12, 13, ),
+ /* 12 */ array(2, 4, ),
+ /* 13 */ array(2, ),
+ /* 14 */ array(5, ),
+ /* 15 */ array(3, ),
+ /* 16 */ array(3, ),
+ /* 17 */ array(13, ),
/* 18 */ array(),
/* 19 */ array(),
/* 20 */ array(),
@@ -185,35 +258,28 @@ static public $yy_action = array(
/* 26 */ array(),
/* 27 */ array(),
/* 28 */ array(),
+ /* 29 */ array(),
+ /* 30 */ array(),
+ /* 31 */ array(),
+ /* 32 */ array(),
+ /* 33 */ array(),
+ /* 34 */ array(),
+ /* 35 */ array(),
);
static public $yy_default = array(
- /* 0 */ 47, 47, 43, 43, 29, 38, 43, 43, 43, 47,
- /* 10 */ 47, 47, 47, 47, 45, 35, 41, 30, 37, 31,
- /* 20 */ 36, 46, 33, 42, 32, 34, 39, 44, 40,
+ /* 0 */ 44, 44, 44, 44, 44, 39, 39, 56, 56, 56,
+ /* 10 */ 56, 56, 56, 56, 56, 56, 56, 56, 54, 53,
+ /* 20 */ 41, 52, 37, 55, 46, 42, 40, 38, 36, 43,
+ /* 30 */ 45, 50, 49, 48, 47, 51,
);
- const YYNOCODE = 24;
+ const YYNOCODE = 25;
const YYSTACKDEPTH = 100;
- const YYNSTATE = 29;
- const YYNRULE = 18;
+ const YYNSTATE = 36;
+ const YYNRULE = 20;
const YYERRORSYMBOL = 15;
const YYERRSYMDT = 'yy0';
- const YYFALLBACK = 1;
+ const YYFALLBACK = 0;
static public $yyFallback = array(
- 0, /* $ => nothing */
- 0, /* OTHER => nothing */
- 1, /* OPENB => OTHER */
- 1, /* CLOSEB => OTHER */
- 1, /* DOT => OTHER */
- 1, /* BOOLEANTRUE => OTHER */
- 1, /* BOOLEANFALSE => OTHER */
- 1, /* SI_QSTR => OTHER */
- 1, /* DO_QSTR => OTHER */
- 1, /* EQUAL => OTHER */
- 1, /* SPACE => OTHER */
- 1, /* ID => OTHER */
- 0, /* EOL => nothing */
- 0, /* COMMENTSTART => nothing */
- 0, /* ML_QSTR => nothing */
);
static function Trace($TraceFILE, $zTracePrompt)
{
@@ -239,33 +305,35 @@ static public $yy_action = array(
public $yystack = array(); /* The parser's stack */
public $yyTokenName = array(
- '$', 'OTHER', 'OPENB', 'CLOSEB',
- 'DOT', 'BOOLEANTRUE', 'BOOLEANFALSE', 'SI_QSTR',
- 'DO_QSTR', 'EQUAL', 'SPACE', 'ID',
- 'EOL', 'COMMENTSTART', 'ML_QSTR', 'error',
- 'start', 'config', 'config_element', 'opteol',
- 'value', 'text', 'textelement',
+ '$', 'OPENB', 'ID', 'CLOSEB',
+ 'DOT', 'EQUAL', 'FLOAT', 'INT',
+ 'BOOL', 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING', 'TRIPPLE_DOUBLE_QUOTED_STRING',
+ 'NAKED_STRING', 'NEWLINE', 'COMMENTSTART', 'error',
+ 'start', 'global_vars', 'sections', 'var_list',
+ 'section', 'newline', 'var', 'value',
);
static public $yyRuleName = array(
- /* 0 */ "start ::= config",
- /* 1 */ "config ::= config_element",
- /* 2 */ "config ::= config config_element",
- /* 3 */ "config_element ::= OPENB ID CLOSEB opteol",
- /* 4 */ "config_element ::= OPENB DOT ID CLOSEB opteol",
- /* 5 */ "config_element ::= ID EQUAL value opteol",
- /* 6 */ "config_element ::= EOL",
- /* 7 */ "config_element ::= COMMENTSTART opteol",
- /* 8 */ "config_element ::= COMMENTSTART text opteol",
- /* 9 */ "value ::= text",
- /* 10 */ "value ::= SI_QSTR",
- /* 11 */ "value ::= DO_QSTR",
- /* 12 */ "value ::= ML_QSTR",
- /* 13 */ "opteol ::= EOL",
- /* 14 */ "opteol ::=",
- /* 15 */ "text ::= text textelement",
- /* 16 */ "text ::= textelement",
- /* 17 */ "textelement ::= OTHER",
+ /* 0 */ "start ::= global_vars sections",
+ /* 1 */ "global_vars ::= var_list",
+ /* 2 */ "sections ::= section sections",
+ /* 3 */ "sections ::=",
+ /* 4 */ "section ::= OPENB ID CLOSEB newline var_list",
+ /* 5 */ "section ::= OPENB DOT ID CLOSEB newline var_list",
+ /* 6 */ "var_list ::= newline var_list",
+ /* 7 */ "var_list ::= var newline var_list",
+ /* 8 */ "var_list ::=",
+ /* 9 */ "var ::= ID EQUAL value",
+ /* 10 */ "value ::= FLOAT",
+ /* 11 */ "value ::= INT",
+ /* 12 */ "value ::= BOOL",
+ /* 13 */ "value ::= SINGLE_QUOTED_STRING",
+ /* 14 */ "value ::= DOUBLE_QUOTED_STRING",
+ /* 15 */ "value ::= TRIPPLE_DOUBLE_QUOTED_STRING",
+ /* 16 */ "value ::= NAKED_STRING",
+ /* 17 */ "newline ::= NEWLINE",
+ /* 18 */ "newline ::= COMMENTSTART NEWLINE",
+ /* 19 */ "newline ::= COMMENTSTART NAKED_STRING NEWLINE",
);
function tokenName($tokenType)
@@ -539,95 +607,92 @@ static public $yy_action = array(
}
static public $yyRuleInfo = array(
- array( 'lhs' => 16, 'rhs' => 1 ),
+ array( 'lhs' => 16, 'rhs' => 2 ),
array( 'lhs' => 17, 'rhs' => 1 ),
- array( 'lhs' => 17, 'rhs' => 2 ),
- array( 'lhs' => 18, 'rhs' => 4 ),
- array( 'lhs' => 18, 'rhs' => 5 ),
- array( 'lhs' => 18, 'rhs' => 4 ),
- array( 'lhs' => 18, 'rhs' => 1 ),
array( 'lhs' => 18, 'rhs' => 2 ),
- array( 'lhs' => 18, 'rhs' => 3 ),
- array( 'lhs' => 20, 'rhs' => 1 ),
- array( 'lhs' => 20, 'rhs' => 1 ),
- array( 'lhs' => 20, 'rhs' => 1 ),
- array( 'lhs' => 20, 'rhs' => 1 ),
- array( 'lhs' => 19, 'rhs' => 1 ),
+ array( 'lhs' => 18, 'rhs' => 0 ),
+ array( 'lhs' => 20, 'rhs' => 5 ),
+ array( 'lhs' => 20, 'rhs' => 6 ),
+ array( 'lhs' => 19, 'rhs' => 2 ),
+ array( 'lhs' => 19, 'rhs' => 3 ),
array( 'lhs' => 19, 'rhs' => 0 ),
- array( 'lhs' => 21, 'rhs' => 2 ),
+ array( 'lhs' => 22, 'rhs' => 3 ),
+ array( 'lhs' => 23, 'rhs' => 1 ),
+ array( 'lhs' => 23, 'rhs' => 1 ),
+ array( 'lhs' => 23, 'rhs' => 1 ),
+ array( 'lhs' => 23, 'rhs' => 1 ),
+ array( 'lhs' => 23, 'rhs' => 1 ),
+ array( 'lhs' => 23, 'rhs' => 1 ),
+ array( 'lhs' => 23, 'rhs' => 1 ),
array( 'lhs' => 21, 'rhs' => 1 ),
- array( 'lhs' => 22, 'rhs' => 1 ),
+ array( 'lhs' => 21, 'rhs' => 2 ),
+ array( 'lhs' => 21, 'rhs' => 3 ),
);
static public $yyReduceMap = array(
0 => 0,
+ 2 => 0,
+ 3 => 0,
+ 17 => 0,
+ 18 => 0,
+ 19 => 0,
1 => 1,
- 9 => 1,
- 16 => 1,
- 17 => 1,
- 2 => 2,
- 15 => 2,
- 3 => 3,
4 => 4,
5 => 5,
6 => 6,
- 7 => 6,
- 8 => 6,
+ 16 => 6,
+ 7 => 7,
+ 8 => 8,
+ 9 => 9,
10 => 10,
11 => 11,
- 12 => 11,
+ 12 => 12,
+ 13 => 13,
+ 14 => 14,
+ 15 => 15,
);
-#line 67 "smarty_internal_configfileparser.y"
- function yy_r0(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
-#line 577 "smarty_internal_configfileparser.php"
-#line 73 "smarty_internal_configfileparser.y"
- function yy_r1(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
-#line 580 "smarty_internal_configfileparser.php"
-#line 75 "smarty_internal_configfileparser.y"
- function yy_r2(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 583 "smarty_internal_configfileparser.php"
-#line 81 "smarty_internal_configfileparser.y"
- function yy_r3(){ $this->hidden_section = false; $this->current_section = $this->yystack[$this->yyidx + -2]->minor; $this->_retvalue =''; }
-#line 586 "smarty_internal_configfileparser.php"
-#line 83 "smarty_internal_configfileparser.y"
- function yy_r4(){ if ($this->smarty->config_read_hidden) {
- $this->hidden_section = false; $this->current_section = $this->yystack[$this->yyidx + -2]->minor;
- } else {$this->hidden_section = true; } $this->_retvalue =''; }
-#line 591 "smarty_internal_configfileparser.php"
-#line 87 "smarty_internal_configfileparser.y"
- function yy_r5(){if (!$this->hidden_section) {
- $value=$this->yystack[$this->yyidx + -1]->minor;
- if ($this->smarty->config_booleanize) {
- if (in_array(strtolower($value),array('on','yes','true')))
- $value = true;
- else if (in_array(strtolower($value),array('off','no','false')))
- $value = false;
- }
- if ($this->current_section == null) {
- if ($this->smarty->config_overwrite || !isset($this->compiler->config_data['vars'][$this->yystack[$this->yyidx + -3]->minor])) {
- $this->compiler->config_data['vars'][$this->yystack[$this->yyidx + -3]->minor]=$value;
- } else {
- settype($this->compiler->config_data['vars'][$this->yystack[$this->yyidx + -3]->minor], 'array');
- $this->compiler->config_data['vars'][$this->yystack[$this->yyidx + -3]->minor][]=$value;
- }
- } else {
- if ($this->smarty->config_overwrite || !isset($this->compiler->config_data['sections'][$this->current_section]['vars'][$this->yystack[$this->yyidx + -3]->minor])) {
- $this->compiler->config_data['sections'][$this->current_section]['vars'][$this->yystack[$this->yyidx + -3]->minor]=$value;
- } else {
- settype($this->compiler->config_data['sections'][$this->current_section]['vars'][$this->yystack[$this->yyidx + -3]->minor], 'array');
- $this->compiler->config_data['sections'][$this->current_section]['vars'][$this->yystack[$this->yyidx + -3]->minor][]=$value;
- }
- }} $this->_retvalue =''; }
-#line 616 "smarty_internal_configfileparser.php"
-#line 111 "smarty_internal_configfileparser.y"
- function yy_r6(){ $this->_retvalue =''; }
-#line 619 "smarty_internal_configfileparser.php"
-#line 116 "smarty_internal_configfileparser.y"
- function yy_r10(){$this->_retvalue = trim($this->yystack[$this->yyidx + 0]->minor,"'"); }
-#line 622 "smarty_internal_configfileparser.php"
-#line 117 "smarty_internal_configfileparser.y"
- function yy_r11(){$this->_retvalue = trim($this->yystack[$this->yyidx + 0]->minor,'"'); }
-#line 625 "smarty_internal_configfileparser.php"
+#line 127 "smarty_internal_configfileparser.y"
+ function yy_r0(){ $this->_retvalue = null; }
+#line 651 "smarty_internal_configfileparser.php"
+#line 130 "smarty_internal_configfileparser.y"
+ function yy_r1(){ $this->add_global_vars($this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = null; }
+#line 654 "smarty_internal_configfileparser.php"
+#line 136 "smarty_internal_configfileparser.y"
+ function yy_r4(){ $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = null; }
+#line 657 "smarty_internal_configfileparser.php"
+#line 137 "smarty_internal_configfileparser.y"
+ function yy_r5(){ if ($this->smarty->config_read_hidden) { $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor); } $this->_retvalue = null; }
+#line 660 "smarty_internal_configfileparser.php"
+#line 141 "smarty_internal_configfileparser.y"
+ function yy_r6(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
+#line 663 "smarty_internal_configfileparser.php"
+#line 142 "smarty_internal_configfileparser.y"
+ function yy_r7(){ $this->_retvalue = array_merge(Array($this->yystack[$this->yyidx + -2]->minor), $this->yystack[$this->yyidx + 0]->minor); }
+#line 666 "smarty_internal_configfileparser.php"
+#line 143 "smarty_internal_configfileparser.y"
+ function yy_r8(){ $this->_retvalue = Array(); }
+#line 669 "smarty_internal_configfileparser.php"
+#line 147 "smarty_internal_configfileparser.y"
+ function yy_r9(){ $this->_retvalue = Array("key" => $this->yystack[$this->yyidx + -2]->minor, "value" => $this->yystack[$this->yyidx + 0]->minor); }
+#line 672 "smarty_internal_configfileparser.php"
+#line 149 "smarty_internal_configfileparser.y"
+ function yy_r10(){ $this->_retvalue = (float) $this->yystack[$this->yyidx + 0]->minor; }
+#line 675 "smarty_internal_configfileparser.php"
+#line 150 "smarty_internal_configfileparser.y"
+ function yy_r11(){ $this->_retvalue = (int) $this->yystack[$this->yyidx + 0]->minor; }
+#line 678 "smarty_internal_configfileparser.php"
+#line 151 "smarty_internal_configfileparser.y"
+ function yy_r12(){ $this->_retvalue = $this->parse_bool($this->yystack[$this->yyidx + 0]->minor); }
+#line 681 "smarty_internal_configfileparser.php"
+#line 152 "smarty_internal_configfileparser.y"
+ function yy_r13(){ $this->_retvalue = self::parse_single_quoted_string($this->yystack[$this->yyidx + 0]->minor); }
+#line 684 "smarty_internal_configfileparser.php"
+#line 153 "smarty_internal_configfileparser.y"
+ function yy_r14(){ $this->_retvalue = self::parse_double_quoted_string($this->yystack[$this->yyidx + 0]->minor); }
+#line 687 "smarty_internal_configfileparser.php"
+#line 154 "smarty_internal_configfileparser.y"
+ function yy_r15(){ $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[$this->yyidx + 0]->minor); }
+#line 690 "smarty_internal_configfileparser.php"
private $_retvalue;
@@ -684,12 +749,12 @@ static public $yy_action = array(
function yy_syntax_error($yymajor, $TOKEN)
{
-#line 52 "smarty_internal_configfileparser.y"
+#line 120 "smarty_internal_configfileparser.y"
$this->internalError = true;
$this->yymajor = $yymajor;
$this->compiler->trigger_config_file_error();
-#line 688 "smarty_internal_configfileparser.php"
+#line 753 "smarty_internal_configfileparser.php"
}
function yy_accept()
@@ -700,13 +765,13 @@ static public $yy_action = array(
while ($this->yyidx >= 0) {
$stack = $this->yy_pop_parser_stack();
}
-#line 44 "smarty_internal_configfileparser.y"
+#line 112 "smarty_internal_configfileparser.y"
$this->successful = !$this->internalError;
$this->internalError = false;
$this->retvalue = $this->_retvalue;
//echo $this->retvalue."\n\n";
-#line 706 "smarty_internal_configfileparser.php"
+#line 771 "smarty_internal_configfileparser.php"
}
function doParse($yymajor, $yytokenvalue)
diff --git a/libs/sysplugins/smarty_internal_templatebase.php b/libs/sysplugins/smarty_internal_data.php
index b523a296..61b9b52b 100644
--- a/libs/sysplugins/smarty_internal_templatebase.php
+++ b/libs/sysplugins/smarty_internal_data.php
@@ -1,7 +1,7 @@
<?php
/**
-* Smarty Internal Plugin TemplateBase
+* Smarty Internal Plugin Data
*
* This file contains the basic classes and methodes for template and variable creation
*
@@ -13,7 +13,7 @@
/**
* Base class with template and variable methodes
*/
-class Smarty_Internal_TemplateBase {
+class Smarty_Internal_Data {
// class used for templates
public $template_class = 'Smarty_Internal_Template';
@@ -300,8 +300,8 @@ class Smarty_Internal_TemplateBase {
}
if (!is_object($template)) {
// we got a template resource
- $_templateId = $this->buildTemplateId ($template, $cache_id, $compile_id);
// already in template cache?
+ $_templateId = crc32($template . $cache_id . $compile_id);
if (isset($this->smarty->template_objects[$_templateId]) && $this->smarty->caching) {
// return cached template object
$tpl = $this->smarty->template_objects[$_templateId];
@@ -324,21 +324,6 @@ class Smarty_Internal_TemplateBase {
}
/**
- * generates a template id
- *
- * @param string $_resource the resource handle of the template file
- * @param mixed $_cache_id cache id to be used with this template
- * @param mixed $_compile_id compile id to be used with this template
- * @returns string a unique template id
- */
- function buildTemplateId ($_resource, $_cache_id, $_compile_id)
- {
- $_cache_id = isset($_cache_id) ? preg_replace('![^\w\|]+!','_',$_cache_id) : null;
- $_compile_id = isset($_compile_id) ? preg_replace('![^\w\|]+!','_',$_compile_id) : null;
- return crc32($_resource . $_cache_id . $_compile_id);
- }
-
- /**
* return current time
*
* @returns double current time
@@ -358,7 +343,7 @@ class Smarty_Internal_TemplateBase {
*
* @param object $parent tpl_vars next higher level of Smarty variables
*/
-class Smarty_Data extends Smarty_Internal_TemplateBase {
+class Smarty_Data extends Smarty_Internal_Data {
// array of variable objects
public $tpl_vars = array();
// back pointer to parent object
diff --git a/libs/sysplugins/smarty_internal_debug.php b/libs/sysplugins/smarty_internal_debug.php
index 6f5d1424..831cabe6 100644
--- a/libs/sysplugins/smarty_internal_debug.php
+++ b/libs/sysplugins/smarty_internal_debug.php
@@ -12,7 +12,7 @@
/**
* Smarty Internal Plugin Debug Class
*/
-class Smarty_Internal_Debug extends Smarty_Internal_TemplateBase {
+class Smarty_Internal_Debug extends Smarty_Internal_Data {
// template data
static $template_data = array();
diff --git a/libs/sysplugins/smarty_internal_run_filter.php b/libs/sysplugins/smarty_internal_filter_handler.php
index f62cbe75..1d81636e 100644
--- a/libs/sysplugins/smarty_internal_run_filter.php
+++ b/libs/sysplugins/smarty_internal_filter_handler.php
@@ -1,9 +1,9 @@
<?php
/**
-* Smarty Internal Plugin Run Filter
+* Smarty Internal Plugin Filter Handler
*
-* Smarty run filter class
+* Smarty filter handler class
*
* @package Smarty
* @subpackage PluginsInternal
@@ -13,11 +13,7 @@
/**
* Class for filter processing
*/
-class Smarty_Internal_Run_Filter {
- function __construct($smarty)
- {
- $this->smarty = $smarty;
- }
+class Smarty_Internal_Filter_Handler {
/**
* Run filters over content
*
@@ -30,22 +26,22 @@ class Smarty_Internal_Run_Filter {
* @param string $content the content which shall be processed by the filters
* @return string the filtered content
*/
- public function execute($type, $content, $flag = null)
+ static function runFilter($type, $content, $smarty, $flag = null)
{
$output = $content;
- if ($type != 'variable' || ($this->smarty->variable_filter && $flag !== false) || $flag === true) {
+ if ($type != 'variable' || ($smarty->variable_filter && $flag !== false) || $flag === true) {
// loop over autoload filters of specified type
- if (!empty($this->smarty->autoload_filters[$type])) {
- foreach ((array)$this->smarty->autoload_filters[$type] as $name) {
+ if (!empty($smarty->autoload_filters[$type])) {
+ foreach ((array)$smarty->autoload_filters[$type] as $name) {
$plugin_name = "Smarty_{$type}filter_{$name}";
- if ($this->smarty->loadPlugin($plugin_name)) {
+ if ($smarty->loadPlugin($plugin_name)) {
// use class plugin if found
if (class_exists($plugin_name, false)) {
// loaded class of filter plugin
- $output = call_user_func_array(array($plugin_name, 'execute'), array($output, $this->smarty));
+ $output = call_user_func_array(array($plugin_name, 'execute'), array($output, $smarty));
} elseif (function_exists($plugin_name)) {
// use loaded Smarty2 style plugin
- $output = call_user_func_array($plugin_name, array($output, $this->smarty));
+ $output = call_user_func_array($plugin_name, array($output, $smarty));
}
} else {
// nothing found, throw exception
@@ -54,9 +50,9 @@ class Smarty_Internal_Run_Filter {
}
}
// loop over registerd filters of specified type
- if (!empty($this->smarty->registered_filters[$type])) {
- foreach ($this->smarty->registered_filters[$type] as $key => $name) {
- $output = call_user_func_array($this->smarty->registered_filters[$type][$key], array($output, $this->smarty));
+ if (!empty($smarty->registered_filters[$type])) {
+ foreach ($smarty->registered_filters[$type] as $key => $name) {
+ $output = call_user_func_array($smarty->registered_filters[$type][$key], array($output, $smarty));
}
}
}
diff --git a/libs/sysplugins/smarty_internal_plugin_handler.php b/libs/sysplugins/smarty_internal_plugin_handler.php
deleted file mode 100644
index 367382c0..00000000
--- a/libs/sysplugins/smarty_internal_plugin_handler.php
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-
-/**
-* Smarty Internal Plugin Handler
-*
-* @package Smarty
-* @subpackage PluginsInternal
-* @author Uwe Tews
-*/
-/**
-* Smarty Internal Plugin Handler Class
-*/
-class Smarty_Internal_Plugin_Handler {
- function __construct($smarty)
- {
- $this->smarty = $smarty;
- }
- /**
- * Call a Smarty plugin
- *
- * @param string $name block function name
- * @param array $args $args[0] = array of plugin attributes and $args[1] = plugin types to search for
- */
- public function __call($name, $args)
- {
- if ($this->loadSmartyPlugin($name, $args[1])) {
- // call plugin
- return call_user_func_array($this->smarty->registered_plugins[$name][1], $args[0]);
- } else {
- // plugin not found
- throw new Exception("Unable to load plugin {$name}");
- }
- }
- public function executeModifier($name, $args, $check_array)
- {
- if ($this->loadSmartyPlugin($name, 'modifier')) {
- // call plugin
- if (!$check_array || !is_array($args[0])) {
- return call_user_func_array($this->smarty->registered_plugins[$name][1], $args);
- } else {
- $args0 = $args[0];
- foreach ($args0 as $key => $arg0) {
- $args[0] = $arg0;
- $result[$key] = call_user_func_array($this->smarty->registered_plugins[$name][1], $args);
- }
- return $result;
- }
- } elseif (is_callable($name)) {
- if (!$check_array || !is_array($args[0])) {
- return call_user_func_array($name, $args);
- } else {
- $args0 = $args[0];
- foreach ($args0 as $key => $arg0) {
- $args[0] = $arg0;
- $result[$key] = call_user_func_array($name, $args);
- }
- return $result;
- }
- } else {
- // plugin not found
- throw new Exception("Unable to load plugin {$name}");
- }
- }
- /**
- * Lazy loads plugin files
- * class name format: Smarty_PluginType_FuncName
- * plugin filename format: plugintype.funcname.php
- *
- * @param string $name plugin name
- * @param array $type array of plugin types to search for
- */
- public function loadSmartyPlugin($name, $type)
- {
- // load plugin if missing
- if (isset($this->smarty->registered_plugins[$name])) {
- return true;
- } else {
- foreach ((array)$type as $plugin_type) {
- $plugin = 'smarty_' . $plugin_type . '_' . $name;
- if ($this->smarty->loadPlugin($plugin)) {
- if (class_exists($plugin, false)) {
- $plugin = array(new $plugin, 'execute');
- }
- if (is_callable($plugin)) {
- $this->smarty->registered_plugins[$name] = array($plugin_type, $plugin, true);
- return true;
- } else {
- throw new Exception("Plugin \"{$name}\" not callable");
- }
- }
- }
- }
- if (!empty($this->smarty->default_plugin_handler_func)) {
- if (!is_callable($this->smarty->default_plugin_handler_func)) {
- throw new Exception("Default template handler not callable");
- } else {
- return call_user_func_array($this->smarty->default_plugin_handler_func, array($name, $type, &$this));
- }
- }
- return false;
- }
-}
-
-?>
diff --git a/libs/sysplugins/smarty_internal_resource_extends.php b/libs/sysplugins/smarty_internal_resource_extends.php
index 81f0e78b..4a045767 100644
--- a/libs/sysplugins/smarty_internal_resource_extends.php
+++ b/libs/sysplugins/smarty_internal_resource_extends.php
@@ -21,6 +21,9 @@ class Smarty_Internal_Resource_Extends {
public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler';
public $template_lexer_class = 'Smarty_Internal_Templatelexer';
public $template_parser_class = 'Smarty_Internal_Templateparser';
+ // properties
+ public $usesCompiler = true;
+ public $isEvaluated = false;
/**
* Return flag if template source is existing
@@ -136,27 +139,6 @@ class Smarty_Internal_Resource_Extends {
}
/**
- * Return flag that this resource uses the compiler
- *
- * @return boolean true
- */
- public function usesCompiler()
- {
- // template has tags, uses compiler
- return true;
- }
-
- /**
- * Return flag that this is not evaluated
- *
- * @return boolean false
- */
- public function isEvaluated()
- {
- // save the compiled file to disk, do not evaluate
- return false;
- }
- /**
* Get filepath to compiled template
*
* @param object $template template object
diff --git a/libs/sysplugins/smarty_internal_resource_file.php b/libs/sysplugins/smarty_internal_resource_file.php
index db876e5e..b0a5163c 100644
--- a/libs/sysplugins/smarty_internal_resource_file.php
+++ b/libs/sysplugins/smarty_internal_resource_file.php
@@ -21,6 +21,9 @@ class Smarty_Internal_Resource_File {
public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler';
public $template_lexer_class = 'Smarty_Internal_Templatelexer';
public $template_parser_class = 'Smarty_Internal_Templateparser';
+ // properties
+ public $usesCompiler = true;
+ public $isEvaluated = false;
/**
* Return flag if template source is existing
@@ -83,27 +86,6 @@ class Smarty_Internal_Resource_File {
}
/**
- * Return flag that this resource uses the compiler
- *
- * @return boolean true
- */
- public function usesCompiler()
- {
- // template has tags, uses compiler
- return true;
- }
-
- /**
- * Return flag that this is not evaluated
- *
- * @return boolean false
- */
- public function isEvaluated()
- {
- // save the compiled file to disk, do not evaluate
- return false;
- }
- /**
* Get filepath to compiled template
*
* @param object $_template template object
diff --git a/libs/sysplugins/smarty_internal_resource_php.php b/libs/sysplugins/smarty_internal_resource_php.php
index f3ed97db..7dee7ec7 100644
--- a/libs/sysplugins/smarty_internal_resource_php.php
+++ b/libs/sysplugins/smarty_internal_resource_php.php
@@ -21,6 +21,9 @@ class Smarty_Internal_Resource_PHP {
$this->smarty = $smarty;
ini_set('short_open_tag', '1');
}
+ // properties
+ public $usesCompiler = false;
+ public $isEvaluated = false;
/**
* Return flag if template source is existing
@@ -80,27 +83,6 @@ class Smarty_Internal_Resource_PHP {
}
}
- /**
- * Return flag that this resource not use the compiler
- *
- * @return boolean false
- */
- public function usesCompiler()
- {
- // does not use compiler, template is PHP
- return false;
- }
-
- /**
- * Return flag that this is not evaluated
- *
- * @return boolean false
- */
- public function isEvaluated()
- {
- // does not use compiler, must be false
- return false;
- }
/**
* Get filepath to compiled template
diff --git a/libs/sysplugins/smarty_internal_resource_registered.php b/libs/sysplugins/smarty_internal_resource_registered.php
index e24b5e3d..33868450 100644
--- a/libs/sysplugins/smarty_internal_resource_registered.php
+++ b/libs/sysplugins/smarty_internal_resource_registered.php
@@ -22,6 +22,9 @@ class Smarty_Internal_Resource_Registered {
public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler';
public $template_lexer_class = 'Smarty_Internal_Templatelexer';
public $template_parser_class = 'Smarty_Internal_Templateparser';
+ // properties
+ public $usesCompiler = true;
+ public $isEvaluated = false;
/**
* Return flag if template source is existing
@@ -94,28 +97,6 @@ class Smarty_Internal_Resource_Registered {
}
/**
- * Return flag that this resource uses the compiler
- *
- * @return boolean true
- */
- public function usesCompiler()
- {
- // resource string is template, needs compiler
- return true;
- }
-
- /**
- * Return flag that this resource is evaluated
- *
- * @return boolean true
- */
- public function isEvaluated()
- {
- // compiled template is evaluated instead of saved to disk
- return false;
- }
-
- /**
* Get filepath to compiled template
*
* @param object $_template template object
diff --git a/libs/sysplugins/smarty_internal_resource_stream.php b/libs/sysplugins/smarty_internal_resource_stream.php
index 16e5a417..2024a3a7 100644
--- a/libs/sysplugins/smarty_internal_resource_stream.php
+++ b/libs/sysplugins/smarty_internal_resource_stream.php
@@ -22,6 +22,9 @@ class Smarty_Internal_Resource_Stream {
public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler';
public $template_lexer_class = 'Smarty_Internal_Templatelexer';
public $template_parser_class = 'Smarty_Internal_Templateparser';
+ // properties
+ public $usesCompiler = true;
+ public $isEvaluated = true;
/**
* Return flag if template source is existing
@@ -81,28 +84,6 @@ class Smarty_Internal_Resource_Stream {
}
/**
- * Return flag that this resource uses the compiler
- *
- * @return boolean true
- */
- public function usesCompiler()
- {
- // resource string is template, needs compiler
- return true;
- }
-
- /**
- * Return flag that this resource is evaluated
- *
- * @return boolean true
- */
- public function isEvaluated()
- {
- // compiled template is evaluated instead of saved to disk
- return true;
- }
-
- /**
* Get filepath to compiled template
*
* @param object $_template template object
diff --git a/libs/sysplugins/smarty_internal_resource_string.php b/libs/sysplugins/smarty_internal_resource_string.php
index f7b7b853..ad519b38 100644
--- a/libs/sysplugins/smarty_internal_resource_string.php
+++ b/libs/sysplugins/smarty_internal_resource_string.php
@@ -22,6 +22,9 @@ class Smarty_Internal_Resource_String {
public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler';
public $template_lexer_class = 'Smarty_Internal_Templatelexer';
public $template_parser_class = 'Smarty_Internal_Templateparser';
+ // properties
+ public $usesCompiler = true;
+ public $isEvaluated = true;
/**
* Return flag if template source is existing
@@ -72,28 +75,6 @@ class Smarty_Internal_Resource_String {
}
/**
- * Return flag that this resource uses the compiler
- *
- * @return boolean true
- */
- public function usesCompiler()
- {
- // resource string is template, needs compiler
- return true;
- }
-
- /**
- * Return flag that this resource is evaluated
- *
- * @return boolean true
- */
- public function isEvaluated()
- {
- // compiled template is evaluated instead of saved to disk
- return true;
- }
-
- /**
* Get filepath to compiled template
*
* @param object $_template template object
diff --git a/libs/sysplugins/smarty_internal_smartytemplatecompiler.php b/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
index c627cc19..04799b0c 100644
--- a/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
+++ b/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
@@ -37,12 +37,12 @@ class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCom
tags in the templates are replaces with PHP code,
then written to compiled files. */
// init the lexer/parser to compile the template
- $this->lex = new $this->lexer_class($_content,$this->smarty);
+ $this->lex = new $this->lexer_class($_content, $this);
$this->parser = new $this->parser_class($this->lex, $this);
- //$this->parser->PrintTrace();
+ // $this->parser->PrintTrace();
// get tokens from lexer and parse them
while ($this->lex->yylex() && !$this->abort_and_recompile) {
- //echo "<pre>Line {$this->lex->line} Parsing {$this->parser->yyTokenName[$this->lex->token]} Token ".htmlentities($this->lex->value)."</pre>";
+ // echo "<pre>Line {$this->lex->line} Parsing {$this->parser->yyTokenName[$this->lex->token]} Token ".htmlentities($this->lex->value)."</pre>";
$this->parser->doParse($this->lex->token, $this->lex->value);
}
@@ -61,7 +61,8 @@ class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCom
if (!$this->compile_error) {
// return compiled code
- return str_replace(array("?>\n<?php","?><?php"), array('',''), $this->parser->retvalue);
+ // return str_replace(array("? >\n<?php","? ><?php"), array('',''), $this->parser->retvalue);
+ return $this->parser->retvalue;
} else {
// compilation error
return false;
diff --git a/libs/sysplugins/smarty_internal_template.php b/libs/sysplugins/smarty_internal_template.php
index 82fa24bd..33be8d83 100644
--- a/libs/sysplugins/smarty_internal_template.php
+++ b/libs/sysplugins/smarty_internal_template.php
@@ -13,7 +13,7 @@
/**
* Main class with template data structures and methods
*/
-class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
+class Smarty_Internal_Template extends Smarty_Internal_Data {
// object cache
public $compiler_object = null;
public $cacher_object = null;
@@ -30,9 +30,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
public $template_resource = null;
public $resource_type = null;
public $resource_name = null;
- private $resource_object = null;
- private $usesCompiler = null;
- private $isEvaluated = null;
+ public $resource_object = null;
private $isExisting = null;
// Template source
public $template_filepath = null;
@@ -65,7 +63,9 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
// special properties
public $properties = array();
// storage for block data
- public $block_data = array();
+ public $block_data = array();
+ // required plugins
+ public $required_plugins = array();
/**
* Create template data object
@@ -89,7 +89,6 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
if ($this->caching === true) $this->caching = SMARTY_CACHING_LIFETIME_CURRENT;
$this->cache_lifetime = $_cache_lifetime === null ?$this->smarty->cache_lifetime : $_cache_lifetime;
$this->force_cache = $this->smarty->force_cache;
- $this->cacher_class = $this->smarty->cacher_class;
$this->security = $this->smarty->security;
$this->parent = $_parent;
$this->properties['file_dependency'] = array();
@@ -102,7 +101,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
throw new Exception ("Unable to parse resource name \"{$template_resource}\"");
}
// load cache resource
- if (!$this->isEvaluated() && ($this->caching == 1 || $this->caching == 2)) {
+ if (!$this->resource_object->isEvaluated && ($this->caching == 1 || $this->caching == 2)) {
$this->cache_resource_object = $this->smarty->loadCacheResource();
}
}
@@ -169,33 +168,6 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
}
return $this->isExisting;
}
- /**
- * Returns if the template resource uses the Smarty compiler
- *
- * The status is determined by the actual resource handler
- *
- * @return boolean true if the template will use the compiler
- */
- public function usesCompiler ()
- {
- return $this->usesCompiler === null ?
- $this->usesCompiler = $this->resource_object->usesCompiler() :
- $this->usesCompiler;
- }
-
- /**
- * Returns if the compiled template is stored or just evaluated in memory
- *
- * The status is determined by the actual resource handler
- *
- * @return boolean true if the compiled template has to be evaluated
- */
- public function isEvaluated ()
- {
- return $this->isEvaluated === null ?
- $this->isEvaluated = $this->resource_object->isEvaluated() :
- $this->isEvaluated;
- }
/**
* Returns if the current template must be compiled by the Smarty compiler
@@ -208,7 +180,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
{
$this->isExisting(true);
if ($this->mustCompile === null) {
- $this->mustCompile = ($this->usesCompiler() && ($this->force_compile || $this->isEvaluated() || $this->getCompiledTimestamp () === false ||
+ $this->mustCompile = ($this->resource_object->usesCompiler && ($this->force_compile || $this->resource_object->isEvaluated || $this->getCompiledTimestamp () === false ||
// ($this->smarty->compile_check && $this->getCompiledTimestamp () !== $this->getTemplateTimestamp ())));
($this->smarty->compile_check && $this->getCompiledTimestamp () < $this->getTemplateTimestamp ())));
}
@@ -223,7 +195,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
public function getCompiledFilepath ()
{
return $this->compiled_filepath === null ?
- ($this->compiled_filepath = !$this->isEvaluated() ? $this->resource_object->getCompiledFilepath($this) : false) :
+ ($this->compiled_filepath = !$this->resource_object->isEvaluated ? $this->resource_object->getCompiledFilepath($this) : false) :
$this->compiled_filepath;
}
@@ -235,7 +207,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
public function getCompiledTimestamp ()
{
return $this->compiled_timestamp === null ?
- ($this->compiled_timestamp = (!$this->isEvaluated() && file_exists($this->getCompiledFilepath())) ? filemtime($this->getCompiledFilepath()) : false) :
+ ($this->compiled_timestamp = (!$this->resource_object->isEvaluated && file_exists($this->getCompiledFilepath())) ? filemtime($this->getCompiledFilepath()) : false) :
$this->compiled_timestamp;
}
@@ -254,7 +226,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
$this->compileTemplateSource();
} else {
if ($this->compiled_template === null) {
- $this->compiled_template = !$this->isEvaluated() && $this->usesCompiler() ? file_get_contents($this->getCompiledFilepath()) : false;
+ $this->compiled_template = !$this->resource_object->isEvaluated && $this->resource_object->usesCompiler ? file_get_contents($this->getCompiledFilepath()) : false;
}
}
}
@@ -268,7 +240,8 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
*/
public function compileTemplateSource ()
{
- if (!$this->isEvaluated) {
+ if (!$this->resource_object->isEvaluated) {
+ $this->properties['file_dependency'] = array();
$this->properties['file_dependency']['F' . abs(crc32($this->getTemplateFilepath()))] = array($this->getTemplateFilepath(), $this->getTemplateTimestamp());
}
if ($this->smarty->debugging) {
@@ -278,17 +251,12 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
if (!is_object($this->compiler_object)) {
// load compiler
$this->smarty->loadPlugin($this->resource_object->compiler_class);
- $this->compiler_object = new $this->resource_object->compiler_class($this->resource_object->template_lexer_class, $this->resource_object->template_parser_class, $this->smarty);
- // load cacher
- if ($this->caching) {
- $this->smarty->loadPlugin($this->cacher_class);
- $this->cacher_object = new $this->cacher_class($this->smarty);
- }
+ $this->compiler_object = new $this->resource_object->compiler_class($this->resource_object->template_lexer_class, $this->resource_object->template_parser_class, $this->smarty);
}
// call compiler
if ($this->compiler_object->compileTemplate($this)) {
// compiling succeded
- if (!$this->isEvaluated()) {
+ if (!$this->resource_object->isEvaluated) {
// write compiled template
Smarty_Internal_Write_File::writeFile($this->getCompiledFilepath(), $this->compiled_template, $this->smarty);
// make template and compiled file timestamp match
@@ -314,28 +282,28 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
/**
* Returns the filepath of the cached template output
*
- * The filepath is determined by the actual resource handler of the cacher
+ * The filepath is determined by the actual cache resource
*
* @return string the cache filepath
*/
public function getCachedFilepath ()
{
return $this->cached_filepath === null ?
- $this->cached_filepath = ($this->isEvaluated() || !($this->caching == 1 || $this->caching == 2)) ? false : $this->cache_resource_object->getCachedFilepath($this) :
+ $this->cached_filepath = ($this->resource_object->isEvaluated || !($this->caching == 1 || $this->caching == 2)) ? false : $this->cache_resource_object->getCachedFilepath($this) :
$this->cached_filepath;
}
/**
* Returns the timpestamp of the cached template output
*
- * The timestamp is determined by the actual resource handler of the cacher
+ * The timestamp is determined by the actual cache resource
*
* @return integer the template timestamp
*/
public function getCachedTimestamp ()
{
return $this->cached_timestamp === null ?
- $this->cached_timestamp = ($this->isEvaluated() || !($this->caching == 1 || $this->caching == 2)) ? false : $this->cache_resource_object->getCachedTimestamp($this) :
+ $this->cached_timestamp = ($this->resource_object->isEvaluated || !($this->caching == 1 || $this->caching == 2)) ? false : $this->cache_resource_object->getCachedTimestamp($this) :
$this->cached_timestamp;
}
@@ -347,7 +315,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
public function getCachedContent ()
{
return $this->rendered_content === null ?
- $this->rendered_content = ($this->isEvaluated() || !($this->caching == 1 || $this->caching == 2)) ? false : $this->cache_resource_object->getCachedContents($this) :
+ $this->rendered_content = ($this->resource_object->isEvaluated || !($this->caching == 1 || $this->caching == 2)) ? false : $this->cache_resource_object->getCachedContents($this) :
$this->rendered_content;
}
@@ -355,10 +323,17 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
* Writes the cached template output
*/
public function writeCachedContent ()
- {
+ {
+ if ($this->resource_object->isEvaluated || !($this->caching == 1 || $this->caching == 2)) {
+ // don't write cache file
+ return false;
+ }
// build file dependency string
$this->properties['cache_lifetime'] = $this->cache_lifetime;
- return ($this->isEvaluated() || !($this->caching == 1 || $this->caching == 2)) ? false : $this->cache_resource_object->writeCachedContent($this, $this->createPropertyHeader() . $this->rendered_content);
+ $this->dynamicId = uniqid();
+ $output = preg_replace('/(<%|%>|<\?php|<\?|\?>)/', '<?php /*' . $this->dynamicId . '*/ echo \'$1\'; ?>', $this->rendered_content);
+ $output = preg_replace_callback('/\/\*%%SmartyNocache%%\*\/(.+?)\/\*\/%%SmartyNocache%%\*\//s', array($this, 'unescapePhp'), $output);
+ return $this->cache_resource_object->writeCachedContent($this, $this->createPropertyHeader(true) . $output);
}
/**
@@ -372,11 +347,12 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
{
if ($this->isCached === null) {
$this->isCached = false;
- if (($this->caching == 1 || $this->caching == 2) && !$this->isEvaluated() && !$this->force_compile && !$this->force_cache) {
- if ($this->getCachedTimestamp() === false) {
+ if (($this->caching == 1 || $this->caching == 2) && !$this->resource_object->isEvaluated && !$this->force_compile && !$this->force_cache) {
+ $cachedTimestamp = $this->getCachedTimestamp();
+ if ($cachedTimestamp === false) {
return $this->isCached;
}
- if ($this->caching === SMARTY_CACHING_LIFETIME_SAVED || ($this->caching == SMARTY_CACHING_LIFETIME_CURRENT && (time() <= ($this->getCachedTimestamp() + $this->cache_lifetime) || $this->cache_lifetime < 0))) {
+ if ($this->caching === SMARTY_CACHING_LIFETIME_SAVED || ($this->caching == SMARTY_CACHING_LIFETIME_CURRENT && (time() <= ($cachedTimestamp + $this->cache_lifetime) || $this->cache_lifetime < 0))) {
if ($this->smarty->debugging) {
Smarty_Internal_Debug::start_cache($this);
}
@@ -405,7 +381,6 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
// If ($mtime > $this->getCachedTimestamp()) {
If ($mtime > $_file_to_check[1]) {
$this->rendered_content = null;
- $this->properties['file_dependency'] = array();
return $this->isCached;
}
}
@@ -426,7 +401,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
*/
public function renderTemplate ()
{
- if ($this->usesCompiler()) {
+ if ($this->resource_object->usesCompiler) {
if ($this->mustCompile() && $this->compiled_template === null) {
$this->compileTemplateSource();
}
@@ -435,7 +410,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
}
$_smarty_tpl = $this;
ob_start();
- if ($this->isEvaluated()) {
+ if ($this->resource_object->isEvaluated) {
eval("?>" . $this->compiled_template);
} else {
include($this->getCompiledFilepath ());
@@ -453,7 +428,6 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
}
// If ($mtime != $_file_to_check[1]) {
If ($mtime > $_file_to_check[1]) {
- $this->properties['file_dependency'] = array();
$this->mustCompile = true;
break;
}
@@ -480,18 +454,19 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
}
}
$this->rendered_content = ob_get_clean();
- if (!$this->isEvaluated) {
+ if (!$this->resource_object->isEvaluated) {
$this->properties['file_dependency']['F' . abs(crc32($this->getTemplateFilepath()))] = array($this->getTemplateFilepath(), $this->getTemplateTimestamp());
}
if ($this->parent instanceof Smarty_Template or $this->parent instanceof Smarty_Internal_Template) {
// var_dump('merge ', $this->parent->getTemplateFilepath(), $this->parent->properties['file_dependency'], $this->getTemplateFilepath(), $this->properties['file_dependency']);
$this->parent->properties['file_dependency'] = array_merge($this->parent->properties['file_dependency'], $this->properties['file_dependency']);
+ $this->parent->required_plugins = array_merge_recursive($this->parent->required_plugins, $this->required_plugins);
}
if ($this->smarty->debugging) {
Smarty_Internal_Debug::end_render($this);
}
// write to cache when nessecary
- if (!$this->isEvaluated() && ($this->caching == SMARTY_CACHING_LIFETIME_SAVED || $this->caching == SMARTY_CACHING_LIFETIME_CURRENT)) {
+ if (!$this->resource_object->isEvaluated && ($this->caching == SMARTY_CACHING_LIFETIME_SAVED || $this->caching == SMARTY_CACHING_LIFETIME_CURRENT)) {
if ($this->smarty->debugging) {
Smarty_Internal_Debug::start_cache($this);
}
@@ -519,7 +494,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
public function getRenderedTemplate ()
{
// disable caching for evaluated code
- if ($this->isEvaluated()) {
+ if ($this->resource_object->isEvaluated) {
$this->caching = false;
}
// checks if template exists
@@ -553,7 +528,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
// do not cache string resources
// ***** if ($resource_type != 'string' && $this->smarty->caching) {
if ($resource_type != 'string') {
- $this->smarty->template_objects[$this->buildTemplateId ($this->template_resource, $this->cache_id, $this->compile_id)] = $this;
+ $this->smarty->template_objects[crc32($this->template_resource . $this->cache_id . $this->compile_id)] = $this;
}
return true;
}
@@ -595,34 +570,17 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
}
/**
- * Decode saved properties from compiled template and cache files
- */
- public function decodeProperties ($properties)
- {
- $prop = unserialize($properties);
- if (isset($prop['cache_lifetime'])) {
- $this->properties['cache_lifetime'] = $prop['cache_lifetime'];
- }
- if (isset($prop['file_dependency'])) {
- $this->properties['file_dependency'] = array_merge($this->properties['file_dependency'], $prop['file_dependency']);
- // $this->properties['file_dependency'] = array_unique($this->properties['file_dependency']);
- }
- if (!empty($prop['function'])) {
- foreach ($prop['function'] as $_name => $_data) {
- $this->smarty->template_functions[$_name]['compiled'] = str_replace('_%n', "\n", $_data['compiled']);
- $this->smarty->template_functions[$_name]['parameter'] = $_data['parameter'];
- }
- }
- }
-
- /**
- * Update Smarty variables in parent variable object
+ * Update Smarty variables in other scopes
*/
public function updateParentVariables ($scope = SMARTY_LOCAL_SCOPE)
{
+ $has_root = false;
foreach ($this->tpl_vars as $_key => $_variable) {
- // copy global vars back to parent
- if (isset($this->parent) && ($scope == SMARTY_PARENT_SCOPE || $this->tpl_vars[$_key]->scope == SMARTY_PARENT_SCOPE)) {
+ $_variable_scope = $this->tpl_vars[$_key]->scope;
+ if ($scope == SMARTY_LOCAL_SCOPE && $_variable_scope == SMARTY_LOCAL_SCOPE) {
+ continue;
+ }
+ if (isset($this->parent) && ($scope == SMARTY_PARENT_SCOPE || $_variable_scope == SMARTY_PARENT_SCOPE)) {
if (isset($this->parent->tpl_vars[$_key])) {
// variable is already defined in parent, copy value
$this->parent->tpl_vars[$_key]->value = $this->tpl_vars[$_key]->value;
@@ -632,22 +590,28 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
$this->parent->tpl_vars[$_key]->scope = SMARTY_LOCAL_SCOPE;
}
}
- if ($scope == SMARTY_ROOT_SCOPE || $this->tpl_vars[$_key]->scope == SMARTY_ROOT_SCOPE) {
- $_ptr = $this;
- // find root
- while ($_ptr->parent != null) {
- $_ptr = $_ptr->parent;
+ if ($scope == SMARTY_ROOT_SCOPE || $_variable_scope == SMARTY_ROOT_SCOPE) {
+ if ($this->parent == null) {
+ continue;
+ }
+ if (!$has_root) {
+ // find root
+ $root_ptr = $this;
+ while ($root_ptr->parent != null) {
+ $root_ptr = $root_ptr->parent;
+ $has_root = true;
+ }
}
- if (isset($_ptr->tpl_vars[$_key])) {
+ if (isset($root_ptr->tpl_vars[$_key])) {
// variable is already defined in root, copy value
- $_ptr->tpl_vars[$_key]->value = $this->tpl_vars[$_key]->value;
+ $root_ptr->tpl_vars[$_key]->value = $this->tpl_vars[$_key]->value;
} else {
// create variable in root
- $_ptr->tpl_vars[$_key] = clone $_variable;
- $_ptr->tpl_vars[$_key]->scope = SMARTY_LOCAL_SCOPE;
+ $root_ptr->tpl_vars[$_key] = clone $_variable;
+ $root_ptr->tpl_vars[$_key]->scope = SMARTY_LOCAL_SCOPE;
}
}
- if ($scope == SMARTY_GLOBAL_SCOPE || $this->tpl_vars[$_key]->scope == SMARTY_GLOBAL_SCOPE) {
+ if ($scope == SMARTY_GLOBAL_SCOPE || $_variable_scope == SMARTY_GLOBAL_SCOPE) {
if (isset($this->smarty->global_tpl_vars[$_key])) {
// variable is already defined in root, copy value
$this->smarty->global_tpl_vars[$_key]->value = $this->tpl_vars[$_key]->value;
@@ -694,58 +658,99 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
*/
private function loadTemplateResourceHandler ($resource_type)
{
- // load resource handler if required
- if (!isset($this->smarty->resource_objects[$resource_type])) {
- // try registered resource
- if (isset($this->smarty->_plugins['resource'][$resource_type])) {
- return $this->smarty->resource_objects[$resource_type] = new Smarty_Internal_Resource_Registered($this->smarty);
- } else {
- // try sysplugins dir
+ // try registered resource
+ if (isset($this->smarty->_plugins['resource'][$resource_type])) {
+ return new Smarty_Internal_Resource_Registered($this->smarty);
+ } else {
+ // try sysplugins dir
+ if (in_array($resource_type, array('file', 'string', 'extends', 'php', 'registered', 'stream'))) {
$_resource_class = 'Smarty_Internal_Resource_' . $resource_type;
+ return new $_resource_class($this->smarty);
+ } else {
+ // try plugins dir
+ $_resource_class = 'Smarty_Resource_' . $resource_type;
if ($this->smarty->loadPlugin($_resource_class)) {
- return $this->smarty->resource_objects[$resource_type] = new $_resource_class($this->smarty);
+ if (class_exists($_resource_class, false)) {
+ return new $_resource_class($this->smarty);
+ } else {
+ $this->smarty->register_resource($resource_type,
+ array("smarty_resource_{$resource_type}_source",
+ "smarty_resource_{$resource_type}_timestamp",
+ "smarty_resource_{$resource_type}_secure",
+ "smarty_resource_{$resource_type}_trusted"));
+ return new Smarty_Internal_Resource_Registered($this->smarty);
+ }
} else {
- // try plugins dir
- $_resource_class = 'Smarty_Resource_' . $resource_type;
- if ($this->smarty->loadPlugin($_resource_class)) {
- if (class_exists($_resource_class, false)) {
- return $this->smarty->resource_objects[$resource_type] = new $_resource_class($this->smarty);
- } else {
- $this->smarty->register_resource($resource_type,
- array("smarty_resource_{$resource_type}_source",
- "smarty_resource_{$resource_type}_timestamp",
- "smarty_resource_{$resource_type}_secure",
- "smarty_resource_{$resource_type}_trusted"));
- return $this->smarty->resource_objects[$resource_type] = new Smarty_Internal_Resource_Registered($this->smarty);
+ // try streams
+ $_known_stream = stream_get_wrappers();
+ if (in_array($resource_type, $_known_stream)) {
+ // is known stream
+ if ($this->smarty->security) {
+ $this->smarty->security_handler->isTrustedStream($resource_type);
}
+ return new Smarty_Internal_Resource_Stream($this->smarty);
} else {
- // try streams
- $_known_stream = stream_get_wrappers();
- if (in_array($resource_type, $_known_stream)) {
- // is known stream
- if ($this->smarty->security) {
- $this->smarty->security_handler->isTrustedStream($resource_type);
- }
- return $this->smarty->resource_objects[$resource_type] = new Smarty_Internal_Resource_Stream($this->smarty);
- } else {
- throw new Exception('Unkown resource type \'' . $resource_type . '\'');
- }
+ throw new Exception('Unkown resource type \'' . $resource_type . '\'');
}
}
}
- } else {
- return $this->smarty->resource_objects[$resource_type];
}
}
/**
* Create property header
*/
- public function createPropertyHeader ()
+ public function createPropertyHeader ($cache = false)
+ {
+ $directory_security = $this->smarty->direct_access_security ? "<?php /*%%SmartyHeaderCode%%*/ if(!defined('SMARTY_DIR')) exit('no direct access allowed'); /*/%%SmartyHeaderCode%%*/?>\n" : '';
+ // $properties_string = "<?php \$_smarty_tpl->decodeProperties(" . preg_replace('/\s*/', '',var_export($this->properties, true)) . "); ? >\n";
+ $properties_string = "<?php /*%%SmartyHeaderCode%%*/ \$_smarty_tpl->decodeProperties(" . var_export($this->properties, true) . "); /*/%%SmartyHeaderCode%%*/?>\n";
+ $plugins_string = '';
+ if (!$cache) {
+ if (!empty($this->required_plugins['compiled'])) {
+ $plugins_string = '<?php ';
+ foreach($this->required_plugins['compiled'] as $plugin_name => $data) {
+ $plugin = 'smarty_' . $data['type'] . '_' . $plugin_name;
+ $plugins_string .= "if (!is_callable('{$plugin}')) include '{$data['file']}';\n";
+ }
+ $plugins_string .= '?>';
+ }
+ if (!empty($this->required_plugins['cache'])) {
+ $plugins_string .= '<?php echo \'/*%%SmartyNocache%%*/<?php ';
+ foreach($this->required_plugins['cache'] as $plugin_name => $data) {
+ $plugin = 'smarty_' . $data['type'] . '_' . $plugin_name;
+ $plugins_string .= "if (!is_callable(\'{$plugin}\')) include \'{$data['file']}\';\n";
+ }
+ $plugins_string .= "?>/*/%%SmartyNocache%%*/';?>\n";
+ }
+ }
+ return $directory_security . $properties_string . $plugins_string;
+ }
+
+ /**
+ * Decode saved properties from compiled template and cache files
+ */
+ public function decodeProperties ($properties)
+ {
+ if (isset($properties['cache_lifetime'])) {
+ $this->properties['cache_lifetime'] = $properties['cache_lifetime'];
+ }
+ if (isset($properties['file_dependency'])) {
+ $this->properties['file_dependency'] = array_merge($this->properties['file_dependency'], $properties['file_dependency']);
+ }
+ if (!empty($properties['function'])) {
+ foreach ($properties['function'] as $_name => $_data) {
+ $this->smarty->template_functions[$_name]['compiled'] = $_data['compiled'];
+ $this->smarty->template_functions[$_name]['parameter'] = $_data['parameter'];
+ }
+ }
+ }
+ /**
+ * callback to unescap PHP
+ */
+ public function unescapePhp($match)
{
- $directory_security = $this->smarty->direct_access_security ? "<?php if(!defined('SMARTY_DIR')) exit('no direct access allowed'); ?>\n" : '';
- $properties_string = "<?php \$_smarty_tpl->decodeProperties('" . str_replace("'", "\\'", (serialize($this->properties))) . "'); ?>\n";
- return $directory_security . $properties_string;
+ return preg_replace('{<\?php /\*' . $this->dynamicId . '\*/ echo \'(.+?)\'; \?>}s', '$1', $match[1]);
}
/**
diff --git a/libs/sysplugins/smarty_internal_templatecompilerbase.php b/libs/sysplugins/smarty_internal_templatecompilerbase.php
index 8d7859bd..af1352ed 100644
--- a/libs/sysplugins/smarty_internal_templatecompilerbase.php
+++ b/libs/sysplugins/smarty_internal_templatecompilerbase.php
@@ -17,7 +17,9 @@ class Smarty_Internal_TemplateCompilerBase {
// tag stack
public $_tag_stack = array();
// current template
- public $template = null;
+ public $template = null;
+ // required plugins
+ public $required_plugins_call = array();
/**
* Initialize compiler
@@ -36,11 +38,7 @@ class Smarty_Internal_TemplateCompilerBase {
{
/* here is where the compiling takes place. Smarty
tags in the templates are replaces with PHP code,
- then written to compiled files. */
- if (!is_object($template->cacher_object)) {
- $this->smarty->loadPlugin($template->cacher_class);
- $template->cacher_object = new $template->cacher_class($this->smarty);
- }
+ then written to compiled files. */
// flag for nochache sections
$this->nocache = false;
$this->tag_nocache = false;
@@ -52,7 +50,7 @@ class Smarty_Internal_TemplateCompilerBase {
// template header code
$template_header = '';
if (!$template->suppressHeader) {
- $template_header .= "<?php /* Smarty version " . Smarty::$_version . ", created on " . strftime("%Y-%m-%d %H:%M:%S") . "\n";
+ $template_header .= "<?php /* Smarty version " . Smarty::SMARTY_VERSION . ", created on " . strftime("%Y-%m-%d %H:%M:%S") . "\n";
$template_header .= " compiled from \"" . $this->template->getTemplateFilepath() . "\" */ ?>\n";
}
@@ -63,33 +61,31 @@ class Smarty_Internal_TemplateCompilerBase {
$_content = $template->getTemplateSource();
// run prefilter if required
if (isset($this->smarty->autoload_filters['pre']) || isset($this->smarty->registered_filters['pre'])) {
- $_content = $this->smarty->filter_handler->execute('pre', $_content);
+ $_content = Smarty_Internal_Filter_Handler::runFilter('pre', $_content, $this->smarty);
}
// on empty template just return header
if ($_content == '') {
if ($template->suppressFileDependency) {
$template->compiled_template = '';
} else {
- $template->compiled_template = $template->createPropertyHeader() . $template_header;
+ $template->compiled_template = $template_header . $template->createPropertyHeader();
}
return true;
}
- // init cacher plugin
- $template->cacher_object->initCacher($this);
// call compiler
$_compiled_code = $this->doCompile($_content);
} while ($this->abort_and_recompile);
if (!$this->compile_error) {
- // close cacher and return compiled template
+ // return compiled code to template object
if ($template->suppressFileDependency) {
- $template->compiled_template = $template->cacher_object->closeCacher($this, $_compiled_code);
+ $template->compiled_template = $_compiled_code;
} else {
- $template->compiled_template = $template->createPropertyHeader() . $template_header . $template->cacher_object->closeCacher($this, $_compiled_code);
+ $template->compiled_template = $template_header . $template->createPropertyHeader() . $_compiled_code;
}
// run postfilter if required
if (isset($this->smarty->autoload_filters['post']) || isset($this->smarty->registered_filters['post'])) {
- $template->compiled_template = $this->smarty->filter_handler->execute('post', $template->compiled_template);
+ $template->compiled_template = Smarty_Internal_Filter_Handler::runFilter('post', $template->compiled_template, $this->smarty);
}
return true;
} else {
@@ -115,12 +111,11 @@ class Smarty_Internal_TemplateCompilerBase {
$this->has_code = true;
$this->has_output = false;
// compile the smarty tag (required compile classes to compile the tag are autoloaded)
- if (($_output = $this->generateCode($tag, $args)) === false) {
+ if (($_output = $this->callTagCompiler($tag, $args)) === false) {
if (isset($this->smarty->template_functions[$tag])) {
// template defined by {template} tag
$args['name'] = $tag;
- $tag = 'function_call';
- $_output = $this->generateCode($tag, $args);
+ $_output = $this->callTagCompiler('private_function_call', $args);
}
}
if ($_output !== false) {
@@ -139,49 +134,85 @@ class Smarty_Internal_TemplateCompilerBase {
return '';
} else {
// not an internal compiler tag
- // check if tag is a registered object
- if (isset($this->smarty->registered_objects[$tag]) && isset($args['object_methode'])) {
- $methode = $args['object_methode'];
- unset ($args['object_methode']);
- if (!in_array($methode, $this->smarty->registered_objects[$tag][3]) &&
- (empty($this->smarty->registered_objects[$tag][1]) || in_array($methode, $this->smarty->registered_objects[$tag][1]))) {
- return $this->generateCode('object_function',$args, $tag, $methode);
- } elseif (in_array($methode, $this->smarty->registered_objects[$tag][3])) {
- return $this->generateCode('object_block_function',$args, $tag, $methode);
- } else {
- return $this->trigger_template_error ('unallowed methode "' . $methode . '" in registered object "' . $tag . '"', $this->lex->taglineno);
+ if (strlen($tag) < 6 || substr_compare($tag, 'close', -5, 5) != 0) {
+ // check if tag is a registered object
+ if (isset($this->smarty->registered_objects[$tag]) && isset($args['object_methode'])) {
+ $methode = $args['object_methode'];
+ unset ($args['object_methode']);
+ if (!in_array($methode, $this->smarty->registered_objects[$tag][3]) &&
+ (empty($this->smarty->registered_objects[$tag][1]) || in_array($methode, $this->smarty->registered_objects[$tag][1]))) {
+ return $this->callTagCompiler('private_object_function', $args, $tag, $methode);
+ } elseif (in_array($methode, $this->smarty->registered_objects[$tag][3])) {
+ return $this->callTagCompiler('private_object_block_function', $args, $tag, $methode);
+ } else {
+ return $this->trigger_template_error ('unallowed methode "' . $methode . '" in registered object "' . $tag . '"', $this->lex->taglineno);
+ }
}
- }
- // check if tag is registered or is Smarty plugin
- $this->smarty->plugin_handler->loadSmartyPlugin($tag, $this->smarty->plugin_search_order);
- if (isset($this->smarty->registered_plugins[$tag])) {
- // if compiler function plugin call it now
- if ($this->smarty->registered_plugins[$tag][0] == 'compiler') {
- if (!$this->smarty->registered_plugins[$tag][2]) {
- $this->tag_nocache = true;
+ // check if tag is registered
+ foreach (array('compiler', 'function', 'block') as $type) {
+ if (isset($this->smarty->registered_plugins[$type][$tag])) {
+ // if compiler function plugin call it now
+ if ($type == 'compiler') {
+ if (!$this->smarty->registered_plugins[$type][$tag][1]) {
+ $this->tag_nocache = true;
+ }
+ return call_user_func_array($this->smarty->registered_plugins[$type][$tag][0], array($args, $this));
+ }
+ // compile registered function or block function
+ if ($type == 'function' || $type == 'block') {
+ return $this->callTagCompiler('private_registered_' . $type, $args, $tag);
+ }
}
- return call_user_func($this->smarty->registered_plugins[$tag][1], $args, $this);
}
- // compile function or block plugin
- $plugin_type = $this->smarty->registered_plugins[$tag][0] . '_plugin';
- return $this->generateCode($plugin_type, $args, $tag);
- }
- // compile closing tag of block function
- if (strlen($tag) > 5 && substr_compare($tag, 'close', -5, 5) == 0) {
+ // check plugins from plugins folder
+ foreach ($this->smarty->plugin_search_order as $plugin_type) {
+ if ($plugin_type == 'compiler' && $this->smarty->loadPlugin('smarty_compiler_' . $tag)) {
+ $plugin = 'smarty_compiler_' . $tag;
+ if (class_exists($plugin, false)) {
+ $plugin = array(new $plugin, 'compile');
+ }
+ if (is_callable($plugin)) {
+ return call_user_func_array($plugin, array($args, $this));
+ } else {
+ throw new Exception("Plugin \"{$tag}\" not callable");
+ }
+ } else {
+ if ($function = $this->getPlugin($tag, $plugin_type)) {
+ return $this->callTagCompiler('private_' . $plugin_type . '_plugin', $args, $tag, $function);
+ }
+ }
+ }
+ } else {
+ // compile closing tag of block function
$base_tag = substr($tag, 0, -5);
// check if closing tag is a registered object
if (isset($this->smarty->registered_objects[$base_tag]) && isset($args['object_methode'])) {
$methode = $args['object_methode'];
unset ($args['object_methode']);
if (in_array($methode, $this->smarty->registered_objects[$base_tag][3])) {
- return $this->generateCode('object_block_function', $args, $tag, $methode);
+ return $this->callTagCompiler('private_object_block_function', $args, $tag, $methode);
} else {
return $this->trigger_template_error ('unallowed closing tag methode "' . $methode . '" in registered object "' . $base_tag . '"', $this->lex->taglineno);
}
}
- // plugin ?
- if (isset($this->smarty->registered_plugins[$base_tag]) && $this->smarty->registered_plugins[$base_tag][0] == 'block') {
- return $this->generateCode('block_plugin',$args, $tag);
+ // registered block tag ?
+ if (isset($this->smarty->registered_plugins['block'][$base_tag])) {
+ return $this->callTagCompiler('private_registered_block', $args, $tag);
+ }
+ // block plugin?
+ if ($function = $this->getPlugin($base_tag, 'block')) {
+ return $this->callTagCompiler('private_block_plugin', $args, $tag, $function);
+ }
+ if ($this->smarty->loadPlugin('smarty_compiler_' . $tag)) {
+ $plugin = 'smarty_compiler_' . $tag;
+ if (class_exists($plugin, false)) {
+ $plugin = array(new $plugin, 'compile');
+ }
+ if (is_callable($plugin)) {
+ return call_user_func_array($plugin, array($args, $this));
+ } else {
+ throw new Exception("Plugin \"{$tag}\" not callable");
+ }
}
}
$this->trigger_template_error ("unknown tag \"" . $tag . "\"", $this->lex->taglineno);
@@ -197,16 +228,17 @@ class Smarty_Internal_TemplateCompilerBase {
*
* @param $tag string tag name
* @param $args array with tag attributes
- * @param $subtag optional tag name at plugins
- * @param $method string optional method on object tags
+ * @param $param1 optional parameter
+ * @param $param2 optional parameter
+ * @param $param3 optional parameter
* @return string compiled code
*/
- public function generateCode($tag, $args, $subtag = null, $method = null)
+ public function callTagCompiler($tag, $args, $param1 = null, $param2 = null, $param3 = null)
{
// re-use object if already exists
if (isset(self::$_tag_objects[$tag])) {
// compile this tag
- return call_user_func(array(self::$_tag_objects[$tag], 'compile'), $args, $this, $subtag, $method);
+ return call_user_func(array(self::$_tag_objects[$tag], 'compile'), $args, $this, $param1, $param2, $param3);
}
// lazy load internal compiler plugin
$class_name = 'Smarty_Internal_Compile_' . $tag;
@@ -214,13 +246,88 @@ class Smarty_Internal_TemplateCompilerBase {
// use plugin if found
self::$_tag_objects[$tag] = new $class_name;
// compile this tag
- return call_user_func(array(self::$_tag_objects[$tag], 'compile'), $args, $this, $subtag, $method);
+ return call_user_func(array(self::$_tag_objects[$tag], 'compile'), $args, $this, $param1, $param2, $param3);
}
// no internal compile plugin for this tag
return false;
}
/**
+ * Check for plugins and return function name
+ *
+ * @param $pugin_name string name of plugin or function
+ * @param $type string type of plugin
+ * @return string call name of function
+ */
+ public function getPlugin($plugin_name, $type)
+ {
+ if (isset($this->template->required_plugins_call[$plugin_name][$type])) {
+ if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
+ if (isset($this->template->required_plugins['compiled'][$plugin_name])) {
+ $this->template->required_plugins['cache'][$plugin_name] = $this->template->required_plugins['compiled'][$plugin_name];
+ }
+ }
+ return $this->template->required_plugins_call[$plugin_name][$type];
+ }
+ // loop through plugin dirs and find the plugin
+ $plugin = 'smarty_' . $type . '_' . $plugin_name;
+ $found = false;
+ foreach((array)$this->smarty->plugins_dir as $_plugin_dir) {
+ $file = rtrim($_plugin_dir, '/\\') . DS . $type . '.' . $plugin_name . '.php';
+ if (file_exists($file)) {
+ require_once($file);
+ $found = true;
+ break;
+ }
+ }
+ if ($found) {
+ if (is_callable($plugin)) {
+ $this->template->required_plugins_call[$plugin_name][$type] = $plugin;
+ if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
+ $this->template->required_plugins['cache'][$plugin_name]['file'] = $file;
+ $this->template->required_plugins['cache'][$plugin_name]['type'] = $type;
+ } else {
+ $this->template->required_plugins['compiled'][$plugin_name]['file'] = $file;
+ $this->template->required_plugins['compiled'][$plugin_name]['type'] = $type;
+ }
+ return $plugin;
+ } else {
+ throw new Exception("Plugin {$type} \"{$plugin_name}\" not callable");
+ }
+ }
+ return false;
+ }
+ /**
+ * Inject inline code for nocache template sections
+ *
+ * This method gets the content of each template element from the parser.
+ * If the content is compiled code and it should be not cached the code is injected
+ * into the rendered output.
+ *
+ * @param string $content content of template element
+ * @param boolean $tag_nocache true if the parser detected a nocache situation
+ * @param boolean $is_code true if content is compiled code
+ * @return string content
+ */
+ public function processNocacheCode ($content, $is_code)
+ {
+ // If the template is not evaluated and we have a nocache section and or a nocache tag
+ if ($is_code) {
+ // generate replacement code
+ if ((!$this->template->resource_object->isEvaluated || $this->template->forceNocache) && $this->template->caching &&
+ ($this->nocache || $this->tag_nocache)) {
+ $this->tag_nocache = false;
+ $_output = str_replace("'", "\'", $content);
+ $_output = "<?php echo '/*%%SmartyNocache%%*/" . $_output . "/*/%%SmartyNocache%%*/';?>\n";
+ } else {
+ $_output = $content;
+ }
+ } else {
+ $_output = $content;
+ }
+ return $_output;
+ }
+ /**
* display compiler error messages without dying
*
* If parameter $args is empty it is a parser detected syntax error.
@@ -228,18 +335,16 @@ class Smarty_Internal_TemplateCompilerBase {
*
* If parameter $args contains a string this is used as error message
*
- * @todo output exact position of parse error in source line
* @param $args string individual error message or null
*/
- public function trigger_template_error($args = null, $line= null)
- {
+ public function trigger_template_error($args = null, $line = null)
+ {
// get template source line which has error
if (!isset($line)) {
$line = $this->lex->line;
}
$match = preg_split("/\n/", $this->lex->data);
$error_text = 'Syntax Error in template "' . $this->template->getTemplateFilepath() . '" on line ' . $line . ' "' . $match[$line-1] . '" ';
-
if (isset($args)) {
// individual error message
$error_text .= $args;
diff --git a/libs/sysplugins/smarty_internal_templatelexer.php b/libs/sysplugins/smarty_internal_templatelexer.php
index 47d9d95f..a54c356f 100644
--- a/libs/sysplugins/smarty_internal_templatelexer.php
+++ b/libs/sysplugins/smarty_internal_templatelexer.php
@@ -63,7 +63,11 @@ class Smarty_Internal_Templatelexer
'QMARK' => '"?"',
'ID' => 'identifier',
'OTHER' => 'text',
- 'PHP' => 'PHP code',
+ 'FAKEPHPSTARTTAG' => 'Fake PHP start tag',
+ 'PHPSTARTTAG' => 'PHP start tag',
+ 'PHPENDTAG' => 'PHP end tag',
+ 'LITERALSTART' => 'Literal start',
+ 'LITERALEND' => 'Literal end',
'LDELSLASH' => 'closing tag',
'COMMENT' => 'comment',
'LITERALEND' => 'literal close',
@@ -74,14 +78,15 @@ class Smarty_Internal_Templatelexer
);
- function __construct($data,$smarty)
+ function __construct($data,$compiler)
{
// set instance object
self::instance($this);
$this->data = preg_replace("/(\r\n|\r|\n)/", "\n", $data);
$this->counter = 0;
$this->line = 1;
- $this->smarty = $smarty;
+ $this->smarty = $compiler->smarty;
+ $this->compiler = $compiler;
$this->ldel = preg_quote($this->smarty->left_delimiter,'/');
$this->rdel = preg_quote($this->smarty->right_delimiter,'/');
$this->smarty_token_names['LDEL'] = $this->smarty->left_delimiter;
@@ -137,16 +142,13 @@ class Smarty_Internal_Templatelexer
10 => 0,
11 => 0,
12 => 0,
- 13 => 0,
- 14 => 0,
- 15 => 0,
- 16 => 2,
- 19 => 0,
+ 13 => 2,
+ 16 => 0,
);
if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
- $yy_global_pattern = "/^(\\{\\})|^(".$this->ldel."\\*([\S\s]*?)\\*".$this->rdel.")|^(<\\?xml)|^(<\\?php)|^(<\\?=)|^([\t ]*[\r\n]+[\t ]*)|^(".$this->ldel."strip".$this->rdel.")|^(".$this->ldel."\/strip".$this->rdel.")|^(".$this->ldel."literal".$this->rdel.")|^(".$this->ldel."\/literal".$this->rdel.")|^(".$this->ldel."\\s{1,}\/)|^(".$this->ldel."\\s{1,})|^(".$this->ldel."\/)|^(".$this->ldel.")|^(([\S\s]*?)([\t ]*[\r\n]+[\t ]*|".$this->ldel."|<\\?))|^([\S\s]+)/";
+ $yy_global_pattern = "/^(\\{\\})|^(".$this->ldel."\\*([\S\s]*?)\\*".$this->rdel.")|^(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|^([\t ]*[\r\n]+[\t ]*)|^(".$this->ldel."strip".$this->rdel.")|^(".$this->ldel."\/strip".$this->rdel.")|^(".$this->ldel."literal".$this->rdel.")|^(".$this->ldel."\\s{1,}\/)|^(".$this->ldel."\\s{1,})|^(".$this->ldel."\/)|^(".$this->ldel.")|^(([\S\s]*?)([\t ]*[\r\n]+[\t ]*|".$this->ldel."|<\\?))|^([\S\s]+)/";
do {
if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) {
@@ -209,54 +211,42 @@ class Smarty_Internal_Templatelexer
function yy_r1_4($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_XML;
- $this->yypushstate(self::PHP);
- }
+ if (in_array($this->value, Array('<?', '<?=', '<?php'))) {
+ $this->token = Smarty_Internal_Templateparser::TP_PHPSTARTTAG;
+ $this->yypushstate(self::PHP);
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_FAKEPHPSTARTTAG;
+ $this->value = substr($this->value, 0, 2);
+ }
+ }
function yy_r1_5($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_PHP;
- $this->yypushstate(self::PHP);
- }
- function yy_r1_6($yy_subpatterns)
- {
-
- $this->token = Smarty_Internal_Templateparser::TP_SHORTTAGSTART;
- $this->yypushstate(self::PHP);
- }
- function yy_r1_7($yy_subpatterns)
- {
-
if ($this->strip) {
return false;
} else {
$this->token = Smarty_Internal_Templateparser::TP_OTHER;
}
}
- function yy_r1_8($yy_subpatterns)
+ function yy_r1_6($yy_subpatterns)
{
$this->strip = true;
return false;
}
- function yy_r1_9($yy_subpatterns)
+ function yy_r1_7($yy_subpatterns)
{
$this->strip = false;
return false;
}
- function yy_r1_10($yy_subpatterns)
- {
-
- $this->yypushstate(self::LITERAL);
- return true;
- }
- function yy_r1_11($yy_subpatterns)
+ function yy_r1_8($yy_subpatterns)
{
- return false; // unexspected here just ignore
+ $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART;
+ $this->yypushstate(self::LITERAL);
}
- function yy_r1_12($yy_subpatterns)
+ function yy_r1_9($yy_subpatterns)
{
if ($this->smarty->auto_literal) {
@@ -267,7 +257,7 @@ class Smarty_Internal_Templatelexer
$this->taglineno = $this->line;
}
}
- function yy_r1_13($yy_subpatterns)
+ function yy_r1_10($yy_subpatterns)
{
if ($this->smarty->auto_literal) {
@@ -278,21 +268,21 @@ class Smarty_Internal_Templatelexer
$this->taglineno = $this->line;
}
}
- function yy_r1_14($yy_subpatterns)
+ function yy_r1_11($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
$this->yypushstate(self::SMARTY);
$this->taglineno = $this->line;
}
- function yy_r1_15($yy_subpatterns)
+ function yy_r1_12($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_LDEL;
$this->yypushstate(self::SMARTY);
$this->taglineno = $this->line;
}
- function yy_r1_16($yy_subpatterns)
+ function yy_r1_13($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_OTHER;
@@ -307,7 +297,7 @@ class Smarty_Internal_Templatelexer
return true; // rescan
}
}
- function yy_r1_19($yy_subpatterns)
+ function yy_r1_16($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_OTHER;
@@ -318,34 +308,35 @@ class Smarty_Internal_Templatelexer
{
$tokenMap = array (
1 => 1,
- 3 => 1,
+ 3 => 0,
+ 4 => 0,
5 => 0,
6 => 0,
7 => 0,
8 => 0,
9 => 0,
10 => 0,
- 11 => 0,
- 12 => 0,
- 13 => 0,
- 14 => 1,
- 16 => 1,
+ 11 => 1,
+ 13 => 1,
+ 15 => 0,
+ 16 => 0,
+ 17 => 0,
18 => 0,
19 => 0,
- 20 => 0,
- 21 => 0,
- 22 => 0,
- 23 => 1,
- 25 => 1,
- 27 => 1,
- 29 => 1,
- 31 => 1,
- 33 => 1,
- 35 => 1,
- 37 => 1,
- 39 => 1,
- 41 => 1,
- 43 => 1,
+ 20 => 1,
+ 22 => 1,
+ 24 => 1,
+ 26 => 1,
+ 28 => 1,
+ 30 => 1,
+ 32 => 1,
+ 34 => 1,
+ 36 => 1,
+ 38 => 1,
+ 40 => 1,
+ 42 => 0,
+ 43 => 0,
+ 44 => 0,
45 => 0,
46 => 0,
47 => 0,
@@ -353,20 +344,20 @@ class Smarty_Internal_Templatelexer
49 => 0,
50 => 0,
51 => 0,
- 52 => 0,
- 53 => 0,
- 54 => 0,
- 55 => 3,
+ 52 => 3,
+ 56 => 0,
+ 57 => 0,
+ 58 => 0,
59 => 0,
60 => 0,
61 => 0,
62 => 0,
- 63 => 0,
- 64 => 0,
- 65 => 0,
- 66 => 1,
- 68 => 1,
- 70 => 1,
+ 63 => 1,
+ 65 => 1,
+ 67 => 1,
+ 69 => 0,
+ 70 => 0,
+ 71 => 0,
72 => 0,
73 => 0,
74 => 0,
@@ -377,21 +368,18 @@ class Smarty_Internal_Templatelexer
79 => 0,
80 => 0,
81 => 0,
- 82 => 0,
- 83 => 0,
+ 82 => 1,
84 => 0,
- 85 => 1,
+ 85 => 0,
+ 86 => 0,
87 => 0,
88 => 0,
89 => 0,
- 90 => 0,
- 91 => 0,
- 92 => 0,
);
if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
- $yy_global_pattern = "/^((\\\\\"|\\\\'))|^(''|'([\S\s]*?)[^\\\\]')|^(".$this->ldel."literal".$this->rdel.")|^(".$this->ldel."\/literal".$this->rdel.")|^(".$this->ldel."\\s{1,}\/)|^(".$this->ldel."\\s{1,})|^(\\s{1,}".$this->rdel.")|^(".$this->ldel."\/)|^(".$this->ldel.")|^(".$this->rdel.")|^(\\s+is\\s+in\\s+)|^(\\s+(AS|as)\\s+)|^(\\s+(to)\\s+)|^(\\s+instanceof\\s+)|^(true|TRUE|True|false|FALSE|False)|^(null|NULL|Null)|^(\\s*===\\s*)|^(\\s*!==\\s*)|^(\\s*==\\s*|\\s+(EQ|eq)\\s+)|^(\\s*!=\\s*|\\s*<>\\s*|\\s+(NE|NEQ|ne|neq)\\s+)|^(\\s*>=\\s*|\\s+(GE|GTE|ge|gte)\\s+)|^(\\s*<=\\s*|\\s+(LE|LTE|le|lte)\\s+)|^(\\s*>\\s*|\\s+(GT|gt)\\s+)|^(\\s*<\\s*|\\s+(LT|lt)\\s+)|^(\\s+(MOD|mod)\\s+)|^(!\\s*|(NOT|not)\\s+)|^(\\s*&&\\s*|\\s*(AND|and)\\s+)|^(\\s*\\|\\|\\s*|\\s*(OR|or)\\s+)|^(\\s*(XOR|xor)\\s+)|^(\\s+is\\s+odd\\s+by\\s+)|^(\\s+is\\s+not\\s+odd\\s+by\\s+)|^(\\s+is\\s+odd)|^(\\s+is\\s+not\\s+odd)|^(\\s+is\\s+even\\s+by\\s+)|^(\\s+is\\s+not\\s+even\\s+by\\s+)|^(\\s+is\\s+even)|^(\\s+is\\s+not\\s+even)|^(\\s+is\\s+div\\s+by\\s+)|^(\\s+is\\s+not\\s+div\\s+by\\s+)|^(\\((int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)\\))|^(\\(\\s*)|^(\\s*\\))|^(\\[\\s*)|^(\\s*\\])|^(\\s*->\\s*)|^(\\s*=>\\s*)|^(\\s*=\\s*)|^((\\+\\+|--)\\s*)|^(\\s*(\\+|-)\\s*)|^(\\s*(\\*|\/|%)\\s*)|^(\\$)|^(\\s*;)|^(::)|^(\\s*:\\s*)|^(@)|^(#)|^(\")|^(`)|^(\\|)|^(\\.)|^(\\s*,\\s*)|^(\\s*&\\s*)|^(\\s*\\?\\s*)|^((if|elseif|while)(?![^\s]))|^(foreach(?![^\s]))|^(for(?![^\s]))|^([0-9]*[a-zA-Z_]\\w*)|^(\\d+)|^(\\s+)|^(.)/";
+ $yy_global_pattern = "/^((\\\\\"|\\\\'))|^('[^'\\\\]*(?:\\\\['\\\\][^'\\\\]*)*')|^(".$this->ldel."\\s{1,}\/)|^(".$this->ldel."\\s{1,})|^(\\s{1,}".$this->rdel.")|^(".$this->ldel."\/)|^(".$this->ldel.")|^(".$this->rdel.")|^(\\s+is\\s+in\\s+)|^(\\s+(AS|as)\\s+)|^(\\s+(to)\\s+)|^(\\s+instanceof\\s+)|^(true|TRUE|True|false|FALSE|False)|^(null|NULL|Null)|^(\\s*===\\s*)|^(\\s*!==\\s*)|^(\\s*==\\s*|\\s+(EQ|eq)\\s+)|^(\\s*!=\\s*|\\s*<>\\s*|\\s+(NE|NEQ|ne|neq)\\s+)|^(\\s*>=\\s*|\\s+(GE|GTE|ge|gte)\\s+)|^(\\s*<=\\s*|\\s+(LE|LTE|le|lte)\\s+)|^(\\s*>\\s*|\\s+(GT|gt)\\s+)|^(\\s*<\\s*|\\s+(LT|lt)\\s+)|^(\\s+(MOD|mod)\\s+)|^(!\\s*|(NOT|not)\\s+)|^(\\s*&&\\s*|\\s*(AND|and)\\s+)|^(\\s*\\|\\|\\s*|\\s*(OR|or)\\s+)|^(\\s*(XOR|xor)\\s+)|^(\\s+is\\s+odd\\s+by\\s+)|^(\\s+is\\s+not\\s+odd\\s+by\\s+)|^(\\s+is\\s+odd)|^(\\s+is\\s+not\\s+odd)|^(\\s+is\\s+even\\s+by\\s+)|^(\\s+is\\s+not\\s+even\\s+by\\s+)|^(\\s+is\\s+even)|^(\\s+is\\s+not\\s+even)|^(\\s+is\\s+div\\s+by\\s+)|^(\\s+is\\s+not\\s+div\\s+by\\s+)|^(\\((int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)\\))|^(\\(\\s*)|^(\\s*\\))|^(\\[\\s*)|^(\\s*\\])|^(\\s*->\\s*)|^(\\s*=>\\s*)|^(\\s*=\\s*)|^((\\+\\+|--)\\s*)|^(\\s*(\\+|-)\\s*)|^(\\s*(\\*|\/|%)\\s*)|^(\\$)|^(\\s*;)|^(::)|^(\\s*:\\s*)|^(@)|^(#)|^(\")|^(`)|^(\\|)|^(\\.)|^(\\s*,\\s*)|^(\\s*&\\s*)|^(\\s*\\?\\s*)|^((if|elseif|else if|while)(?![^\s]))|^(foreach(?![^\s]))|^(for(?![^\s]))|^([0-9]*[a-zA-Z_]\\w*)|^(\\d+)|^(\\s+)|^(.)/";
do {
if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) {
@@ -451,18 +439,7 @@ class Smarty_Internal_Templatelexer
$this->token = Smarty_Internal_Templateparser::TP_SINGLEQUOTESTRING;
}
- function yy_r2_5($yy_subpatterns)
- {
-
- $this->yypushstate(self::LITERAL);
- return true;
- }
- function yy_r2_6($yy_subpatterns)
- {
-
- return false; // unexspected here just ignore
- }
- function yy_r2_7($yy_subpatterns)
+ function yy_r2_4($yy_subpatterns)
{
if ($this->smarty->auto_literal) {
@@ -473,7 +450,7 @@ class Smarty_Internal_Templatelexer
$this->taglineno = $this->line;
}
}
- function yy_r2_8($yy_subpatterns)
+ function yy_r2_5($yy_subpatterns)
{
if ($this->smarty->auto_literal) {
@@ -484,7 +461,7 @@ class Smarty_Internal_Templatelexer
$this->taglineno = $this->line;
}
}
- function yy_r2_9($yy_subpatterns)
+ function yy_r2_6($yy_subpatterns)
{
if ($this->smarty->auto_literal) {
@@ -494,324 +471,324 @@ class Smarty_Internal_Templatelexer
$this->yypopstate();
}
}
- function yy_r2_10($yy_subpatterns)
+ function yy_r2_7($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
$this->yypushstate(self::SMARTY);
$this->taglineno = $this->line;
}
- function yy_r2_11($yy_subpatterns)
+ function yy_r2_8($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_LDEL;
$this->yypushstate(self::SMARTY);
$this->taglineno = $this->line;
}
- function yy_r2_12($yy_subpatterns)
+ function yy_r2_9($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_RDEL;
$this->yypopstate();
}
- function yy_r2_13($yy_subpatterns)
+ function yy_r2_10($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_ISIN;
}
- function yy_r2_14($yy_subpatterns)
+ function yy_r2_11($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_AS;
}
- function yy_r2_16($yy_subpatterns)
+ function yy_r2_13($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_TO;
}
- function yy_r2_18($yy_subpatterns)
+ function yy_r2_15($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_INSTANCEOF;
}
- function yy_r2_19($yy_subpatterns)
+ function yy_r2_16($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_BOOLEAN;
}
- function yy_r2_20($yy_subpatterns)
+ function yy_r2_17($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_NULL;
}
- function yy_r2_21($yy_subpatterns)
+ function yy_r2_18($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_IDENTITY;
}
- function yy_r2_22($yy_subpatterns)
+ function yy_r2_19($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_NONEIDENTITY;
}
- function yy_r2_23($yy_subpatterns)
+ function yy_r2_20($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_EQUALS;
}
- function yy_r2_25($yy_subpatterns)
+ function yy_r2_22($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_NOTEQUALS;
}
- function yy_r2_27($yy_subpatterns)
+ function yy_r2_24($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_GREATEREQUAL;
}
- function yy_r2_29($yy_subpatterns)
+ function yy_r2_26($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_LESSEQUAL;
}
- function yy_r2_31($yy_subpatterns)
+ function yy_r2_28($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_GREATERTHAN;
}
- function yy_r2_33($yy_subpatterns)
+ function yy_r2_30($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_LESSTHAN;
}
- function yy_r2_35($yy_subpatterns)
+ function yy_r2_32($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_MOD;
}
- function yy_r2_37($yy_subpatterns)
+ function yy_r2_34($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_NOT;
}
- function yy_r2_39($yy_subpatterns)
+ function yy_r2_36($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_LAND;
}
- function yy_r2_41($yy_subpatterns)
+ function yy_r2_38($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_LOR;
}
- function yy_r2_43($yy_subpatterns)
+ function yy_r2_40($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_LXOR;
}
- function yy_r2_45($yy_subpatterns)
+ function yy_r2_42($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_ISODDBY;
}
- function yy_r2_46($yy_subpatterns)
+ function yy_r2_43($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_ISNOTODDBY;
}
- function yy_r2_47($yy_subpatterns)
+ function yy_r2_44($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_ISODD;
}
- function yy_r2_48($yy_subpatterns)
+ function yy_r2_45($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_ISNOTODD;
}
- function yy_r2_49($yy_subpatterns)
+ function yy_r2_46($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_ISEVENBY;
}
- function yy_r2_50($yy_subpatterns)
+ function yy_r2_47($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_ISNOTEVENBY;
}
- function yy_r2_51($yy_subpatterns)
+ function yy_r2_48($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_ISEVEN;
}
- function yy_r2_52($yy_subpatterns)
+ function yy_r2_49($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_ISNOTEVEN;
}
- function yy_r2_53($yy_subpatterns)
+ function yy_r2_50($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_ISDIVBY;
}
- function yy_r2_54($yy_subpatterns)
+ function yy_r2_51($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_ISNOTDIVBY;
}
- function yy_r2_55($yy_subpatterns)
+ function yy_r2_52($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_TYPECAST;
}
- function yy_r2_59($yy_subpatterns)
+ function yy_r2_56($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_OPENP;
}
- function yy_r2_60($yy_subpatterns)
+ function yy_r2_57($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_CLOSEP;
}
- function yy_r2_61($yy_subpatterns)
+ function yy_r2_58($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_OPENB;
}
- function yy_r2_62($yy_subpatterns)
+ function yy_r2_59($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_CLOSEB;
}
- function yy_r2_63($yy_subpatterns)
+ function yy_r2_60($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_PTR;
}
- function yy_r2_64($yy_subpatterns)
+ function yy_r2_61($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_APTR;
}
- function yy_r2_65($yy_subpatterns)
+ function yy_r2_62($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_EQUAL;
}
- function yy_r2_66($yy_subpatterns)
+ function yy_r2_63($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_INCDEC;
}
- function yy_r2_68($yy_subpatterns)
+ function yy_r2_65($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_UNIMATH;
}
- function yy_r2_70($yy_subpatterns)
+ function yy_r2_67($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_MATH;
}
- function yy_r2_72($yy_subpatterns)
+ function yy_r2_69($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_DOLLAR;
}
- function yy_r2_73($yy_subpatterns)
+ function yy_r2_70($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_SEMICOLON;
}
- function yy_r2_74($yy_subpatterns)
+ function yy_r2_71($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON;
}
- function yy_r2_75($yy_subpatterns)
+ function yy_r2_72($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_COLON;
}
- function yy_r2_76($yy_subpatterns)
+ function yy_r2_73($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_AT;
}
- function yy_r2_77($yy_subpatterns)
+ function yy_r2_74($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_HATCH;
}
- function yy_r2_78($yy_subpatterns)
+ function yy_r2_75($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_QUOTE;
$this->yypushstate(self::DOUBLEQUOTEDSTRING);
}
- function yy_r2_79($yy_subpatterns)
+ function yy_r2_76($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
$this->yypopstate();
}
- function yy_r2_80($yy_subpatterns)
+ function yy_r2_77($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_VERT;
}
- function yy_r2_81($yy_subpatterns)
+ function yy_r2_78($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_DOT;
}
- function yy_r2_82($yy_subpatterns)
+ function yy_r2_79($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_COMMA;
}
- function yy_r2_83($yy_subpatterns)
+ function yy_r2_80($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_ANDSYM;
}
- function yy_r2_84($yy_subpatterns)
+ function yy_r2_81($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_QMARK;
}
- function yy_r2_85($yy_subpatterns)
+ function yy_r2_82($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_IF;
}
- function yy_r2_87($yy_subpatterns)
+ function yy_r2_84($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_FOREACH;
}
- function yy_r2_88($yy_subpatterns)
+ function yy_r2_85($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_FOR;
}
- function yy_r2_89($yy_subpatterns)
+ function yy_r2_86($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_ID;
}
- function yy_r2_90($yy_subpatterns)
+ function yy_r2_87($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_INTEGER;
}
- function yy_r2_91($yy_subpatterns)
+ function yy_r2_88($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_SPACE;
}
- function yy_r2_92($yy_subpatterns)
+ function yy_r2_89($yy_subpatterns)
{
$this->token = Smarty_Internal_Templateparser::TP_OTHER;
@@ -881,9 +858,9 @@ class Smarty_Internal_Templatelexer
function yy_r3_1($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_SHORTTAGEND;
- $this->yypopstate();
- }
+ $this->token = Smarty_Internal_Templateparser::TP_PHPENDTAG;
+ $this->yypopstate();
+ }
function yy_r3_2($yy_subpatterns)
{
@@ -893,7 +870,7 @@ class Smarty_Internal_Templatelexer
function yy_r3_4($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_OTHER;
+ $this->compiler->trigger_template_error ("missing PHP end tag");
}
@@ -902,13 +879,15 @@ class Smarty_Internal_Templatelexer
$tokenMap = array (
1 => 0,
2 => 0,
- 3 => 1,
- 5 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 1,
+ 7 => 0,
);
if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
- $yy_global_pattern = "/^(".$this->ldel."literal".$this->rdel.")|^(".$this->ldel."\/literal".$this->rdel.")|^(([\S\s]*?)".$this->ldel."\/literal".$this->rdel.")|^([\S\s]+)/";
+ $yy_global_pattern = "/^(".$this->ldel."literal".$this->rdel.")|^(".$this->ldel."\/literal".$this->rdel.")|^(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|^(\\?>)|^([\S\s]+?(".$this->ldel."\/?literal".$this->rdel."|<\\?))|^([\S\s]+)/";
do {
if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) {
@@ -961,30 +940,50 @@ class Smarty_Internal_Templatelexer
function yy_r4_1($yy_subpatterns)
{
- return false;
+ $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART;
+ $this->yypushstate(self::LITERAL);
}
function yy_r4_2($yy_subpatterns)
{
+ $this->token = Smarty_Internal_Templateparser::TP_LITERALEND;
$this->yypopstate();
- return false;
}
function yy_r4_3($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_OTHER;
- $this->value = substr($this->value,0,-strlen($this->smarty->left_delimiter)-strlen($this->smarty->right_delimiter)-8);
- $this->yypopstate();
- if (strlen($this->value) == 0) {
- return false; // change state directly
+ if (in_array($this->value, Array('<?', '<?=', '<?php'))) {
+ $this->token = Smarty_Internal_Templateparser::TP_PHPSTARTTAG;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_FAKEPHPSTARTTAG;
+ $this->value = substr($this->value, 0, 2);
+ }
+ }
+ function yy_r4_4($yy_subpatterns)
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+ }
+ function yy_r4_5($yy_subpatterns)
+ {
+
+ $lenght_literal = strlen($this->smarty->left_delimiter.$this->smarty->right_delimiter)+7;
+ if (substr($this->value,-2,2) === '<?') {
+ $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+ $this->value = substr($this->value,0,-2);
+ } else if (substr($this->value,-$lenght_literal,$lenght_literal) === $this->smarty->left_delimiter.'literal'.$this->smarty->right_delimiter) {
+ $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+ $this->value = substr($this->value,0,-$lenght_literal);
} else {
- return; // change state after processiing token
+ assert(substr($this->value,-$lenght_literal-1,$lenght_literal+1) === $this->smarty->left_delimiter.'/literal'.$this->smarty->right_delimiter);
+ $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+ $this->value = substr($this->value,0,-$lenght_literal-1);
}
}
- function yy_r4_5($yy_subpatterns)
+ function yy_r4_7($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_OTHER;
+ $this->compiler->trigger_template_error ("missing or misspelled literal closing tag");
}
diff --git a/libs/sysplugins/smarty_internal_templateparser.php b/libs/sysplugins/smarty_internal_templateparser.php
index 5f31e66b..4977916a 100644
--- a/libs/sysplugins/smarty_internal_templateparser.php
+++ b/libs/sysplugins/smarty_internal_templateparser.php
@@ -106,7 +106,6 @@ class Smarty_Internal_Templateparser#line 79 "smarty_internal_templateparser.php
} else {
$this->sec_obj = $this->smarty;
}
- $this->cacher = $this->template->cacher_object;
$this->compiler->has_variable_string = false;
$this->compiler->prefix_code = array();
$this->prefix_number = 0;
@@ -118,658 +117,640 @@ class Smarty_Internal_Templateparser#line 79 "smarty_internal_templateparser.php
$instance = $new_instance;
return $instance;
}
+
+ public static function escape_start_tag($tag_text) {
+ $tag = preg_replace('/\A<\?(.*)\z/', '<<?php ?>?\1', $tag_text, -1 , $count); //Escape tag
+ assert($tag !== false && $count === 1);
+ return $tag;
+ }
+
+ public static function escape_end_tag($tag_text) {
+ assert($tag_text === '?>');
+ return '?<?php ?>>';
+ }
+
-#line 115 "smarty_internal_templateparser.php"
+#line 126 "smarty_internal_templateparser.php"
const TP_COMMENT = 1;
- const TP_PHP = 2;
+ const TP_PHPSTARTTAG = 2;
const TP_OTHER = 3;
- const TP_SHORTTAGEND = 4;
- const TP_SHORTTAGSTART = 5;
- const TP_XML = 6;
- const TP_LDEL = 7;
- const TP_RDEL = 8;
- const TP_DOLLAR = 9;
- const TP_ID = 10;
- const TP_EQUAL = 11;
- const TP_FOREACH = 12;
- const TP_PTR = 13;
- const TP_IF = 14;
- const TP_SPACE = 15;
- const TP_FOR = 16;
- const TP_SEMICOLON = 17;
- const TP_INCDEC = 18;
- const TP_TO = 19;
- const TP_AS = 20;
- const TP_APTR = 21;
- const TP_LDELSLASH = 22;
- const TP_INTEGER = 23;
- const TP_COMMA = 24;
- const TP_COLON = 25;
- const TP_UNIMATH = 26;
- const TP_OPENP = 27;
- const TP_CLOSEP = 28;
- const TP_QMARK = 29;
- const TP_MATH = 30;
- const TP_ANDSYM = 31;
- const TP_NOT = 32;
- const TP_TYPECAST = 33;
- const TP_DOT = 34;
- const TP_BOOLEAN = 35;
- const TP_NULL = 36;
- const TP_SINGLEQUOTESTRING = 37;
- const TP_QUOTE = 38;
- const TP_DOUBLECOLON = 39;
- const TP_AT = 40;
- const TP_HATCH = 41;
- const TP_OPENB = 42;
- const TP_CLOSEB = 43;
- const TP_VERT = 44;
- const TP_ISIN = 45;
- const TP_ISDIVBY = 46;
- const TP_ISNOTDIVBY = 47;
- const TP_ISEVEN = 48;
- const TP_ISNOTEVEN = 49;
- const TP_ISEVENBY = 50;
- const TP_ISNOTEVENBY = 51;
- const TP_ISODD = 52;
- const TP_ISNOTODD = 53;
- const TP_ISODDBY = 54;
- const TP_ISNOTODDBY = 55;
- const TP_INSTANCEOF = 56;
- const TP_EQUALS = 57;
- const TP_NOTEQUALS = 58;
- const TP_GREATERTHAN = 59;
- const TP_LESSTHAN = 60;
- const TP_GREATEREQUAL = 61;
- const TP_LESSEQUAL = 62;
- const TP_IDENTITY = 63;
- const TP_NONEIDENTITY = 64;
- const TP_MOD = 65;
- const TP_LAND = 66;
- const TP_LOR = 67;
- const TP_LXOR = 68;
- const TP_BACKTICK = 69;
- const TP_DOLLARID = 70;
- const YY_NO_ACTION = 549;
- const YY_ACCEPT_ACTION = 548;
- const YY_ERROR_ACTION = 547;
+ const TP_PHPENDTAG = 4;
+ const TP_FAKEPHPSTARTTAG = 5;
+ const TP_LITERALSTART = 6;
+ const TP_LITERALEND = 7;
+ const TP_LITERAL = 8;
+ const TP_LDEL = 9;
+ const TP_RDEL = 10;
+ const TP_DOLLAR = 11;
+ const TP_ID = 12;
+ const TP_EQUAL = 13;
+ const TP_FOREACH = 14;
+ const TP_PTR = 15;
+ const TP_IF = 16;
+ const TP_SPACE = 17;
+ const TP_UNIMATH = 18;
+ const TP_FOR = 19;
+ const TP_SEMICOLON = 20;
+ const TP_INCDEC = 21;
+ const TP_TO = 22;
+ const TP_AS = 23;
+ const TP_APTR = 24;
+ const TP_LDELSLASH = 25;
+ const TP_INTEGER = 26;
+ const TP_COMMA = 27;
+ const TP_COLON = 28;
+ const TP_MATH = 29;
+ const TP_ANDSYM = 30;
+ const TP_OPENP = 31;
+ const TP_CLOSEP = 32;
+ const TP_QMARK = 33;
+ const TP_NOT = 34;
+ const TP_TYPECAST = 35;
+ const TP_DOT = 36;
+ const TP_BOOLEAN = 37;
+ const TP_NULL = 38;
+ const TP_SINGLEQUOTESTRING = 39;
+ const TP_QUOTE = 40;
+ const TP_DOUBLECOLON = 41;
+ const TP_AT = 42;
+ const TP_HATCH = 43;
+ const TP_OPENB = 44;
+ const TP_CLOSEB = 45;
+ const TP_VERT = 46;
+ const TP_ISIN = 47;
+ const TP_ISDIVBY = 48;
+ const TP_ISNOTDIVBY = 49;
+ const TP_ISEVEN = 50;
+ const TP_ISNOTEVEN = 51;
+ const TP_ISEVENBY = 52;
+ const TP_ISNOTEVENBY = 53;
+ const TP_ISODD = 54;
+ const TP_ISNOTODD = 55;
+ const TP_ISODDBY = 56;
+ const TP_ISNOTODDBY = 57;
+ const TP_INSTANCEOF = 58;
+ const TP_EQUALS = 59;
+ const TP_NOTEQUALS = 60;
+ const TP_GREATERTHAN = 61;
+ const TP_LESSTHAN = 62;
+ const TP_GREATEREQUAL = 63;
+ const TP_LESSEQUAL = 64;
+ const TP_IDENTITY = 65;
+ const TP_NONEIDENTITY = 66;
+ const TP_MOD = 67;
+ const TP_LAND = 68;
+ const TP_LOR = 69;
+ const TP_LXOR = 70;
+ const TP_BACKTICK = 71;
+ const TP_DOLLARID = 72;
+ const YY_NO_ACTION = 561;
+ const YY_ACCEPT_ACTION = 560;
+ const YY_ERROR_ACTION = 559;
- const YY_SZ_ACTTAB = 1406;
+ const YY_SZ_ACTTAB = 1246;
static public $yy_action = array(
- /* 0 */ 14, 332, 77, 49, 50, 88, 264, 209, 270, 211,
- /* 10 */ 265, 31, 297, 252, 290, 109, 231, 15, 122, 45,
- /* 20 */ 11, 363, 293, 174, 221, 57, 58, 94, 240, 247,
- /* 30 */ 345, 48, 109, 276, 51, 6, 14, 161, 75, 176,
- /* 40 */ 271, 250, 289, 363, 330, 175, 221, 285, 342, 94,
- /* 50 */ 283, 109, 231, 39, 18, 45, 30, 24, 354, 75,
- /* 60 */ 135, 57, 58, 250, 240, 247, 345, 48, 226, 285,
- /* 70 */ 51, 6, 243, 14, 230, 78, 187, 94, 248, 61,
- /* 80 */ 254, 31, 299, 198, 290, 188, 190, 169, 109, 231,
- /* 90 */ 94, 51, 45, 30, 210, 206, 252, 285, 57, 58,
- /* 100 */ 15, 240, 247, 345, 48, 170, 277, 51, 6, 14,
- /* 110 */ 285, 78, 178, 28, 190, 109, 31, 311, 173, 290,
- /* 120 */ 548, 68, 253, 353, 109, 231, 333, 190, 45, 30,
- /* 130 */ 208, 257, 190, 188, 57, 58, 273, 240, 247, 345,
- /* 140 */ 48, 190, 22, 51, 6, 14, 31, 78, 187, 290,
- /* 150 */ 29, 268, 363, 213, 133, 221, 295, 331, 94, 422,
- /* 160 */ 109, 231, 61, 254, 45, 11, 40, 205, 81, 281,
- /* 170 */ 57, 58, 250, 240, 247, 345, 48, 22, 285, 51,
- /* 180 */ 6, 14, 288, 75, 180, 284, 227, 263, 94, 133,
- /* 190 */ 31, 262, 261, 290, 282, 287, 109, 231, 263, 172,
- /* 200 */ 45, 30, 262, 261, 237, 251, 57, 58, 285, 240,
- /* 210 */ 247, 345, 48, 142, 328, 51, 6, 14, 173, 75,
- /* 220 */ 182, 188, 22, 218, 363, 296, 69, 221, 276, 195,
- /* 230 */ 94, 47, 109, 231, 133, 190, 45, 30, 249, 75,
- /* 240 */ 217, 258, 57, 58, 250, 240, 247, 345, 48, 55,
- /* 250 */ 285, 51, 6, 14, 31, 78, 179, 290, 25, 73,
- /* 260 */ 363, 274, 38, 221, 31, 306, 94, 290, 109, 231,
- /* 270 */ 321, 51, 45, 11, 292, 291, 173, 188, 57, 58,
- /* 280 */ 250, 240, 247, 345, 48, 229, 285, 51, 6, 14,
- /* 290 */ 236, 78, 187, 263, 23, 348, 31, 262, 261, 290,
- /* 300 */ 25, 37, 188, 199, 109, 231, 144, 188, 45, 13,
- /* 310 */ 22, 173, 192, 31, 3, 58, 290, 240, 247, 345,
- /* 320 */ 48, 276, 133, 51, 6, 14, 280, 85, 187, 218,
- /* 330 */ 272, 190, 412, 123, 233, 193, 190, 188, 171, 188,
- /* 340 */ 109, 231, 273, 312, 45, 13, 215, 188, 276, 31,
- /* 350 */ 3, 58, 225, 240, 247, 345, 48, 41, 47, 51,
- /* 360 */ 6, 2, 5, 324, 325, 12, 7, 327, 322, 10,
- /* 370 */ 9, 146, 222, 124, 75, 31, 173, 335, 290, 175,
- /* 380 */ 56, 315, 314, 320, 188, 17, 276, 39, 276, 33,
- /* 390 */ 2, 5, 324, 325, 12, 7, 327, 322, 10, 9,
- /* 400 */ 14, 294, 75, 177, 267, 190, 51, 94, 164, 19,
- /* 410 */ 315, 314, 320, 190, 246, 109, 184, 317, 129, 145,
- /* 420 */ 30, 188, 191, 173, 188, 57, 58, 285, 240, 247,
- /* 430 */ 345, 48, 158, 276, 51, 6, 22, 2, 5, 324,
- /* 440 */ 325, 12, 7, 327, 322, 10, 9, 14, 133, 75,
- /* 450 */ 182, 349, 341, 190, 113, 21, 139, 315, 314, 320,
- /* 460 */ 34, 202, 109, 231, 94, 26, 92, 30, 190, 292,
- /* 470 */ 224, 22, 57, 58, 350, 240, 247, 345, 48, 190,
- /* 480 */ 121, 51, 6, 133, 285, 31, 190, 42, 189, 2,
- /* 490 */ 5, 324, 325, 12, 7, 327, 322, 10, 9, 329,
- /* 500 */ 307, 305, 308, 309, 310, 304, 303, 298, 63, 315,
- /* 510 */ 314, 320, 273, 119, 2, 5, 324, 325, 12, 7,
- /* 520 */ 327, 322, 10, 9, 14, 156, 75, 182, 276, 36,
- /* 530 */ 344, 319, 154, 70, 315, 314, 320, 188, 188, 109,
- /* 540 */ 231, 294, 356, 16, 30, 47, 157, 35, 292, 57,
- /* 550 */ 58, 289, 240, 247, 345, 48, 132, 14, 51, 75,
- /* 560 */ 185, 137, 415, 341, 27, 159, 168, 334, 358, 415,
- /* 570 */ 289, 276, 109, 231, 188, 188, 276, 30, 279, 190,
- /* 580 */ 42, 44, 57, 58, 294, 240, 247, 345, 48, 71,
- /* 590 */ 244, 51, 329, 307, 305, 308, 309, 310, 304, 303,
- /* 600 */ 298, 269, 363, 219, 292, 221, 67, 323, 94, 340,
- /* 610 */ 141, 97, 212, 280, 188, 226, 188, 346, 313, 140,
- /* 620 */ 118, 255, 250, 203, 183, 188, 363, 219, 285, 221,
- /* 630 */ 65, 339, 94, 301, 276, 96, 363, 219, 188, 221,
- /* 640 */ 67, 346, 94, 259, 118, 105, 250, 160, 359, 138,
- /* 650 */ 188, 346, 285, 260, 118, 188, 250, 301, 360, 353,
- /* 660 */ 188, 326, 285, 318, 276, 117, 336, 301, 363, 219,
- /* 670 */ 188, 221, 67, 188, 94, 363, 219, 101, 221, 67,
- /* 680 */ 292, 94, 108, 346, 102, 112, 118, 162, 250, 251,
- /* 690 */ 346, 234, 289, 118, 285, 250, 23, 292, 229, 301,
- /* 700 */ 292, 285, 343, 114, 363, 219, 301, 221, 67, 347,
- /* 710 */ 94, 363, 219, 99, 221, 67, 4, 94, 292, 346,
- /* 720 */ 106, 116, 118, 128, 250, 364, 346, 239, 143, 118,
- /* 730 */ 285, 250, 242, 190, 42, 301, 292, 285, 276, 232,
- /* 740 */ 207, 201, 301, 276, 38, 136, 329, 307, 305, 308,
- /* 750 */ 309, 310, 304, 303, 298, 363, 219, 266, 221, 67,
- /* 760 */ 276, 94, 363, 219, 104, 221, 67, 286, 94, 278,
- /* 770 */ 346, 107, 147, 118, 52, 250, 337, 346, 19, 194,
- /* 780 */ 118, 285, 250, 245, 256, 32, 301, 276, 285, 1,
- /* 790 */ 83, 363, 219, 301, 220, 67, 76, 94, 363, 219,
- /* 800 */ 103, 221, 67, 90, 94, 79, 346, 100, 351, 118,
- /* 810 */ 80, 250, 204, 346, 84, 302, 118, 285, 250, 62,
- /* 820 */ 271, 241, 301, 188, 285, 280, 46, 363, 219, 301,
- /* 830 */ 221, 66, 43, 94, 363, 216, 98, 221, 166, 91,
- /* 840 */ 94, 130, 346, 20, 82, 118, 200, 250, 41, 346,
- /* 850 */ 294, 8, 118, 285, 250, 338, 296, 296, 301, 296,
- /* 860 */ 285, 296, 296, 296, 296, 296, 296, 296, 181, 355,
- /* 870 */ 363, 275, 296, 221, 127, 296, 94, 363, 275, 296,
- /* 880 */ 221, 59, 89, 94, 296, 346, 296, 296, 118, 296,
- /* 890 */ 250, 296, 346, 196, 296, 118, 285, 250, 296, 296,
- /* 900 */ 296, 296, 296, 285, 363, 86, 296, 72, 53, 93,
- /* 910 */ 87, 363, 86, 296, 74, 60, 93, 87, 296, 346,
- /* 920 */ 296, 296, 118, 296, 250, 296, 346, 296, 296, 118,
- /* 930 */ 285, 250, 296, 296, 296, 296, 296, 285, 296, 296,
- /* 940 */ 296, 296, 296, 296, 363, 275, 296, 221, 127, 296,
- /* 950 */ 94, 296, 296, 296, 296, 296, 296, 296, 296, 346,
- /* 960 */ 296, 296, 118, 296, 250, 296, 296, 357, 363, 228,
- /* 970 */ 285, 221, 54, 95, 94, 296, 296, 296, 296, 296,
- /* 980 */ 296, 363, 275, 346, 221, 127, 118, 94, 250, 296,
- /* 990 */ 296, 296, 296, 296, 285, 296, 346, 296, 296, 118,
- /* 1000 */ 296, 250, 363, 216, 223, 221, 166, 285, 94, 316,
- /* 1010 */ 235, 361, 362, 214, 300, 14, 296, 346, 296, 296,
- /* 1020 */ 118, 296, 250, 363, 275, 296, 221, 127, 285, 94,
- /* 1030 */ 109, 296, 296, 296, 296, 296, 296, 352, 346, 296,
- /* 1040 */ 296, 118, 296, 250, 296, 296, 197, 363, 186, 285,
- /* 1050 */ 221, 151, 238, 94, 296, 296, 296, 363, 275, 296,
- /* 1060 */ 221, 167, 346, 94, 296, 118, 296, 250, 296, 296,
- /* 1070 */ 296, 296, 346, 285, 296, 118, 296, 250, 363, 275,
- /* 1080 */ 296, 221, 134, 285, 94, 296, 296, 296, 296, 296,
- /* 1090 */ 296, 296, 296, 346, 296, 296, 118, 296, 250, 363,
- /* 1100 */ 275, 296, 221, 126, 285, 94, 296, 296, 296, 296,
- /* 1110 */ 296, 296, 296, 296, 346, 296, 296, 118, 296, 250,
- /* 1120 */ 296, 296, 296, 363, 275, 285, 221, 131, 296, 94,
- /* 1130 */ 296, 296, 296, 363, 275, 296, 221, 155, 346, 94,
- /* 1140 */ 296, 118, 296, 250, 296, 296, 296, 296, 346, 285,
- /* 1150 */ 296, 118, 296, 250, 363, 275, 296, 221, 153, 285,
- /* 1160 */ 94, 296, 296, 296, 296, 296, 296, 296, 296, 346,
- /* 1170 */ 296, 296, 118, 296, 250, 363, 275, 296, 221, 125,
- /* 1180 */ 285, 94, 296, 296, 296, 296, 296, 296, 296, 296,
- /* 1190 */ 346, 296, 296, 118, 296, 250, 296, 296, 296, 363,
- /* 1200 */ 275, 285, 221, 163, 296, 94, 296, 296, 296, 363,
- /* 1210 */ 275, 296, 221, 165, 346, 94, 296, 118, 296, 250,
- /* 1220 */ 296, 296, 296, 296, 346, 285, 296, 118, 296, 250,
- /* 1230 */ 363, 275, 296, 221, 150, 285, 94, 296, 296, 296,
- /* 1240 */ 296, 296, 296, 296, 296, 346, 296, 296, 118, 296,
- /* 1250 */ 250, 363, 275, 296, 221, 64, 285, 94, 296, 296,
- /* 1260 */ 296, 296, 296, 296, 296, 296, 346, 296, 296, 118,
- /* 1270 */ 296, 250, 296, 296, 296, 363, 275, 285, 221, 120,
- /* 1280 */ 296, 94, 296, 296, 296, 363, 275, 296, 221, 152,
- /* 1290 */ 346, 94, 296, 118, 296, 250, 296, 296, 296, 296,
- /* 1300 */ 346, 285, 296, 118, 296, 250, 363, 275, 296, 221,
- /* 1310 */ 149, 285, 94, 296, 296, 296, 296, 296, 296, 296,
- /* 1320 */ 296, 346, 296, 296, 118, 296, 250, 363, 275, 296,
- /* 1330 */ 221, 148, 285, 94, 296, 296, 296, 296, 296, 296,
- /* 1340 */ 296, 296, 346, 296, 296, 118, 296, 250, 296, 296,
- /* 1350 */ 296, 363, 275, 285, 221, 363, 275, 94, 221, 296,
- /* 1360 */ 296, 94, 296, 296, 296, 296, 346, 296, 296, 115,
- /* 1370 */ 346, 250, 296, 110, 296, 250, 296, 285, 296, 363,
- /* 1380 */ 275, 285, 221, 296, 296, 94, 296, 296, 296, 296,
- /* 1390 */ 296, 296, 296, 296, 346, 296, 296, 111, 296, 250,
- /* 1400 */ 296, 296, 296, 296, 296, 285,
+ /* 0 */ 4, 11, 83, 53, 247, 99, 220, 180, 345, 43,
+ /* 10 */ 231, 131, 47, 7, 363, 244, 103, 191, 254, 253,
+ /* 20 */ 263, 185, 15, 49, 45, 42, 63, 226, 326, 323,
+ /* 30 */ 292, 52, 184, 95, 60, 2, 560, 51, 257, 253,
+ /* 40 */ 263, 184, 40, 17, 16, 352, 353, 24, 28, 360,
+ /* 50 */ 361, 25, 34, 269, 268, 265, 266, 267, 273, 274,
+ /* 60 */ 280, 281, 282, 279, 278, 18, 169, 301, 310, 98,
+ /* 70 */ 289, 217, 47, 233, 101, 23, 98, 185, 31, 209,
+ /* 80 */ 208, 349, 11, 49, 45, 291, 260, 8, 72, 50,
+ /* 90 */ 300, 322, 131, 18, 331, 251, 310, 300, 200, 275,
+ /* 100 */ 13, 184, 40, 17, 16, 352, 353, 24, 28, 360,
+ /* 110 */ 361, 25, 34, 269, 268, 265, 266, 267, 273, 274,
+ /* 120 */ 280, 281, 282, 279, 278, 4, 18, 87, 172, 310,
+ /* 130 */ 26, 184, 18, 329, 43, 310, 18, 184, 340, 310,
+ /* 140 */ 27, 103, 191, 132, 246, 229, 235, 19, 236, 54,
+ /* 150 */ 42, 63, 4, 326, 323, 292, 52, 304, 288, 60,
+ /* 160 */ 2, 264, 237, 4, 185, 84, 176, 185, 103, 201,
+ /* 170 */ 239, 365, 43, 369, 366, 54, 344, 334, 39, 103,
+ /* 180 */ 191, 18, 333, 18, 310, 19, 310, 27, 42, 63,
+ /* 190 */ 11, 326, 323, 292, 52, 73, 204, 60, 2, 4,
+ /* 200 */ 131, 87, 187, 118, 328, 350, 364, 243, 43, 196,
+ /* 210 */ 227, 185, 185, 185, 155, 103, 191, 307, 288, 317,
+ /* 220 */ 30, 19, 87, 137, 42, 63, 11, 326, 323, 292,
+ /* 230 */ 52, 166, 293, 60, 2, 4, 131, 84, 176, 349,
+ /* 240 */ 184, 184, 321, 56, 43, 255, 18, 259, 427, 310,
+ /* 250 */ 258, 103, 191, 121, 60, 185, 184, 15, 168, 349,
+ /* 260 */ 42, 63, 32, 326, 323, 292, 52, 135, 288, 60,
+ /* 270 */ 2, 4, 166, 87, 178, 38, 230, 86, 252, 201,
+ /* 280 */ 43, 165, 288, 18, 330, 190, 310, 103, 191, 241,
+ /* 290 */ 50, 309, 245, 19, 9, 21, 42, 63, 202, 326,
+ /* 300 */ 323, 292, 52, 249, 248, 60, 2, 4, 296, 84,
+ /* 310 */ 174, 171, 11, 184, 362, 47, 43, 184, 295, 37,
+ /* 320 */ 341, 185, 131, 103, 191, 185, 49, 45, 315, 19,
+ /* 330 */ 11, 98, 42, 63, 116, 326, 323, 292, 52, 166,
+ /* 340 */ 131, 60, 2, 294, 365, 437, 369, 366, 54, 288,
+ /* 350 */ 334, 164, 300, 184, 184, 218, 269, 268, 265, 266,
+ /* 360 */ 267, 273, 274, 280, 281, 282, 279, 278, 4, 210,
+ /* 370 */ 90, 176, 286, 111, 36, 305, 130, 43, 170, 185,
+ /* 380 */ 348, 166, 87, 232, 103, 191, 14, 184, 288, 250,
+ /* 390 */ 19, 288, 184, 42, 63, 109, 326, 323, 292, 52,
+ /* 400 */ 166, 194, 60, 2, 4, 193, 84, 175, 184, 87,
+ /* 410 */ 288, 22, 234, 43, 60, 98, 123, 332, 338, 55,
+ /* 420 */ 103, 191, 113, 332, 219, 55, 15, 167, 349, 42,
+ /* 430 */ 63, 288, 326, 323, 292, 52, 300, 288, 60, 2,
+ /* 440 */ 4, 60, 87, 173, 335, 293, 298, 303, 134, 43,
+ /* 450 */ 64, 185, 18, 185, 185, 310, 103, 183, 197, 214,
+ /* 460 */ 302, 18, 19, 288, 181, 42, 63, 185, 326, 323,
+ /* 470 */ 292, 52, 10, 284, 60, 2, 4, 293, 87, 177,
+ /* 480 */ 185, 354, 430, 46, 44, 43, 1, 5, 185, 430,
+ /* 490 */ 357, 301, 103, 191, 145, 318, 287, 233, 19, 317,
+ /* 500 */ 98, 42, 63, 185, 326, 323, 292, 52, 41, 291,
+ /* 510 */ 60, 4, 70, 87, 187, 322, 149, 290, 343, 106,
+ /* 520 */ 43, 300, 337, 157, 185, 185, 171, 103, 191, 185,
+ /* 530 */ 133, 285, 239, 19, 37, 320, 42, 63, 185, 326,
+ /* 540 */ 323, 292, 52, 301, 12, 60, 185, 216, 336, 233,
+ /* 550 */ 150, 367, 98, 301, 105, 185, 203, 318, 185, 233,
+ /* 560 */ 112, 291, 98, 18, 72, 59, 195, 322, 75, 276,
+ /* 570 */ 320, 291, 50, 300, 72, 184, 128, 322, 182, 359,
+ /* 580 */ 224, 78, 301, 300, 320, 156, 88, 68, 76, 67,
+ /* 590 */ 94, 81, 301, 115, 207, 179, 217, 320, 233, 101,
+ /* 600 */ 291, 98, 312, 72, 222, 65, 322, 108, 288, 138,
+ /* 610 */ 291, 301, 300, 72, 66, 228, 322, 233, 57, 92,
+ /* 620 */ 98, 301, 300, 320, 288, 318, 126, 233, 112, 291,
+ /* 630 */ 98, 129, 72, 277, 309, 322, 297, 223, 139, 291,
+ /* 640 */ 301, 300, 72, 104, 217, 322, 233, 100, 212, 98,
+ /* 650 */ 13, 300, 211, 288, 110, 79, 301, 120, 291, 320,
+ /* 660 */ 318, 72, 233, 112, 322, 98, 270, 301, 311, 288,
+ /* 670 */ 300, 271, 288, 233, 291, 198, 98, 72, 74, 161,
+ /* 680 */ 322, 301, 107, 215, 317, 186, 300, 233, 141, 256,
+ /* 690 */ 98, 322, 308, 35, 320, 91, 143, 300, 320, 291,
+ /* 700 */ 301, 317, 72, 346, 318, 322, 233, 62, 93, 98,
+ /* 710 */ 301, 300, 339, 102, 318, 213, 233, 112, 291, 98,
+ /* 720 */ 33, 72, 85, 206, 322, 89, 96, 327, 291, 320,
+ /* 730 */ 300, 72, 190, 221, 322, 306, 325, 299, 301, 32,
+ /* 740 */ 300, 262, 88, 347, 77, 58, 94, 81, 301, 160,
+ /* 750 */ 319, 162, 216, 192, 233, 150, 291, 98, 20, 72,
+ /* 760 */ 9, 48, 322, 80, 261, 194, 291, 301, 300, 72,
+ /* 770 */ 351, 217, 322, 233, 101, 307, 98, 97, 300, 225,
+ /* 780 */ 82, 136, 189, 301, 358, 291, 309, 318, 72, 233,
+ /* 790 */ 163, 322, 98, 185, 342, 305, 301, 300, 39, 6,
+ /* 800 */ 318, 291, 233, 158, 72, 98, 305, 322, 293, 305,
+ /* 810 */ 305, 305, 301, 300, 291, 305, 318, 72, 233, 114,
+ /* 820 */ 322, 98, 305, 305, 305, 301, 300, 305, 305, 318,
+ /* 830 */ 291, 188, 125, 72, 98, 305, 322, 305, 305, 305,
+ /* 840 */ 305, 305, 300, 291, 301, 305, 72, 305, 318, 322,
+ /* 850 */ 233, 119, 301, 98, 305, 300, 318, 305, 233, 124,
+ /* 860 */ 305, 98, 291, 301, 305, 72, 305, 318, 322, 233,
+ /* 870 */ 291, 305, 98, 72, 300, 305, 322, 305, 305, 301,
+ /* 880 */ 305, 291, 300, 318, 71, 233, 153, 322, 98, 305,
+ /* 890 */ 305, 305, 301, 300, 305, 305, 318, 291, 233, 152,
+ /* 900 */ 72, 98, 305, 322, 305, 305, 305, 305, 301, 300,
+ /* 910 */ 291, 305, 318, 72, 233, 140, 322, 98, 305, 305,
+ /* 920 */ 305, 301, 300, 305, 305, 318, 291, 233, 159, 72,
+ /* 930 */ 98, 305, 322, 305, 305, 305, 305, 301, 300, 291,
+ /* 940 */ 305, 318, 72, 233, 147, 322, 98, 240, 305, 305,
+ /* 950 */ 240, 300, 305, 3, 305, 291, 3, 305, 72, 305,
+ /* 960 */ 305, 322, 305, 305, 301, 305, 305, 300, 318, 103,
+ /* 970 */ 233, 154, 103, 98, 301, 305, 305, 305, 318, 305,
+ /* 980 */ 233, 122, 291, 98, 242, 72, 305, 370, 322, 305,
+ /* 990 */ 305, 305, 291, 301, 300, 72, 305, 318, 322, 233,
+ /* 1000 */ 117, 305, 98, 301, 300, 305, 305, 318, 305, 233,
+ /* 1010 */ 144, 291, 98, 305, 72, 29, 238, 322, 29, 238,
+ /* 1020 */ 305, 291, 301, 300, 72, 305, 318, 322, 233, 151,
+ /* 1030 */ 305, 98, 305, 300, 305, 305, 305, 305, 305, 305,
+ /* 1040 */ 291, 305, 305, 72, 305, 305, 322, 305, 305, 301,
+ /* 1050 */ 305, 305, 300, 318, 305, 233, 61, 305, 98, 301,
+ /* 1060 */ 305, 305, 305, 318, 305, 233, 127, 291, 98, 305,
+ /* 1070 */ 72, 305, 305, 322, 305, 305, 305, 291, 301, 300,
+ /* 1080 */ 72, 305, 318, 322, 233, 142, 305, 98, 301, 300,
+ /* 1090 */ 305, 305, 318, 305, 233, 146, 291, 98, 305, 72,
+ /* 1100 */ 305, 305, 322, 305, 305, 305, 291, 301, 300, 72,
+ /* 1110 */ 305, 318, 322, 233, 148, 305, 98, 305, 300, 305,
+ /* 1120 */ 305, 305, 305, 305, 305, 291, 305, 305, 72, 305,
+ /* 1130 */ 301, 322, 305, 305, 318, 305, 233, 300, 305, 98,
+ /* 1140 */ 305, 301, 305, 305, 305, 355, 305, 233, 291, 305,
+ /* 1150 */ 98, 69, 305, 305, 322, 305, 305, 301, 301, 356,
+ /* 1160 */ 300, 205, 368, 233, 233, 322, 98, 98, 305, 305,
+ /* 1170 */ 301, 300, 305, 305, 324, 199, 233, 305, 305, 98,
+ /* 1180 */ 301, 322, 322, 305, 316, 305, 233, 300, 300, 98,
+ /* 1190 */ 305, 305, 301, 305, 322, 305, 272, 305, 233, 305,
+ /* 1200 */ 300, 98, 305, 301, 322, 305, 305, 314, 305, 233,
+ /* 1210 */ 300, 305, 98, 305, 301, 301, 322, 305, 313, 283,
+ /* 1220 */ 233, 233, 300, 98, 98, 305, 305, 322, 305, 305,
+ /* 1230 */ 305, 305, 305, 300, 305, 305, 305, 305, 322, 322,
+ /* 1240 */ 305, 305, 305, 305, 300, 300,
);
static public $yy_lookahead = array(
- /* 0 */ 7, 15, 9, 10, 10, 12, 12, 14, 14, 16,
- /* 10 */ 16, 7, 8, 3, 10, 22, 23, 7, 77, 26,
- /* 20 */ 27, 75, 76, 82, 78, 32, 33, 81, 35, 36,
- /* 30 */ 37, 38, 22, 92, 41, 42, 7, 99, 9, 10,
- /* 40 */ 102, 95, 104, 75, 76, 34, 78, 101, 38, 81,
- /* 50 */ 8, 22, 23, 42, 11, 26, 27, 7, 90, 9,
- /* 60 */ 10, 32, 33, 95, 35, 36, 37, 38, 25, 101,
- /* 70 */ 41, 42, 43, 7, 78, 9, 10, 81, 8, 69,
- /* 80 */ 70, 7, 8, 13, 10, 15, 44, 78, 22, 23,
- /* 90 */ 81, 41, 26, 27, 87, 21, 3, 101, 32, 33,
- /* 100 */ 7, 35, 36, 37, 38, 8, 97, 41, 42, 7,
- /* 110 */ 101, 9, 10, 25, 44, 22, 7, 8, 82, 10,
- /* 120 */ 72, 73, 74, 75, 22, 23, 8, 44, 26, 27,
- /* 130 */ 21, 38, 44, 15, 32, 33, 18, 35, 36, 37,
- /* 140 */ 38, 44, 27, 41, 42, 7, 7, 9, 10, 10,
- /* 150 */ 11, 104, 75, 76, 39, 78, 10, 18, 81, 44,
- /* 160 */ 22, 23, 69, 70, 26, 27, 7, 90, 9, 10,
- /* 170 */ 32, 33, 95, 35, 36, 37, 38, 27, 101, 41,
- /* 180 */ 42, 7, 23, 9, 10, 78, 40, 26, 81, 39,
- /* 190 */ 7, 30, 31, 10, 35, 36, 22, 23, 26, 8,
- /* 200 */ 26, 27, 30, 31, 43, 75, 32, 33, 101, 35,
- /* 210 */ 36, 37, 38, 77, 8, 41, 42, 7, 82, 9,
- /* 220 */ 10, 15, 27, 40, 75, 76, 96, 78, 92, 34,
- /* 230 */ 81, 13, 22, 23, 39, 44, 26, 27, 43, 9,
- /* 240 */ 10, 111, 32, 33, 95, 35, 36, 37, 38, 83,
- /* 250 */ 101, 41, 42, 7, 7, 9, 10, 10, 11, 88,
- /* 260 */ 75, 76, 11, 78, 7, 8, 81, 10, 22, 23,
- /* 270 */ 8, 41, 26, 27, 103, 8, 82, 15, 32, 33,
- /* 280 */ 95, 35, 36, 37, 38, 34, 101, 41, 42, 7,
- /* 290 */ 10, 9, 10, 26, 11, 8, 7, 30, 31, 10,
- /* 300 */ 11, 107, 15, 23, 22, 23, 77, 15, 26, 27,
- /* 310 */ 27, 82, 89, 7, 32, 33, 10, 35, 36, 37,
- /* 320 */ 38, 92, 39, 41, 42, 7, 103, 9, 10, 40,
- /* 330 */ 8, 44, 8, 77, 9, 10, 44, 15, 82, 15,
- /* 340 */ 22, 23, 18, 28, 26, 27, 40, 15, 92, 7,
- /* 350 */ 32, 33, 10, 35, 36, 37, 38, 25, 13, 41,
- /* 360 */ 42, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- /* 370 */ 55, 77, 28, 77, 9, 7, 82, 8, 10, 34,
- /* 380 */ 83, 66, 67, 68, 15, 24, 92, 42, 92, 7,
- /* 390 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- /* 400 */ 7, 105, 9, 10, 78, 44, 41, 81, 17, 27,
- /* 410 */ 66, 67, 68, 44, 8, 22, 23, 8, 77, 100,
- /* 420 */ 27, 15, 13, 82, 15, 32, 33, 101, 35, 36,
- /* 430 */ 37, 38, 83, 92, 41, 42, 27, 46, 47, 48,
- /* 440 */ 49, 50, 51, 52, 53, 54, 55, 7, 39, 9,
- /* 450 */ 10, 8, 28, 44, 88, 24, 100, 66, 67, 68,
- /* 460 */ 25, 78, 22, 23, 81, 21, 28, 27, 44, 103,
- /* 470 */ 28, 27, 32, 33, 43, 35, 36, 37, 38, 44,
- /* 480 */ 100, 41, 42, 39, 101, 7, 44, 45, 10, 46,
- /* 490 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 57,
- /* 500 */ 58, 59, 60, 61, 62, 63, 64, 65, 83, 66,
- /* 510 */ 67, 68, 18, 77, 46, 47, 48, 49, 50, 51,
- /* 520 */ 52, 53, 54, 55, 7, 17, 9, 10, 92, 29,
- /* 530 */ 8, 8, 24, 88, 66, 67, 68, 15, 15, 22,
- /* 540 */ 23, 105, 28, 11, 27, 13, 99, 29, 103, 32,
- /* 550 */ 33, 104, 35, 36, 37, 38, 77, 7, 41, 9,
- /* 560 */ 10, 77, 8, 28, 21, 99, 82, 8, 8, 15,
- /* 570 */ 104, 92, 22, 23, 15, 15, 92, 27, 10, 44,
- /* 580 */ 45, 56, 32, 33, 105, 35, 36, 37, 38, 88,
- /* 590 */ 41, 41, 57, 58, 59, 60, 61, 62, 63, 64,
- /* 600 */ 65, 10, 75, 76, 103, 78, 79, 8, 81, 8,
- /* 610 */ 100, 84, 85, 103, 15, 25, 15, 90, 8, 77,
- /* 620 */ 93, 10, 95, 85, 86, 15, 75, 76, 101, 78,
- /* 630 */ 79, 8, 81, 106, 92, 84, 75, 76, 15, 78,
- /* 640 */ 79, 90, 81, 8, 93, 84, 95, 10, 8, 77,
- /* 650 */ 15, 90, 101, 8, 93, 15, 95, 106, 74, 75,
- /* 660 */ 15, 4, 101, 8, 92, 88, 8, 106, 75, 76,
- /* 670 */ 15, 78, 79, 15, 81, 75, 76, 84, 78, 79,
- /* 680 */ 103, 81, 88, 90, 84, 88, 93, 99, 95, 75,
- /* 690 */ 90, 3, 104, 93, 101, 95, 11, 103, 34, 106,
- /* 700 */ 103, 101, 10, 88, 75, 76, 106, 78, 79, 8,
- /* 710 */ 81, 75, 76, 84, 78, 79, 108, 81, 103, 90,
- /* 720 */ 84, 88, 93, 77, 95, 111, 90, 23, 77, 93,
- /* 730 */ 101, 95, 41, 44, 45, 106, 103, 101, 92, 3,
- /* 740 */ 20, 10, 106, 92, 11, 77, 57, 58, 59, 60,
- /* 750 */ 61, 62, 63, 64, 65, 75, 76, 8, 78, 79,
- /* 760 */ 92, 81, 75, 76, 84, 78, 79, 28, 81, 8,
- /* 770 */ 90, 84, 77, 93, 100, 95, 8, 90, 27, 10,
- /* 780 */ 93, 101, 95, 43, 69, 19, 106, 92, 101, 15,
- /* 790 */ 9, 75, 76, 106, 78, 79, 9, 81, 75, 76,
- /* 800 */ 84, 78, 79, 15, 81, 9, 90, 84, 8, 93,
- /* 810 */ 9, 95, 20, 90, 9, 4, 93, 101, 95, 10,
- /* 820 */ 102, 92, 106, 15, 101, 103, 94, 75, 76, 106,
- /* 830 */ 78, 79, 15, 81, 75, 76, 84, 78, 79, 97,
- /* 840 */ 81, 100, 90, 27, 9, 93, 91, 95, 25, 90,
- /* 850 */ 105, 87, 93, 101, 95, 85, 112, 112, 106, 112,
- /* 860 */ 101, 112, 112, 112, 112, 112, 112, 112, 109, 110,
- /* 870 */ 75, 76, 112, 78, 79, 112, 81, 75, 76, 112,
- /* 880 */ 78, 79, 80, 81, 112, 90, 112, 112, 93, 112,
- /* 890 */ 95, 112, 90, 98, 112, 93, 101, 95, 112, 112,
- /* 900 */ 112, 112, 112, 101, 75, 76, 112, 78, 79, 80,
- /* 910 */ 81, 75, 76, 112, 78, 79, 80, 81, 112, 90,
- /* 920 */ 112, 112, 93, 112, 95, 112, 90, 112, 112, 93,
- /* 930 */ 101, 95, 112, 112, 112, 112, 112, 101, 112, 112,
- /* 940 */ 112, 112, 112, 112, 75, 76, 112, 78, 79, 112,
- /* 950 */ 81, 112, 112, 112, 112, 112, 112, 112, 112, 90,
- /* 960 */ 112, 112, 93, 112, 95, 112, 112, 98, 75, 76,
- /* 970 */ 101, 78, 79, 80, 81, 112, 112, 112, 112, 112,
- /* 980 */ 112, 75, 76, 90, 78, 79, 93, 81, 95, 112,
- /* 990 */ 112, 112, 112, 112, 101, 112, 90, 112, 112, 93,
- /* 1000 */ 112, 95, 75, 76, 98, 78, 79, 101, 81, 1,
- /* 1010 */ 2, 3, 4, 5, 6, 7, 112, 90, 112, 112,
- /* 1020 */ 93, 112, 95, 75, 76, 112, 78, 79, 101, 81,
- /* 1030 */ 22, 112, 112, 112, 112, 112, 112, 110, 90, 112,
- /* 1040 */ 112, 93, 112, 95, 112, 112, 98, 75, 76, 101,
- /* 1050 */ 78, 79, 80, 81, 112, 112, 112, 75, 76, 112,
- /* 1060 */ 78, 79, 90, 81, 112, 93, 112, 95, 112, 112,
- /* 1070 */ 112, 112, 90, 101, 112, 93, 112, 95, 75, 76,
- /* 1080 */ 112, 78, 79, 101, 81, 112, 112, 112, 112, 112,
- /* 1090 */ 112, 112, 112, 90, 112, 112, 93, 112, 95, 75,
- /* 1100 */ 76, 112, 78, 79, 101, 81, 112, 112, 112, 112,
- /* 1110 */ 112, 112, 112, 112, 90, 112, 112, 93, 112, 95,
- /* 1120 */ 112, 112, 112, 75, 76, 101, 78, 79, 112, 81,
- /* 1130 */ 112, 112, 112, 75, 76, 112, 78, 79, 90, 81,
- /* 1140 */ 112, 93, 112, 95, 112, 112, 112, 112, 90, 101,
- /* 1150 */ 112, 93, 112, 95, 75, 76, 112, 78, 79, 101,
- /* 1160 */ 81, 112, 112, 112, 112, 112, 112, 112, 112, 90,
- /* 1170 */ 112, 112, 93, 112, 95, 75, 76, 112, 78, 79,
- /* 1180 */ 101, 81, 112, 112, 112, 112, 112, 112, 112, 112,
- /* 1190 */ 90, 112, 112, 93, 112, 95, 112, 112, 112, 75,
- /* 1200 */ 76, 101, 78, 79, 112, 81, 112, 112, 112, 75,
- /* 1210 */ 76, 112, 78, 79, 90, 81, 112, 93, 112, 95,
- /* 1220 */ 112, 112, 112, 112, 90, 101, 112, 93, 112, 95,
- /* 1230 */ 75, 76, 112, 78, 79, 101, 81, 112, 112, 112,
- /* 1240 */ 112, 112, 112, 112, 112, 90, 112, 112, 93, 112,
- /* 1250 */ 95, 75, 76, 112, 78, 79, 101, 81, 112, 112,
- /* 1260 */ 112, 112, 112, 112, 112, 112, 90, 112, 112, 93,
- /* 1270 */ 112, 95, 112, 112, 112, 75, 76, 101, 78, 79,
- /* 1280 */ 112, 81, 112, 112, 112, 75, 76, 112, 78, 79,
- /* 1290 */ 90, 81, 112, 93, 112, 95, 112, 112, 112, 112,
- /* 1300 */ 90, 101, 112, 93, 112, 95, 75, 76, 112, 78,
- /* 1310 */ 79, 101, 81, 112, 112, 112, 112, 112, 112, 112,
- /* 1320 */ 112, 90, 112, 112, 93, 112, 95, 75, 76, 112,
- /* 1330 */ 78, 79, 101, 81, 112, 112, 112, 112, 112, 112,
- /* 1340 */ 112, 112, 90, 112, 112, 93, 112, 95, 112, 112,
- /* 1350 */ 112, 75, 76, 101, 78, 75, 76, 81, 78, 112,
- /* 1360 */ 112, 81, 112, 112, 112, 112, 90, 112, 112, 93,
- /* 1370 */ 90, 95, 112, 93, 112, 95, 112, 101, 112, 75,
- /* 1380 */ 76, 101, 78, 112, 112, 81, 112, 112, 112, 112,
- /* 1390 */ 112, 112, 112, 112, 90, 112, 112, 93, 112, 95,
- /* 1400 */ 112, 112, 112, 112, 112, 101,
+ /* 0 */ 9, 31, 11, 12, 10, 14, 36, 16, 10, 18,
+ /* 10 */ 19, 41, 18, 27, 10, 45, 25, 26, 76, 77,
+ /* 20 */ 78, 17, 31, 29, 30, 34, 35, 32, 37, 38,
+ /* 30 */ 39, 40, 46, 17, 43, 44, 74, 75, 76, 77,
+ /* 40 */ 78, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ /* 50 */ 55, 56, 57, 59, 60, 61, 62, 63, 64, 65,
+ /* 60 */ 66, 67, 68, 69, 70, 9, 83, 77, 12, 86,
+ /* 70 */ 10, 81, 18, 83, 84, 24, 86, 17, 9, 89,
+ /* 80 */ 90, 21, 31, 29, 30, 95, 103, 13, 98, 15,
+ /* 90 */ 107, 101, 41, 9, 10, 10, 12, 107, 42, 45,
+ /* 100 */ 31, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ /* 110 */ 55, 56, 57, 59, 60, 61, 62, 63, 64, 65,
+ /* 120 */ 66, 67, 68, 69, 70, 9, 9, 11, 12, 12,
+ /* 130 */ 13, 46, 9, 10, 18, 12, 9, 46, 21, 12,
+ /* 140 */ 13, 25, 26, 82, 1, 2, 3, 31, 5, 6,
+ /* 150 */ 34, 35, 9, 37, 38, 39, 40, 10, 97, 43,
+ /* 160 */ 44, 45, 71, 9, 17, 11, 12, 17, 25, 42,
+ /* 170 */ 77, 2, 18, 4, 5, 6, 7, 8, 28, 25,
+ /* 180 */ 26, 9, 10, 9, 12, 31, 12, 13, 34, 35,
+ /* 190 */ 31, 37, 38, 39, 40, 102, 24, 43, 44, 9,
+ /* 200 */ 41, 11, 12, 82, 10, 10, 10, 114, 18, 15,
+ /* 210 */ 15, 17, 17, 17, 105, 25, 26, 108, 97, 110,
+ /* 220 */ 9, 31, 11, 12, 34, 35, 31, 37, 38, 39,
+ /* 230 */ 40, 87, 111, 43, 44, 9, 41, 11, 12, 21,
+ /* 240 */ 46, 46, 32, 12, 18, 14, 9, 16, 10, 12,
+ /* 250 */ 19, 25, 26, 82, 43, 17, 46, 31, 87, 21,
+ /* 260 */ 34, 35, 13, 37, 38, 39, 40, 82, 97, 43,
+ /* 270 */ 44, 9, 87, 11, 12, 9, 94, 11, 12, 42,
+ /* 280 */ 18, 10, 97, 9, 10, 36, 12, 25, 26, 71,
+ /* 290 */ 15, 109, 26, 31, 13, 28, 34, 35, 24, 37,
+ /* 300 */ 38, 39, 40, 37, 38, 43, 44, 9, 43, 11,
+ /* 310 */ 12, 36, 31, 46, 10, 18, 18, 46, 10, 44,
+ /* 320 */ 17, 17, 41, 25, 26, 17, 29, 30, 83, 31,
+ /* 330 */ 31, 86, 34, 35, 82, 37, 38, 39, 40, 87,
+ /* 340 */ 41, 43, 44, 10, 2, 46, 4, 5, 6, 97,
+ /* 350 */ 8, 10, 107, 46, 46, 12, 59, 60, 61, 62,
+ /* 360 */ 63, 64, 65, 66, 67, 68, 69, 70, 9, 26,
+ /* 370 */ 11, 12, 10, 82, 28, 12, 82, 18, 87, 17,
+ /* 380 */ 10, 87, 11, 12, 25, 26, 13, 46, 97, 32,
+ /* 390 */ 31, 97, 46, 34, 35, 82, 37, 38, 39, 40,
+ /* 400 */ 87, 28, 43, 44, 9, 42, 11, 12, 46, 11,
+ /* 410 */ 97, 33, 83, 18, 43, 86, 82, 78, 79, 80,
+ /* 420 */ 25, 26, 82, 78, 79, 80, 31, 87, 21, 34,
+ /* 430 */ 35, 97, 37, 38, 39, 40, 107, 97, 43, 44,
+ /* 440 */ 9, 43, 11, 12, 10, 111, 10, 10, 82, 18,
+ /* 450 */ 12, 17, 9, 17, 17, 12, 25, 26, 11, 12,
+ /* 460 */ 10, 9, 31, 97, 12, 34, 35, 17, 37, 38,
+ /* 470 */ 39, 40, 27, 10, 43, 44, 9, 111, 11, 12,
+ /* 480 */ 17, 10, 10, 99, 100, 18, 17, 18, 17, 17,
+ /* 490 */ 45, 77, 25, 26, 105, 81, 10, 83, 31, 110,
+ /* 500 */ 86, 34, 35, 17, 37, 38, 39, 40, 17, 95,
+ /* 510 */ 43, 9, 98, 11, 12, 101, 20, 10, 10, 93,
+ /* 520 */ 18, 107, 10, 27, 17, 17, 36, 25, 26, 17,
+ /* 530 */ 106, 10, 77, 31, 44, 109, 34, 35, 17, 37,
+ /* 540 */ 38, 39, 40, 77, 31, 43, 17, 81, 10, 83,
+ /* 550 */ 84, 10, 86, 77, 93, 17, 3, 81, 17, 83,
+ /* 560 */ 84, 95, 86, 9, 98, 106, 12, 101, 93, 114,
+ /* 570 */ 109, 95, 15, 107, 98, 46, 106, 101, 112, 113,
+ /* 580 */ 104, 93, 77, 107, 109, 88, 81, 88, 83, 84,
+ /* 590 */ 85, 86, 77, 82, 90, 91, 81, 109, 83, 84,
+ /* 600 */ 95, 86, 110, 98, 89, 88, 101, 93, 97, 82,
+ /* 610 */ 95, 77, 107, 98, 88, 81, 101, 83, 84, 85,
+ /* 620 */ 86, 77, 107, 109, 97, 81, 106, 83, 84, 95,
+ /* 630 */ 86, 106, 98, 45, 109, 101, 43, 92, 82, 95,
+ /* 640 */ 77, 107, 98, 93, 81, 101, 83, 84, 104, 86,
+ /* 650 */ 31, 107, 89, 97, 82, 11, 77, 82, 95, 109,
+ /* 660 */ 81, 98, 83, 84, 101, 86, 4, 77, 12, 97,
+ /* 670 */ 107, 81, 97, 83, 95, 23, 86, 98, 93, 105,
+ /* 680 */ 101, 77, 93, 104, 110, 81, 107, 83, 84, 85,
+ /* 690 */ 86, 101, 12, 33, 109, 11, 105, 107, 109, 95,
+ /* 700 */ 77, 110, 98, 10, 81, 101, 83, 84, 85, 86,
+ /* 710 */ 77, 107, 10, 93, 81, 32, 83, 84, 95, 86,
+ /* 720 */ 22, 98, 11, 23, 101, 11, 32, 32, 95, 109,
+ /* 730 */ 107, 98, 36, 12, 101, 12, 26, 104, 77, 13,
+ /* 740 */ 107, 10, 81, 7, 83, 84, 85, 86, 77, 20,
+ /* 750 */ 12, 12, 81, 12, 83, 84, 95, 86, 24, 98,
+ /* 760 */ 13, 58, 101, 11, 10, 28, 95, 77, 107, 98,
+ /* 770 */ 97, 81, 101, 83, 84, 108, 86, 103, 107, 89,
+ /* 780 */ 11, 106, 96, 77, 113, 95, 109, 81, 98, 83,
+ /* 790 */ 84, 101, 86, 17, 90, 115, 77, 107, 28, 92,
+ /* 800 */ 81, 95, 83, 84, 98, 86, 115, 101, 111, 115,
+ /* 810 */ 115, 115, 77, 107, 95, 115, 81, 98, 83, 84,
+ /* 820 */ 101, 86, 115, 115, 115, 77, 107, 115, 115, 81,
+ /* 830 */ 95, 83, 84, 98, 86, 115, 101, 115, 115, 115,
+ /* 840 */ 115, 115, 107, 95, 77, 115, 98, 115, 81, 101,
+ /* 850 */ 83, 84, 77, 86, 115, 107, 81, 115, 83, 84,
+ /* 860 */ 115, 86, 95, 77, 115, 98, 115, 81, 101, 83,
+ /* 870 */ 95, 115, 86, 98, 107, 115, 101, 115, 115, 77,
+ /* 880 */ 115, 95, 107, 81, 98, 83, 84, 101, 86, 115,
+ /* 890 */ 115, 115, 77, 107, 115, 115, 81, 95, 83, 84,
+ /* 900 */ 98, 86, 115, 101, 115, 115, 115, 115, 77, 107,
+ /* 910 */ 95, 115, 81, 98, 83, 84, 101, 86, 115, 115,
+ /* 920 */ 115, 77, 107, 115, 115, 81, 95, 83, 84, 98,
+ /* 930 */ 86, 115, 101, 115, 115, 115, 115, 77, 107, 95,
+ /* 940 */ 115, 81, 98, 83, 84, 101, 86, 3, 115, 115,
+ /* 950 */ 3, 107, 115, 9, 115, 95, 9, 115, 98, 115,
+ /* 960 */ 115, 101, 115, 115, 77, 115, 115, 107, 81, 25,
+ /* 970 */ 83, 84, 25, 86, 77, 115, 115, 115, 81, 115,
+ /* 980 */ 83, 84, 95, 86, 40, 98, 115, 40, 101, 115,
+ /* 990 */ 115, 115, 95, 77, 107, 98, 115, 81, 101, 83,
+ /* 1000 */ 84, 115, 86, 77, 107, 115, 115, 81, 115, 83,
+ /* 1010 */ 84, 95, 86, 115, 98, 71, 72, 101, 71, 72,
+ /* 1020 */ 115, 95, 77, 107, 98, 115, 81, 101, 83, 84,
+ /* 1030 */ 115, 86, 115, 107, 115, 115, 115, 115, 115, 115,
+ /* 1040 */ 95, 115, 115, 98, 115, 115, 101, 115, 115, 77,
+ /* 1050 */ 115, 115, 107, 81, 115, 83, 84, 115, 86, 77,
+ /* 1060 */ 115, 115, 115, 81, 115, 83, 84, 95, 86, 115,
+ /* 1070 */ 98, 115, 115, 101, 115, 115, 115, 95, 77, 107,
+ /* 1080 */ 98, 115, 81, 101, 83, 84, 115, 86, 77, 107,
+ /* 1090 */ 115, 115, 81, 115, 83, 84, 95, 86, 115, 98,
+ /* 1100 */ 115, 115, 101, 115, 115, 115, 95, 77, 107, 98,
+ /* 1110 */ 115, 81, 101, 83, 84, 115, 86, 115, 107, 115,
+ /* 1120 */ 115, 115, 115, 115, 115, 95, 115, 115, 98, 115,
+ /* 1130 */ 77, 101, 115, 115, 81, 115, 83, 107, 115, 86,
+ /* 1140 */ 115, 77, 115, 115, 115, 81, 115, 83, 95, 115,
+ /* 1150 */ 86, 98, 115, 115, 101, 115, 115, 77, 77, 95,
+ /* 1160 */ 107, 81, 81, 83, 83, 101, 86, 86, 115, 115,
+ /* 1170 */ 77, 107, 115, 115, 81, 95, 83, 115, 115, 86,
+ /* 1180 */ 77, 101, 101, 115, 81, 115, 83, 107, 107, 86,
+ /* 1190 */ 115, 115, 77, 115, 101, 115, 81, 115, 83, 115,
+ /* 1200 */ 107, 86, 115, 77, 101, 115, 115, 81, 115, 83,
+ /* 1210 */ 107, 115, 86, 115, 77, 77, 101, 115, 81, 81,
+ /* 1220 */ 83, 83, 107, 86, 86, 115, 115, 101, 115, 115,
+ /* 1230 */ 115, 115, 115, 107, 115, 115, 115, 115, 101, 101,
+ /* 1240 */ 115, 115, 115, 115, 107, 107,
);
- const YY_SHIFT_USE_DFLT = -15;
- const YY_SHIFT_MAX = 236;
+ const YY_SHIFT_USE_DFLT = -31;
+ const YY_SHIFT_MAX = 234;
static public $yy_shift_ofst = array(
- /* 0 */ 1008, 318, 282, 282, 282, 282, 102, 282, 282, 282,
- /* 10 */ 282, 282, 282, 282, -7, -7, 138, 66, 138, 66,
- /* 20 */ 66, 102, 66, 246, 66, 66, 66, 66, 66, 66,
- /* 30 */ 66, 66, 66, 66, 66, 66, 66, 66, 66, 29,
- /* 40 */ 210, 174, 440, 393, 550, 517, 517, 50, 93, 409,
- /* 50 */ 70, 230, 345, 369, 287, 332, 332, 365, 365, 292,
- /* 60 */ 292, 365, 292, 332, 292, 442, 535, 689, 1008, 10,
- /* 70 */ 139, 289, 118, 183, 324, 368, 368, 478, 342, 368,
- /* 80 */ 368, 368, 368, 368, 368, 342, 635, 532, 817, 808,
- /* 90 */ 835, 218, 218, 808, 218, 808, 344, 443, 315, 391,
- /* 100 */ 468, 468, 468, 468, 468, 468, 468, 468, 109, -6,
- /* 110 */ 267, 161, 74, 4, 247, 172, 306, 257, 172, 322,
- /* 120 */ 88, 11, 406, 262, 206, 97, 42, 361, 658, 601,
- /* 130 */ 11, 191, 599, 325, 424, 382, 610, 655, 645, 11,
- /* 140 */ 623, 11, 640, 560, 559, 11, 523, 522, 435, 83,
- /* 150 */ 83, 83, 83, 83, 835, 83, -14, 218, 823, 218,
- /* 160 */ 816, 218, 218, 83, -14, 83, 83, 83, -15, -15,
- /* 170 */ -15, -15, -15, -15, -15, 159, 195, 283, 444, 115,
- /* 180 */ 150, 431, 150, 508, 251, 150, 554, 150, 280, 43,
- /* 190 */ 146, 809, 768, 751, 740, 769, 438, 739, 731, 733,
- /* 200 */ 749, 761, 715, 766, 801, 792, 805, 796, 787, 774,
- /* 210 */ 781, 788, 800, 720, 736, 568, 543, 549, 591, 525,
- /* 220 */ 494, 494, 500, 514, 518, 590, 611, 692, 701, 704,
- /* 230 */ 691, 664, 811, 637, 657, 688, 685,
+ /* 0 */ 143, 359, 298, -9, -9, 154, 154, 154, 226, 395,
+ /* 10 */ 298, 154, 154, 154, 226, 154, 154, 154, 154, 154,
+ /* 20 */ 154, 154, 154, 154, 154, 154, 154, 154, 154, 154,
+ /* 30 */ 154, 154, 154, 154, 154, 154, 154, 116, 190, 262,
+ /* 40 */ 190, 431, 502, 502, 502, 502, 502, 502, 467, 502,
+ /* 50 */ 211, 143, 944, 195, 169, 342, 194, 308, 362, 275,
+ /* 60 */ 371, 529, 529, 398, 529, 150, 150, 529, 150, 54,
+ /* 70 */ -6, 297, 297, 947, 127, 117, 238, 60, 237, 443,
+ /* 80 */ 443, 74, 443, 452, 554, 443, 443, 443, 541, 443,
+ /* 90 */ 554, 443, 776, 776, 776, 769, 557, 557, 557, 491,
+ /* 100 */ -5, 55, 274, 231, 172, 84, 174, 123, 56, 450,
+ /* 110 */ 437, 436, -14, 463, 346, 471, 304, 85, 147, 267,
+ /* 120 */ 4, 196, 341, 434, 271, 91, 490, 210, 490, 490,
+ /* 130 */ 508, 447, 512, 490, 538, 521, 490, 69, 507, 486,
+ /* 140 */ 307, 307, 307, 557, 307, 557, 307, 307, 307, 303,
+ /* 150 */ 307, 307, 307, 307, 307, 557, 770, 769, 307, 307,
+ /* 160 */ 303, 557, 513, 307, -31, -31, -31, -31, -31, -31,
+ /* 170 */ -31, 266, -30, 281, 51, 299, 159, 159, 159, 496,
+ /* 180 */ 469, 373, 445, 249, 363, 343, 472, 159, 218, 731,
+ /* 190 */ 710, 696, 754, 723, 738, 737, 741, 739, 714, 652,
+ /* 200 */ 680, 656, 644, 662, 684, 700, 711, 698, 693, 702,
+ /* 210 */ 726, 683, 694, 660, 619, 695, 734, 703, 747, 736,
+ /* 220 */ 721, 588, 729, 752, 357, 370, 378, 438, 333, 553,
+ /* 230 */ -2, 16, 265, 407, 593,
);
- const YY_REDUCE_USE_DFLT = -63;
- const YY_REDUCE_MAX = 174;
+ const YY_REDUCE_USE_DFLT = -59;
+ const YY_REDUCE_MAX = 170;
static public $yy_reduce_ofst = array(
- /* 0 */ 48, 527, 636, 716, 680, 687, 759, 593, 629, 561,
- /* 10 */ 600, 551, 723, 752, 836, 829, 802, 869, 893, 948,
- /* 20 */ 795, 927, 906, 972, 1100, 1124, 982, 1134, 1079, 1058,
- /* 30 */ 1003, 1024, 1176, 1048, 1155, 1200, 1252, 1231, 1210, 1304,
- /* 40 */ 1280, 1276, -32, 77, 149, 185, -54, 9, 130, 484,
- /* 50 */ -59, -4, -62, 229, 136, 436, 479, 326, 107, 294,
- /* 60 */ 229, 383, 256, 296, 341, 194, 194, 194, 584, 614,
- /* 70 */ 223, 510, 542, 510, 542, 171, 577, 171, 171, 597,
- /* 80 */ 594, 633, 615, 445, 366, 501, 572, 447, 668, 695,
- /* 90 */ 538, 466, 588, 646, 447, 651, 608, 608, 608, 608,
- /* 100 */ 608, 608, 608, 608, 608, 608, 608, 608, 722, 755,
- /* 110 */ 732, 732, 722, 722, 722, 732, 722, 722, 732, 729,
- /* 120 */ 36, 718, 729, 729, 729, 36, 36, 36, 729, 729,
- /* 130 */ 718, 36, 729, 742, 36, 741, 729, 729, 729, 718,
- /* 140 */ 729, 718, 729, 729, 729, 718, 729, 729, 36, 36,
- /* 150 */ 36, 36, 36, 36, 770, 36, 764, 47, 745, 47,
- /* 160 */ 674, 47, 47, 36, 7, 36, 36, 36, 297, 356,
- /* 170 */ 380, 425, 319, 349, 166,
+ /* 0 */ -38, -10, 466, 661, 505, 690, 515, 633, 623, 604,
+ /* 10 */ 671, 579, 544, 476, 534, 563, 1030, 945, 916, 982,
+ /* 20 */ 1001, 887, 767, 802, 860, 831, 719, 844, 815, 748,
+ /* 30 */ 775, 897, 1011, 972, 926, 735, 706, 1053, 414, 786,
+ /* 40 */ 1064, 1080, 1126, 1137, 1115, 1138, 590, 1093, 1081, 1103,
+ /* 50 */ -17, -58, 93, 171, 345, 339, 291, 313, 185, 109,
+ /* 60 */ 329, 294, 252, 245, 340, 366, 334, 185, 121, 384,
+ /* 70 */ 384, 384, 384, 455, 525, 182, 527, 527, 525, 461,
+ /* 80 */ 475, 389, 426, 488, 488, 550, 514, 488, 511, 620,
+ /* 90 */ 585, 589, 572, 575, 556, 504, 591, 574, 389, 61,
+ /* 100 */ 144, 144, 677, 686, 677, 677, 677, 677, 677, 673,
+ /* 110 */ 673, 673, 144, 673, 144, 673, 673, 144, 673, 144,
+ /* 120 */ 673, 673, 144, 673, 144, 144, 667, 144, 667, 667,
+ /* 130 */ 673, 674, 673, 667, 673, 673, 667, 675, 673, 673,
+ /* 140 */ 144, 144, 144, 492, 144, 492, 144, 144, 144, 707,
+ /* 150 */ 144, 144, 144, 144, 144, 492, 697, 704, 144, 144,
+ /* 160 */ 545, 492, 459, 144, 424, 470, 497, 526, 517, 520,
+ /* 170 */ 499,
);
static public $yyExpectedTokens = array(
- /* 0 */ array(1, 2, 3, 4, 5, 6, 7, 22, ),
- /* 1 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 2 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 3 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 4 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 5 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 6 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 7 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 8 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 9 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 10 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 11 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 12 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 13 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 14 */ array(7, 9, 10, 12, 14, 16, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 15 */ array(7, 9, 10, 12, 14, 16, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 16 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 17 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 18 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 19 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 20 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 21 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 22 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 23 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 24 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 25 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 26 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 27 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 28 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 29 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 30 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 31 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 32 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 33 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 34 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 35 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 36 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 37 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 38 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 39 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, 43, ),
- /* 40 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 41 */ array(7, 9, 10, 22, 23, 26, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 42 */ array(7, 9, 10, 22, 23, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 43 */ array(7, 9, 10, 22, 23, 27, 32, 33, 35, 36, 37, 38, 41, 42, ),
- /* 44 */ array(7, 9, 10, 22, 23, 27, 32, 33, 35, 36, 37, 38, 41, ),
- /* 45 */ array(7, 9, 10, 22, 23, 27, 32, 33, 35, 36, 37, 38, 41, ),
- /* 46 */ array(7, 9, 10, 22, 23, 27, 32, 33, 35, 36, 37, 38, 41, ),
- /* 47 */ array(7, 9, 10, 41, ),
- /* 48 */ array(3, 7, 22, 38, 69, 70, ),
- /* 49 */ array(8, 13, 15, 27, 39, 44, ),
- /* 50 */ array(8, 13, 15, 44, ),
- /* 51 */ array(9, 10, 41, ),
- /* 52 */ array(13, 34, 42, ),
- /* 53 */ array(8, 15, 44, ),
- /* 54 */ array(8, 15, 44, ),
- /* 55 */ array(15, 25, ),
- /* 56 */ array(15, 25, ),
- /* 57 */ array(9, 41, ),
- /* 58 */ array(9, 41, ),
- /* 59 */ array(15, 44, ),
- /* 60 */ array(15, 44, ),
- /* 61 */ array(9, 41, ),
- /* 62 */ array(15, 44, ),
- /* 63 */ array(15, 25, ),
- /* 64 */ array(15, 44, ),
- /* 65 */ array(28, 44, 45, 57, 58, 59, 60, 61, 62, 63, 64, 65, ),
- /* 66 */ array(28, 44, 45, 57, 58, 59, 60, 61, 62, 63, 64, 65, ),
- /* 67 */ array(44, 45, 57, 58, 59, 60, 61, 62, 63, 64, 65, ),
- /* 68 */ array(1, 2, 3, 4, 5, 6, 7, 22, ),
- /* 69 */ array(3, 7, 22, 38, 69, 70, ),
- /* 70 */ array(7, 10, 11, 18, ),
- /* 71 */ array(7, 10, 11, 40, ),
- /* 72 */ array(8, 15, 18, ),
- /* 73 */ array(7, 10, 40, ),
- /* 74 */ array(8, 15, 18, ),
- /* 75 */ array(7, 10, ),
- /* 76 */ array(7, 10, ),
- /* 77 */ array(7, 10, ),
- /* 78 */ array(7, 10, ),
- /* 79 */ array(7, 10, ),
- /* 80 */ array(7, 10, ),
- /* 81 */ array(7, 10, ),
- /* 82 */ array(7, 10, ),
- /* 83 */ array(7, 10, ),
- /* 84 */ array(7, 10, ),
- /* 85 */ array(7, 10, ),
- /* 86 */ array(8, 15, ),
- /* 87 */ array(11, 13, ),
- /* 88 */ array(15, ),
- /* 89 */ array(15, ),
- /* 90 */ array(9, ),
- /* 91 */ array(13, ),
- /* 92 */ array(13, ),
- /* 93 */ array(15, ),
- /* 94 */ array(13, ),
- /* 95 */ array(15, ),
- /* 96 */ array(28, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 97 */ array(8, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 98 */ array(28, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 99 */ array(17, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 100 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 101 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 102 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 103 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 104 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 105 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 106 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 107 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 66, 67, 68, ),
- /* 108 */ array(7, 8, 10, 21, ),
- /* 109 */ array(10, 12, 14, 16, ),
- /* 110 */ array(8, 26, 30, 31, ),
- /* 111 */ array(26, 30, 31, 43, ),
- /* 112 */ array(7, 8, 10, 21, ),
- /* 113 */ array(7, 8, 10, ),
- /* 114 */ array(7, 10, 11, ),
- /* 115 */ array(26, 30, 31, ),
- /* 116 */ array(7, 10, 40, ),
- /* 117 */ array(7, 8, 10, ),
- /* 118 */ array(26, 30, 31, ),
- /* 119 */ array(8, 15, ),
- /* 120 */ array(25, 44, ),
- /* 121 */ array(34, 42, ),
- /* 122 */ array(8, 15, ),
- /* 123 */ array(8, 15, ),
- /* 124 */ array(8, 15, ),
- /* 125 */ array(8, 44, ),
- /* 126 */ array(8, 44, ),
- /* 127 */ array(24, 44, ),
- /* 128 */ array(8, 15, ),
- /* 129 */ array(8, 15, ),
- /* 130 */ array(34, 42, ),
- /* 131 */ array(8, 44, ),
- /* 132 */ array(8, 15, ),
- /* 133 */ array(9, 10, ),
- /* 134 */ array(28, 44, ),
- /* 135 */ array(7, 27, ),
- /* 136 */ array(8, 15, ),
- /* 137 */ array(8, 15, ),
- /* 138 */ array(8, 15, ),
- /* 139 */ array(34, 42, ),
- /* 140 */ array(8, 15, ),
- /* 141 */ array(34, 42, ),
- /* 142 */ array(8, 15, ),
- /* 143 */ array(8, 15, ),
- /* 144 */ array(8, 15, ),
- /* 145 */ array(34, 42, ),
- /* 146 */ array(8, 15, ),
- /* 147 */ array(8, 15, ),
- /* 148 */ array(25, 44, ),
- /* 149 */ array(44, ),
- /* 150 */ array(44, ),
- /* 151 */ array(44, ),
- /* 152 */ array(44, ),
- /* 153 */ array(44, ),
- /* 154 */ array(9, ),
- /* 155 */ array(44, ),
- /* 156 */ array(15, ),
- /* 157 */ array(13, ),
- /* 158 */ array(25, ),
- /* 159 */ array(13, ),
- /* 160 */ array(27, ),
- /* 161 */ array(13, ),
- /* 162 */ array(13, ),
- /* 163 */ array(44, ),
- /* 164 */ array(15, ),
- /* 165 */ array(44, ),
- /* 166 */ array(44, ),
- /* 167 */ array(44, ),
+ /* 0 */ array(1, 2, 3, 5, 6, 9, 25, ),
+ /* 1 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 2 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 3 */ array(9, 11, 12, 14, 16, 18, 19, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 4 */ array(9, 11, 12, 14, 16, 18, 19, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 5 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 6 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 7 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 8 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 9 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 10 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 11 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 12 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 13 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 14 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 15 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 16 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 17 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 18 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 19 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 20 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 21 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 22 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 23 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 24 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 25 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 26 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 27 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 28 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 29 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 30 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 31 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 32 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 33 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 34 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 35 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 36 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 37 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, 45, ),
+ /* 38 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 39 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 40 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 41 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, 44, ),
+ /* 42 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, ),
+ /* 43 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, ),
+ /* 44 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, ),
+ /* 45 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, ),
+ /* 46 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, ),
+ /* 47 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, ),
+ /* 48 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, ),
+ /* 49 */ array(9, 11, 12, 18, 25, 26, 31, 34, 35, 37, 38, 39, 40, 43, ),
+ /* 50 */ array(9, 11, 12, 43, ),
+ /* 51 */ array(1, 2, 3, 5, 6, 9, 25, ),
+ /* 52 */ array(3, 9, 25, 40, 71, 72, ),
+ /* 53 */ array(10, 15, 17, 31, 41, 46, ),
+ /* 54 */ array(2, 4, 5, 6, 7, 8, ),
+ /* 55 */ array(2, 4, 5, 6, 8, ),
+ /* 56 */ array(10, 15, 17, 46, ),
+ /* 57 */ array(10, 17, 46, ),
+ /* 58 */ array(10, 17, 46, ),
+ /* 59 */ array(15, 36, 44, ),
+ /* 60 */ array(11, 12, 43, ),
+ /* 61 */ array(17, 46, ),
+ /* 62 */ array(17, 46, ),
+ /* 63 */ array(11, 43, ),
+ /* 64 */ array(17, 46, ),
+ /* 65 */ array(17, 28, ),
+ /* 66 */ array(17, 28, ),
+ /* 67 */ array(17, 46, ),
+ /* 68 */ array(17, 28, ),
+ /* 69 */ array(18, 29, 30, 45, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+ /* 70 */ array(10, 18, 29, 30, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+ /* 71 */ array(18, 29, 30, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+ /* 72 */ array(18, 29, 30, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, ),
+ /* 73 */ array(3, 9, 25, 40, 71, 72, ),
+ /* 74 */ array(9, 12, 13, 42, ),
+ /* 75 */ array(9, 12, 13, 21, ),
+ /* 76 */ array(10, 17, 21, ),
+ /* 77 */ array(10, 17, 21, ),
+ /* 78 */ array(9, 12, 42, ),
+ /* 79 */ array(9, 12, ),
+ /* 80 */ array(9, 12, ),
+ /* 81 */ array(13, 15, ),
+ /* 82 */ array(9, 12, ),
+ /* 83 */ array(9, 12, ),
+ /* 84 */ array(9, 12, ),
+ /* 85 */ array(9, 12, ),
+ /* 86 */ array(9, 12, ),
+ /* 87 */ array(9, 12, ),
+ /* 88 */ array(10, 17, ),
+ /* 89 */ array(9, 12, ),
+ /* 90 */ array(9, 12, ),
+ /* 91 */ array(9, 12, ),
+ /* 92 */ array(17, ),
+ /* 93 */ array(17, ),
+ /* 94 */ array(17, ),
+ /* 95 */ array(11, ),
+ /* 96 */ array(15, ),
+ /* 97 */ array(15, ),
+ /* 98 */ array(15, ),
+ /* 99 */ array(17, ),
+ /* 100 */ array(32, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, ),
+ /* 101 */ array(46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, ),
+ /* 102 */ array(9, 10, 12, 24, ),
+ /* 103 */ array(12, 14, 16, 19, ),
+ /* 104 */ array(9, 10, 12, 24, ),
+ /* 105 */ array(9, 10, 12, ),
+ /* 106 */ array(9, 12, 13, ),
+ /* 107 */ array(9, 10, 12, ),
+ /* 108 */ array(9, 12, 42, ),
+ /* 109 */ array(10, 17, ),
+ /* 110 */ array(10, 17, ),
+ /* 111 */ array(10, 17, ),
+ /* 112 */ array(27, 46, ),
+ /* 113 */ array(10, 17, ),
+ /* 114 */ array(28, 46, ),
+ /* 115 */ array(10, 17, ),
+ /* 116 */ array(10, 17, ),
+ /* 117 */ array(10, 46, ),
+ /* 118 */ array(10, 17, ),
+ /* 119 */ array(28, 46, ),
+ /* 120 */ array(10, 17, ),
+ /* 121 */ array(10, 17, ),
+ /* 122 */ array(10, 46, ),
+ /* 123 */ array(10, 17, ),
+ /* 124 */ array(10, 46, ),
+ /* 125 */ array(46, 71, ),
+ /* 126 */ array(36, 44, ),
+ /* 127 */ array(32, 46, ),
+ /* 128 */ array(36, 44, ),
+ /* 129 */ array(36, 44, ),
+ /* 130 */ array(10, 17, ),
+ /* 131 */ array(11, 12, ),
+ /* 132 */ array(10, 17, ),
+ /* 133 */ array(36, 44, ),
+ /* 134 */ array(10, 17, ),
+ /* 135 */ array(10, 17, ),
+ /* 136 */ array(36, 44, ),
+ /* 137 */ array(9, 31, ),
+ /* 138 */ array(10, 17, ),
+ /* 139 */ array(10, 17, ),
+ /* 140 */ array(46, ),
+ /* 141 */ array(46, ),
+ /* 142 */ array(46, ),
+ /* 143 */ array(15, ),
+ /* 144 */ array(46, ),
+ /* 145 */ array(15, ),
+ /* 146 */ array(46, ),
+ /* 147 */ array(46, ),
+ /* 148 */ array(46, ),
+ /* 149 */ array(17, ),
+ /* 150 */ array(46, ),
+ /* 151 */ array(46, ),
+ /* 152 */ array(46, ),
+ /* 153 */ array(46, ),
+ /* 154 */ array(46, ),
+ /* 155 */ array(15, ),
+ /* 156 */ array(28, ),
+ /* 157 */ array(11, ),
+ /* 158 */ array(46, ),
+ /* 159 */ array(46, ),
+ /* 160 */ array(17, ),
+ /* 161 */ array(15, ),
+ /* 162 */ array(31, ),
+ /* 163 */ array(46, ),
+ /* 164 */ array(),
+ /* 165 */ array(),
+ /* 166 */ array(),
+ /* 167 */ array(),
/* 168 */ array(),
/* 169 */ array(),
/* 170 */ array(),
- /* 171 */ array(),
- /* 172 */ array(),
- /* 173 */ array(),
- /* 174 */ array(),
- /* 175 */ array(7, 9, 10, 23, 35, 36, ),
- /* 176 */ array(27, 34, 39, 43, ),
- /* 177 */ array(11, 27, 39, ),
- /* 178 */ array(21, 27, 39, ),
- /* 179 */ array(27, 39, 44, ),
- /* 180 */ array(27, 39, ),
- /* 181 */ array(24, 43, ),
- /* 182 */ array(27, 39, ),
- /* 183 */ array(17, 24, ),
- /* 184 */ array(11, 34, ),
- /* 185 */ array(27, 39, ),
- /* 186 */ array(8, 15, ),
- /* 187 */ array(27, 39, ),
- /* 188 */ array(10, 23, ),
- /* 189 */ array(11, 25, ),
- /* 190 */ array(10, 40, ),
- /* 191 */ array(10, ),
- /* 192 */ array(8, ),
- /* 193 */ array(27, ),
- /* 194 */ array(43, ),
- /* 195 */ array(10, ),
- /* 196 */ array(28, ),
- /* 197 */ array(28, ),
- /* 198 */ array(10, ),
- /* 199 */ array(11, ),
- /* 200 */ array(8, ),
- /* 201 */ array(8, ),
- /* 202 */ array(69, ),
- /* 203 */ array(19, ),
- /* 204 */ array(9, ),
- /* 205 */ array(20, ),
- /* 206 */ array(9, ),
- /* 207 */ array(9, ),
- /* 208 */ array(9, ),
- /* 209 */ array(15, ),
- /* 210 */ array(9, ),
- /* 211 */ array(15, ),
- /* 212 */ array(8, ),
- /* 213 */ array(20, ),
- /* 214 */ array(3, ),
- /* 215 */ array(10, ),
- /* 216 */ array(21, ),
- /* 217 */ array(41, ),
- /* 218 */ array(10, ),
- /* 219 */ array(56, ),
- /* 220 */ array(18, ),
- /* 221 */ array(18, ),
- /* 222 */ array(29, ),
- /* 223 */ array(28, ),
- /* 224 */ array(29, ),
- /* 225 */ array(25, ),
- /* 226 */ array(10, ),
- /* 227 */ array(10, ),
- /* 228 */ array(8, ),
- /* 229 */ array(23, ),
- /* 230 */ array(41, ),
- /* 231 */ array(34, ),
- /* 232 */ array(4, ),
- /* 233 */ array(10, ),
- /* 234 */ array(4, ),
- /* 235 */ array(3, ),
- /* 236 */ array(11, ),
+ /* 171 */ array(9, 11, 12, 26, 37, 38, ),
+ /* 172 */ array(31, 36, 41, 45, ),
+ /* 173 */ array(13, 31, 41, ),
+ /* 174 */ array(24, 31, 41, ),
+ /* 175 */ array(31, 41, 46, ),
+ /* 176 */ array(31, 41, ),
+ /* 177 */ array(31, 41, ),
+ /* 178 */ array(31, 41, ),
+ /* 179 */ array(20, 27, ),
+ /* 180 */ array(17, 18, ),
+ /* 181 */ array(13, 28, ),
+ /* 182 */ array(27, 45, ),
+ /* 183 */ array(13, 36, ),
+ /* 184 */ array(12, 42, ),
+ /* 185 */ array(12, 26, ),
+ /* 186 */ array(10, 17, ),
+ /* 187 */ array(31, 41, ),
+ /* 188 */ array(21, 71, ),
+ /* 189 */ array(10, ),
+ /* 190 */ array(26, ),
+ /* 191 */ array(36, ),
+ /* 192 */ array(10, ),
+ /* 193 */ array(12, ),
+ /* 194 */ array(12, ),
+ /* 195 */ array(28, ),
+ /* 196 */ array(12, ),
+ /* 197 */ array(12, ),
+ /* 198 */ array(11, ),
+ /* 199 */ array(23, ),
+ /* 200 */ array(12, ),
+ /* 201 */ array(12, ),
+ /* 202 */ array(11, ),
+ /* 203 */ array(4, ),
+ /* 204 */ array(11, ),
+ /* 205 */ array(23, ),
+ /* 206 */ array(11, ),
+ /* 207 */ array(22, ),
+ /* 208 */ array(10, ),
+ /* 209 */ array(10, ),
+ /* 210 */ array(13, ),
+ /* 211 */ array(32, ),
+ /* 212 */ array(32, ),
+ /* 213 */ array(33, ),
+ /* 214 */ array(31, ),
+ /* 215 */ array(32, ),
+ /* 216 */ array(24, ),
+ /* 217 */ array(58, ),
+ /* 218 */ array(13, ),
+ /* 219 */ array(7, ),
+ /* 220 */ array(12, ),
+ /* 221 */ array(45, ),
+ /* 222 */ array(20, ),
+ /* 223 */ array(11, ),
+ /* 224 */ array(32, ),
+ /* 225 */ array(10, ),
+ /* 226 */ array(33, ),
+ /* 227 */ array(12, ),
+ /* 228 */ array(10, ),
+ /* 229 */ array(3, ),
+ /* 230 */ array(10, ),
+ /* 231 */ array(17, ),
+ /* 232 */ array(43, ),
+ /* 233 */ array(21, ),
+ /* 234 */ array(43, ),
+ /* 235 */ array(),
+ /* 236 */ array(),
/* 237 */ array(),
/* 238 */ array(),
/* 239 */ array(),
@@ -898,51 +879,58 @@ static public $yy_action = array(
/* 362 */ array(),
/* 363 */ array(),
/* 364 */ array(),
+ /* 365 */ array(),
+ /* 366 */ array(),
+ /* 367 */ array(),
+ /* 368 */ array(),
+ /* 369 */ array(),
+ /* 370 */ array(),
);
static public $yy_default = array(
- /* 0 */ 547, 547, 547, 547, 547, 547, 533, 547, 547, 547,
- /* 10 */ 547, 547, 547, 547, 547, 547, 547, 491, 547, 491,
- /* 20 */ 491, 547, 491, 547, 547, 547, 547, 547, 547, 547,
- /* 30 */ 547, 547, 547, 547, 547, 547, 547, 547, 547, 547,
- /* 40 */ 547, 547, 547, 547, 547, 547, 547, 547, 547, 547,
- /* 50 */ 547, 547, 453, 547, 547, 412, 412, 547, 547, 412,
- /* 60 */ 412, 547, 412, 412, 412, 501, 501, 501, 365, 547,
- /* 70 */ 547, 463, 435, 463, 435, 547, 547, 547, 547, 547,
- /* 80 */ 547, 547, 547, 547, 547, 547, 426, 456, 412, 412,
- /* 90 */ 547, 448, 449, 412, 456, 412, 547, 547, 547, 547,
- /* 100 */ 510, 511, 514, 499, 505, 515, 506, 507, 547, 547,
- /* 110 */ 547, 547, 547, 547, 547, 496, 464, 547, 423, 547,
- /* 120 */ 547, 484, 547, 547, 547, 547, 547, 490, 547, 547,
- /* 130 */ 482, 547, 547, 547, 547, 463, 547, 547, 547, 483,
- /* 140 */ 547, 461, 547, 547, 547, 485, 547, 547, 547, 502,
- /* 150 */ 430, 414, 418, 431, 547, 395, 546, 479, 425, 450,
- /* 160 */ 463, 454, 451, 421, 546, 534, 536, 535, 495, 463,
- /* 170 */ 463, 495, 463, 495, 495, 547, 547, 417, 422, 413,
- /* 180 */ 497, 547, 547, 547, 439, 516, 426, 422, 547, 477,
- /* 190 */ 547, 547, 547, 452, 547, 547, 547, 547, 547, 547,
- /* 200 */ 547, 547, 547, 419, 547, 547, 547, 547, 547, 547,
- /* 210 */ 547, 547, 547, 547, 547, 547, 426, 547, 547, 426,
- /* 220 */ 435, 435, 547, 547, 444, 477, 547, 547, 426, 547,
- /* 230 */ 547, 439, 547, 547, 547, 547, 417, 473, 416, 440,
- /* 240 */ 441, 410, 460, 474, 459, 472, 407, 442, 402, 471,
- /* 250 */ 443, 543, 544, 366, 540, 424, 539, 447, 538, 375,
- /* 260 */ 376, 434, 433, 432, 406, 405, 403, 436, 481, 457,
- /* 270 */ 404, 462, 408, 438, 427, 426, 411, 486, 409, 465,
- /* 280 */ 476, 466, 467, 478, 437, 458, 488, 468, 469, 480,
- /* 290 */ 477, 470, 475, 428, 494, 493, 517, 399, 526, 398,
- /* 300 */ 372, 498, 371, 525, 524, 520, 401, 519, 521, 522,
- /* 310 */ 523, 400, 500, 387, 528, 527, 369, 388, 386, 384,
- /* 320 */ 529, 389, 513, 390, 508, 509, 370, 512, 391, 518,
- /* 330 */ 504, 396, 545, 541, 378, 542, 379, 394, 420, 377,
- /* 340 */ 397, 444, 446, 492, 385, 445, 429, 380, 381, 392,
- /* 350 */ 530, 393, 532, 368, 503, 531, 487, 489, 383, 382,
- /* 360 */ 367, 374, 373, 455, 537,
+ /* 0 */ 559, 559, 544, 559, 559, 559, 559, 507, 559, 559,
+ /* 10 */ 559, 507, 507, 507, 559, 559, 559, 559, 559, 559,
+ /* 20 */ 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
+ /* 30 */ 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
+ /* 40 */ 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
+ /* 50 */ 559, 371, 559, 559, 559, 383, 559, 559, 559, 469,
+ /* 60 */ 559, 427, 427, 559, 427, 427, 427, 427, 427, 559,
+ /* 70 */ 559, 512, 438, 559, 479, 559, 450, 450, 479, 559,
+ /* 80 */ 559, 472, 559, 559, 559, 559, 559, 559, 441, 559,
+ /* 90 */ 559, 559, 427, 427, 427, 559, 465, 464, 472, 427,
+ /* 100 */ 559, 514, 559, 559, 559, 559, 559, 559, 480, 559,
+ /* 110 */ 559, 559, 506, 559, 559, 559, 559, 559, 559, 559,
+ /* 120 */ 559, 559, 559, 559, 559, 559, 499, 559, 500, 477,
+ /* 130 */ 559, 559, 559, 501, 559, 559, 498, 479, 559, 559,
+ /* 140 */ 525, 429, 545, 467, 526, 495, 433, 521, 518, 558,
+ /* 150 */ 547, 517, 522, 546, 449, 470, 440, 559, 410, 436,
+ /* 160 */ 558, 466, 479, 448, 479, 479, 511, 511, 511, 479,
+ /* 170 */ 511, 559, 559, 432, 437, 428, 437, 527, 513, 559,
+ /* 180 */ 559, 493, 559, 455, 559, 559, 441, 559, 450, 559,
+ /* 190 */ 559, 455, 559, 559, 559, 493, 559, 559, 559, 559,
+ /* 200 */ 559, 559, 559, 559, 559, 559, 559, 434, 559, 559,
+ /* 210 */ 559, 559, 559, 559, 468, 559, 441, 441, 432, 559,
+ /* 220 */ 559, 559, 559, 559, 559, 559, 460, 559, 441, 559,
+ /* 230 */ 559, 559, 559, 450, 559, 378, 379, 551, 552, 555,
+ /* 240 */ 556, 550, 463, 549, 487, 485, 375, 486, 484, 483,
+ /* 250 */ 504, 494, 482, 374, 373, 421, 431, 372, 420, 419,
+ /* 260 */ 502, 424, 418, 376, 490, 531, 532, 533, 530, 529,
+ /* 270 */ 377, 446, 447, 534, 535, 489, 548, 488, 540, 539,
+ /* 280 */ 536, 537, 538, 444, 403, 392, 554, 393, 426, 553,
+ /* 290 */ 391, 445, 461, 510, 394, 395, 475, 476, 422, 505,
+ /* 300 */ 474, 471, 396, 397, 423, 509, 508, 478, 481, 492,
+ /* 310 */ 493, 473, 497, 451, 452, 453, 442, 496, 441, 439,
+ /* 320 */ 491, 460, 459, 458, 443, 456, 457, 503, 417, 414,
+ /* 330 */ 415, 416, 384, 413, 385, 405, 404, 401, 382, 406,
+ /* 340 */ 411, 557, 435, 412, 380, 409, 408, 381, 407, 454,
+ /* 350 */ 402, 425, 519, 520, 390, 516, 515, 541, 543, 542,
+ /* 360 */ 523, 524, 398, 399, 400, 386, 387, 389, 528, 388,
+ /* 370 */ 462,
);
- const YYNOCODE = 113;
+ const YYNOCODE = 116;
const YYSTACKDEPTH = 100;
- const YYNSTATE = 365;
- const YYNRULE = 182;
- const YYERRORSYMBOL = 71;
+ const YYNSTATE = 371;
+ const YYNRULE = 188;
+ const YYERRORSYMBOL = 73;
const YYERRSYMDT = 'yy0';
const YYFALLBACK = 0;
static public $yyFallback = array(
@@ -971,34 +959,35 @@ static public $yy_action = array(
public $yystack = array(); /* The parser's stack */
public $yyTokenName = array(
- '$', 'COMMENT', 'PHP', 'OTHER',
- 'SHORTTAGEND', 'SHORTTAGSTART', 'XML', 'LDEL',
- 'RDEL', 'DOLLAR', 'ID', 'EQUAL',
- 'FOREACH', 'PTR', 'IF', 'SPACE',
- 'FOR', 'SEMICOLON', 'INCDEC', 'TO',
- 'AS', 'APTR', 'LDELSLASH', 'INTEGER',
- 'COMMA', 'COLON', 'UNIMATH', 'OPENP',
- 'CLOSEP', 'QMARK', 'MATH', 'ANDSYM',
- 'NOT', 'TYPECAST', 'DOT', 'BOOLEAN',
- 'NULL', 'SINGLEQUOTESTRING', 'QUOTE', 'DOUBLECOLON',
- 'AT', 'HATCH', 'OPENB', 'CLOSEB',
- 'VERT', 'ISIN', 'ISDIVBY', 'ISNOTDIVBY',
- 'ISEVEN', 'ISNOTEVEN', 'ISEVENBY', 'ISNOTEVENBY',
- 'ISODD', 'ISNOTODD', 'ISODDBY', 'ISNOTODDBY',
- 'INSTANCEOF', 'EQUALS', 'NOTEQUALS', 'GREATERTHAN',
- 'LESSTHAN', 'GREATEREQUAL', 'LESSEQUAL', 'IDENTITY',
- 'NONEIDENTITY', 'MOD', 'LAND', 'LOR',
- 'LXOR', 'BACKTICK', 'DOLLARID', 'error',
- 'start', 'template', 'template_element', 'smartytag',
- 'value', 'attributes', 'variable', 'expr',
- 'ternary', 'varindexed', 'modifier', 'modparameters',
- 'ifexprs', 'statement', 'statements', 'optspace',
- 'varvar', 'foraction', 'array', 'specialclose',
- 'attribute', 'exprs', 'math', 'function',
- 'doublequoted', 'method', 'params', 'objectchain',
- 'arrayindex', 'object', 'indexdef', 'varvarele',
- 'objectelement', 'modparameter', 'ifexpr', 'ifcond',
- 'lop', 'arrayelements', 'arrayelement', 'doublequotedcontent',
+ '$', 'COMMENT', 'PHPSTARTTAG', 'OTHER',
+ 'PHPENDTAG', 'FAKEPHPSTARTTAG', 'LITERALSTART', 'LITERALEND',
+ 'LITERAL', 'LDEL', 'RDEL', 'DOLLAR',
+ 'ID', 'EQUAL', 'FOREACH', 'PTR',
+ 'IF', 'SPACE', 'UNIMATH', 'FOR',
+ 'SEMICOLON', 'INCDEC', 'TO', 'AS',
+ 'APTR', 'LDELSLASH', 'INTEGER', 'COMMA',
+ 'COLON', 'MATH', 'ANDSYM', 'OPENP',
+ 'CLOSEP', 'QMARK', 'NOT', 'TYPECAST',
+ 'DOT', 'BOOLEAN', 'NULL', 'SINGLEQUOTESTRING',
+ 'QUOTE', 'DOUBLECOLON', 'AT', 'HATCH',
+ 'OPENB', 'CLOSEB', 'VERT', 'ISIN',
+ 'ISDIVBY', 'ISNOTDIVBY', 'ISEVEN', 'ISNOTEVEN',
+ 'ISEVENBY', 'ISNOTEVENBY', 'ISODD', 'ISNOTODD',
+ 'ISODDBY', 'ISNOTODDBY', 'INSTANCEOF', 'EQUALS',
+ 'NOTEQUALS', 'GREATERTHAN', 'LESSTHAN', 'GREATEREQUAL',
+ 'LESSEQUAL', 'IDENTITY', 'NONEIDENTITY', 'MOD',
+ 'LAND', 'LOR', 'LXOR', 'BACKTICK',
+ 'DOLLARID', 'error', 'start', 'template',
+ 'template_element', 'smartytag', 'literal', 'literal_elements',
+ 'literal_element', 'value', 'attributes', 'variable',
+ 'expr', 'ternary', 'varindexed', 'modifier',
+ 'modparameters', 'ifexpr', 'statement', 'statements',
+ 'optspace', 'varvar', 'foraction', 'array',
+ 'specialclose', 'attribute', 'exprs', 'ifcond',
+ 'lop', 'function', 'doublequoted', 'method',
+ 'params', 'objectchain', 'arrayindex', 'object',
+ 'indexdef', 'varvarele', 'objectelement', 'modparameter',
+ 'arrayelements', 'arrayelement', 'doublequotedcontent',
);
static public $yyRuleName = array(
@@ -1007,183 +996,189 @@ static public $yy_action = array(
/* 2 */ "template ::= template template_element",
/* 3 */ "template_element ::= smartytag",
/* 4 */ "template_element ::= COMMENT",
- /* 5 */ "template_element ::= PHP OTHER SHORTTAGEND",
- /* 6 */ "template_element ::= SHORTTAGSTART OTHER SHORTTAGEND",
- /* 7 */ "template_element ::= XML",
- /* 8 */ "template_element ::= SHORTTAGEND",
- /* 9 */ "template_element ::= OTHER",
- /* 10 */ "smartytag ::= LDEL value RDEL",
- /* 11 */ "smartytag ::= LDEL value attributes RDEL",
- /* 12 */ "smartytag ::= LDEL variable attributes RDEL",
- /* 13 */ "smartytag ::= LDEL expr attributes RDEL",
- /* 14 */ "smartytag ::= LDEL ternary attributes RDEL",
- /* 15 */ "smartytag ::= LDEL DOLLAR ID EQUAL value RDEL",
- /* 16 */ "smartytag ::= LDEL DOLLAR ID EQUAL expr RDEL",
- /* 17 */ "smartytag ::= LDEL DOLLAR ID EQUAL expr attributes RDEL",
- /* 18 */ "smartytag ::= LDEL DOLLAR ID EQUAL ternary attributes RDEL",
- /* 19 */ "smartytag ::= LDEL varindexed EQUAL expr attributes RDEL",
- /* 20 */ "smartytag ::= LDEL varindexed EQUAL ternary attributes RDEL",
- /* 21 */ "smartytag ::= LDEL ID attributes RDEL",
- /* 22 */ "smartytag ::= LDEL FOREACH attributes RDEL",
- /* 23 */ "smartytag ::= LDEL ID RDEL",
- /* 24 */ "smartytag ::= LDEL ID PTR ID attributes RDEL",
- /* 25 */ "smartytag ::= LDEL ID modifier modparameters attributes RDEL",
- /* 26 */ "smartytag ::= LDEL ID PTR ID modifier modparameters attributes RDEL",
- /* 27 */ "smartytag ::= LDEL IF SPACE ifexprs RDEL",
- /* 28 */ "smartytag ::= LDEL IF SPACE statement RDEL",
- /* 29 */ "smartytag ::= LDEL FOR SPACE statements SEMICOLON optspace ifexprs SEMICOLON optspace DOLLAR varvar foraction RDEL",
- /* 30 */ "foraction ::= EQUAL expr",
- /* 31 */ "foraction ::= INCDEC",
- /* 32 */ "smartytag ::= LDEL FOR SPACE statement TO expr attributes RDEL",
- /* 33 */ "smartytag ::= LDEL FOREACH SPACE value AS DOLLAR varvar RDEL",
- /* 34 */ "smartytag ::= LDEL FOREACH SPACE value AS DOLLAR varvar APTR DOLLAR varvar RDEL",
- /* 35 */ "smartytag ::= LDEL FOREACH SPACE array AS DOLLAR varvar RDEL",
- /* 36 */ "smartytag ::= LDEL FOREACH SPACE array AS DOLLAR varvar APTR DOLLAR varvar RDEL",
- /* 37 */ "smartytag ::= LDELSLASH ID RDEL",
- /* 38 */ "smartytag ::= LDELSLASH specialclose RDEL",
- /* 39 */ "specialclose ::= IF",
- /* 40 */ "specialclose ::= FOR",
- /* 41 */ "specialclose ::= FOREACH",
- /* 42 */ "smartytag ::= LDELSLASH ID attributes RDEL",
- /* 43 */ "smartytag ::= LDELSLASH ID modifier modparameters attributes RDEL",
- /* 44 */ "smartytag ::= LDELSLASH ID PTR ID RDEL",
- /* 45 */ "attributes ::= attributes attribute",
- /* 46 */ "attributes ::= attribute",
- /* 47 */ "attributes ::=",
- /* 48 */ "attribute ::= SPACE ID EQUAL ID",
- /* 49 */ "attribute ::= SPACE ID EQUAL expr",
- /* 50 */ "attribute ::= SPACE ID EQUAL value",
- /* 51 */ "attribute ::= SPACE ID EQUAL ternary",
- /* 52 */ "attribute ::= SPACE ID",
- /* 53 */ "attribute ::= SPACE INTEGER EQUAL expr",
- /* 54 */ "statements ::= statement",
- /* 55 */ "statements ::= statements COMMA statement",
- /* 56 */ "statement ::= DOLLAR varvar EQUAL expr",
- /* 57 */ "expr ::= ID",
- /* 58 */ "expr ::= exprs",
- /* 59 */ "expr ::= DOLLAR ID COLON ID",
- /* 60 */ "expr ::= expr modifier modparameters",
- /* 61 */ "exprs ::= value",
- /* 62 */ "exprs ::= UNIMATH value",
- /* 63 */ "exprs ::= exprs math value",
- /* 64 */ "exprs ::= array",
- /* 65 */ "ternary ::= OPENP ifexprs CLOSEP QMARK expr COLON expr",
- /* 66 */ "ternary ::= OPENP expr CLOSEP QMARK expr COLON expr",
- /* 67 */ "math ::= UNIMATH",
- /* 68 */ "math ::= MATH",
- /* 69 */ "math ::= ANDSYM",
- /* 70 */ "value ::= variable",
- /* 71 */ "value ::= NOT variable",
- /* 72 */ "value ::= TYPECAST variable",
- /* 73 */ "value ::= variable INCDEC",
- /* 74 */ "value ::= INTEGER",
- /* 75 */ "value ::= INTEGER DOT INTEGER",
- /* 76 */ "value ::= BOOLEAN",
- /* 77 */ "value ::= NULL",
- /* 78 */ "value ::= function",
- /* 79 */ "value ::= OPENP expr CLOSEP",
- /* 80 */ "value ::= SINGLEQUOTESTRING",
- /* 81 */ "value ::= QUOTE doublequoted QUOTE",
- /* 82 */ "value ::= QUOTE QUOTE",
- /* 83 */ "value ::= ID DOUBLECOLON method",
- /* 84 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP",
- /* 85 */ "value ::= ID DOUBLECOLON method objectchain",
- /* 86 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP objectchain",
- /* 87 */ "value ::= ID DOUBLECOLON ID",
- /* 88 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex",
- /* 89 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex objectchain",
- /* 90 */ "value ::= smartytag",
- /* 91 */ "variable ::= varindexed",
- /* 92 */ "variable ::= DOLLAR varvar AT ID",
- /* 93 */ "variable ::= object",
- /* 94 */ "variable ::= HATCH ID HATCH",
- /* 95 */ "variable ::= HATCH variable HATCH",
- /* 96 */ "varindexed ::= DOLLAR varvar arrayindex",
- /* 97 */ "arrayindex ::= arrayindex indexdef",
- /* 98 */ "arrayindex ::=",
- /* 99 */ "indexdef ::= DOT DOLLAR varvar",
- /* 100 */ "indexdef ::= DOT DOLLAR varvar AT ID",
- /* 101 */ "indexdef ::= DOT ID",
- /* 102 */ "indexdef ::= DOT BOOLEAN",
- /* 103 */ "indexdef ::= DOT NULL",
- /* 104 */ "indexdef ::= DOT INTEGER",
- /* 105 */ "indexdef ::= DOT LDEL exprs RDEL",
- /* 106 */ "indexdef ::= OPENB ID CLOSEB",
- /* 107 */ "indexdef ::= OPENB ID DOT ID CLOSEB",
- /* 108 */ "indexdef ::= OPENB exprs CLOSEB",
- /* 109 */ "indexdef ::= OPENB CLOSEB",
- /* 110 */ "varvar ::= varvarele",
- /* 111 */ "varvar ::= varvar varvarele",
- /* 112 */ "varvarele ::= ID",
- /* 113 */ "varvarele ::= LDEL expr RDEL",
- /* 114 */ "object ::= varindexed objectchain",
- /* 115 */ "objectchain ::= objectelement",
- /* 116 */ "objectchain ::= objectchain objectelement",
- /* 117 */ "objectelement ::= PTR ID arrayindex",
- /* 118 */ "objectelement ::= PTR variable arrayindex",
- /* 119 */ "objectelement ::= PTR LDEL expr RDEL arrayindex",
- /* 120 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
- /* 121 */ "objectelement ::= PTR method",
- /* 122 */ "function ::= ID OPENP params CLOSEP",
- /* 123 */ "method ::= ID OPENP params CLOSEP",
- /* 124 */ "params ::= expr COMMA params",
- /* 125 */ "params ::= expr",
- /* 126 */ "params ::=",
- /* 127 */ "modifier ::= VERT AT ID",
- /* 128 */ "modifier ::= VERT ID",
- /* 129 */ "modparameters ::= modparameters modparameter",
- /* 130 */ "modparameters ::=",
- /* 131 */ "modparameter ::= COLON exprs",
- /* 132 */ "modparameter ::= COLON ID",
- /* 133 */ "ifexprs ::= ifexpr",
- /* 134 */ "ifexprs ::= NOT ifexprs",
- /* 135 */ "ifexprs ::= OPENP ifexprs CLOSEP",
- /* 136 */ "ifexpr ::= expr",
- /* 137 */ "ifexpr ::= expr ifcond expr",
- /* 138 */ "ifexpr ::= expr ISIN array",
- /* 139 */ "ifexpr ::= expr ISIN value",
- /* 140 */ "ifexpr ::= ifexprs lop ifexprs",
- /* 141 */ "ifexpr ::= ifexprs ISDIVBY ifexprs",
- /* 142 */ "ifexpr ::= ifexprs ISNOTDIVBY ifexprs",
- /* 143 */ "ifexpr ::= ifexprs ISEVEN",
- /* 144 */ "ifexpr ::= ifexprs ISNOTEVEN",
- /* 145 */ "ifexpr ::= ifexprs ISEVENBY ifexprs",
- /* 146 */ "ifexpr ::= ifexprs ISNOTEVENBY ifexprs",
- /* 147 */ "ifexpr ::= ifexprs ISODD",
- /* 148 */ "ifexpr ::= ifexprs ISNOTODD",
- /* 149 */ "ifexpr ::= ifexprs ISODDBY ifexprs",
- /* 150 */ "ifexpr ::= ifexprs ISNOTODDBY ifexprs",
- /* 151 */ "ifexpr ::= value INSTANCEOF ID",
- /* 152 */ "ifexpr ::= value INSTANCEOF value",
- /* 153 */ "ifcond ::= EQUALS",
- /* 154 */ "ifcond ::= NOTEQUALS",
- /* 155 */ "ifcond ::= GREATERTHAN",
- /* 156 */ "ifcond ::= LESSTHAN",
- /* 157 */ "ifcond ::= GREATEREQUAL",
- /* 158 */ "ifcond ::= LESSEQUAL",
- /* 159 */ "ifcond ::= IDENTITY",
- /* 160 */ "ifcond ::= NONEIDENTITY",
- /* 161 */ "ifcond ::= MOD",
- /* 162 */ "lop ::= LAND",
- /* 163 */ "lop ::= LOR",
- /* 164 */ "lop ::= LXOR",
- /* 165 */ "array ::= OPENB arrayelements CLOSEB",
- /* 166 */ "arrayelements ::= arrayelement",
- /* 167 */ "arrayelements ::= arrayelements COMMA arrayelement",
- /* 168 */ "arrayelements ::=",
- /* 169 */ "arrayelement ::= value APTR expr",
- /* 170 */ "arrayelement ::= ID APTR expr",
- /* 171 */ "arrayelement ::= expr",
- /* 172 */ "doublequoted ::= doublequoted doublequotedcontent",
- /* 173 */ "doublequoted ::= doublequotedcontent",
- /* 174 */ "doublequotedcontent ::= BACKTICK variable BACKTICK",
- /* 175 */ "doublequotedcontent ::= DOLLARID",
- /* 176 */ "doublequotedcontent ::= LDEL variable RDEL",
- /* 177 */ "doublequotedcontent ::= LDEL expr RDEL",
- /* 178 */ "doublequotedcontent ::= smartytag",
- /* 179 */ "doublequotedcontent ::= OTHER",
- /* 180 */ "optspace ::= SPACE",
- /* 181 */ "optspace ::=",
+ /* 5 */ "template_element ::= literal",
+ /* 6 */ "template_element ::= PHPSTARTTAG OTHER PHPENDTAG",
+ /* 7 */ "template_element ::= OTHER",
+ /* 8 */ "template_element ::= FAKEPHPSTARTTAG",
+ /* 9 */ "literal ::= LITERALSTART LITERALEND",
+ /* 10 */ "literal ::= LITERALSTART literal_elements LITERALEND",
+ /* 11 */ "literal_elements ::= literal_element literal_elements",
+ /* 12 */ "literal_elements ::=",
+ /* 13 */ "literal_element ::= literal",
+ /* 14 */ "literal_element ::= LITERAL",
+ /* 15 */ "literal_element ::= PHPSTARTTAG",
+ /* 16 */ "literal_element ::= FAKEPHPSTARTTAG",
+ /* 17 */ "literal_element ::= PHPENDTAG",
+ /* 18 */ "smartytag ::= LDEL value RDEL",
+ /* 19 */ "smartytag ::= LDEL value attributes RDEL",
+ /* 20 */ "smartytag ::= LDEL variable attributes RDEL",
+ /* 21 */ "smartytag ::= LDEL expr attributes RDEL",
+ /* 22 */ "smartytag ::= LDEL ternary attributes RDEL",
+ /* 23 */ "smartytag ::= LDEL DOLLAR ID EQUAL value RDEL",
+ /* 24 */ "smartytag ::= LDEL DOLLAR ID EQUAL expr RDEL",
+ /* 25 */ "smartytag ::= LDEL DOLLAR ID EQUAL expr attributes RDEL",
+ /* 26 */ "smartytag ::= LDEL DOLLAR ID EQUAL ternary attributes RDEL",
+ /* 27 */ "smartytag ::= LDEL varindexed EQUAL expr attributes RDEL",
+ /* 28 */ "smartytag ::= LDEL varindexed EQUAL ternary attributes RDEL",
+ /* 29 */ "smartytag ::= LDEL ID attributes RDEL",
+ /* 30 */ "smartytag ::= LDEL FOREACH attributes RDEL",
+ /* 31 */ "smartytag ::= LDEL ID RDEL",
+ /* 32 */ "smartytag ::= LDEL ID PTR ID attributes RDEL",
+ /* 33 */ "smartytag ::= LDEL ID modifier modparameters attributes RDEL",
+ /* 34 */ "smartytag ::= LDEL ID PTR ID modifier modparameters attributes RDEL",
+ /* 35 */ "smartytag ::= LDEL IF SPACE ifexpr RDEL",
+ /* 36 */ "smartytag ::= LDEL IF UNIMATH ifexpr RDEL",
+ /* 37 */ "smartytag ::= LDEL IF SPACE statement RDEL",
+ /* 38 */ "smartytag ::= LDEL FOR SPACE statements SEMICOLON optspace ifexpr SEMICOLON optspace DOLLAR varvar foraction RDEL",
+ /* 39 */ "foraction ::= EQUAL expr",
+ /* 40 */ "foraction ::= INCDEC",
+ /* 41 */ "smartytag ::= LDEL FOR SPACE statement TO expr attributes RDEL",
+ /* 42 */ "smartytag ::= LDEL FOREACH SPACE value AS DOLLAR varvar RDEL",
+ /* 43 */ "smartytag ::= LDEL FOREACH SPACE value AS DOLLAR varvar APTR DOLLAR varvar RDEL",
+ /* 44 */ "smartytag ::= LDEL FOREACH SPACE array AS DOLLAR varvar RDEL",
+ /* 45 */ "smartytag ::= LDEL FOREACH SPACE array AS DOLLAR varvar APTR DOLLAR varvar RDEL",
+ /* 46 */ "smartytag ::= LDELSLASH ID RDEL",
+ /* 47 */ "smartytag ::= LDELSLASH specialclose RDEL",
+ /* 48 */ "specialclose ::= IF",
+ /* 49 */ "specialclose ::= FOR",
+ /* 50 */ "specialclose ::= FOREACH",
+ /* 51 */ "smartytag ::= LDELSLASH ID attributes RDEL",
+ /* 52 */ "smartytag ::= LDELSLASH ID modifier modparameters attributes RDEL",
+ /* 53 */ "smartytag ::= LDELSLASH ID PTR ID RDEL",
+ /* 54 */ "attributes ::= attributes attribute",
+ /* 55 */ "attributes ::= attribute",
+ /* 56 */ "attributes ::=",
+ /* 57 */ "attribute ::= SPACE ID EQUAL ID",
+ /* 58 */ "attribute ::= SPACE ID EQUAL expr",
+ /* 59 */ "attribute ::= SPACE ID EQUAL value",
+ /* 60 */ "attribute ::= SPACE ID EQUAL ternary",
+ /* 61 */ "attribute ::= SPACE ID",
+ /* 62 */ "attribute ::= SPACE INTEGER EQUAL expr",
+ /* 63 */ "statements ::= statement",
+ /* 64 */ "statements ::= statements COMMA statement",
+ /* 65 */ "statement ::= DOLLAR varvar EQUAL expr",
+ /* 66 */ "expr ::= ID",
+ /* 67 */ "expr ::= exprs",
+ /* 68 */ "expr ::= DOLLAR ID COLON ID",
+ /* 69 */ "expr ::= expr modifier modparameters",
+ /* 70 */ "exprs ::= value",
+ /* 71 */ "exprs ::= exprs MATH value",
+ /* 72 */ "exprs ::= exprs UNIMATH value",
+ /* 73 */ "exprs ::= exprs ANDSYM value",
+ /* 74 */ "exprs ::= array",
+ /* 75 */ "exprs ::= exprs ifcond value",
+ /* 76 */ "exprs ::= exprs lop value",
+ /* 77 */ "ternary ::= OPENP ifexpr CLOSEP QMARK expr COLON expr",
+ /* 78 */ "ternary ::= OPENP expr CLOSEP QMARK expr COLON expr",
+ /* 79 */ "value ::= variable",
+ /* 80 */ "value ::= UNIMATH value",
+ /* 81 */ "value ::= NOT value",
+ /* 82 */ "value ::= TYPECAST variable",
+ /* 83 */ "value ::= variable INCDEC",
+ /* 84 */ "value ::= INTEGER",
+ /* 85 */ "value ::= INTEGER DOT INTEGER",
+ /* 86 */ "value ::= BOOLEAN",
+ /* 87 */ "value ::= NULL",
+ /* 88 */ "value ::= function",
+ /* 89 */ "value ::= OPENP expr CLOSEP",
+ /* 90 */ "value ::= SINGLEQUOTESTRING",
+ /* 91 */ "value ::= QUOTE doublequoted QUOTE",
+ /* 92 */ "value ::= QUOTE QUOTE",
+ /* 93 */ "value ::= ID DOUBLECOLON method",
+ /* 94 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP",
+ /* 95 */ "value ::= ID DOUBLECOLON method objectchain",
+ /* 96 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP objectchain",
+ /* 97 */ "value ::= ID DOUBLECOLON ID",
+ /* 98 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex",
+ /* 99 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex objectchain",
+ /* 100 */ "value ::= smartytag",
+ /* 101 */ "variable ::= varindexed",
+ /* 102 */ "variable ::= DOLLAR varvar AT ID",
+ /* 103 */ "variable ::= object",
+ /* 104 */ "variable ::= HATCH ID HATCH",
+ /* 105 */ "variable ::= HATCH variable HATCH",
+ /* 106 */ "varindexed ::= DOLLAR varvar arrayindex",
+ /* 107 */ "arrayindex ::= arrayindex indexdef",
+ /* 108 */ "arrayindex ::=",
+ /* 109 */ "indexdef ::= DOT DOLLAR varvar",
+ /* 110 */ "indexdef ::= DOT DOLLAR varvar AT ID",
+ /* 111 */ "indexdef ::= DOT ID",
+ /* 112 */ "indexdef ::= DOT BOOLEAN",
+ /* 113 */ "indexdef ::= DOT NULL",
+ /* 114 */ "indexdef ::= DOT INTEGER",
+ /* 115 */ "indexdef ::= DOT LDEL exprs RDEL",
+ /* 116 */ "indexdef ::= OPENB ID CLOSEB",
+ /* 117 */ "indexdef ::= OPENB ID DOT ID CLOSEB",
+ /* 118 */ "indexdef ::= OPENB exprs CLOSEB",
+ /* 119 */ "indexdef ::= OPENB CLOSEB",
+ /* 120 */ "varvar ::= varvarele",
+ /* 121 */ "varvar ::= varvar varvarele",
+ /* 122 */ "varvarele ::= ID",
+ /* 123 */ "varvarele ::= LDEL expr RDEL",
+ /* 124 */ "object ::= varindexed objectchain",
+ /* 125 */ "objectchain ::= objectelement",
+ /* 126 */ "objectchain ::= objectchain objectelement",
+ /* 127 */ "objectelement ::= PTR ID arrayindex",
+ /* 128 */ "objectelement ::= PTR variable arrayindex",
+ /* 129 */ "objectelement ::= PTR LDEL expr RDEL arrayindex",
+ /* 130 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
+ /* 131 */ "objectelement ::= PTR method",
+ /* 132 */ "function ::= ID OPENP params CLOSEP",
+ /* 133 */ "method ::= ID OPENP params CLOSEP",
+ /* 134 */ "params ::= expr COMMA params",
+ /* 135 */ "params ::= expr",
+ /* 136 */ "params ::=",
+ /* 137 */ "modifier ::= VERT AT ID",
+ /* 138 */ "modifier ::= VERT ID",
+ /* 139 */ "modparameters ::= modparameters modparameter",
+ /* 140 */ "modparameters ::=",
+ /* 141 */ "modparameter ::= COLON exprs",
+ /* 142 */ "modparameter ::= COLON ID",
+ /* 143 */ "ifexpr ::= expr",
+ /* 144 */ "ifexpr ::= expr ISIN array",
+ /* 145 */ "ifexpr ::= expr ISIN value",
+ /* 146 */ "ifexpr ::= expr ISDIVBY expr",
+ /* 147 */ "ifexpr ::= expr ISNOTDIVBY expr",
+ /* 148 */ "ifexpr ::= expr ISEVEN",
+ /* 149 */ "ifexpr ::= expr ISNOTEVEN",
+ /* 150 */ "ifexpr ::= expr ISEVENBY expr",
+ /* 151 */ "ifexpr ::= expr ISNOTEVENBY expr",
+ /* 152 */ "ifexpr ::= expr ISODD",
+ /* 153 */ "ifexpr ::= expr ISNOTODD",
+ /* 154 */ "ifexpr ::= expr ISODDBY expr",
+ /* 155 */ "ifexpr ::= expr ISNOTODDBY expr",
+ /* 156 */ "ifexpr ::= value INSTANCEOF ID",
+ /* 157 */ "ifexpr ::= value INSTANCEOF value",
+ /* 158 */ "ifcond ::= EQUALS",
+ /* 159 */ "ifcond ::= NOTEQUALS",
+ /* 160 */ "ifcond ::= GREATERTHAN",
+ /* 161 */ "ifcond ::= LESSTHAN",
+ /* 162 */ "ifcond ::= GREATEREQUAL",
+ /* 163 */ "ifcond ::= LESSEQUAL",
+ /* 164 */ "ifcond ::= IDENTITY",
+ /* 165 */ "ifcond ::= NONEIDENTITY",
+ /* 166 */ "ifcond ::= MOD",
+ /* 167 */ "lop ::= LAND",
+ /* 168 */ "lop ::= LOR",
+ /* 169 */ "lop ::= LXOR",
+ /* 170 */ "array ::= OPENB arrayelements CLOSEB",
+ /* 171 */ "arrayelements ::= arrayelement",
+ /* 172 */ "arrayelements ::= arrayelements COMMA arrayelement",
+ /* 173 */ "arrayelements ::=",
+ /* 174 */ "arrayelement ::= value APTR expr",
+ /* 175 */ "arrayelement ::= ID APTR expr",
+ /* 176 */ "arrayelement ::= expr",
+ /* 177 */ "doublequoted ::= doublequoted doublequotedcontent",
+ /* 178 */ "doublequoted ::= doublequotedcontent",
+ /* 179 */ "doublequotedcontent ::= BACKTICK variable BACKTICK",
+ /* 180 */ "doublequotedcontent ::= BACKTICK expr BACKTICK",
+ /* 181 */ "doublequotedcontent ::= DOLLARID",
+ /* 182 */ "doublequotedcontent ::= LDEL variable RDEL",
+ /* 183 */ "doublequotedcontent ::= LDEL expr RDEL",
+ /* 184 */ "doublequotedcontent ::= smartytag",
+ /* 185 */ "doublequotedcontent ::= OTHER",
+ /* 186 */ "optspace ::= SPACE",
+ /* 187 */ "optspace ::=",
);
function tokenName($tokenType)
@@ -1457,355 +1452,361 @@ static public $yy_action = array(
}
static public $yyRuleInfo = array(
- array( 'lhs' => 72, 'rhs' => 1 ),
- array( 'lhs' => 73, 'rhs' => 1 ),
- array( 'lhs' => 73, 'rhs' => 2 ),
- array( 'lhs' => 74, 'rhs' => 1 ),
- array( 'lhs' => 74, 'rhs' => 1 ),
- array( 'lhs' => 74, 'rhs' => 3 ),
- array( 'lhs' => 74, 'rhs' => 3 ),
- array( 'lhs' => 74, 'rhs' => 1 ),
- array( 'lhs' => 74, 'rhs' => 1 ),
array( 'lhs' => 74, 'rhs' => 1 ),
- array( 'lhs' => 75, 'rhs' => 3 ),
- array( 'lhs' => 75, 'rhs' => 4 ),
- array( 'lhs' => 75, 'rhs' => 4 ),
- array( 'lhs' => 75, 'rhs' => 4 ),
- array( 'lhs' => 75, 'rhs' => 4 ),
- array( 'lhs' => 75, 'rhs' => 6 ),
- array( 'lhs' => 75, 'rhs' => 6 ),
- array( 'lhs' => 75, 'rhs' => 7 ),
- array( 'lhs' => 75, 'rhs' => 7 ),
- array( 'lhs' => 75, 'rhs' => 6 ),
- array( 'lhs' => 75, 'rhs' => 6 ),
- array( 'lhs' => 75, 'rhs' => 4 ),
- array( 'lhs' => 75, 'rhs' => 4 ),
- array( 'lhs' => 75, 'rhs' => 3 ),
- array( 'lhs' => 75, 'rhs' => 6 ),
- array( 'lhs' => 75, 'rhs' => 6 ),
- array( 'lhs' => 75, 'rhs' => 8 ),
- array( 'lhs' => 75, 'rhs' => 5 ),
- array( 'lhs' => 75, 'rhs' => 5 ),
- array( 'lhs' => 75, 'rhs' => 13 ),
- array( 'lhs' => 89, 'rhs' => 2 ),
- array( 'lhs' => 89, 'rhs' => 1 ),
- array( 'lhs' => 75, 'rhs' => 8 ),
- array( 'lhs' => 75, 'rhs' => 8 ),
- array( 'lhs' => 75, 'rhs' => 11 ),
- array( 'lhs' => 75, 'rhs' => 8 ),
- array( 'lhs' => 75, 'rhs' => 11 ),
- array( 'lhs' => 75, 'rhs' => 3 ),
- array( 'lhs' => 75, 'rhs' => 3 ),
- array( 'lhs' => 91, 'rhs' => 1 ),
- array( 'lhs' => 91, 'rhs' => 1 ),
- array( 'lhs' => 91, 'rhs' => 1 ),
- array( 'lhs' => 75, 'rhs' => 4 ),
- array( 'lhs' => 75, 'rhs' => 6 ),
- array( 'lhs' => 75, 'rhs' => 5 ),
- array( 'lhs' => 77, 'rhs' => 2 ),
- array( 'lhs' => 77, 'rhs' => 1 ),
- array( 'lhs' => 77, 'rhs' => 0 ),
- array( 'lhs' => 92, 'rhs' => 4 ),
- array( 'lhs' => 92, 'rhs' => 4 ),
- array( 'lhs' => 92, 'rhs' => 4 ),
- array( 'lhs' => 92, 'rhs' => 4 ),
- array( 'lhs' => 92, 'rhs' => 2 ),
- array( 'lhs' => 92, 'rhs' => 4 ),
- array( 'lhs' => 86, 'rhs' => 1 ),
- array( 'lhs' => 86, 'rhs' => 3 ),
- array( 'lhs' => 85, 'rhs' => 4 ),
- array( 'lhs' => 79, 'rhs' => 1 ),
- array( 'lhs' => 79, 'rhs' => 1 ),
- array( 'lhs' => 79, 'rhs' => 4 ),
- array( 'lhs' => 79, 'rhs' => 3 ),
- array( 'lhs' => 93, 'rhs' => 1 ),
- array( 'lhs' => 93, 'rhs' => 2 ),
- array( 'lhs' => 93, 'rhs' => 3 ),
- array( 'lhs' => 93, 'rhs' => 1 ),
- array( 'lhs' => 80, 'rhs' => 7 ),
- array( 'lhs' => 80, 'rhs' => 7 ),
- array( 'lhs' => 94, 'rhs' => 1 ),
- array( 'lhs' => 94, 'rhs' => 1 ),
- array( 'lhs' => 94, 'rhs' => 1 ),
- array( 'lhs' => 76, 'rhs' => 1 ),
- array( 'lhs' => 76, 'rhs' => 2 ),
- array( 'lhs' => 76, 'rhs' => 2 ),
- array( 'lhs' => 76, 'rhs' => 2 ),
- array( 'lhs' => 76, 'rhs' => 1 ),
- array( 'lhs' => 76, 'rhs' => 3 ),
+ array( 'lhs' => 75, 'rhs' => 1 ),
+ array( 'lhs' => 75, 'rhs' => 2 ),
array( 'lhs' => 76, 'rhs' => 1 ),
array( 'lhs' => 76, 'rhs' => 1 ),
array( 'lhs' => 76, 'rhs' => 1 ),
array( 'lhs' => 76, 'rhs' => 3 ),
array( 'lhs' => 76, 'rhs' => 1 ),
- array( 'lhs' => 76, 'rhs' => 3 ),
- array( 'lhs' => 76, 'rhs' => 2 ),
- array( 'lhs' => 76, 'rhs' => 3 ),
- array( 'lhs' => 76, 'rhs' => 7 ),
- array( 'lhs' => 76, 'rhs' => 4 ),
- array( 'lhs' => 76, 'rhs' => 8 ),
- array( 'lhs' => 76, 'rhs' => 3 ),
- array( 'lhs' => 76, 'rhs' => 5 ),
- array( 'lhs' => 76, 'rhs' => 6 ),
array( 'lhs' => 76, 'rhs' => 1 ),
- array( 'lhs' => 78, 'rhs' => 1 ),
- array( 'lhs' => 78, 'rhs' => 4 ),
- array( 'lhs' => 78, 'rhs' => 1 ),
+ array( 'lhs' => 78, 'rhs' => 2 ),
array( 'lhs' => 78, 'rhs' => 3 ),
- array( 'lhs' => 78, 'rhs' => 3 ),
- array( 'lhs' => 81, 'rhs' => 3 ),
- array( 'lhs' => 100, 'rhs' => 2 ),
- array( 'lhs' => 100, 'rhs' => 0 ),
- array( 'lhs' => 102, 'rhs' => 3 ),
- array( 'lhs' => 102, 'rhs' => 5 ),
- array( 'lhs' => 102, 'rhs' => 2 ),
- array( 'lhs' => 102, 'rhs' => 2 ),
- array( 'lhs' => 102, 'rhs' => 2 ),
- array( 'lhs' => 102, 'rhs' => 2 ),
- array( 'lhs' => 102, 'rhs' => 4 ),
- array( 'lhs' => 102, 'rhs' => 3 ),
- array( 'lhs' => 102, 'rhs' => 5 ),
- array( 'lhs' => 102, 'rhs' => 3 ),
- array( 'lhs' => 102, 'rhs' => 2 ),
- array( 'lhs' => 88, 'rhs' => 1 ),
- array( 'lhs' => 88, 'rhs' => 2 ),
- array( 'lhs' => 103, 'rhs' => 1 ),
- array( 'lhs' => 103, 'rhs' => 3 ),
- array( 'lhs' => 101, 'rhs' => 2 ),
- array( 'lhs' => 99, 'rhs' => 1 ),
- array( 'lhs' => 99, 'rhs' => 2 ),
- array( 'lhs' => 104, 'rhs' => 3 ),
- array( 'lhs' => 104, 'rhs' => 3 ),
- array( 'lhs' => 104, 'rhs' => 5 ),
- array( 'lhs' => 104, 'rhs' => 6 ),
- array( 'lhs' => 104, 'rhs' => 2 ),
- array( 'lhs' => 95, 'rhs' => 4 ),
- array( 'lhs' => 97, 'rhs' => 4 ),
- array( 'lhs' => 98, 'rhs' => 3 ),
- array( 'lhs' => 98, 'rhs' => 1 ),
- array( 'lhs' => 98, 'rhs' => 0 ),
- array( 'lhs' => 82, 'rhs' => 3 ),
+ array( 'lhs' => 79, 'rhs' => 2 ),
+ array( 'lhs' => 79, 'rhs' => 0 ),
+ array( 'lhs' => 80, 'rhs' => 1 ),
+ array( 'lhs' => 80, 'rhs' => 1 ),
+ array( 'lhs' => 80, 'rhs' => 1 ),
+ array( 'lhs' => 80, 'rhs' => 1 ),
+ array( 'lhs' => 80, 'rhs' => 1 ),
+ array( 'lhs' => 77, 'rhs' => 3 ),
+ array( 'lhs' => 77, 'rhs' => 4 ),
+ array( 'lhs' => 77, 'rhs' => 4 ),
+ array( 'lhs' => 77, 'rhs' => 4 ),
+ array( 'lhs' => 77, 'rhs' => 4 ),
+ array( 'lhs' => 77, 'rhs' => 6 ),
+ array( 'lhs' => 77, 'rhs' => 6 ),
+ array( 'lhs' => 77, 'rhs' => 7 ),
+ array( 'lhs' => 77, 'rhs' => 7 ),
+ array( 'lhs' => 77, 'rhs' => 6 ),
+ array( 'lhs' => 77, 'rhs' => 6 ),
+ array( 'lhs' => 77, 'rhs' => 4 ),
+ array( 'lhs' => 77, 'rhs' => 4 ),
+ array( 'lhs' => 77, 'rhs' => 3 ),
+ array( 'lhs' => 77, 'rhs' => 6 ),
+ array( 'lhs' => 77, 'rhs' => 6 ),
+ array( 'lhs' => 77, 'rhs' => 8 ),
+ array( 'lhs' => 77, 'rhs' => 5 ),
+ array( 'lhs' => 77, 'rhs' => 5 ),
+ array( 'lhs' => 77, 'rhs' => 5 ),
+ array( 'lhs' => 77, 'rhs' => 13 ),
+ array( 'lhs' => 94, 'rhs' => 2 ),
+ array( 'lhs' => 94, 'rhs' => 1 ),
+ array( 'lhs' => 77, 'rhs' => 8 ),
+ array( 'lhs' => 77, 'rhs' => 8 ),
+ array( 'lhs' => 77, 'rhs' => 11 ),
+ array( 'lhs' => 77, 'rhs' => 8 ),
+ array( 'lhs' => 77, 'rhs' => 11 ),
+ array( 'lhs' => 77, 'rhs' => 3 ),
+ array( 'lhs' => 77, 'rhs' => 3 ),
+ array( 'lhs' => 96, 'rhs' => 1 ),
+ array( 'lhs' => 96, 'rhs' => 1 ),
+ array( 'lhs' => 96, 'rhs' => 1 ),
+ array( 'lhs' => 77, 'rhs' => 4 ),
+ array( 'lhs' => 77, 'rhs' => 6 ),
+ array( 'lhs' => 77, 'rhs' => 5 ),
array( 'lhs' => 82, 'rhs' => 2 ),
- array( 'lhs' => 83, 'rhs' => 2 ),
- array( 'lhs' => 83, 'rhs' => 0 ),
- array( 'lhs' => 105, 'rhs' => 2 ),
- array( 'lhs' => 105, 'rhs' => 2 ),
+ array( 'lhs' => 82, 'rhs' => 1 ),
+ array( 'lhs' => 82, 'rhs' => 0 ),
+ array( 'lhs' => 97, 'rhs' => 4 ),
+ array( 'lhs' => 97, 'rhs' => 4 ),
+ array( 'lhs' => 97, 'rhs' => 4 ),
+ array( 'lhs' => 97, 'rhs' => 4 ),
+ array( 'lhs' => 97, 'rhs' => 2 ),
+ array( 'lhs' => 97, 'rhs' => 4 ),
+ array( 'lhs' => 91, 'rhs' => 1 ),
+ array( 'lhs' => 91, 'rhs' => 3 ),
+ array( 'lhs' => 90, 'rhs' => 4 ),
array( 'lhs' => 84, 'rhs' => 1 ),
- array( 'lhs' => 84, 'rhs' => 2 ),
+ array( 'lhs' => 84, 'rhs' => 1 ),
+ array( 'lhs' => 84, 'rhs' => 4 ),
array( 'lhs' => 84, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 1 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 2 ),
- array( 'lhs' => 106, 'rhs' => 2 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 2 ),
+ array( 'lhs' => 98, 'rhs' => 1 ),
+ array( 'lhs' => 98, 'rhs' => 3 ),
+ array( 'lhs' => 98, 'rhs' => 3 ),
+ array( 'lhs' => 98, 'rhs' => 3 ),
+ array( 'lhs' => 98, 'rhs' => 1 ),
+ array( 'lhs' => 98, 'rhs' => 3 ),
+ array( 'lhs' => 98, 'rhs' => 3 ),
+ array( 'lhs' => 85, 'rhs' => 7 ),
+ array( 'lhs' => 85, 'rhs' => 7 ),
+ array( 'lhs' => 81, 'rhs' => 1 ),
+ array( 'lhs' => 81, 'rhs' => 2 ),
+ array( 'lhs' => 81, 'rhs' => 2 ),
+ array( 'lhs' => 81, 'rhs' => 2 ),
+ array( 'lhs' => 81, 'rhs' => 2 ),
+ array( 'lhs' => 81, 'rhs' => 1 ),
+ array( 'lhs' => 81, 'rhs' => 3 ),
+ array( 'lhs' => 81, 'rhs' => 1 ),
+ array( 'lhs' => 81, 'rhs' => 1 ),
+ array( 'lhs' => 81, 'rhs' => 1 ),
+ array( 'lhs' => 81, 'rhs' => 3 ),
+ array( 'lhs' => 81, 'rhs' => 1 ),
+ array( 'lhs' => 81, 'rhs' => 3 ),
+ array( 'lhs' => 81, 'rhs' => 2 ),
+ array( 'lhs' => 81, 'rhs' => 3 ),
+ array( 'lhs' => 81, 'rhs' => 7 ),
+ array( 'lhs' => 81, 'rhs' => 4 ),
+ array( 'lhs' => 81, 'rhs' => 8 ),
+ array( 'lhs' => 81, 'rhs' => 3 ),
+ array( 'lhs' => 81, 'rhs' => 5 ),
+ array( 'lhs' => 81, 'rhs' => 6 ),
+ array( 'lhs' => 81, 'rhs' => 1 ),
+ array( 'lhs' => 83, 'rhs' => 1 ),
+ array( 'lhs' => 83, 'rhs' => 4 ),
+ array( 'lhs' => 83, 'rhs' => 1 ),
+ array( 'lhs' => 83, 'rhs' => 3 ),
+ array( 'lhs' => 83, 'rhs' => 3 ),
+ array( 'lhs' => 86, 'rhs' => 3 ),
array( 'lhs' => 106, 'rhs' => 2 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 106, 'rhs' => 3 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 1 ),
- array( 'lhs' => 108, 'rhs' => 1 ),
- array( 'lhs' => 108, 'rhs' => 1 ),
- array( 'lhs' => 108, 'rhs' => 1 ),
- array( 'lhs' => 90, 'rhs' => 3 ),
+ array( 'lhs' => 106, 'rhs' => 0 ),
+ array( 'lhs' => 108, 'rhs' => 3 ),
+ array( 'lhs' => 108, 'rhs' => 5 ),
+ array( 'lhs' => 108, 'rhs' => 2 ),
+ array( 'lhs' => 108, 'rhs' => 2 ),
+ array( 'lhs' => 108, 'rhs' => 2 ),
+ array( 'lhs' => 108, 'rhs' => 2 ),
+ array( 'lhs' => 108, 'rhs' => 4 ),
+ array( 'lhs' => 108, 'rhs' => 3 ),
+ array( 'lhs' => 108, 'rhs' => 5 ),
+ array( 'lhs' => 108, 'rhs' => 3 ),
+ array( 'lhs' => 108, 'rhs' => 2 ),
+ array( 'lhs' => 93, 'rhs' => 1 ),
+ array( 'lhs' => 93, 'rhs' => 2 ),
array( 'lhs' => 109, 'rhs' => 1 ),
array( 'lhs' => 109, 'rhs' => 3 ),
- array( 'lhs' => 109, 'rhs' => 0 ),
+ array( 'lhs' => 107, 'rhs' => 2 ),
+ array( 'lhs' => 105, 'rhs' => 1 ),
+ array( 'lhs' => 105, 'rhs' => 2 ),
array( 'lhs' => 110, 'rhs' => 3 ),
array( 'lhs' => 110, 'rhs' => 3 ),
- array( 'lhs' => 110, 'rhs' => 1 ),
- array( 'lhs' => 96, 'rhs' => 2 ),
- array( 'lhs' => 96, 'rhs' => 1 ),
- array( 'lhs' => 111, 'rhs' => 3 ),
- array( 'lhs' => 111, 'rhs' => 1 ),
- array( 'lhs' => 111, 'rhs' => 3 ),
- array( 'lhs' => 111, 'rhs' => 3 ),
- array( 'lhs' => 111, 'rhs' => 1 ),
- array( 'lhs' => 111, 'rhs' => 1 ),
- array( 'lhs' => 87, 'rhs' => 1 ),
- array( 'lhs' => 87, 'rhs' => 0 ),
+ array( 'lhs' => 110, 'rhs' => 5 ),
+ array( 'lhs' => 110, 'rhs' => 6 ),
+ array( 'lhs' => 110, 'rhs' => 2 ),
+ array( 'lhs' => 101, 'rhs' => 4 ),
+ array( 'lhs' => 103, 'rhs' => 4 ),
+ array( 'lhs' => 104, 'rhs' => 3 ),
+ array( 'lhs' => 104, 'rhs' => 1 ),
+ array( 'lhs' => 104, 'rhs' => 0 ),
+ array( 'lhs' => 87, 'rhs' => 3 ),
+ array( 'lhs' => 87, 'rhs' => 2 ),
+ array( 'lhs' => 88, 'rhs' => 2 ),
+ array( 'lhs' => 88, 'rhs' => 0 ),
+ array( 'lhs' => 111, 'rhs' => 2 ),
+ array( 'lhs' => 111, 'rhs' => 2 ),
+ array( 'lhs' => 89, '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' => 2 ),
+ array( 'lhs' => 89, 'rhs' => 2 ),
+ array( 'lhs' => 89, 'rhs' => 3 ),
+ array( 'lhs' => 89, 'rhs' => 3 ),
+ array( 'lhs' => 89, 'rhs' => 2 ),
+ array( 'lhs' => 89, 'rhs' => 2 ),
+ array( 'lhs' => 89, 'rhs' => 3 ),
+ array( 'lhs' => 89, 'rhs' => 3 ),
+ array( 'lhs' => 89, 'rhs' => 3 ),
+ array( 'lhs' => 89, 'rhs' => 3 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 99, 'rhs' => 1 ),
+ array( 'lhs' => 100, 'rhs' => 1 ),
+ array( 'lhs' => 100, 'rhs' => 1 ),
+ array( 'lhs' => 100, 'rhs' => 1 ),
+ array( 'lhs' => 95, 'rhs' => 3 ),
+ array( 'lhs' => 112, 'rhs' => 1 ),
+ array( 'lhs' => 112, 'rhs' => 3 ),
+ array( 'lhs' => 112, 'rhs' => 0 ),
+ array( 'lhs' => 113, 'rhs' => 3 ),
+ array( 'lhs' => 113, 'rhs' => 3 ),
+ array( 'lhs' => 113, 'rhs' => 1 ),
+ array( 'lhs' => 102, 'rhs' => 2 ),
+ array( 'lhs' => 102, 'rhs' => 1 ),
+ array( 'lhs' => 114, 'rhs' => 3 ),
+ array( 'lhs' => 114, 'rhs' => 3 ),
+ array( 'lhs' => 114, 'rhs' => 1 ),
+ array( 'lhs' => 114, 'rhs' => 3 ),
+ array( 'lhs' => 114, 'rhs' => 3 ),
+ array( 'lhs' => 114, 'rhs' => 1 ),
+ array( 'lhs' => 114, 'rhs' => 1 ),
+ array( 'lhs' => 92, 'rhs' => 1 ),
+ array( 'lhs' => 92, 'rhs' => 0 ),
);
static public $yyReduceMap = array(
0 => 0,
- 39 => 0,
- 40 => 0,
- 41 => 0,
- 61 => 0,
+ 5 => 0,
+ 13 => 0,
+ 14 => 0,
+ 48 => 0,
+ 49 => 0,
+ 50 => 0,
70 => 0,
- 74 => 0,
- 76 => 0,
- 77 => 0,
- 78 => 0,
- 80 => 0,
- 93 => 0,
- 166 => 0,
+ 79 => 0,
+ 84 => 0,
+ 86 => 0,
+ 87 => 0,
+ 88 => 0,
+ 90 => 0,
+ 103 => 0,
+ 171 => 0,
1 => 1,
- 58 => 1,
- 64 => 1,
- 67 => 1,
- 68 => 1,
- 110 => 1,
- 133 => 1,
- 173 => 1,
- 179 => 1,
- 180 => 1,
2 => 2,
- 129 => 2,
3 => 3,
4 => 4,
- 5 => 5,
6 => 6,
7 => 7,
8 => 8,
9 => 9,
+ 12 => 9,
10 => 10,
11 => 11,
- 12 => 11,
- 13 => 11,
- 14 => 11,
+ 80 => 11,
+ 82 => 11,
+ 83 => 11,
15 => 15,
16 => 15,
17 => 17,
- 18 => 17,
+ 18 => 18,
19 => 19,
20 => 19,
- 21 => 21,
- 22 => 21,
+ 21 => 19,
+ 22 => 19,
23 => 23,
- 24 => 24,
+ 24 => 23,
25 => 25,
- 26 => 26,
+ 26 => 25,
27 => 27,
28 => 27,
29 => 29,
- 30 => 30,
+ 30 => 29,
31 => 31,
- 46 => 31,
- 125 => 31,
- 171 => 31,
32 => 32,
33 => 33,
34 => 34,
35 => 35,
+ 37 => 35,
36 => 36,
- 37 => 37,
- 38 => 37,
+ 38 => 38,
+ 39 => 39,
+ 40 => 40,
+ 55 => 40,
+ 135 => 40,
+ 176 => 40,
+ 41 => 41,
42 => 42,
43 => 43,
44 => 44,
45 => 45,
- 47 => 47,
- 48 => 48,
- 49 => 49,
- 50 => 49,
- 51 => 49,
- 53 => 49,
+ 46 => 46,
+ 47 => 46,
+ 51 => 51,
52 => 52,
+ 53 => 53,
54 => 54,
- 55 => 55,
56 => 56,
57 => 57,
- 59 => 59,
- 60 => 60,
- 62 => 62,
- 72 => 62,
- 73 => 62,
+ 58 => 58,
+ 59 => 58,
+ 60 => 58,
+ 62 => 58,
+ 61 => 61,
63 => 63,
+ 64 => 64,
65 => 65,
- 66 => 65,
+ 66 => 66,
+ 67 => 67,
+ 74 => 67,
+ 120 => 67,
+ 178 => 67,
+ 185 => 67,
+ 186 => 67,
+ 68 => 68,
69 => 69,
71 => 71,
+ 72 => 71,
+ 73 => 71,
75 => 75,
- 79 => 79,
+ 76 => 75,
+ 156 => 75,
+ 77 => 77,
+ 78 => 77,
81 => 81,
- 82 => 82,
- 83 => 83,
- 84 => 84,
85 => 85,
- 86 => 86,
- 87 => 87,
- 88 => 88,
89 => 89,
- 90 => 90,
91 => 91,
92 => 92,
+ 93 => 93,
94 => 94,
95 => 95,
96 => 96,
97 => 97,
- 172 => 97,
98 => 98,
- 130 => 98,
99 => 99,
100 => 100,
101 => 101,
- 102 => 101,
- 103 => 101,
+ 102 => 102,
104 => 104,
105 => 105,
- 108 => 105,
106 => 106,
107 => 107,
+ 177 => 107,
+ 108 => 108,
+ 140 => 108,
109 => 109,
- 181 => 109,
+ 110 => 110,
111 => 111,
- 112 => 112,
- 113 => 113,
- 135 => 113,
+ 112 => 111,
+ 113 => 111,
114 => 114,
115 => 115,
+ 118 => 115,
116 => 116,
117 => 117,
- 118 => 118,
119 => 119,
- 120 => 120,
+ 187 => 119,
121 => 121,
122 => 122,
123 => 123,
124 => 124,
+ 125 => 125,
126 => 126,
127 => 127,
128 => 128,
+ 129 => 129,
+ 130 => 130,
131 => 131,
132 => 132,
+ 133 => 133,
134 => 134,
136 => 136,
137 => 137,
- 140 => 137,
- 151 => 137,
- 138 => 138,
+ 138 => 137,
139 => 139,
141 => 141,
142 => 142,
143 => 143,
- 148 => 143,
144 => 144,
- 147 => 144,
145 => 145,
- 150 => 145,
146 => 146,
- 149 => 146,
- 152 => 152,
- 153 => 153,
- 154 => 154,
- 155 => 155,
- 156 => 156,
+ 147 => 147,
+ 148 => 148,
+ 153 => 148,
+ 149 => 149,
+ 152 => 149,
+ 150 => 150,
+ 155 => 150,
+ 151 => 151,
+ 154 => 151,
157 => 157,
158 => 158,
159 => 159,
@@ -1815,495 +1816,477 @@ static public $yy_action = array(
163 => 163,
164 => 164,
165 => 165,
+ 166 => 166,
167 => 167,
168 => 168,
169 => 169,
170 => 170,
+ 172 => 172,
+ 173 => 173,
174 => 174,
- 176 => 174,
175 => 175,
- 177 => 177,
- 178 => 178,
+ 179 => 179,
+ 182 => 179,
+ 180 => 180,
+ 181 => 181,
+ 183 => 183,
+ 184 => 184,
);
-#line 78 "smarty_internal_templateparser.y"
+#line 81 "smarty_internal_templateparser.y"
function yy_r0(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
-#line 1825 "smarty_internal_templateparser.php"
-#line 84 "smarty_internal_templateparser.y"
- function yy_r1(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
-#line 1828 "smarty_internal_templateparser.php"
-#line 86 "smarty_internal_templateparser.y"
- function yy_r2(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 1831 "smarty_internal_templateparser.php"
-#line 92 "smarty_internal_templateparser.y"
+#line 1832 "smarty_internal_templateparser.php"
+#line 87 "smarty_internal_templateparser.y"
+ function yy_r1(){if ($this->template->extract_code == false) {
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ } else {
+ // store code in extract buffer
+ $this->template->extracted_compiled_code .= $this->yystack[$this->yyidx + 0]->minor;
+ }
+ }
+#line 1841 "smarty_internal_templateparser.php"
+#line 95 "smarty_internal_templateparser.y"
+ function yy_r2(){if ($this->template->extract_code == false) {
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
+ } else {
+ // store code in extract buffer
+ $this->template->extracted_compiled_code .= $this->yystack[$this->yyidx + 0]->minor;
+ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
+ }
+ }
+#line 1851 "smarty_internal_templateparser.php"
+#line 108 "smarty_internal_templateparser.y"
function yy_r3(){
if ($this->compiler->has_code) {
$tmp =''; foreach ($this->compiler->prefix_code as $code) {$tmp.=$code;} $this->compiler->prefix_code=array();
- $this->_retvalue = $this->cacher->processNocacheCode($tmp.$this->yystack[$this->yyidx + 0]->minor, $this->compiler,true);
+ $this->_retvalue = $this->compiler->processNocacheCode($tmp.$this->yystack[$this->yyidx + 0]->minor,true);
} else { $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;} $this->compiler->has_variable_string = false; }
-#line 1838 "smarty_internal_templateparser.php"
-#line 99 "smarty_internal_templateparser.y"
- function yy_r4(){ $this->_retvalue = ''; }
-#line 1841 "smarty_internal_templateparser.php"
-#line 104 "smarty_internal_templateparser.y"
- function yy_r5(){if ($this->sec_obj->php_handling == SMARTY_PHP_PASSTHRU) {
- $this->_retvalue = $this->cacher->processNocacheCode("<?php echo htmlspecialchars('<?php".str_replace("'","\'",$this->yystack[$this->yyidx + -1]->minor)."?>', ENT_QUOTES);?>\n", $this->compiler, false);
- } elseif ($this->sec_obj->php_handling == SMARTY_PHP_QUOTE) {
- $this->_retvalue = $this->cacher->processNocacheCode(htmlspecialchars('<?php'.$this->yystack[$this->yyidx + -1]->minor.'?>', ENT_QUOTES), $this->compiler, false);
- }elseif ($this->sec_obj->php_handling == SMARTY_PHP_ALLOW) {
- $this->_retvalue = $this->cacher->processNocacheCode('<?php'.$this->yystack[$this->yyidx + -1]->minor.'?>', $this->compiler, true);
- }elseif ($this->sec_obj->php_handling == SMARTY_PHP_REMOVE) {
- $this->_retvalue = '';
- }
- }
-#line 1853 "smarty_internal_templateparser.php"
+#line 1858 "smarty_internal_templateparser.php"
#line 115 "smarty_internal_templateparser.y"
- function yy_r6(){
+ function yy_r4(){ $this->_retvalue = ''; }
+#line 1861 "smarty_internal_templateparser.php"
+#line 121 "smarty_internal_templateparser.y"
+ function yy_r6(){
if ($this->sec_obj->php_handling == SMARTY_PHP_PASSTHRU) {
- $this->_retvalue = $this->cacher->processNocacheCode("<?php echo '<?=".$this->yystack[$this->yyidx + -1]->minor."?>'?>\n", $this->compiler, false);
+ $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + -2]->minor) . $this->yystack[$this->yyidx + -1]->minor . '?<??>>';
} elseif ($this->sec_obj->php_handling == SMARTY_PHP_QUOTE) {
- $this->_retvalue = $this->cacher->processNocacheCode(htmlspecialchars('<?='.$this->yystack[$this->yyidx + -1]->minor.'?>', ENT_QUOTES), $this->compiler, false);
+ $this->_retvalue = $this->compiler->processNocacheCode(htmlspecialchars($this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.'?>', ENT_QUOTES), false);
}elseif ($this->sec_obj->php_handling == SMARTY_PHP_ALLOW) {
- $this->_retvalue = $this->cacher->processNocacheCode('<?='.$this->yystack[$this->yyidx + -1]->minor.'?>', $this->compiler, true);
- }elseif ($this->sec_obj == SMARTY_PHP_REMOVE) {
+ $this->_retvalue = $this->compiler->processNocacheCode('<?php'.$this->yystack[$this->yyidx + -1]->minor.'?>', true);
+ }elseif ($this->sec_obj->php_handling == SMARTY_PHP_REMOVE) {
$this->_retvalue = '';
}
}
-#line 1866 "smarty_internal_templateparser.php"
-#line 128 "smarty_internal_templateparser.y"
- function yy_r7(){ $this->compiler->tag_nocache = true; $this->_retvalue = $this->cacher->processNocacheCode("<?php echo '<?xml';?>", $this->compiler, true); }
-#line 1869 "smarty_internal_templateparser.php"
-#line 129 "smarty_internal_templateparser.y"
- function yy_r8(){$this->compiler->tag_nocache = true; $this->_retvalue = $this->cacher->processNocacheCode("<?php echo '?>';?>\n", $this->compiler, true); }
-#line 1872 "smarty_internal_templateparser.php"
-#line 131 "smarty_internal_templateparser.y"
- function yy_r9(){if ($this->lex->strip) {
- $this->_retvalue = $this->cacher->processNocacheCode(preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $this->yystack[$this->yyidx + 0]->minor), $this->compiler, false);
+#line 1874 "smarty_internal_templateparser.php"
+#line 135 "smarty_internal_templateparser.y"
+ function yy_r7(){if ($this->lex->strip) {
+ $this->_retvalue = preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $this->yystack[$this->yyidx + 0]->minor);
+ } else {
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+ }
+#line 1882 "smarty_internal_templateparser.php"
+#line 141 "smarty_internal_templateparser.y"
+ function yy_r8(){if ($this->lex->strip) {
+ $this->_retvalue = preg_replace('![\$this->yystack[$this->yyidx + 0]->minor ]*[\r\n]+[\$this->yystack[$this->yyidx + 0]->minor ]*!', '', self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor));
} else {
- $this->_retvalue = $this->cacher->processNocacheCode($this->yystack[$this->yyidx + 0]->minor, $this->compiler, false);
+ $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor);
}
}
-#line 1880 "smarty_internal_templateparser.php"
-#line 144 "smarty_internal_templateparser.y"
- function yy_r10(){ $this->_retvalue = $this->compiler->compileTag('print_expression',array('value'=>$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1883 "smarty_internal_templateparser.php"
-#line 145 "smarty_internal_templateparser.y"
- function yy_r11(){ $this->_retvalue = $this->compiler->compileTag('print_expression',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1886 "smarty_internal_templateparser.php"
+#line 1890 "smarty_internal_templateparser.php"
+#line 148 "smarty_internal_templateparser.y"
+ function yy_r9(){ $this->_retvalue = ''; }
+#line 1893 "smarty_internal_templateparser.php"
+#line 149 "smarty_internal_templateparser.y"
+ function yy_r10(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; }
+#line 1896 "smarty_internal_templateparser.php"
+#line 151 "smarty_internal_templateparser.y"
+ function yy_r11(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 1899 "smarty_internal_templateparser.php"
#line 156 "smarty_internal_templateparser.y"
- function yy_r15(){ $this->_retvalue = $this->compiler->compileTag('assign',array('value'=>$this->yystack[$this->yyidx + -1]->minor,'var'=>"'".$this->yystack[$this->yyidx + -3]->minor."'")); }
-#line 1889 "smarty_internal_templateparser.php"
+ function yy_r15(){ $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor); }
+#line 1902 "smarty_internal_templateparser.php"
#line 158 "smarty_internal_templateparser.y"
- function yy_r17(){ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor,'var'=>"'".$this->yystack[$this->yyidx + -4]->minor."'"),$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1892 "smarty_internal_templateparser.php"
-#line 160 "smarty_internal_templateparser.y"
- function yy_r19(){ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1895 "smarty_internal_templateparser.php"
-#line 163 "smarty_internal_templateparser.y"
- function yy_r21(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + -1]->minor); }
-#line 1898 "smarty_internal_templateparser.php"
-#line 165 "smarty_internal_templateparser.y"
- function yy_r23(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,array()); }
-#line 1901 "smarty_internal_templateparser.php"
+ function yy_r17(){ $this->_retvalue = self::escape_end_tag($this->yystack[$this->yyidx + 0]->minor); }
+#line 1905 "smarty_internal_templateparser.php"
+#line 166 "smarty_internal_templateparser.y"
+ function yy_r18(){ $this->_retvalue = $this->compiler->compileTag('private_print_expression',array('value'=>$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1908 "smarty_internal_templateparser.php"
#line 167 "smarty_internal_templateparser.y"
- function yy_r24(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1904 "smarty_internal_templateparser.php"
-#line 169 "smarty_internal_templateparser.y"
- function yy_r25(){ $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor).'<?php echo ';
- if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -3]->minor[0],'modifier')) {
- $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
- } else {
- if (is_callable($this->yystack[$this->yyidx + -3]->minor[0])) {
- if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -3]->minor[0], $this->compiler)) {
- $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
- }
- } else {
- $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -3]->minor[0] . "\"");
- }
- }
- }
-#line 1919 "smarty_internal_templateparser.php"
-#line 183 "smarty_internal_templateparser.y"
- function yy_r26(){ $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -4]->minor),$this->yystack[$this->yyidx + -1]->minor)).'<?php echo ';
- if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -3]->minor[0],'modifier')) {
- $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
- } else {
- if (is_callable($this->yystack[$this->yyidx + -3]->minor[0])) {
- if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -3]->minor[0], $this->compiler)) {
- $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
- }
- } else {
- $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -3]->minor[0] . "\"");
- }
- }
- }
+ function yy_r19(){ $this->_retvalue = $this->compiler->compileTag('private_print_expression',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1911 "smarty_internal_templateparser.php"
+#line 178 "smarty_internal_templateparser.y"
+ function yy_r23(){ $this->_retvalue = $this->compiler->compileTag('assign',array('value'=>$this->yystack[$this->yyidx + -1]->minor,'var'=>"'".$this->yystack[$this->yyidx + -3]->minor."'")); }
+#line 1914 "smarty_internal_templateparser.php"
+#line 180 "smarty_internal_templateparser.y"
+ function yy_r25(){ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor,'var'=>"'".$this->yystack[$this->yyidx + -4]->minor."'"),$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1917 "smarty_internal_templateparser.php"
+#line 182 "smarty_internal_templateparser.y"
+ function yy_r27(){ $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1920 "smarty_internal_templateparser.php"
+#line 185 "smarty_internal_templateparser.y"
+ function yy_r29(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + -1]->minor); }
+#line 1923 "smarty_internal_templateparser.php"
+#line 187 "smarty_internal_templateparser.y"
+ function yy_r31(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,array()); }
+#line 1926 "smarty_internal_templateparser.php"
+#line 189 "smarty_internal_templateparser.y"
+ function yy_r32(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1929 "smarty_internal_templateparser.php"
+#line 191 "smarty_internal_templateparser.y"
+ function yy_r33(){ $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor).'<?php echo ';
+ $this->_retvalue .= $this->compiler->compileTag('private_modifier',array('modifier'=>$this->yystack[$this->yyidx + -3]->minor,'params'=>'ob_get_clean()'.$this->yystack[$this->yyidx + -2]->minor)).'?>';
+ }
#line 1934 "smarty_internal_templateparser.php"
-#line 197 "smarty_internal_templateparser.y"
- function yy_r27(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1937 "smarty_internal_templateparser.php"
+#line 195 "smarty_internal_templateparser.y"
+ function yy_r34(){ $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -4]->minor),$this->yystack[$this->yyidx + -1]->minor)).'<?php echo ';
+ $this->_retvalue .= $this->compiler->compileTag('private_modifier',array('modifier'=>$this->yystack[$this->yyidx + -3]->minor,'params'=>'ob_get_clean()'.$this->yystack[$this->yyidx + -2]->minor)).'?>';
+ }
+#line 1939 "smarty_internal_templateparser.php"
+#line 199 "smarty_internal_templateparser.y"
+ function yy_r35(){ $this->_retvalue = $this->compiler->compileTag(($this->yystack[$this->yyidx + -3]->minor == 'else if')? 'elseif' : $this->yystack[$this->yyidx + -3]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1942 "smarty_internal_templateparser.php"
#line 200 "smarty_internal_templateparser.y"
- function yy_r29(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -11]->minor,array('start'=>$this->yystack[$this->yyidx + -9]->minor,'ifexp'=>$this->yystack[$this->yyidx + -6]->minor,'varloop'=>$this->yystack[$this->yyidx + -2]->minor,'loop'=>$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1941 "smarty_internal_templateparser.php"
-#line 202 "smarty_internal_templateparser.y"
- function yy_r30(){ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor; }
-#line 1944 "smarty_internal_templateparser.php"
+ function yy_r36(){ $this->_retvalue = $this->compiler->compileTag(($this->yystack[$this->yyidx + -3]->minor == 'else if')? 'elseif' : $this->yystack[$this->yyidx + -3]->minor,array('if condition'=>trim($this->yystack[$this->yyidx + -2]->minor).$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1945 "smarty_internal_templateparser.php"
#line 203 "smarty_internal_templateparser.y"
- function yy_r31(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
-#line 1947 "smarty_internal_templateparser.php"
-#line 204 "smarty_internal_templateparser.y"
- function yy_r32(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array_merge(array('start'=>$this->yystack[$this->yyidx + -4]->minor,'to'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1950 "smarty_internal_templateparser.php"
+ function yy_r38(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -11]->minor,array('start'=>$this->yystack[$this->yyidx + -9]->minor,'ifexp'=>$this->yystack[$this->yyidx + -6]->minor,'varloop'=>$this->yystack[$this->yyidx + -2]->minor,'loop'=>$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1949 "smarty_internal_templateparser.php"
+#line 205 "smarty_internal_templateparser.y"
+ function yy_r39(){ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor; }
+#line 1952 "smarty_internal_templateparser.php"
+#line 206 "smarty_internal_templateparser.y"
+ function yy_r40(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
+#line 1955 "smarty_internal_templateparser.php"
#line 207 "smarty_internal_templateparser.y"
- function yy_r33(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1954 "smarty_internal_templateparser.php"
-#line 209 "smarty_internal_templateparser.y"
- function yy_r34(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -9]->minor,array('from'=>$this->yystack[$this->yyidx + -7]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor,'key'=>$this->yystack[$this->yyidx + -4]->minor)); }
+ function yy_r41(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array_merge(array('start'=>$this->yystack[$this->yyidx + -4]->minor,'to'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
#line 1958 "smarty_internal_templateparser.php"
-#line 211 "smarty_internal_templateparser.y"
- function yy_r35(){
+#line 210 "smarty_internal_templateparser.y"
+ function yy_r42(){
$this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor)); }
#line 1962 "smarty_internal_templateparser.php"
-#line 213 "smarty_internal_templateparser.y"
- function yy_r36(){
+#line 212 "smarty_internal_templateparser.y"
+ function yy_r43(){
$this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -9]->minor,array('from'=>$this->yystack[$this->yyidx + -7]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor,'key'=>$this->yystack[$this->yyidx + -4]->minor)); }
#line 1966 "smarty_internal_templateparser.php"
-#line 217 "smarty_internal_templateparser.y"
- function yy_r37(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array()); }
-#line 1969 "smarty_internal_templateparser.php"
-#line 222 "smarty_internal_templateparser.y"
- function yy_r42(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',$this->yystack[$this->yyidx + -1]->minor); }
-#line 1972 "smarty_internal_templateparser.php"
-#line 223 "smarty_internal_templateparser.y"
- function yy_r43(){ $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor.'close',$this->yystack[$this->yyidx + -1]->minor).'<?php echo ';
- if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -3]->minor[0],'modifier')) {
- $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
- } else {
- if (is_callable($this->yystack[$this->yyidx + -3]->minor[0])) {
- if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -3]->minor[0], $this->compiler)) {
- $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
- }
- } else {
- $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -3]->minor[0] . "\"");
- }
- }
- }
-#line 1987 "smarty_internal_templateparser.php"
+#line 214 "smarty_internal_templateparser.y"
+ function yy_r44(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1970 "smarty_internal_templateparser.php"
+#line 216 "smarty_internal_templateparser.y"
+ function yy_r45(){
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -9]->minor,array('from'=>$this->yystack[$this->yyidx + -7]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor,'key'=>$this->yystack[$this->yyidx + -4]->minor)); }
+#line 1974 "smarty_internal_templateparser.php"
+#line 220 "smarty_internal_templateparser.y"
+ function yy_r46(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array()); }
+#line 1977 "smarty_internal_templateparser.php"
+#line 225 "smarty_internal_templateparser.y"
+ function yy_r51(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',$this->yystack[$this->yyidx + -1]->minor); }
+#line 1980 "smarty_internal_templateparser.php"
+#line 226 "smarty_internal_templateparser.y"
+ function yy_r52(){ $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor.'close',$this->yystack[$this->yyidx + -1]->minor).'<?php echo ';
+ $this->_retvalue .= $this->compiler->compileTag('private_modifier',array('modifier'=>$this->yystack[$this->yyidx + -3]->minor,'params'=>'ob_get_clean()'.$this->yystack[$this->yyidx + -2]->minor)).'?>';
+ }
+#line 1985 "smarty_internal_templateparser.php"
+#line 230 "smarty_internal_templateparser.y"
+ function yy_r53(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor)); }
+#line 1988 "smarty_internal_templateparser.php"
#line 237 "smarty_internal_templateparser.y"
- function yy_r44(){ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor)); }
-#line 1990 "smarty_internal_templateparser.php"
+ function yy_r54(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); }
+#line 1991 "smarty_internal_templateparser.php"
+#line 241 "smarty_internal_templateparser.y"
+ function yy_r56(){ $this->_retvalue = array(); }
+#line 1994 "smarty_internal_templateparser.php"
#line 244 "smarty_internal_templateparser.y"
- function yy_r45(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); }
-#line 1993 "smarty_internal_templateparser.php"
+ function yy_r57(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>"'".$this->yystack[$this->yyidx + 0]->minor."'"); }
+#line 1997 "smarty_internal_templateparser.php"
+#line 245 "smarty_internal_templateparser.y"
+ function yy_r58(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor); }
+#line 2000 "smarty_internal_templateparser.php"
#line 248 "smarty_internal_templateparser.y"
- function yy_r47(){ $this->_retvalue = array(); }
-#line 1996 "smarty_internal_templateparser.php"
-#line 251 "smarty_internal_templateparser.y"
- function yy_r48(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>"'".$this->yystack[$this->yyidx + 0]->minor."'"); }
-#line 1999 "smarty_internal_templateparser.php"
-#line 252 "smarty_internal_templateparser.y"
- function yy_r49(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor); }
-#line 2002 "smarty_internal_templateparser.php"
+ function yy_r61(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor=>'true'); }
+#line 2003 "smarty_internal_templateparser.php"
#line 255 "smarty_internal_templateparser.y"
- function yy_r52(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor=>'true'); }
-#line 2005 "smarty_internal_templateparser.php"
-#line 262 "smarty_internal_templateparser.y"
- function yy_r54(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); }
-#line 2008 "smarty_internal_templateparser.php"
-#line 263 "smarty_internal_templateparser.y"
- function yy_r55(){ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; }
-#line 2011 "smarty_internal_templateparser.php"
+ function yy_r63(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); }
+#line 2006 "smarty_internal_templateparser.php"
+#line 256 "smarty_internal_templateparser.y"
+ function yy_r64(){ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; }
+#line 2009 "smarty_internal_templateparser.php"
+#line 258 "smarty_internal_templateparser.y"
+ function yy_r65(){ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor); }
+#line 2012 "smarty_internal_templateparser.php"
+#line 264 "smarty_internal_templateparser.y"
+ function yy_r66(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
+#line 2015 "smarty_internal_templateparser.php"
#line 265 "smarty_internal_templateparser.y"
- function yy_r56(){ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor); }
-#line 2014 "smarty_internal_templateparser.php"
-#line 271 "smarty_internal_templateparser.y"
- function yy_r57(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
-#line 2017 "smarty_internal_templateparser.php"
-#line 274 "smarty_internal_templateparser.y"
- function yy_r59(){$this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')'; }
-#line 2020 "smarty_internal_templateparser.php"
-#line 275 "smarty_internal_templateparser.y"
- function yy_r60(){
- if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -1]->minor[0],'modifier')) {
- $this->_retvalue = "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -1]->minor[0] . "',array(". $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor. "),".$this->yystack[$this->yyidx + -1]->minor[1].")";
- } else {
- if (is_callable($this->yystack[$this->yyidx + -1]->minor[0])) {
- if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -1]->minor[0], $this->compiler)) {
- $this->_retvalue = "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -1]->minor[0] . "',array(". $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor. "),".$this->yystack[$this->yyidx + -1]->minor[1].")";
- }
- } else {
- $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -1]->minor[0] . "\"");
- }
- }
- }
-#line 2035 "smarty_internal_templateparser.php"
-#line 292 "smarty_internal_templateparser.y"
- function yy_r62(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2038 "smarty_internal_templateparser.php"
-#line 294 "smarty_internal_templateparser.y"
- function yy_r63(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + 0]->minor; }
-#line 2041 "smarty_internal_templateparser.php"
-#line 301 "smarty_internal_templateparser.y"
- function yy_r65(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2044 "smarty_internal_templateparser.php"
-#line 315 "smarty_internal_templateparser.y"
- function yy_r69(){$this->_retvalue = ' & '; }
-#line 2047 "smarty_internal_templateparser.php"
-#line 319 "smarty_internal_templateparser.y"
- function yy_r71(){ $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2050 "smarty_internal_templateparser.php"
-#line 324 "smarty_internal_templateparser.y"
- function yy_r75(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2053 "smarty_internal_templateparser.php"
-#line 334 "smarty_internal_templateparser.y"
- function yy_r79(){ $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
-#line 2056 "smarty_internal_templateparser.php"
-#line 338 "smarty_internal_templateparser.y"
- function yy_r81(){ $_s = str_replace(array('."".','.""'),array('.',''),'"'.$this->yystack[$this->yyidx + -1]->minor.'"');
+ function yy_r67(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
+#line 2018 "smarty_internal_templateparser.php"
+#line 267 "smarty_internal_templateparser.y"
+ function yy_r68(){$this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')'; }
+#line 2021 "smarty_internal_templateparser.php"
+#line 268 "smarty_internal_templateparser.y"
+ function yy_r69(){ $this->_retvalue = $this->compiler->compileTag('private_modifier',array('modifier'=>$this->yystack[$this->yyidx + -1]->minor,'params'=>$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor)); }
+#line 2024 "smarty_internal_templateparser.php"
+#line 277 "smarty_internal_templateparser.y"
+ function yy_r71(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor; }
+#line 2027 "smarty_internal_templateparser.php"
+#line 283 "smarty_internal_templateparser.y"
+ function yy_r75(){$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2030 "smarty_internal_templateparser.php"
+#line 289 "smarty_internal_templateparser.y"
+ function yy_r77(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2033 "smarty_internal_templateparser.php"
+#line 298 "smarty_internal_templateparser.y"
+ function yy_r81(){ $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2036 "smarty_internal_templateparser.php"
+#line 303 "smarty_internal_templateparser.y"
+ function yy_r85(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2039 "smarty_internal_templateparser.php"
+#line 313 "smarty_internal_templateparser.y"
+ function yy_r89(){ $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
+#line 2042 "smarty_internal_templateparser.php"
+#line 317 "smarty_internal_templateparser.y"
+ function yy_r91(){ $_s = str_replace(array('."".','.""'),array('.',''),'"'.$this->yystack[$this->yyidx + -1]->minor.'"');
if (substr($_s,0,3) == '"".') {
$this->_retvalue = substr($_s,3);
} else {
$this->_retvalue = $_s;
}
}
-#line 2065 "smarty_internal_templateparser.php"
-#line 345 "smarty_internal_templateparser.y"
- function yy_r82(){ $this->_retvalue = "''"; }
-#line 2068 "smarty_internal_templateparser.php"
+#line 2051 "smarty_internal_templateparser.php"
+#line 324 "smarty_internal_templateparser.y"
+ function yy_r92(){ $this->_retvalue = "''"; }
+#line 2054 "smarty_internal_templateparser.php"
+#line 326 "smarty_internal_templateparser.y"
+ function yy_r93(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2057 "smarty_internal_templateparser.php"
+#line 327 "smarty_internal_templateparser.y"
+ function yy_r94(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -3]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -6]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -1]->minor .')'; }
+#line 2060 "smarty_internal_templateparser.php"
+#line 329 "smarty_internal_templateparser.y"
+ function yy_r95(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.'::'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2063 "smarty_internal_templateparser.php"
+#line 330 "smarty_internal_templateparser.y"
+ function yy_r96(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -4]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -7]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -2]->minor .')'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2066 "smarty_internal_templateparser.php"
+#line 332 "smarty_internal_templateparser.y"
+ function yy_r97(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2069 "smarty_internal_templateparser.php"
+#line 334 "smarty_internal_templateparser.y"
+ function yy_r98(){ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.'::$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2072 "smarty_internal_templateparser.php"
+#line 336 "smarty_internal_templateparser.y"
+ function yy_r99(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.'::$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2075 "smarty_internal_templateparser.php"
+#line 338 "smarty_internal_templateparser.y"
+ function yy_r100(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '$_tmp'.$this->prefix_number; }
+#line 2078 "smarty_internal_templateparser.php"
#line 347 "smarty_internal_templateparser.y"
- function yy_r83(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2071 "smarty_internal_templateparser.php"
-#line 348 "smarty_internal_templateparser.y"
- function yy_r84(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -3]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -6]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -1]->minor .')'; }
-#line 2074 "smarty_internal_templateparser.php"
+ function yy_r101(){if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('private_special_variable',$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);} else {
+ $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + 0]->minor['var'] .')->value'.$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor['var'],"'"), null, true, false)->nocache;} }
+#line 2082 "smarty_internal_templateparser.php"
#line 350 "smarty_internal_templateparser.y"
- function yy_r85(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.'::'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2077 "smarty_internal_templateparser.php"
-#line 351 "smarty_internal_templateparser.y"
- function yy_r86(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -4]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -7]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -2]->minor .')'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2080 "smarty_internal_templateparser.php"
-#line 353 "smarty_internal_templateparser.y"
- function yy_r87(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2083 "smarty_internal_templateparser.php"
+ function yy_r102(){ $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"), null, true, false)->nocache; }
+#line 2085 "smarty_internal_templateparser.php"
+#line 354 "smarty_internal_templateparser.y"
+ function yy_r104(){$this->_retvalue = '$_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -1]->minor .'\')'; }
+#line 2088 "smarty_internal_templateparser.php"
#line 355 "smarty_internal_templateparser.y"
- function yy_r88(){ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.'::$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2086 "smarty_internal_templateparser.php"
-#line 357 "smarty_internal_templateparser.y"
- function yy_r89(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.'::$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2089 "smarty_internal_templateparser.php"
-#line 359 "smarty_internal_templateparser.y"
- function yy_r90(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '$_tmp'.$this->prefix_number; }
-#line 2092 "smarty_internal_templateparser.php"
-#line 368 "smarty_internal_templateparser.y"
- function yy_r91(){ if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('special_smarty_variable',$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);} else {
- $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + 0]->minor['var'] .')->value'.$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor['var'],"'"), null, true, false)->nocache;} }
-#line 2096 "smarty_internal_templateparser.php"
+ function yy_r105(){$this->_retvalue = '$_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -1]->minor .')'; }
+#line 2091 "smarty_internal_templateparser.php"
+#line 358 "smarty_internal_templateparser.y"
+ function yy_r106(){$this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor); }
+#line 2094 "smarty_internal_templateparser.php"
+#line 364 "smarty_internal_templateparser.y"
+ function yy_r107(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2097 "smarty_internal_templateparser.php"
+#line 366 "smarty_internal_templateparser.y"
+ function yy_r108(){return; }
+#line 2100 "smarty_internal_templateparser.php"
+#line 370 "smarty_internal_templateparser.y"
+ function yy_r109(){ $this->_retvalue = '[$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + 0]->minor .')->value]'; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable('$this->yystack[$this->yyidx + 0]->minor', null, true, false)->nocache; }
+#line 2103 "smarty_internal_templateparser.php"
#line 371 "smarty_internal_templateparser.y"
- function yy_r92(){ $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"), null, true, false)->nocache; }
-#line 2099 "smarty_internal_templateparser.php"
-#line 375 "smarty_internal_templateparser.y"
- function yy_r94(){$this->_retvalue = '$_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -1]->minor .'\')'; }
-#line 2102 "smarty_internal_templateparser.php"
-#line 376 "smarty_internal_templateparser.y"
- function yy_r95(){$this->_retvalue = '$_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -1]->minor .')'; }
-#line 2105 "smarty_internal_templateparser.php"
+ function yy_r110(){ $this->_retvalue = '[$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor.']'; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"), null, true, false)->nocache; }
+#line 2106 "smarty_internal_templateparser.php"
+#line 374 "smarty_internal_templateparser.y"
+ function yy_r111(){ $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']"; }
+#line 2109 "smarty_internal_templateparser.php"
+#line 378 "smarty_internal_templateparser.y"
+ function yy_r114(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]"; }
+#line 2112 "smarty_internal_templateparser.php"
#line 379 "smarty_internal_templateparser.y"
- function yy_r96(){$this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor); }
-#line 2108 "smarty_internal_templateparser.php"
-#line 385 "smarty_internal_templateparser.y"
- function yy_r97(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2111 "smarty_internal_templateparser.php"
-#line 387 "smarty_internal_templateparser.y"
- function yy_r98(){return; }
-#line 2114 "smarty_internal_templateparser.php"
-#line 391 "smarty_internal_templateparser.y"
- function yy_r99(){ $this->_retvalue = '[$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + 0]->minor .')->value]'; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable('$this->yystack[$this->yyidx + 0]->minor', null, true, false)->nocache; }
-#line 2117 "smarty_internal_templateparser.php"
-#line 392 "smarty_internal_templateparser.y"
- function yy_r100(){ $this->_retvalue = '[$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor.']'; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"), null, true, false)->nocache; }
-#line 2120 "smarty_internal_templateparser.php"
-#line 395 "smarty_internal_templateparser.y"
- function yy_r101(){ $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']"; }
-#line 2123 "smarty_internal_templateparser.php"
+ function yy_r115(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]"; }
+#line 2115 "smarty_internal_templateparser.php"
+#line 381 "smarty_internal_templateparser.y"
+ function yy_r116(){ $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable','[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']'; }
+#line 2118 "smarty_internal_templateparser.php"
+#line 382 "smarty_internal_templateparser.y"
+ function yy_r117(){ $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable','[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']'; }
+#line 2121 "smarty_internal_templateparser.php"
+#line 386 "smarty_internal_templateparser.y"
+ function yy_r119(){$this->_retvalue = ''; }
+#line 2124 "smarty_internal_templateparser.php"
+#line 394 "smarty_internal_templateparser.y"
+ function yy_r121(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2127 "smarty_internal_templateparser.php"
+#line 396 "smarty_internal_templateparser.y"
+ function yy_r122(){$this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
+#line 2130 "smarty_internal_templateparser.php"
#line 399 "smarty_internal_templateparser.y"
- function yy_r104(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]"; }
-#line 2126 "smarty_internal_templateparser.php"
-#line 400 "smarty_internal_templateparser.y"
- function yy_r105(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]"; }
-#line 2129 "smarty_internal_templateparser.php"
-#line 402 "smarty_internal_templateparser.y"
- function yy_r106(){ $this->_retvalue = '['.$this->compiler->compileTag('special_smarty_variable','[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']'; }
-#line 2132 "smarty_internal_templateparser.php"
-#line 403 "smarty_internal_templateparser.y"
- function yy_r107(){ $this->_retvalue = '['.$this->compiler->compileTag('special_smarty_variable','[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']'; }
-#line 2135 "smarty_internal_templateparser.php"
-#line 407 "smarty_internal_templateparser.y"
- function yy_r109(){$this->_retvalue = ''; }
-#line 2138 "smarty_internal_templateparser.php"
-#line 415 "smarty_internal_templateparser.y"
- function yy_r111(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2141 "smarty_internal_templateparser.php"
-#line 417 "smarty_internal_templateparser.y"
- function yy_r112(){$this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
-#line 2144 "smarty_internal_templateparser.php"
-#line 420 "smarty_internal_templateparser.y"
- function yy_r113(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')'; }
-#line 2147 "smarty_internal_templateparser.php"
-#line 425 "smarty_internal_templateparser.y"
- function yy_r114(){ if ($this->yystack[$this->yyidx + -1]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('special_smarty_variable',$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']).$this->yystack[$this->yyidx + 0]->minor;} else {
+ function yy_r123(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')'; }
+#line 2133 "smarty_internal_templateparser.php"
+#line 404 "smarty_internal_templateparser.y"
+ function yy_r124(){ if ($this->yystack[$this->yyidx + -1]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('private_special_variable',$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']).$this->yystack[$this->yyidx + 0]->minor;} else {
$this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -1]->minor['var'] .')->value'.$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index'].$this->yystack[$this->yyidx + 0]->minor; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + -1]->minor['var'],"'"), null, true, false)->nocache;} }
-#line 2151 "smarty_internal_templateparser.php"
-#line 428 "smarty_internal_templateparser.y"
- function yy_r115(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
-#line 2154 "smarty_internal_templateparser.php"
-#line 430 "smarty_internal_templateparser.y"
- function yy_r116(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2157 "smarty_internal_templateparser.php"
-#line 432 "smarty_internal_templateparser.y"
- function yy_r117(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2160 "smarty_internal_templateparser.php"
-#line 433 "smarty_internal_templateparser.y"
- function yy_r118(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
-#line 2163 "smarty_internal_templateparser.php"
-#line 434 "smarty_internal_templateparser.y"
- function yy_r119(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
-#line 2166 "smarty_internal_templateparser.php"
-#line 435 "smarty_internal_templateparser.y"
- function yy_r120(){ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
-#line 2169 "smarty_internal_templateparser.php"
-#line 437 "smarty_internal_templateparser.y"
- function yy_r121(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2172 "smarty_internal_templateparser.php"
-#line 443 "smarty_internal_templateparser.y"
- function yy_r122(){if (!$this->template->security || $this->smarty->security_handler->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) {
+#line 2137 "smarty_internal_templateparser.php"
+#line 407 "smarty_internal_templateparser.y"
+ function yy_r125(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
+#line 2140 "smarty_internal_templateparser.php"
+#line 409 "smarty_internal_templateparser.y"
+ function yy_r126(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2143 "smarty_internal_templateparser.php"
+#line 411 "smarty_internal_templateparser.y"
+ function yy_r127(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2146 "smarty_internal_templateparser.php"
+#line 412 "smarty_internal_templateparser.y"
+ function yy_r128(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
+#line 2149 "smarty_internal_templateparser.php"
+#line 413 "smarty_internal_templateparser.y"
+ function yy_r129(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
+#line 2152 "smarty_internal_templateparser.php"
+#line 414 "smarty_internal_templateparser.y"
+ function yy_r130(){ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
+#line 2155 "smarty_internal_templateparser.php"
+#line 416 "smarty_internal_templateparser.y"
+ function yy_r131(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2158 "smarty_internal_templateparser.php"
+#line 422 "smarty_internal_templateparser.y"
+ function yy_r132(){if (!$this->template->security || $this->smarty->security_handler->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) {
if ($this->yystack[$this->yyidx + -3]->minor == 'isset' || $this->yystack[$this->yyidx + -3]->minor == 'empty' || $this->yystack[$this->yyidx + -3]->minor == 'array' || is_callable($this->yystack[$this->yyidx + -3]->minor)) {
$this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")";
} else {
$this->compiler->trigger_template_error ("unknown function \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
}
} }
-#line 2181 "smarty_internal_templateparser.php"
-#line 454 "smarty_internal_templateparser.y"
- function yy_r123(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
-#line 2184 "smarty_internal_templateparser.php"
-#line 458 "smarty_internal_templateparser.y"
- function yy_r124(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.",".$this->yystack[$this->yyidx + 0]->minor; }
-#line 2187 "smarty_internal_templateparser.php"
-#line 462 "smarty_internal_templateparser.y"
- function yy_r126(){ return; }
-#line 2190 "smarty_internal_templateparser.php"
-#line 467 "smarty_internal_templateparser.y"
- function yy_r127(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor,'false'); }
-#line 2193 "smarty_internal_templateparser.php"
+#line 2167 "smarty_internal_templateparser.php"
+#line 433 "smarty_internal_templateparser.y"
+ function yy_r133(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
+#line 2170 "smarty_internal_templateparser.php"
+#line 437 "smarty_internal_templateparser.y"
+ function yy_r134(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.",".$this->yystack[$this->yyidx + 0]->minor; }
+#line 2173 "smarty_internal_templateparser.php"
+#line 441 "smarty_internal_templateparser.y"
+ function yy_r136(){ return; }
+#line 2176 "smarty_internal_templateparser.php"
+#line 446 "smarty_internal_templateparser.y"
+ function yy_r137(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
+#line 2179 "smarty_internal_templateparser.php"
+#line 459 "smarty_internal_templateparser.y"
+ function yy_r139(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2182 "smarty_internal_templateparser.php"
+#line 463 "smarty_internal_templateparser.y"
+ function yy_r141(){$this->_retvalue = ','.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2185 "smarty_internal_templateparser.php"
+#line 464 "smarty_internal_templateparser.y"
+ function yy_r142(){$this->_retvalue = ',\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
+#line 2188 "smarty_internal_templateparser.php"
#line 468 "smarty_internal_templateparser.y"
- function yy_r128(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor,'true'); }
-#line 2196 "smarty_internal_templateparser.php"
+ function yy_r143(){$this->_retvalue =$this->yystack[$this->yyidx + 0]->minor; }
+#line 2191 "smarty_internal_templateparser.php"
+#line 469 "smarty_internal_templateparser.y"
+ function yy_r144(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')'; }
+#line 2194 "smarty_internal_templateparser.php"
+#line 470 "smarty_internal_templateparser.y"
+ function yy_r145(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')'; }
+#line 2197 "smarty_internal_templateparser.php"
+#line 471 "smarty_internal_templateparser.y"
+ function yy_r146(){$this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
+#line 2200 "smarty_internal_templateparser.php"
+#line 472 "smarty_internal_templateparser.y"
+ function yy_r147(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
+#line 2203 "smarty_internal_templateparser.php"
+#line 473 "smarty_internal_templateparser.y"
+ function yy_r148(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
+#line 2206 "smarty_internal_templateparser.php"
+#line 474 "smarty_internal_templateparser.y"
+ function yy_r149(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
+#line 2209 "smarty_internal_templateparser.php"
+#line 475 "smarty_internal_templateparser.y"
+ function yy_r150(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
+#line 2212 "smarty_internal_templateparser.php"
+#line 476 "smarty_internal_templateparser.y"
+ function yy_r151(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
+#line 2215 "smarty_internal_templateparser.php"
+#line 482 "smarty_internal_templateparser.y"
+ function yy_r157(){$this->prefix_number++; $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'='.$this->yystack[$this->yyidx + 0]->minor.';?>'; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.'$_tmp'.$this->prefix_number; }
+#line 2218 "smarty_internal_templateparser.php"
#line 484 "smarty_internal_templateparser.y"
- function yy_r131(){$this->_retvalue = ','.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2199 "smarty_internal_templateparser.php"
+ function yy_r158(){$this->_retvalue = '=='; }
+#line 2221 "smarty_internal_templateparser.php"
#line 485 "smarty_internal_templateparser.y"
- function yy_r132(){$this->_retvalue = ',\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
-#line 2202 "smarty_internal_templateparser.php"
+ function yy_r159(){$this->_retvalue = '!='; }
+#line 2224 "smarty_internal_templateparser.php"
+#line 486 "smarty_internal_templateparser.y"
+ function yy_r160(){$this->_retvalue = '>'; }
+#line 2227 "smarty_internal_templateparser.php"
+#line 487 "smarty_internal_templateparser.y"
+ function yy_r161(){$this->_retvalue = '<'; }
+#line 2230 "smarty_internal_templateparser.php"
+#line 488 "smarty_internal_templateparser.y"
+ function yy_r162(){$this->_retvalue = '>='; }
+#line 2233 "smarty_internal_templateparser.php"
+#line 489 "smarty_internal_templateparser.y"
+ function yy_r163(){$this->_retvalue = '<='; }
+#line 2236 "smarty_internal_templateparser.php"
+#line 490 "smarty_internal_templateparser.y"
+ function yy_r164(){$this->_retvalue = '==='; }
+#line 2239 "smarty_internal_templateparser.php"
+#line 491 "smarty_internal_templateparser.y"
+ function yy_r165(){$this->_retvalue = '!=='; }
+#line 2242 "smarty_internal_templateparser.php"
#line 492 "smarty_internal_templateparser.y"
- function yy_r134(){$this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2205 "smarty_internal_templateparser.php"
-#line 497 "smarty_internal_templateparser.y"
- function yy_r136(){$this->_retvalue =$this->yystack[$this->yyidx + 0]->minor; }
-#line 2208 "smarty_internal_templateparser.php"
-#line 499 "smarty_internal_templateparser.y"
- function yy_r137(){$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2211 "smarty_internal_templateparser.php"
-#line 500 "smarty_internal_templateparser.y"
- function yy_r138(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')'; }
-#line 2214 "smarty_internal_templateparser.php"
+ function yy_r166(){$this->_retvalue = '%'; }
+#line 2245 "smarty_internal_templateparser.php"
+#line 494 "smarty_internal_templateparser.y"
+ function yy_r167(){$this->_retvalue = '&&'; }
+#line 2248 "smarty_internal_templateparser.php"
+#line 495 "smarty_internal_templateparser.y"
+ function yy_r168(){$this->_retvalue = '||'; }
+#line 2251 "smarty_internal_templateparser.php"
+#line 496 "smarty_internal_templateparser.y"
+ function yy_r169(){$this->_retvalue = ' XOR '; }
+#line 2254 "smarty_internal_templateparser.php"
#line 501 "smarty_internal_templateparser.y"
- function yy_r139(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')'; }
-#line 2217 "smarty_internal_templateparser.php"
+ function yy_r170(){ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')'; }
+#line 2257 "smarty_internal_templateparser.php"
#line 503 "smarty_internal_templateparser.y"
- function yy_r141(){$this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
-#line 2220 "smarty_internal_templateparser.php"
+ function yy_r172(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2260 "smarty_internal_templateparser.php"
#line 504 "smarty_internal_templateparser.y"
- function yy_r142(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
-#line 2223 "smarty_internal_templateparser.php"
+ function yy_r173(){ return; }
+#line 2263 "smarty_internal_templateparser.php"
#line 505 "smarty_internal_templateparser.y"
- function yy_r143(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
-#line 2226 "smarty_internal_templateparser.php"
+ function yy_r174(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2266 "smarty_internal_templateparser.php"
#line 506 "smarty_internal_templateparser.y"
- function yy_r144(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
-#line 2229 "smarty_internal_templateparser.php"
-#line 507 "smarty_internal_templateparser.y"
- function yy_r145(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
-#line 2232 "smarty_internal_templateparser.php"
-#line 508 "smarty_internal_templateparser.y"
- function yy_r146(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
-#line 2235 "smarty_internal_templateparser.php"
-#line 514 "smarty_internal_templateparser.y"
- function yy_r152(){$this->prefix_number++; $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'='.$this->yystack[$this->yyidx + 0]->minor.';?>'; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.'$_tmp'.$this->prefix_number; }
-#line 2238 "smarty_internal_templateparser.php"
+ function yy_r175(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor; }
+#line 2269 "smarty_internal_templateparser.php"
+#line 515 "smarty_internal_templateparser.y"
+ function yy_r179(){$this->_retvalue = '".'.$this->yystack[$this->yyidx + -1]->minor.'."'; $this->compiler->has_variable_string = true; }
+#line 2272 "smarty_internal_templateparser.php"
#line 516 "smarty_internal_templateparser.y"
- function yy_r153(){$this->_retvalue = '=='; }
-#line 2241 "smarty_internal_templateparser.php"
+ function yy_r180(){$this->_retvalue = '".('.$this->yystack[$this->yyidx + -1]->minor.')."'; $this->compiler->has_variable_string = true; }
+#line 2275 "smarty_internal_templateparser.php"
#line 517 "smarty_internal_templateparser.y"
- function yy_r154(){$this->_retvalue = '!='; }
-#line 2244 "smarty_internal_templateparser.php"
-#line 518 "smarty_internal_templateparser.y"
- function yy_r155(){$this->_retvalue = '>'; }
-#line 2247 "smarty_internal_templateparser.php"
+ function yy_r181(){$this->_retvalue = '".'.'$_smarty_tpl->getVariable(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')->value'.'."'; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor,"'"), null, true, false)->nocache; $this->compiler->has_variable_string = true; }
+#line 2278 "smarty_internal_templateparser.php"
#line 519 "smarty_internal_templateparser.y"
- function yy_r156(){$this->_retvalue = '<'; }
-#line 2250 "smarty_internal_templateparser.php"
+ function yy_r183(){ $this->_retvalue = '".('.$this->yystack[$this->yyidx + -1]->minor.')."'; $this->compiler->has_variable_string = true; }
+#line 2281 "smarty_internal_templateparser.php"
#line 520 "smarty_internal_templateparser.y"
- function yy_r157(){$this->_retvalue = '>='; }
-#line 2253 "smarty_internal_templateparser.php"
-#line 521 "smarty_internal_templateparser.y"
- function yy_r158(){$this->_retvalue = '<='; }
-#line 2256 "smarty_internal_templateparser.php"
-#line 522 "smarty_internal_templateparser.y"
- function yy_r159(){$this->_retvalue = '==='; }
-#line 2259 "smarty_internal_templateparser.php"
-#line 523 "smarty_internal_templateparser.y"
- function yy_r160(){$this->_retvalue = '!=='; }
-#line 2262 "smarty_internal_templateparser.php"
-#line 524 "smarty_internal_templateparser.y"
- function yy_r161(){$this->_retvalue = '%'; }
-#line 2265 "smarty_internal_templateparser.php"
-#line 526 "smarty_internal_templateparser.y"
- function yy_r162(){$this->_retvalue = '&&'; }
-#line 2268 "smarty_internal_templateparser.php"
-#line 527 "smarty_internal_templateparser.y"
- function yy_r163(){$this->_retvalue = '||'; }
-#line 2271 "smarty_internal_templateparser.php"
-#line 528 "smarty_internal_templateparser.y"
- function yy_r164(){$this->_retvalue = ' XOR '; }
-#line 2274 "smarty_internal_templateparser.php"
-#line 533 "smarty_internal_templateparser.y"
- function yy_r165(){ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')'; }
-#line 2277 "smarty_internal_templateparser.php"
-#line 535 "smarty_internal_templateparser.y"
- function yy_r167(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2280 "smarty_internal_templateparser.php"
-#line 536 "smarty_internal_templateparser.y"
- function yy_r168(){ return; }
-#line 2283 "smarty_internal_templateparser.php"
-#line 537 "smarty_internal_templateparser.y"
- function yy_r169(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2286 "smarty_internal_templateparser.php"
-#line 538 "smarty_internal_templateparser.y"
- function yy_r170(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor; }
-#line 2289 "smarty_internal_templateparser.php"
-#line 547 "smarty_internal_templateparser.y"
- function yy_r174(){$this->_retvalue = '".'.$this->yystack[$this->yyidx + -1]->minor.'."'; $this->compiler->has_variable_string = true; }
-#line 2292 "smarty_internal_templateparser.php"
-#line 548 "smarty_internal_templateparser.y"
- function yy_r175(){$this->_retvalue = '".'.'$_smarty_tpl->getVariable(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')->value'.'."'; $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor,"'"), null, true, false)->nocache; $this->compiler->has_variable_string = true; }
-#line 2295 "smarty_internal_templateparser.php"
-#line 550 "smarty_internal_templateparser.y"
- function yy_r177(){ $this->_retvalue = '".('.$this->yystack[$this->yyidx + -1]->minor.')."'; $this->compiler->has_variable_string = true; }
-#line 2298 "smarty_internal_templateparser.php"
-#line 551 "smarty_internal_templateparser.y"
- function yy_r178(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '".$_tmp'.$this->prefix_number.'."'; $this->compiler->has_variable_string = true; }
-#line 2301 "smarty_internal_templateparser.php"
+ function yy_r184(){ $this->prefix_number++; $this->compiler->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '".$_tmp'.$this->prefix_number.'."'; $this->compiler->has_variable_string = true; }
+#line 2284 "smarty_internal_templateparser.php"
private $_retvalue;
@@ -2360,12 +2343,12 @@ static public $yy_action = array(
function yy_syntax_error($yymajor, $TOKEN)
{
-#line 60 "smarty_internal_templateparser.y"
+#line 71 "smarty_internal_templateparser.y"
$this->internalError = true;
$this->yymajor = $yymajor;
$this->compiler->trigger_template_error();
-#line 2364 "smarty_internal_templateparser.php"
+#line 2347 "smarty_internal_templateparser.php"
}
function yy_accept()
@@ -2376,13 +2359,13 @@ static public $yy_action = array(
while ($this->yyidx >= 0) {
$stack = $this->yy_pop_parser_stack();
}
-#line 52 "smarty_internal_templateparser.y"
+#line 63 "smarty_internal_templateparser.y"
$this->successful = !$this->internalError;
$this->internalError = false;
$this->retvalue = $this->_retvalue;
//echo $this->retvalue."\n\n";
-#line 2382 "smarty_internal_templateparser.php"
+#line 2365 "smarty_internal_templateparser.php"
}
function doParse($yymajor, $yytokenvalue)
diff --git a/libs/sysplugins/smarty_method_register_block.php b/libs/sysplugins/smarty_method_register_block.php
index c2bf1cbd..466f8c39 100644
--- a/libs/sysplugins/smarty_method_register_block.php
+++ b/libs/sysplugins/smarty_method_register_block.php
@@ -23,13 +23,13 @@
*/
function Smarty_Method_Register_Block($smarty, $block_tag, $block_impl, $cacheable = true, $cache_attr = array())
{
- if (isset($smarty->registered_plugins[$block_tag])) {
+ if (isset($smarty->registered_plugins['block'][$block_tag])) {
throw new Exception("Plugin tag \"{$block_tag}\" already registered");
} elseif (!is_callable($block_impl)) {
throw new Exception("Plugin \"{$block_tag}\" not callable");
} else {
- $smarty->registered_plugins[$block_tag] =
- array('block', $block_impl, $cacheable, $cache_attr);
+ $smarty->registered_plugins['block'][$block_tag] =
+ array($block_impl, $cacheable, $cache_attr);
}
}
diff --git a/libs/sysplugins/smarty_method_register_compiler_function.php b/libs/sysplugins/smarty_method_register_compiler_function.php
index 5d747441..b338504c 100644
--- a/libs/sysplugins/smarty_method_register_compiler_function.php
+++ b/libs/sysplugins/smarty_method_register_compiler_function.php
@@ -22,13 +22,13 @@
*/
function Smarty_Method_Register_Compiler_Function($smarty, $compiler_tag, $compiler_impl, $cacheable = true)
{
- if (isset($smarty->registered_plugins[$compiler_tag])) {
+ if (isset($smarty->registered_plugins['compiler'][$compiler_tag])) {
throw new Exception("Plugin tag \"{$compiler_tag}\" already registered");
} elseif (!is_callable($compiler_impl)) {
throw new Exception("Plugin \"{$compiler_tag}\" not callable");
} else {
- $smarty->registered_plugins[$compiler_tag] =
- array('compiler', $compiler_impl, $cacheable);
+ $smarty->registered_plugins['compiler'][$compiler_tag] =
+ array($compiler_impl, $cacheable);
}
}
diff --git a/libs/sysplugins/smarty_method_register_function.php b/libs/sysplugins/smarty_method_register_function.php
index ceb80487..fbdb7815 100644
--- a/libs/sysplugins/smarty_method_register_function.php
+++ b/libs/sysplugins/smarty_method_register_function.php
@@ -20,13 +20,13 @@
*/
function Smarty_Method_Register_Function($smarty, $function_tag, $function_impl, $cacheable = true, $cache_attr = array())
{
- if (isset($smarty->registered_plugins[$function_tag])) {
+ if (isset($smarty->registered_plugins['function'][$function_tag])) {
throw new Exception("Plugin tag \"{$function_tag}\" already registered");
} elseif (!is_callable($function_impl)) {
throw new Exception("Plugin \"{$function_tag}\" not callable");
} else {
- $smarty->registered_plugins[$function_tag] =
- array('function', $function_impl, $cacheable, $cache_attr);
+ $smarty->registered_plugins['function'][$function_tag] =
+ array($function_impl, $cacheable, $cache_attr);
}
}
diff --git a/libs/sysplugins/smarty_method_register_modifier.php b/libs/sysplugins/smarty_method_register_modifier.php
index 7d9986c7..022f4f30 100644
--- a/libs/sysplugins/smarty_method_register_modifier.php
+++ b/libs/sysplugins/smarty_method_register_modifier.php
@@ -19,13 +19,13 @@
*/
function Smarty_Method_Register_Modifier($smarty, $modifier, $modifier_impl)
{
- if (isset($smarty->registered_plugins[$modifier])) {
+ if (isset($smarty->registered_plugins['modifier'][$modifier])) {
throw new Exception("Plugin \"{$modifier}\" already registered");
} elseif (!is_callable($modifier_impl)) {
throw new Exception("Plugin \"{$modifier}\" not callable");
} else {
- $smarty->registered_plugins[$modifier] =
- array('modifier', $modifier_impl);
+ $smarty->registered_plugins['modifier'][$modifier] =
+ array($modifier_impl);
}
}
?>
diff --git a/libs/sysplugins/smarty_method_unregister_block.php b/libs/sysplugins/smarty_method_unregister_block.php
index 2b6867a5..d1fecb7b 100644
--- a/libs/sysplugins/smarty_method_unregister_block.php
+++ b/libs/sysplugins/smarty_method_unregister_block.php
@@ -21,8 +21,8 @@
*/
function Smarty_Method_Unregister_Block($smarty, $block_tag)
{
- if (isset($smarty->registered_plugins[$block_tag]) && $smarty->registered_plugins[$block_tag][0] == 'block') {
- unset($smarty->registered_plugins[$block_tag]);
+ if (isset($smarty->registered_plugins['block'][$block_tag])) {
+ unset($smarty->registered_plugins['block'][$block_tag]);
}
}
diff --git a/libs/sysplugins/smarty_method_unregister_compiler_function.php b/libs/sysplugins/smarty_method_unregister_compiler_function.php
index 3769b030..049214b4 100644
--- a/libs/sysplugins/smarty_method_unregister_compiler_function.php
+++ b/libs/sysplugins/smarty_method_unregister_compiler_function.php
@@ -21,8 +21,8 @@
*/
function Smarty_Method_Unregister_Compiler_Function($smarty, $compiler_tag)
{
- if (isset($smarty->registered_plugins[$compiler_tag]) && $smarty->registered_plugins[$compiler_tag][0] == 'compiler') {
- unset($smarty->registered_plugins[$compiler_tag]);
+ if (isset($smarty->registered_plugins['compiler'][$compiler_tag])) {
+ unset($smarty->registered_plugins['compiler'][$compiler_tag]);
}
}
diff --git a/libs/sysplugins/smarty_method_unregister_function.php b/libs/sysplugins/smarty_method_unregister_function.php
index 99c0d43a..f91b9bb9 100644
--- a/libs/sysplugins/smarty_method_unregister_function.php
+++ b/libs/sysplugins/smarty_method_unregister_function.php
@@ -21,8 +21,8 @@
*/
function Smarty_Method_Unregister_Function($smarty, $function_tag)
{
- if (isset($smarty->registered_plugins[$function_tag]) && $smarty->registered_plugins[$function_tag][0] == 'function') {
- unset($smarty->registered_plugins[$function_tag]);
+ if (isset($smarty->registered_plugins['function'][$function_tag])) {
+ unset($smarty->registered_plugins['function'][$function_tag]);
}
}
diff --git a/libs/sysplugins/smarty_method_unregister_modifier.php b/libs/sysplugins/smarty_method_unregister_modifier.php
index 84c78fca..46191c9f 100644
--- a/libs/sysplugins/smarty_method_unregister_modifier.php
+++ b/libs/sysplugins/smarty_method_unregister_modifier.php
@@ -21,8 +21,8 @@
*/
function Smarty_Method_Unregister_Modifier($smarty, $modifier)
{
- if (isset($smarty->registered_plugins[$modifier]) && $smarty->registered_plugins[$modifier][0] == 'modifier') {
- unset($smarty->registered_plugins[$modifier]);
+ if (isset($smarty->registered_plugins['modifier'][$modifier])) {
+ unset($smarty->registered_plugins['modifier'][$modifier]);
}
}