2015-09-01 01:54:28 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/*
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * This file is part of Smarty.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * (c) 2015 Uwe Tews
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * For the full copyright and license information, please view the LICENSE
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * file that was distributed with this source code.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								%stack_size 500
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								%name TP_
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								%declare_class {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
							 
						 
					
						
							
								
									
										
										
										
											2015-09-01 01:54:28 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								* Smarty Template Parser Class
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								*
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								* This is the template parser.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								* It is generated from the smarty_internal_templateparser.y file
							 
						 
					
						
							
								
									
										
										
										
											2015-09-01 01:54:28 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								* @author Uwe Tews <uwe.tews@googlemail.com>
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								*/
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								class Smarty_Internal_Templateparser
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								%include_class
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{
							 
						 
					
						
							
								
									
										
										
										
											2017-10-07 08:20:18 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    const Err1 = 'Security error: Call to private object member not allowed';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    const Err2 = 'Security error: Call to dynamic object member not allowed';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    const Err3 = 'PHP in template not allowed. Use SmartyBC to enable it';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * result status
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @var bool
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public $successful = true;
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * return value
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @var mixed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public $retvalue = 0;
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @var
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public $yymajor;
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * last index of array variable
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @var mixed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public $last_index;
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * last variable name
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @var string
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public $last_variable;
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * root parse tree buffer
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
									
										
										
										
											2014-12-30 16:22:03 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     * @var Smarty_Internal_ParseTree
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public $root_buffer;
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * current parse tree object
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
									
										
										
										
											2014-12-30 16:22:03 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     * @var Smarty_Internal_ParseTree
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public $current_buffer;
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * lexer object
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @var Smarty_Internal_Templatelexer
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
									
										
										
										
											2015-08-06 01:19:11 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public $lex;
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * internal error flag
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @var bool
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    private $internalError = false;
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * {strip} status
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @var bool
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
									
										
										
										
											2015-04-07 02:11:20 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public $strip = false;
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * compiler object
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @var Smarty_Internal_TemplateCompilerBase
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public $compiler = null;
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * smarty object
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @var Smarty
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public $smarty = null;
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * template object
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @var Smarty_Internal_Template
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public $template = null;
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * block nesting level
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @var int
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public $block_nesting_level = 0;
							 
						 
					
						
							
								
									
										
										
										
											2015-05-06 00:03:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * security object
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @var Smarty_Security
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
									
										
										
										
											2015-08-06 01:19:11 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public $security = null;
							 
						 
					
						
							
								
									
										
										
										
											2015-05-06 00:03:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * template prefix array
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @var \Smarty_Internal_ParseTree[]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public $template_prefix = array();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
									
										
										
										
											2017-10-12 20:15:42 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     * template prefix array
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @var \Smarty_Internal_ParseTree[]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public $template_postfix = array();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * constructor
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @param Smarty_Internal_Templatelexer        $lex
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @param Smarty_Internal_TemplateCompilerBase $compiler
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    function __construct(Smarty_Internal_Templatelexer $lex, Smarty_Internal_TemplateCompilerBase $compiler)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this->lex = $lex;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this->compiler = $compiler;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this->template = $this->compiler->template;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this->smarty = $this->template->smarty;
							 
						 
					
						
							
								
									
										
										
										
											2015-05-23 18:56:00 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
							 
						 
					
						
							
								
									
										
										
										
											2015-08-06 01:19:11 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template();
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     /**
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								     * insert PHP code in current buffer
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @param string $code
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public function insertPhpCode($code)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    {
							 
						 
					
						
							
								
									
										
										
										
											2015-08-06 01:19:11 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2015-05-16 14:17:59 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * error rundown
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public function errorRunDown()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    {
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        while ($this->yystack !== array()) {
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $this->yy_pop_parser_stack();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if (is_resource($this->yyTraceFILE)) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            fclose($this->yyTraceFILE);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /**
							 
						 
					
						
							
								
									
										
										
										
											2015-05-16 14:17:59 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     *  merge PHP code with prefix code and return parse tree tag object
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @param string $code
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     *
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     * @return Smarty_Internal_ParseTree_Tag
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     */
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public function mergePrefixCode($code)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    {
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $tmp = '';
							 
						 
					
						
							
								
									
										
										
										
											2015-05-16 14:17:59 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        foreach ($this->compiler->prefix_code as $preCode) {
							 
						 
					
						
							
								
									
										
										
										
											2015-09-01 01:54:28 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $tmp .= $preCode;
							 
						 
					
						
							
								
									
										
										
										
											2015-05-16 14:17:59 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        }
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $this->compiler->prefix_code = array();
							 
						 
					
						
							
								
									
										
										
										
											2015-09-01 01:54:28 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $tmp .= $code;
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
							 
						 
					
						
							
								
									
										
										
										
											2015-05-16 14:17:59 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-30 16:22:03 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								%token_prefix TP_
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								%parse_accept
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $this->successful = !$this->internalError;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $this->internalError = false;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $this->retvalue = $this->_retvalue;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								%syntax_error
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $this->internalError = true;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $this->yymajor = $yymajor;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $this->compiler->trigger_template_error();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								%stack_overflow
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $this->internalError = true;
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 12:26:48 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $this->compiler->trigger_template_error('Stack overflow in template parser');
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-10-07 08:20:18 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								%right VERT.
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								%left COLON.
							 
						 
					
						
							
								
									
										
										
										
											2017-08-26 11:47:41 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								%left UNIMATH.
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-30 16:22:03 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    //
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    // complete template
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    //
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								start(res)       ::= template. {
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $this->root_buffer->prepend_array($this, $this->template_prefix);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $this->root_buffer->append_array($this, $this->template_postfix);
							 
						 
					
						
							
								
									
										
										
										
											2015-08-06 01:19:11 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = $this->root_buffer->to_smarty_php($this);
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-06 00:03:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                      // php tags
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								template       ::= template PHP(B). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $code = $this->compiler->compileTag('private_php',array(array('code' => B), array('type' => $this->lex->phpType )),array());
							 
						 
					
						
							
								
									
										
										
										
											2015-05-06 00:03:26 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if ($this->compiler->has_code && !empty($code)) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $tmp =''; foreach ($this->compiler->prefix_code as $code) {$tmp.=$code;} $this->compiler->prefix_code=array();
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								         $this->current_buffer->append_subtree($this,  new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp.$code,true)));
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                      // template text
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								template       ::= template  TEXT(B). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         $this->current_buffer->append_subtree($this, $this->compiler->processText(B));
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                      // strip on
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								template       ::= template  STRIPON. {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    $this->strip = true;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                      // strip off
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								template       ::= template STRIPOFF. {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    $this->strip = false;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                     // Literal
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								template       ::= template LITERALSTART literal_e2(B) LITERALEND. {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       $this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Text(B));
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								literal_e2(A) ::= literal_e1(B) LITERALSTART literal_e1(C) LITERALEND. {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    A = B.C;
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								literal_e2(A) ::= literal_e1(B). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    A = B;
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								literal_e1(A) ::= literal_e1(B) LITERAL(C). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        A = B.C;
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								literal_e1(A) ::= . {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    A = '';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                      // Smarty tag
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								template       ::= template smartytag(B). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      if ($this->compiler->has_code) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								          $this->current_buffer->append_subtree($this, $this->mergePrefixCode(B));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     $this->compiler->has_variable_string = false;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     $this->block_nesting_level = count($this->compiler->_tag_stack);
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                      // empty template
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								template       ::= .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								smartytag(A)   ::= SIMPELOUTPUT(B). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $var = trim(substr(B, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if (preg_match('/^(.*)(\s+nocache)$/', $var, $match)) {
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        A = $this->compiler->compileTag('private_print_expression',array('nocache'),array('value'=>$this->compiler->compileVariable('\''.$match[1].'\'')));
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    } else {
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        A = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$this->compiler->compileVariable('\''.$var.'\'')));
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// simple tag like {name}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								smartytag(A)::= SIMPLETAG(B). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $tag = trim(substr(B, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if ($tag == 'strip') {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this->strip = true;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        A = null;;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } else {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if (defined($tag)) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if ($this->security) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								               $this->security->isTrustedConstant($tag, $this->compiler);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            A = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$tag));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } else {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            if (preg_match('/^(.*)(\s+nocache)$/', $tag, $match)) {
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 12:26:48 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                A = $this->compiler->compileTag($match[1],array('\'nocache\''));
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } else {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                A = $this->compiler->compileTag($tag,array());
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2018-03-28 07:14:29 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                  // {$smarty.block.child} or {$smarty.block.parent}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								smartytag(A)   ::= SMARTYBLOCKCHILDPARENT(i). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    $j = strrpos(i,'.');
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if (i[$j+1] == 'c') {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // {$smarty.block.child}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        A = $this->compiler->compileTag('child',array(),array(i));;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } else {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // {$smarty.block.parent}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       A = $this->compiler->compileTag('parent',array(),array(i));;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								smartytag(A)   ::= LDEL tagbody(B) RDEL. {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    A  = B;
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 smartytag(A)   ::=  tag(B) RDEL. {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     A  = B;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // output with optional attributes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								tagbody(A) ::= outattr(B). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    A = $this->compiler->compileTag('private_print_expression',B[1],array('value'=>B[0]));
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Smarty tags start here
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // assign new style
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tagbody(A) ::= DOLLARID(B) eqoutattr(C). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    A = $this->compiler->compileTag('assign',array_merge(array(array('value'=>C[0]),array('var'=>'\''.substr(B,1).'\'')),C[1]));
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								tagbody(A) ::= varindexed(B) eqoutattr(C). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    A = $this->compiler->compileTag('assign',array_merge(array(array('value'=>C[0]),array('var'=>B['var'])),C[1]),array('smarty_internal_index'=>B['smarty_internal_index']));
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								eqoutattr(A) ::= EQUAL outattr(B). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       A = B;
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								outattr(A) ::= output(B) attributes(C). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    A = array(B,C);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								output(A) ::= variable(B). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    A = B;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								output(A) ::= value(B). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    A = B;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								output(A) ::= expr(B). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    A = B;
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                  // tag with optional Smarty2 style attributes
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDEL ID(i) attributes(a). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        if (defined(i)) {
							 
						 
					
						
							
								
									
										
										
										
											2015-05-23 18:56:00 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if ($this->security) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $this->security->isTrustedConstant(i, $this->compiler);
							 
						 
					
						
							
								
									
										
										
										
											2015-03-17 02:29:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            }
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								            res = $this->compiler->compileTag('private_print_expression',a,array('value'=>i));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } else {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            res = $this->compiler->compileTag(i,a);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDEL ID(i). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        if (defined(i)) {
							 
						 
					
						
							
								
									
										
										
										
											2015-05-23 18:56:00 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if ($this->security) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $this->security->isTrustedConstant(i, $this->compiler);
							 
						 
					
						
							
								
									
										
										
										
											2015-03-17 02:29:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            }
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								            res = $this->compiler->compileTag('private_print_expression',array(),array('value'=>i));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } else {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            res = $this->compiler->compileTag(i,array());
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // tag with modifier and optional Smarty2 style attributes
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDEL ID(i) modifierlist(l)attributes(a). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        if (defined(i)) {
							 
						 
					
						
							
								
									
										
										
										
											2015-05-23 18:56:00 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if ($this->security) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $this->security->isTrustedConstant(i, $this->compiler);
							 
						 
					
						
							
								
									
										
										
										
											2015-03-17 02:29:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            }
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								            res = $this->compiler->compileTag('private_print_expression',a,array('value'=>i, 'modifierlist'=>l));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } else {
							 
						 
					
						
							
								
									
										
										
										
											2016-07-18 17:57:50 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            res = $this->compiler->compileTag(i,a, array('modifierlist'=>l));
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // registered object tag
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDEL ID(i) PTR ID(m) attributes(a). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag(i,a,array('object_method'=>m));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // registered object tag with modifiers
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDEL ID(i) PTR ID(me) modifierlist(l) attributes(a). {
							 
						 
					
						
							
								
									
										
										
										
											2016-07-18 17:57:50 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag(i,a,array('modifierlist'=>l, 'object_method'=>me));
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-14 02:54:38 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                  // nocache tag
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELMAKENOCACHE DOLLARID(i). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag('make_nocache',array(array('var'=>'\''.substr(i,1).'\'')));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                  // {if}, {elseif} and {while} tag
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELIF(i) expr(ie). {
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $tag = trim(substr(i,$this->compiler->getLdelLength())); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>ie));
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELIF(i) expr(ie) attributes(a). {
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $tag = trim(substr(i,$this->compiler->getLdelLength()));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,a,array('if condition'=>ie));
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELIF(i) statement(ie). {
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $tag = trim(substr(i,$this->compiler->getLdelLength()));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,array(),array('if condition'=>ie));
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELIF(i) statement(ie)  attributes(a). {
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $tag = trim(substr(i,$this->compiler->getLdelLength()));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag(($tag === 'else if')? 'elseif' : $tag,a,array('if condition'=>ie));
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // {for} tag
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELFOR statements(st) SEMICOLON expr(ie) SEMICOLON varindexed(v2) foraction(e2) attributes(a). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag('for',array_merge(a,array(array('start'=>st),array('ifexp'=>ie),array('var'=>v2),array('step'=>e2))),1);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  foraction(res)   ::= EQUAL expr(e). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '='.e;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  foraction(res)   ::= INCDEC(e). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = e;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELFOR statement(st) TO expr(v) attributes(a). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag('for',array_merge(a,array(array('start'=>st),array('to'=>v))),0);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELFOR statement(st) TO expr(v) STEP expr(v2) attributes(a). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag('for',array_merge(a,array(array('start'=>st),array('to'=>v),array('step'=>v2))),0);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // {foreach} tag
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELFOREACH SPACE expr(e) AS varvar(v0) attributes(a). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag('foreach',array_merge(a,array(array('from'=>e),array('item'=>v0))));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELFOREACH SPACE expr(e) AS varvar(v1) APTR varvar(v0) attributes(a). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag('foreach',array_merge(a,array(array('from'=>e),array('item'=>v0),array('key'=>v1))));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2017-10-07 08:20:18 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELFOREACH attributes(a). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag('foreach',a);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // {setfilter}
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELSETFILTER ID(m) modparameters(p). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array(array_merge(array(m),p))));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELSETFILTER ID(m) modparameters(p) modifierlist(l). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array_merge(array(array_merge(array(m),p)),l)));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // end of block tag  {/....}                  
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								smartytag(res)::= CLOSETAG(t). {
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $tag = trim(substr(t, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' /');
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if ($tag === 'strip') {
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $this->strip = false;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        res = null;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } else {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       res = $this->compiler->compileTag($tag.'close',array());
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELSLASH ID(i). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag(i.'close',array());
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELSLASH ID(i) modifierlist(l). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag(i.'close',array(),array('modifier_list'=>l));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // end of block object tag  {/....}                 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELSLASH ID(i) PTR ID(m). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag(i.'close',array(),array('object_method'=>m));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tag(res)   ::= LDELSLASH ID(i) PTR ID(m) modifierlist(l). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag(i.'close',array(),array('object_method'=>m, 'modifier_list'=>l));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//Attributes of Smarty tags 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // list of attributes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								attributes(res)  ::= attributes(a1) attribute(a2). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = a1;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res[] = a2;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // single attribute
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								attributes(res)  ::= attribute(a). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array(a);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // no attributes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								attributes(res)  ::= . {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // attribute
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								attribute(res)   ::= SPACE ID(v) EQUAL ID(id). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-30 16:22:03 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if (defined(id)) {
							 
						 
					
						
							
								
									
										
										
										
											2015-05-23 18:56:00 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if ($this->security) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $this->security->isTrustedConstant(id, $this->compiler);
							 
						 
					
						
							
								
									
										
										
										
											2015-03-17 02:29:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        }
							 
						 
					
						
							
								
									
										
										
										
											2014-12-30 16:22:03 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        res = array(v=>id);
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    } else {
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        res = array(v=>'\''.id.'\'');
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								attribute(res)   ::= ATTR(v) expr(e). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array(trim(v," =\n\r\t")=>e);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								attribute(res)   ::= ATTR(v) value(e). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array(trim(v," =\n\r\t")=>e);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								attribute(res)   ::= SPACE ID(v). {
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = '\''.v.'\'';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								attribute(res)   ::= SPACE expr(e). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = e;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								attribute(res)   ::= SPACE value(v). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = v;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								attribute(res)   ::= SPACE INTEGER(i) EQUAL expr(e). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array(i=>e);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// statement
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								statements(res)   ::= statement(s). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array(s);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								statements(res)   ::= statements(s1) COMMA statement(s). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    s1[]=s;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = s1;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								statement(res)    ::= DOLLARID(i) EQUAL INTEGER(e). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array('var' => '\''.substr(i,1).'\'', 'value'=>e);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								statement(res)    ::= DOLLARID(i) EQUAL expr(e). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array('var' => '\''.substr(i,1).'\'', 'value'=>e);
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								statement(res)    ::= varindexed(vi) EQUAL expr(e). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array('var' => vi, 'value'=>e);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								statement(res)    ::= OPENP statement(st) CLOSEP. {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = st;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// expressions
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // single value
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								expr(res)        ::= value(v). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = v;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 // ternary
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								expr(res)        ::= ternary(v). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = v;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 // resources/streams
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								expr(res)        ::= DOLLARID(i) COLON ID(i2). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '$_smarty_tpl->getStreamVariable(\''.substr(i,1).'://' . i2 . '\')';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // arithmetic expression
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								expr(res)        ::= expr(e) MATH(m) value(v). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = e . trim(m) . v;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								expr(res)        ::= expr(e) UNIMATH(m) value(v). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = e . trim(m) . v;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // array
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								expr(res)       ::= array(a). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = a;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // modifier
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								expr(res)        ::= expr(e) modifierlist(l). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag('private_modifier',array(),array('value'=>e,'modifierlist'=>l));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// if expression
							 
						 
					
						
							
								
									
										
										
										
											2016-02-10 03:19:25 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    // special conditions
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								expr(res)        ::= expr(e1) tlop(c) value(e2). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = c['pre']. e1.c['op'].e2 .')';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                    // simple expression
							 
						 
					
						
							
								
									
										
										
										
											2015-05-16 14:47:12 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								expr(res)        ::= expr(e1) lop(c) expr(e2). {
							 
						 
					
						
							
								
									
										
										
										
											2016-02-10 03:19:25 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = e1.c.e2;
							 
						 
					
						
							
								
									
										
										
										
											2015-05-16 14:47:12 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2016-02-10 03:19:25 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-16 14:47:12 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								expr(res)        ::= expr(e1) scond(c). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = c . e1 . ')';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								expr(res)        ::= expr(e1) ISIN array(a).  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = 'in_array('.e1.','.a.')';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								expr(res)        ::= expr(e1) ISIN value(v).  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = 'in_array('.e1.',(array)'.v.')';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// ternary
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								ternary(res)        ::= OPENP expr(v) CLOSEP  QMARK DOLLARID(e1) COLON  expr(e2). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = v.' ? '. $this->compiler->compileVariable('\''.substr(e1,1).'\'') . ' : '.e2;
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								ternary(res)        ::= OPENP expr(v) CLOSEP  QMARK  expr(e1) COLON  expr(e2). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = v.' ? '.e1.' : '.e2;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 // value
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= variable(v). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = v;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // +/- value
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)        ::= UNIMATH(m) value(v). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = m.v;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // logical negation
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= NOT value(v). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '!'.v;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= TYPECAST(t) value(v). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = t.v;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= variable(v) INCDEC(o). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = v.o;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 // numeric
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= HEX(n). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = n;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= INTEGER(n). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = n;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= INTEGER(n1) DOT INTEGER(n2). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = n1.'.'.n2;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= INTEGER(n1) DOT. {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = n1.'.';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= DOT INTEGER(n1). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '.'.n1;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                 // ID, true, false, null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= ID(id). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if (defined(id)) {
							 
						 
					
						
							
								
									
										
										
										
											2015-05-23 18:56:00 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if ($this->security) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								             $this->security->isTrustedConstant(id, $this->compiler);
							 
						 
					
						
							
								
									
										
										
										
											2015-03-17 02:29:19 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        }
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        res = id;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } else {
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        res = '\''.id.'\'';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // function call
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= function(f). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = f;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // expression
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= OPENP expr(e) CLOSEP. {
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = '('. e .')';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-26 00:50:15 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								value(res)        ::= variable(v1) INSTANCEOF(i) ns1(v2). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      res = v1.i.v2;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)        ::= variable(v1) INSTANCEOF(i) variable(v2). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      res = v1.i.v2;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                  // singele quoted string
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= SINGLEQUOTESTRING(t). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = t;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // double quoted string
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= doublequoted_with_quotes(s). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = s;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)    ::= varindexed(vi) DOUBLECOLON static_class_access(r). {
							 
						 
					
						
							
								
									
										
										
										
											2016-02-09 01:15:12 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $prefixVar = $this->compiler->getNewPrefixVariable();
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if (vi['var'] === '\'smarty\'') {
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $this->compiler->appendPrefixCode("<?php {$prefixVar} = ". $this->compiler->compileTag('private_special_variable',array(),vi['smarty_internal_index']).';?>');
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								     } else {
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $this->compiler->appendPrefixCode("<?php  {$prefixVar} = ". $this->compiler->compileVariable(vi['var']).vi['smarty_internal_index'].';?>');
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2016-02-09 01:15:12 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = $prefixVar .'::'.r[0].r[1];
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // Smarty tag
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								value(res)       ::= smartytag(st). {
							 
						 
					
						
							
								
									
										
										
										
											2016-02-09 01:15:12 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $prefixVar = $this->compiler->getNewPrefixVariable();
							 
						 
					
						
							
								
									
										
										
										
											2015-05-16 14:17:59 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $tmp = $this->compiler->appendCode('<?php ob_start();?>', st);
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php {$prefixVar} = ob_get_clean();?>"));
							 
						 
					
						
							
								
									
										
										
										
											2016-02-09 01:15:12 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = $prefixVar;
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= value(v) modifierlist(l). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileTag('private_modifier',array(),array('value'=>v,'modifierlist'=>l));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // name space constant
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= NAMESPACE(c). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = c;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // static class access
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								value(res)       ::= ns1(c)DOUBLECOLON static_class_access(s). {
							 
						 
					
						
							
								
									
										
										
										
											2015-05-23 18:56:00 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if (!in_array(strtolower(c), array('self', 'parent')) && (!$this->security || $this->security->isTrustedStaticClassAccess(c, s, $this->compiler))) {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        if (isset($this->smarty->registered_classes[c])) {
							 
						 
					
						
							
								
									
										
										
										
											2015-01-22 03:53:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            res = $this->smarty->registered_classes[c].'::'.s[0].s[1];
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        } else {
							 
						 
					
						
							
								
									
										
										
										
											2015-01-22 03:53:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            res = c.'::'.s[0].s[1];
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } else {
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 12:26:48 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $this->compiler->trigger_template_error ('static class \''.c.'\' is undefined or not allowed by security setting');
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// namespace stuff
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								ns1(res)           ::= ID(i). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = i;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								ns1(res)           ::= NAMESPACE(i). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = i;
							 
						 
					
						
							
								
									
										
										
										
											2015-10-08 21:14:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// variables 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // Smarty variable (optional array)
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								variable(res)    ::= DOLLARID(i). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   res = $this->compiler->compileVariable('\''.substr(i,1).'\'');
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								variable(res)    ::= varindexed(vi). {
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if (vi['var'] === '\'smarty\'') {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $smarty_var = $this->compiler->compileTag('private_special_variable',array(),vi['smarty_internal_index']);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        res = $smarty_var;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } else {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // used for array reset,next,prev,end,current 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this->last_variable = vi['var'];
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this->last_index = vi['smarty_internal_index'];
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 01:35:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        res = $this->compiler->compileVariable(vi['var']).vi['smarty_internal_index'];
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // variable with property
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								variable(res)    ::= varvar(v) AT ID(p). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    res = '$_smarty_tpl->tpl_vars['. v .']->'.p;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // object
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								variable(res)    ::= object(o). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = o;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // config variable
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								variable(res)    ::= HATCH ID(i) HATCH. {
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileConfigVariable('\'' . i . '\'');
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								variable(res)    ::= HATCH ID(i) HATCH arrayindex(a). {
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = '(is_array($tmp = ' . $this->compiler->compileConfigVariable('\'' . i . '\'') . ') ? $tmp'.a.' :null)';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								variable(res)    ::= HATCH variable(v) HATCH. {
							 
						 
					
						
							
								
									
										
										
										
											2015-11-01 02:58:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileConfigVariable(v);
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								variable(res)    ::= HATCH variable(v) HATCH arrayindex(a). {
							 
						 
					
						
							
								
									
										
										
										
											2015-11-01 02:58:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = '(is_array($tmp = ' . $this->compiler->compileConfigVariable(v) . ') ? $tmp'.a.' : null)';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								varindexed(res)  ::= DOLLARID(i) arrayindex(a). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array('var'=>'\''.substr(i,1).'\'', 'smarty_internal_index'=>a);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								varindexed(res)  ::= varvar(v) arrayindex(a). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    res = array('var'=>v, 'smarty_internal_index'=>a);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// array index
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // multiple array index
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								arrayindex(res)  ::= arrayindex(a1) indexdef(a2). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = a1.a2;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // no array index
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								arrayindex        ::= . {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// single index definition
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // Smarty2 style index 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								indexdef(res)    ::= DOT DOLLARID(i).  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '['.$this->compiler->compileVariable('\''.substr(i,1).'\'').']';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								indexdef(res)    ::= DOT varvar(v).  {
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 01:35:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = '['.$this->compiler->compileVariable(v).']';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								indexdef(res)    ::= DOT varvar(v) AT ID(p). {
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 01:35:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = '['.$this->compiler->compileVariable(v).'->'.p.']';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								indexdef(res)   ::= DOT ID(i). {
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = '[\''. i .'\']';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								indexdef(res)   ::= DOT INTEGER(n). {
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = '['. n .']';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-01 01:54:28 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								indexdef(res)   ::= DOT LDEL expr(e) RDEL. {
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = '['. e .']';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // section tag index
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								indexdef(res)   ::= OPENB ID(i)CLOSEB. {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.i.'\'][\'index\']').']';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								indexdef(res)   ::= OPENB ID(i) DOT ID(i2) CLOSEB. {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.i.'\'][\''.i2.'\']').']';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								indexdef(res)   ::= OPENB SINGLEQUOTESTRING(s) CLOSEB. {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '['.s.']';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								indexdef(res)   ::= OPENB INTEGER(n) CLOSEB. {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '['.n.']';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								indexdef(res)   ::= OPENB DOLLARID(i) CLOSEB. {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '['.$this->compiler->compileVariable('\''.substr(i,1).'\'').']';;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								indexdef(res)   ::= OPENB variable(v) CLOSEB. {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '['.v.']';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								indexdef(res)   ::= OPENB value(v) CLOSEB. {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '['.v.']';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // PHP style index
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								indexdef(res)   ::= OPENB expr(e) CLOSEB. {
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = '['. e .']';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-30 16:22:03 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    // for assign append array
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								indexdef(res)  ::= OPENB CLOSEB. {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '[]';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// variable variable names
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                    // singel identifier element
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								varvar(res)      ::= DOLLARID(i). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '\''.substr(i,1).'\'';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // single $
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								varvar(res)      ::= DOLLAR. {
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = '\'\'';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // sequence of identifier elements
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								varvar(res)      ::= varvar(v1) varvarele(v2). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = v1.'.'.v2;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // fix sections of element
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								varvarele(res)   ::= ID(s). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '\''.s.'\'';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2015-09-01 01:54:28 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								varvarele(res)   ::= SIMPELOUTPUT(i). {
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $var = trim(substr(i, $this->compiler->getLdelLength(), -$this->compiler->getRdelLength()), ' $');
							 
						 
					
						
							
								
									
										
										
										
											2015-09-01 01:54:28 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compileVariable('\''.$var.'\'');
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // variable sections of element
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								varvarele(res)   ::= LDEL expr(e) RDEL. {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '('.e.')';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// objects
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								object(res)    ::= varindexed(vi) objectchain(oc). {
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if (vi['var'] === '\'smarty\'') {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        res =  $this->compiler->compileTag('private_special_variable',array(),vi['smarty_internal_index']).oc;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } else {
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 01:35:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        res = $this->compiler->compileVariable(vi['var']).vi['smarty_internal_index'].oc;
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // single element
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								objectchain(res) ::= objectelement(oe). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res  = oe;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // chain of elements 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								objectchain(res) ::= objectchain(oc) objectelement(oe). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res  = oc.oe;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // variable
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								objectelement(res)::= PTR ID(i) arrayindex(a). {
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if ($this->security && substr(i,0,1) === '_') {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $this->compiler->trigger_template_error (self::Err1);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '->'.i.a;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								objectelement(res)::= PTR varvar(v) arrayindex(a). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    if ($this->security) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this->compiler->trigger_template_error (self::Err2);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 01:35:16 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = '->{'.$this->compiler->compileVariable(v).a.'}';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								objectelement(res)::= PTR LDEL expr(e) RDEL arrayindex(a). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if ($this->security) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this->compiler->trigger_template_error (self::Err2);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '->{'.e.a.'}';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								objectelement(res)::= PTR ID(ii) LDEL expr(e) RDEL arrayindex(a). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    if ($this->security) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this->compiler->trigger_template_error (self::Err2);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '->{\''.ii.'\'.'.e.a.'}';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // method
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								objectelement(res)::= PTR method(f).  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '->'.f;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// function
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								function(res)     ::= ns1(f) OPENP params(p) CLOSEP. {
							 
						 
					
						
							
								
									
										
										
										
											2016-09-20 14:21:39 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = $this->compiler->compilePHPFunctionCall(f, p);
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// method
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								method(res)     ::= ID(f) OPENP params(p) CLOSEP. {
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 13:14:14 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    if ($this->security && substr(f,0,1) === '_') {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $this->compiler->trigger_template_error (self::Err1);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = f . '('. implode(',',p) .')';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								method(res)     ::= DOLLARID(f) OPENP params(p) CLOSEP.  {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    if ($this->security) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this->compiler->trigger_template_error (self::Err2);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2016-02-09 01:15:12 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $prefixVar = $this->compiler->getNewPrefixVariable();
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $this->compiler->appendPrefixCode("<?php {$prefixVar} = ".$this->compiler->compileVariable('\''.substr(f,1).'\'').';?>');
							 
						 
					
						
							
								
									
										
										
										
											2016-02-09 01:15:12 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = $prefixVar .'('. implode(',',p) .')';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// function/method parameter
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // multiple parameters
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								params(res)       ::= params(p) COMMA expr(e). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array_merge(p,array(e));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // single parameter
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								params(res)       ::= expr(e). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array(e);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // kein parameter
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								params(res)       ::= . {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// modifier
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								modifierlist(res) ::= modifierlist(l) modifier(m) modparameters(p). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array_merge(l,array(array_merge(m,p)));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								modifierlist(res) ::= modifier(m) modparameters(p). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array(array_merge(m,p));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								modifier(res)    ::= VERT AT ID(m). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array(m);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								modifier(res)    ::= VERT ID(m). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res =  array(m);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// modifier parameter
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // multiple parameter
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								modparameters(res) ::= modparameters(mps) modparameter(mp). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array_merge(mps,mp);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // no parameter
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								modparameters(res)      ::= . {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    // parameter expression
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								modparameter(res) ::= COLON value(mp). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array(mp);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								modparameter(res) ::= COLON array(mp). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array(mp);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // static class methode call
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								static_class_access(res)       ::= method(m). {
							 
						 
					
						
							
								
									
										
										
										
											2015-01-22 03:53:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = array(m, '', 'method');
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // static class methode call with object chainig
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								static_class_access(res)       ::= method(m) objectchain(oc). {
							 
						 
					
						
							
								
									
										
										
										
											2015-01-22 03:53:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = array(m, oc, 'method');
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // static class constant
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								static_class_access(res)       ::= ID(v). {
							 
						 
					
						
							
								
									
										
										
										
											2015-01-22 03:53:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = array(v, '');
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // static class variables
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static_class_access(res)       ::=  DOLLARID(v) arrayindex(a). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array(v, a, 'property');
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                  // static class variables with object chain
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								static_class_access(res)       ::= DOLLARID(v) arrayindex(a) objectchain(oc). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = array(v, a.oc, 'property');
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// if conditions and operators
							 
						 
					
						
							
								
									
										
										
										
											2015-05-16 14:47:12 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								lop(res)        ::= LOGOP(o). {
							 
						 
					
						
							
								
									
										
										
										
											2016-02-10 03:19:25 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = ' '. trim(o) . ' ';
							 
						 
					
						
							
								
									
										
										
										
											2015-05-16 14:47:12 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-10 03:19:25 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								lop(res)        ::= SLOGOP(o). {
							 
						 
					
						
							
								
									
										
										
										
											2015-05-16 14:47:12 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    static $lops = array(
							 
						 
					
						
							
								
									
										
										
										
											2016-02-10 03:19:25 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        'eq' => ' == ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'ne' => ' != ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'neq' => ' != ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'gt' => ' > ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'ge' => ' >= ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'gte' => ' >= ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'lt' =>  ' < ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'le' =>  ' <= ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'lte' => ' <= ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'mod' =>  ' % ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'and' => ' && ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'or' => ' || ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        'xor' => ' xor ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         );
							 
						 
					
						
							
								
									
										
										
										
											2015-05-24 18:37:53 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $op = strtolower(preg_replace('/\s*/', '', o));
							 
						 
					
						
							
								
									
										
										
										
											2015-05-16 14:47:12 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = $lops[$op];
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
									
										
										
										
											2016-02-10 03:19:25 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								tlop(res)        ::= TLOGOP(o). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     static $tlops = array(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         'isdivby' => array('op' => ' % ', 'pre' => '!('),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         'isnotdivby' => array('op' => ' % ', 'pre' => '('),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         'isevenby' => array('op' => ' / ', 'pre' => '!(1 & '),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         'isnotevenby' => array('op' => ' / ', 'pre' => '(1 & '),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         'isoddby' => array('op' => ' / ', 'pre' => '(1 & '),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         'isnotoddby' => array('op' => ' / ', 'pre' => '!(1 & '),
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         );
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     $op = strtolower(preg_replace('/\s*/', '', o));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     res = $tlops[$op];
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 }
							 
						 
					
						
							
								
									
										
										
										
											2015-05-16 14:47:12 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								scond(res)  ::= SINGLECOND(o). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        static $scond = array (
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'iseven' => '!(1 & ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'isnoteven' => '(1 & ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'isodd' => '(1 & ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            'isnotodd' => '!(1 & ',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        );
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   $op = strtolower(str_replace(' ', '', o));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   res = $scond[$op];
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// ARRAY element assignment
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								array(res)           ::=  OPENB arrayelements(a) CLOSEB.  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = 'array('.a.')';
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								arrayelements(res)   ::=  arrayelement(a).  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = a;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								arrayelements(res)   ::=  arrayelements(a1) COMMA arrayelement(a).  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = a1.','.a;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								arrayelements        ::=  .  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								arrayelement(res)    ::=  value(e1) APTR expr(e2). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = e1.'=>'.e2;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								arrayelement(res)    ::=  ID(i) APTR expr(e2). { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = '\''.i.'\'=>'.e2;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								arrayelement(res)    ::=  expr(e). {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    res = e;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 12:10:39 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// double quoted strings
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								//
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								doublequoted_with_quotes(res) ::= QUOTE QUOTE. {
							 
						 
					
						
							
								
									
										
										
										
											2017-11-05 20:04:32 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = '\'\'';
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								doublequoted_with_quotes(res) ::= QUOTE doublequoted(s) QUOTE. {
							 
						 
					
						
							
								
									
										
										
										
											2017-10-18 09:40:38 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    $this->compiler->leaveDoubleQuote();
							 
						 
					
						
							
								
									
										
										
										
											2015-08-06 01:19:11 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = s->to_smarty_php($this);
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								doublequoted(res)          ::= doublequoted(o1) doublequotedcontent(o2). {
							 
						 
					
						
							
								
									
										
										
										
											2015-08-06 01:19:11 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    o1->append_subtree($this, o2);
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    res = o1;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								doublequoted(res)          ::= doublequotedcontent(o). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-30 16:22:03 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = new Smarty_Internal_ParseTree_Dq($this, o);
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								doublequotedcontent(res)           ::=  BACKTICK variable(v) BACKTICK. {
							 
						 
					
						
							
								
									
										
										
										
											2015-08-06 01:19:11 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = new Smarty_Internal_ParseTree_Code('(string)'.v);
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								doublequotedcontent(res)           ::=  BACKTICK expr(e) BACKTICK. {
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 12:26:48 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = new Smarty_Internal_ParseTree_Code('(string)('.e.')');
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								doublequotedcontent(res)           ::=  DOLLARID(i). {
							 
						 
					
						
							
								
									
										
										
										
											2015-08-06 01:19:11 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = new Smarty_Internal_ParseTree_Code('(string)$_smarty_tpl->tpl_vars[\''. substr(i,1) .'\']->value');
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								doublequotedcontent(res)           ::=  LDEL variable(v) RDEL. {
							 
						 
					
						
							
								
									
										
										
										
											2015-08-06 01:19:11 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = new Smarty_Internal_ParseTree_Code('(string)'.v);
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								doublequotedcontent(res)           ::=  LDEL expr(e) RDEL. {
							 
						 
					
						
							
								
									
										
										
										
											2015-08-06 01:19:11 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = new Smarty_Internal_ParseTree_Code('(string)('.e.')');
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-18 04:12:40 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								doublequotedcontent(res)     ::=  smartytag(st). {
							 
						 
					
						
							
								
									
										
										
										
											2014-12-30 16:22:03 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = new Smarty_Internal_ParseTree_Tag($this, st);
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								doublequotedcontent(res)           ::=  TEXT(o). {
							 
						 
					
						
							
								
									
										
										
										
											2015-08-06 01:19:11 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    res = new Smarty_Internal_ParseTree_DqContent(o);
							 
						 
					
						
							
								
									
										
										
										
											2014-12-14 00:49:42 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								}