<?php
/* ========================================================================
* $Id: smarty_internal_templateparser.php 160096 2016-12-15 05:57:25Z onez $
*
* Email: www@onez.cn
* QQ: 6200103
* HomePage: http://www.onezphp.com
* ========================================================================
* Copyright 2016-2017 佳蓝科技.
*
* ======================================================================== */
class TP_yyToken implements ArrayAccess
{
public $string = '';
public $metadata = array();
public function __construct($s, $m = array())
{
if ($s instanceof TP_yyToken) {
$this->string = $s->string;
$this->metadata = $s->metadata;
} else {
$this->string = (string) $s;
if ($m instanceof TP_yyToken) {
$this->metadata = $m->metadata;
} elseif (is_array($m)) {
$this->metadata = $m;
}
}
}
public function __toString()
{
return $this->string;
}
public function offsetExists($offset)
{
return isset($this->metadata[ $offset ]);
}
public function offsetGet($offset)
{
return $this->metadata[ $offset ];
}
public function offsetSet($offset, $value)
{
if ($offset === null) {
if (isset($value[ 0 ])) {
$x = ($value instanceof TP_yyToken) ? $value->metadata : $value;
$this->metadata = array_merge($this->metadata, $x);
return;
}
$offset = count($this->metadata);
}
if ($value === null) {
return;
}
if ($value instanceof TP_yyToken) {
if ($value->metadata) {
$this->metadata[ $offset ] = $value->metadata;
}
} elseif ($value) {
$this->metadata[ $offset ] = $value;
}
}
public function offsetUnset($offset)
{
unset($this->metadata[ $offset ]);
}
}
class TP_yyStackEntry
{
public $stateno; /* The state-number */
public $major; /* The major token value. This is the code
** number for the token at this stack level */
public $minor; /* The user-supplied minor token value. This
** is the value of the token */
}
;
#line 11 "../smarty/lexer/smarty_internal_templateparser.y"
/**
* Smarty Template Parser Class
*
* This is the template parser.
* It is generated from the smarty_internal_templateparser.y file
*
* @author Uwe Tews <uwe.tews@googlemail.com>
*/
class Smarty_Internal_Templateparser
{
#line 23 "../smarty/lexer/smarty_internal_templateparser.y"
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";
/**
* result status
*
* @var bool
*/
public $successful = true;
/**
* return value
*
* @var mixed
*/
public $retvalue = 0;
/**
* @var
*/
public $yymajor;
/**
* last index of array variable
*
* @var mixed
*/
public $last_index;
/**
* last variable name
*
* @var string
*/
public $last_variable;
/**
* root parse tree buffer
*
* @var Smarty_Internal_ParseTree
*/
public $root_buffer;
/**
* current parse tree object
*
* @var Smarty_Internal_ParseTree
*/
public $current_buffer;
/**
* lexer object
*
* @var Smarty_Internal_Templatelexer
*/
public $lex;
/**
* internal error flag
*
* @var bool
*/
private $internalError = false;
/**
* {strip} status
*
* @var bool
*/
public $strip = false;
/**
* compiler object
*
* @var Smarty_Internal_TemplateCompilerBase
*/
public $compiler = null;
/**
* smarty object
*
* @var Smarty
*/
public $smarty = null;
/**
* template object
*
* @var Smarty_Internal_Template
*/
public $template = null;
/**
* block nesting level
*
* @var int
*/
public $block_nesting_level = 0;
/**
* security object
*
* @var Smarty_Security
*/
public $security = null;
/**
* template prefix array
*
* @var \Smarty_Internal_ParseTree[]
*/
public $template_prefix = array();
/**
* security object
*
* @var \Smarty_Internal_ParseTree[]
*/
public $template_postfix = array();
/**
* 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;
$this->security = isset($this->smarty->security_policy) ? $this->smarty->security_policy : false;
$this->current_buffer = $this->root_buffer = new Smarty_Internal_ParseTree_Template();
}
/**
* insert PHP code in current buffer
*
* @param string $code
*/
public function insertPhpCode($code)
{
$this->current_buffer->append_subtree($this, new Smarty_Internal_ParseTree_Tag($this, $code));
}
/**
* merge PHP code with prefix code and return parse tree tag object
*
* @param string $code
*
* @return Smarty_Internal_ParseTree_Tag
*/
public function mergePrefixCode($code)
{
$tmp = '';
foreach ($this->compiler->prefix_code as $preCode) {
$tmp .= $preCode;
}
$this->compiler->prefix_code = array();
$tmp .= $code;
return new Smarty_Internal_ParseTree_Tag($this, $this->compiler->processNocacheCode($tmp, true));
}
const TP_VERT = 1;
const TP_COLON = 2;
const TP_PHP = 3;
const TP_TEXT = 4;
const TP_STRIPON = 5;
const TP_STRIPOFF = 6;
const TP_LITERALSTART = 7;
const TP_LITERALEND = 8;
const TP_LITERAL = 9;
const TP_RDEL = 10;
const TP_SIMPELOUTPUT = 11;
const TP_LDEL = 12;
const TP_DOLLARID = 13;
const TP_EQUAL = 14;
const TP_SIMPLETAG = 15;
const TP_ID = 16;
const TP_PTR = 17;
const TP_LDELMAKENOCACHE = 18;
const TP_LDELIF = 19;
const TP_LDELFOR = 20;
const TP_SEMICOLON = 21;
const TP_INCDEC = 22;
const TP_TO = 23;
const TP_STEP = 24;
const TP_LDELFOREACH = 25;
const TP_SPACE = 26;
const TP_AS = 27;
const TP_APTR = 28;
const TP_LDELSETFILTER = 29;
const TP_SMARTYBLOCKCHILDPARENT = 30;
const TP_CLOSETAG = 31;
const TP_LDELSLASH = 32;
const TP_ATTR = 33;
const TP_INTEGER = 34;
const TP_COMMA = 35;
const TP_OPENP = 36;
const TP_CLOSEP = 37;
const TP_MATH = 38;
const TP_UNIMATH = 39;
const TP_ISIN = 40;
const TP_QMARK = 41;
const TP_NOT = 42;
const TP_TYPECAST = 43;
const TP_HEX = 44;
const TP_DOT = 45;
const TP_INSTANCEOF = 46;
const TP_SINGLEQUOTESTRING = 47;
const TP_DOUBLECOLON = 48;
const TP_NAMESPACE = 49;
const TP_AT = 50;
const TP_HATCH = 51;
const TP_OPENB = 52;
const TP_CLOSEB = 53;
const TP_DOLLAR = 54;
const TP_LOGOP = 55;
const TP_SLOGOP = 56;
const TP_TLOGOP = 57;
const TP_SINGLECOND = 58;
const TP_QUOTE = 59;
const TP_BACKTICK = 60;
const YY_NO_ACTION = 532;
const YY_ACCEPT_ACTION = 531;
const YY_ERROR_ACTION = 530;
const YY_SZ_ACTTAB = 2114;
static public $yy_action = array(268, 8, 132, 210, 245, 197, 183,