A super easy PHP Framework for web development! https://github.com/exacti/phacil-framework
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1047 lines
34 KiB

6 years ago
<?php
class TPC_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 12 "../smarty/lexer/smarty_internal_configfileparser.y"
6 years ago
/**
* Smarty Internal Plugin Configfileparse
*
* This is the config file parser.
* It is generated from the smarty_internal_configfileparser.y file
*
* @package Smarty
* @subpackage Compiler
* @author Uwe Tews
*/
class Smarty_Internal_Configfileparser
{
// line 25 "../smarty/lexer/smarty_internal_configfileparser.y"
6 years ago
const TPC_OPENB = 1;
const TPC_SECTION = 2;
const TPC_CLOSEB = 3;
const TPC_DOT = 4;
const TPC_ID = 5;
const TPC_EQUAL = 6;
const TPC_FLOAT = 7;
const TPC_INT = 8;
const TPC_BOOL = 9;
const TPC_SINGLE_QUOTED_STRING = 10;
const TPC_DOUBLE_QUOTED_STRING = 11;
const TPC_TRIPPLE_QUOTES = 12;
const TPC_TRIPPLE_TEXT = 13;
const TPC_TRIPPLE_QUOTES_END = 14;
const TPC_NAKED_STRING = 15;
const TPC_OTHER = 16;
const TPC_NEWLINE = 17;
const TPC_COMMENTSTART = 18;
const YY_NO_ACTION = 60;
const YY_ACCEPT_ACTION = 59;
const YY_ERROR_ACTION = 58;
const YY_SZ_ACTTAB = 38;
const YY_SHIFT_USE_DFLT = -8;
const YY_SHIFT_MAX = 19;
const YY_REDUCE_USE_DFLT = -17;
6 years ago
const YY_REDUCE_MAX = 10;
const YYNOCODE = 29;
const YYSTACKDEPTH = 100;
const YYNSTATE = 36;
const YYNRULE = 22;
const YYERRORSYMBOL = 19;
const YYERRSYMDT = 'yy0';
const YYFALLBACK = 0;
public static $yy_action = array(
32, 31, 30, 29, 35, 13, 19, 3, 24, 26,
59, 9, 14, 1, 16, 25, 11, 28, 25, 11,
17, 27, 34, 20, 18, 15, 23, 5, 6, 22,
10, 8, 4, 12, 2, 33, 7, 21,
6 years ago
);
public static $yy_lookahead = array(
7, 8, 9, 10, 11, 12, 5, 23, 15, 16,
20, 21, 2, 23, 4, 17, 18, 14, 17, 18,
13, 14, 25, 26, 15, 2, 17, 3, 3, 17,
25, 25, 6, 1, 23, 27, 22, 24,
6 years ago
);
public static $yy_shift_ofst = array(
-8, 1, 1, 1, -7, -2, -2, 32, -8, -8,
-8, 9, 10, 7, 25, 24, 23, 3, 12, 26,
6 years ago
);
public static $yy_reduce_ofst = array(
-10, -3, -3, -3, 8, 6, 5, 13, 11, 14,
-16,
6 years ago
);
public static $yyExpectedTokens = array(
6 years ago
array(),
array(5, 17, 18,),
array(5, 17, 18,),
array(5, 17, 18,),
array(7, 8, 9, 10, 11, 12, 15, 16,),
array(17, 18,),
array(17, 18,),
array(1,),
array(),
array(),
array(),
array(15, 17,),
array(2, 4,),
6 years ago
array(13, 14,),
array(3,),
array(3,),
array(2,),
array(14,),
array(17,),
6 years ago
array(6,),
array(),
array(),
array(),
array(),
array(),
array(),
array(),
array(),
array(),
array(),
array(),
array(),
array(),
array(),
array(),
array(),
);
public static $yy_default = array(
44, 37, 41, 40, 58, 58, 58, 36, 44, 39,
6 years ago
44, 58, 58, 58, 58, 58, 58, 58, 58, 58,
43, 38, 57, 56, 53, 55, 54, 52, 51, 49,
48, 47, 46, 45, 42, 50,
6 years ago
);
6 years ago
public static $yyFallback = array();
6 years ago
public static $yyRuleName = array(
'start ::= global_vars sections',
'global_vars ::= var_list',
'sections ::= sections section',
'sections ::=',
'section ::= OPENB SECTION CLOSEB newline var_list',
'section ::= OPENB DOT SECTION CLOSEB newline var_list',
'var_list ::= var_list newline',
'var_list ::= var_list var',
'var_list ::=',
'var ::= ID EQUAL value',
'value ::= FLOAT',
'value ::= INT',
'value ::= BOOL',
'value ::= SINGLE_QUOTED_STRING',
'value ::= DOUBLE_QUOTED_STRING',
'value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END',
'value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END',
'value ::= NAKED_STRING',
'value ::= OTHER',
'newline ::= NEWLINE',
'newline ::= COMMENTSTART NEWLINE',
'newline ::= COMMENTSTART NAKED_STRING NEWLINE',
);
6 years ago
public static $yyRuleInfo = array(
array(0 => 20, 1 => 2),
array(0 => 21, 1 => 1),
array(0 => 22, 1 => 2),
array(0 => 22, 1 => 0),
array(0 => 24, 1 => 5),
array(0 => 24, 1 => 6),
array(0 => 23, 1 => 2),
array(0 => 23, 1 => 2),
array(0 => 23, 1 => 0),
array(0 => 26, 1 => 3),
array(0 => 27, 1 => 1),
array(0 => 27, 1 => 1),
array(0 => 27, 1 => 1),
array(0 => 27, 1 => 1),
array(0 => 27, 1 => 1),
array(0 => 27, 1 => 3),
array(0 => 27, 1 => 2),
array(0 => 27, 1 => 1),
array(0 => 27, 1 => 1),
array(0 => 25, 1 => 1),
array(0 => 25, 1 => 2),
array(0 => 25, 1 => 3),
);
6 years ago
public static $yyReduceMap = array(
0 => 0,
2 => 0,
3 => 0,
19 => 0,
20 => 0,
21 => 0,
1 => 1,
4 => 4,
5 => 5,
6 => 6,
7 => 7,
8 => 8,
9 => 9,
10 => 10,
11 => 11,
12 => 12,
13 => 13,
14 => 14,
15 => 15,
16 => 16,
17 => 17,
18 => 17,
);
6 years ago
/**
* helper map
*
* @var array
*/
private static $escapes_single = array(
'\\' => '\\',
'\'' => '\''
);
6 years ago
/**
* result status
*
* @var bool
*/
public $successful = true;
6 years ago
/**
* return value
*
* @var mixed
*/
public $retvalue = 0;
6 years ago
/**
* @var
*/
public $yymajor;
6 years ago
/**
* compiler object
*
* @var Smarty_Internal_Config_File_Compiler
*/
public $compiler = null;
6 years ago
/**
* smarty object
*
* @var Smarty
*/
public $smarty = null;
6 years ago
public $yyTraceFILE;
6 years ago
public $yyTracePrompt;
6 years ago
public $yyidx;
6 years ago
public $yyerrcnt;
6 years ago
public $yystack = array();
6 years ago
public $yyTokenName = array(
'$', 'OPENB', 'SECTION', 'CLOSEB',
'DOT', 'ID', 'EQUAL', 'FLOAT',
'INT', 'BOOL', 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING',
'TRIPPLE_QUOTES', 'TRIPPLE_TEXT', 'TRIPPLE_QUOTES_END', 'NAKED_STRING',
'OTHER', 'NEWLINE', 'COMMENTSTART', 'error',
'start', 'global_vars', 'sections', 'var_list',
'section', 'newline', 'var', 'value',
);
6 years ago
/**
* lexer object
*
* @var Smarty_Internal_Configfilelexer
*/
private $lex;
6 years ago
/**
* internal error flag
*
* @var bool
*/
private $internalError = false;
6 years ago
/**
* copy of config_overwrite property
*
* @var bool
*/
private $configOverwrite = false;
6 years ago
/**
* copy of config_read_hidden property
*
* @var bool
*/
private $configReadHidden = false;
6 years ago
private $_retvalue;
/**
* constructor
*
* @param Smarty_Internal_Configfilelexer $lex
* @param Smarty_Internal_Config_File_Compiler $compiler
*/
public function __construct(Smarty_Internal_Configfilelexer $lex, Smarty_Internal_Config_File_Compiler $compiler)
6 years ago
{
$this->lex = $lex;
$this->smarty = $compiler->smarty;
$this->compiler = $compiler;
$this->configOverwrite = $this->smarty->config_overwrite;
$this->configReadHidden = $this->smarty->config_read_hidden;
}
public static function yy_destructor($yymajor, $yypminor)
{
switch ($yymajor) {
default:
break; /* If no destructor action specified: do nothing */
}
}
/**
* parse single quoted string
* remove outer quotes
* unescape inner quotes
*
* @param string $qstr
*
* @return string
*/
private static function parse_single_quoted_string($qstr)
{
$escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes
$ss = preg_split('/(\\\\.)/', $escaped_string, -1, PREG_SPLIT_DELIM_CAPTURE);
$str = '';
foreach ($ss as $s) {
if (strlen($s) === 2 && $s[ 0 ] === '\\') {
if (isset(self::$escapes_single[ $s[ 1 ] ])) {
$s = self::$escapes_single[ $s[ 1 ] ];
}
}
$str .= $s;
}
return $str;
} /* Index of top element in stack */
/**
* parse double quoted string
*
* @param string $qstr
*
* @return string
*/
private static function parse_double_quoted_string($qstr)
{
$inner_str = substr($qstr, 1, strlen($qstr) - 2);
return stripcslashes($inner_str);
} /* Shifts left before out of the error */
/**
* parse triple quoted string
*
* @param string $qstr
*
* @return string
*/
private static function parse_tripple_double_quoted_string($qstr)
{
return stripcslashes($qstr);
} /* The parser's stack */
public function Trace($TraceFILE, $zTracePrompt)
{
if (!$TraceFILE) {
$zTracePrompt = 0;
} elseif (!$zTracePrompt) {
6 years ago
$TraceFILE = 0;
}
$this->yyTraceFILE = $TraceFILE;
$this->yyTracePrompt = $zTracePrompt;
}
public function PrintTrace()
{
$this->yyTraceFILE = fopen('php://output', 'w');
$this->yyTracePrompt = '<br>';
}
public function tokenName($tokenType)
{
if ($tokenType === 0) {
return 'End of Input';
}
if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
return $this->yyTokenName[ $tokenType ];
} else {
return 'Unknown';
}
}
public function yy_pop_parser_stack()
{
if (empty($this->yystack)) {
return;
}
$yytos = array_pop($this->yystack);
if ($this->yyTraceFILE && $this->yyidx >= 0) {
fwrite(
$this->yyTraceFILE,
$this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] .
"\n"
);
6 years ago
}
$yymajor = $yytos->major;
self::yy_destructor($yymajor, $yytos->minor);
$this->yyidx--;
return $yymajor;
}
public function __destruct()
{
while ($this->yystack !== array()) {
6 years ago
$this->yy_pop_parser_stack();
}
if (is_resource($this->yyTraceFILE)) {
fclose($this->yyTraceFILE);
}
}
public function yy_get_expected_tokens($token)
{
static $res3 = array();
static $res4 = array();
$state = $this->yystack[ $this->yyidx ]->stateno;
$expected = self::$yyExpectedTokens[ $state ];
if (isset($res3[ $state ][ $token ])) {
if ($res3[ $state ][ $token ]) {
return $expected;
}
} else {
if ($res3[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
return $expected;
}
}
$stack = $this->yystack;
$yyidx = $this->yyidx;
do {
$yyact = $this->yy_find_shift_action($token);
if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
// reduce action
$done = 0;
do {
if ($done++ === 100) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
// too much recursion prevents proper detection
// so give up
return array_unique($expected);
}
$yyruleno = $yyact - self::YYNSTATE;
$this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
$nextstate = $this->yy_find_reduce_action(
$this->yystack[ $this->yyidx ]->stateno,
self::$yyRuleInfo[ $yyruleno ][ 0 ]
);
6 years ago
if (isset(self::$yyExpectedTokens[ $nextstate ])) {
$expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]);
if (isset($res4[ $nextstate ][ $token ])) {
if ($res4[ $nextstate ][ $token ]) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
return array_unique($expected);
}
} else {
if ($res4[ $nextstate ][ $token ] =
in_array($token, self::$yyExpectedTokens[ $nextstate ], true)) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
return array_unique($expected);
}
}
}
if ($nextstate < self::YYNSTATE) {
// we need to shift a non-terminal
$this->yyidx++;
$x = new TPC_yyStackEntry;
$x->stateno = $nextstate;
$x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
$this->yystack[ $this->yyidx ] = $x;
continue 2;
} elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
6 years ago
$this->yyidx = $yyidx;
$this->yystack = $stack;
// the last token was just ignored, we can't accept
// by ignoring input, this is in essence ignoring a
// syntax error!
return array_unique($expected);
} elseif ($nextstate === self::YY_NO_ACTION) {
6 years ago
$this->yyidx = $yyidx;
$this->yystack = $stack;
// input accepted, but not shifted (I guess)
return $expected;
} else {
$yyact = $nextstate;
}
} while (true);
}
break;
} while (true);
$this->yyidx = $yyidx;
$this->yystack = $stack;
return array_unique($expected);
}
public function yy_is_expected_token($token)
{
static $res = array();
static $res2 = array();
if ($token === 0) {
return true; // 0 is not part of this
}
$state = $this->yystack[ $this->yyidx ]->stateno;
if (isset($res[ $state ][ $token ])) {
if ($res[ $state ][ $token ]) {
return true;
}
} else {
if ($res[ $state ][ $token ] = in_array($token, self::$yyExpectedTokens[ $state ], true)) {
return true;
}
}
$stack = $this->yystack;
$yyidx = $this->yyidx;
do {
$yyact = $this->yy_find_shift_action($token);
if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
// reduce action
$done = 0;
do {
if ($done++ === 100) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
// too much recursion prevents proper detection
// so give up
return true;
}
$yyruleno = $yyact - self::YYNSTATE;
$this->yyidx -= self::$yyRuleInfo[ $yyruleno ][ 1 ];
$nextstate = $this->yy_find_reduce_action(
$this->yystack[ $this->yyidx ]->stateno,
self::$yyRuleInfo[ $yyruleno ][ 0 ]
);
6 years ago
if (isset($res2[ $nextstate ][ $token ])) {
if ($res2[ $nextstate ][ $token ]) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
return true;
}
} else {
if ($res2[ $nextstate ][ $token ] =
(isset(self::$yyExpectedTokens[ $nextstate ]) &&
in_array($token, self::$yyExpectedTokens[ $nextstate ], true))) {
6 years ago
$this->yyidx = $yyidx;
$this->yystack = $stack;
return true;
}
}
if ($nextstate < self::YYNSTATE) {
// we need to shift a non-terminal
$this->yyidx++;
$x = new TPC_yyStackEntry;
$x->stateno = $nextstate;
$x->major = self::$yyRuleInfo[ $yyruleno ][ 0 ];
$this->yystack[ $this->yyidx ] = $x;
continue 2;
} elseif ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
6 years ago
$this->yyidx = $yyidx;
$this->yystack = $stack;
if (!$token) {
// end of input: this is valid
return true;
}
// the last token was just ignored, we can't accept
// by ignoring input, this is in essence ignoring a
// syntax error!
return false;
} elseif ($nextstate === self::YY_NO_ACTION) {
6 years ago
$this->yyidx = $yyidx;
$this->yystack = $stack;
// input accepted, but not shifted (I guess)
return true;
} else {
$yyact = $nextstate;
}
} while (true);
}
break;
} while (true);
$this->yyidx = $yyidx;
$this->yystack = $stack;
return true;
}
public function yy_find_shift_action($iLookAhead)
{
$stateno = $this->yystack[ $this->yyidx ]->stateno;
/* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
if (!isset(self::$yy_shift_ofst[ $stateno ])) {
// no shift actions
return self::$yy_default[ $stateno ];
}
$i = self::$yy_shift_ofst[ $stateno ];
if ($i === self::YY_SHIFT_USE_DFLT) {
return self::$yy_default[ $stateno ];
}
if ($iLookAhead === self::YYNOCODE) {
return self::YY_NO_ACTION;
}
$i += $iLookAhead;
if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
self::$yy_lookahead[ $i ] != $iLookAhead) {
if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
&& ($iFallback = self::$yyFallback[ $iLookAhead ]) != 0) {
if ($this->yyTraceFILE) {
fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'FALLBACK ' .
$this->yyTokenName[ $iLookAhead ] . ' => ' .
$this->yyTokenName[ $iFallback ] . "\n");
6 years ago
}
return $this->yy_find_shift_action($iFallback);
}
return self::$yy_default[ $stateno ];
} else {
return self::$yy_action[ $i ];
}
}
public function yy_find_reduce_action($stateno, $iLookAhead)
{
/* $stateno = $this->yystack[$this->yyidx]->stateno; */
if (!isset(self::$yy_reduce_ofst[ $stateno ])) {
return self::$yy_default[ $stateno ];
}
$i = self::$yy_reduce_ofst[ $stateno ];
if ($i === self::YY_REDUCE_USE_DFLT) {
return self::$yy_default[ $stateno ];
}
if ($iLookAhead === self::YYNOCODE) {
return self::YY_NO_ACTION;
}
$i += $iLookAhead;
if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
self::$yy_lookahead[ $i ] != $iLookAhead) {
return self::$yy_default[ $stateno ];
} else {
return self::$yy_action[ $i ];
}
}
public function yy_shift($yyNewState, $yyMajor, $yypMinor)
{
$this->yyidx++;
if ($this->yyidx >= self::YYSTACKDEPTH) {
$this->yyidx--;
if ($this->yyTraceFILE) {
fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
}
while ($this->yyidx >= 0) {
$this->yy_pop_parser_stack();
}
// line 239 "../smarty/lexer/smarty_internal_configfileparser.y"
6 years ago
$this->internalError = true;
$this->compiler->trigger_config_file_error('Stack overflow in configfile parser');
return;
}
$yytos = new TPC_yyStackEntry;
$yytos->stateno = $yyNewState;
$yytos->major = $yyMajor;
$yytos->minor = $yypMinor;
$this->yystack[] = $yytos;
if ($this->yyTraceFILE && $this->yyidx > 0) {
fprintf(
$this->yyTraceFILE,
"%sShift %d\n",
$this->yyTracePrompt,
$yyNewState
);
6 years ago
fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
for ($i = 1; $i <= $this->yyidx; $i++) {
fprintf(
$this->yyTraceFILE,
" %s",
$this->yyTokenName[ $this->yystack[ $i ]->major ]
);
6 years ago
}
fwrite($this->yyTraceFILE, "\n");
}
}
public function yy_r0()
6 years ago
{
$this->_retvalue = null;
}
public function yy_r1()
6 years ago
{
$this->add_global_vars($this->yystack[ $this->yyidx + 0 ]->minor);
$this->_retvalue = null;
}
public function yy_r4()
6 years ago
{
$this->add_section_vars($this->yystack[ $this->yyidx + -3 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
$this->_retvalue = null;
}
// line 245 "../smarty/lexer/smarty_internal_configfileparser.y"
public function yy_r5()
6 years ago
{
if ($this->configReadHidden) {
$this->add_section_vars(
$this->yystack[ $this->yyidx + -3 ]->minor,
$this->yystack[ $this->yyidx + 0 ]->minor
);
6 years ago
}
$this->_retvalue = null;
}
// line 250 "../smarty/lexer/smarty_internal_configfileparser.y"
public function yy_r6()
6 years ago
{
$this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor;
}
// line 264 "../smarty/lexer/smarty_internal_configfileparser.y"
public function yy_r7()
6 years ago
{
$this->_retvalue =
array_merge($this->yystack[ $this->yyidx + -1 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor));
}
// line 269 "../smarty/lexer/smarty_internal_configfileparser.y"
public function yy_r8()
6 years ago
{
$this->_retvalue = array();
}
// line 277 "../smarty/lexer/smarty_internal_configfileparser.y"
public function yy_r9()
6 years ago
{
$this->_retvalue =
array(
'key' => $this->yystack[ $this->yyidx + -2 ]->minor,
'value' => $this->yystack[ $this->yyidx + 0 ]->minor
);
6 years ago
}
// line 281 "../smarty/lexer/smarty_internal_configfileparser.y"
public function yy_r10()
6 years ago
{
$this->_retvalue = (float)$this->yystack[ $this->yyidx + 0 ]->minor;
}
// line 285 "../smarty/lexer/smarty_internal_configfileparser.y"
public function yy_r11()
6 years ago
{
$this->_retvalue = (int)$this->yystack[ $this->yyidx + 0 ]->minor;
}
// line 291 "../smarty/lexer/smarty_internal_configfileparser.y"
public function yy_r12()
6 years ago
{
$this->_retvalue = $this->parse_bool($this->yystack[ $this->yyidx + 0 ]->minor);
}
// line 296 "../smarty/lexer/smarty_internal_configfileparser.y"
public function yy_r13()
6 years ago
{
$this->_retvalue = self::parse_single_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor);
}
// line 300 "../smarty/lexer/smarty_internal_configfileparser.y"
public function yy_r14()
6 years ago
{
$this->_retvalue = self::parse_double_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor);
}
// line 304 "../smarty/lexer/smarty_internal_configfileparser.y"
public function yy_r15()
6 years ago
{
$this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[ $this->yyidx + -1 ]->minor);
}
// line 308 "../smarty/lexer/smarty_internal_configfileparser.y"
public function yy_r16()
6 years ago
{
$this->_retvalue = '';
}
// line 312 "../smarty/lexer/smarty_internal_configfileparser.y"
public function yy_r17()
6 years ago
{
$this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
}
// line 316 "../smarty/lexer/smarty_internal_configfileparser.y"
6 years ago
public function yy_reduce($yyruleno)
{
if ($this->yyTraceFILE && $yyruleno >= 0
&& $yyruleno < count(self::$yyRuleName)) {
fprintf(
$this->yyTraceFILE,
"%sReduce (%d) [%s].\n",
$this->yyTracePrompt,
$yyruleno,
self::$yyRuleName[ $yyruleno ]
);
6 years ago
}
$this->_retvalue = $yy_lefthand_side = null;
if (isset(self::$yyReduceMap[ $yyruleno ])) {
// call the action
$this->_retvalue = null;
$this->{'yy_r' . self::$yyReduceMap[ $yyruleno ]}();
$yy_lefthand_side = $this->_retvalue;
}
$yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ];
$yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ];
$this->yyidx -= $yysize;
for ($i = $yysize; $i; $i--) {
// pop all of the right-hand side parameters
array_pop($this->yystack);
}
$yyact = $this->yy_find_reduce_action($this->yystack[ $this->yyidx ]->stateno, $yygoto);
if ($yyact < self::YYNSTATE) {
if (!$this->yyTraceFILE && $yysize) {
$this->yyidx++;
$x = new TPC_yyStackEntry;
$x->stateno = $yyact;
$x->major = $yygoto;
$x->minor = $yy_lefthand_side;
$this->yystack[ $this->yyidx ] = $x;
} else {
$this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
}
} elseif ($yyact === self::YYNSTATE + self::YYNRULE + 1) {
6 years ago
$this->yy_accept();
}
}
// line 320 "../smarty/lexer/smarty_internal_configfileparser.y"
6 years ago
public function yy_parse_failed()
{
if ($this->yyTraceFILE) {
fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
}
while ($this->yyidx >= 0) {
$this->yy_pop_parser_stack();
}
}
// line 324 "../smarty/lexer/smarty_internal_configfileparser.y"
6 years ago
public function yy_syntax_error($yymajor, $TOKEN)
{
// line 232 "../smarty/lexer/smarty_internal_configfileparser.y"
6 years ago
$this->internalError = true;
$this->yymajor = $yymajor;
$this->compiler->trigger_config_file_error();
}
public function yy_accept()
{
if ($this->yyTraceFILE) {
fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
}
while ($this->yyidx >= 0) {
$this->yy_pop_parser_stack();
}
// line 225 "../smarty/lexer/smarty_internal_configfileparser.y"
6 years ago
$this->successful = !$this->internalError;
$this->internalError = false;
$this->retvalue = $this->_retvalue;
}
public function doParse($yymajor, $yytokenvalue)
{
$yyerrorhit = 0; /* True if yymajor has invoked an error */
if ($this->yyidx === null || $this->yyidx < 0) {
$this->yyidx = 0;
$this->yyerrcnt = -1;
$x = new TPC_yyStackEntry;
$x->stateno = 0;
$x->major = 0;
$this->yystack = array();
$this->yystack[] = $x;
}
$yyendofinput = ($yymajor == 0);
if ($this->yyTraceFILE) {
fprintf(
$this->yyTraceFILE,
"%sInput %s\n",
$this->yyTracePrompt,
$this->yyTokenName[ $yymajor ]
);
6 years ago
}
do {
$yyact = $this->yy_find_shift_action($yymajor);
if ($yymajor < self::YYERRORSYMBOL &&
!$this->yy_is_expected_token($yymajor)) {
// force a syntax error
$yyact = self::YY_ERROR_ACTION;
}
if ($yyact < self::YYNSTATE) {
$this->yy_shift($yyact, $yymajor, $yytokenvalue);
$this->yyerrcnt--;
if ($yyendofinput && $this->yyidx >= 0) {
$yymajor = 0;
} else {
$yymajor = self::YYNOCODE;
}
} elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
6 years ago
$this->yy_reduce($yyact - self::YYNSTATE);
} elseif ($yyact === self::YY_ERROR_ACTION) {
6 years ago
if ($this->yyTraceFILE) {
fprintf(
$this->yyTraceFILE,
"%sSyntax Error!\n",
$this->yyTracePrompt
);
6 years ago
}
if (self::YYERRORSYMBOL) {
if ($this->yyerrcnt < 0) {
$this->yy_syntax_error($yymajor, $yytokenvalue);
}
$yymx = $this->yystack[ $this->yyidx ]->major;
if ($yymx === self::YYERRORSYMBOL || $yyerrorhit) {
if ($this->yyTraceFILE) {
fprintf(
$this->yyTraceFILE,
"%sDiscard input token %s\n",
$this->yyTracePrompt,
$this->yyTokenName[ $yymajor ]
);
6 years ago
}
$this->yy_destructor($yymajor, $yytokenvalue);
$yymajor = self::YYNOCODE;
} else {
while ($this->yyidx >= 0 &&
$yymx !== self::YYERRORSYMBOL &&
($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
) {
$this->yy_pop_parser_stack();
}
if ($this->yyidx < 0 || $yymajor == 0) {
$this->yy_destructor($yymajor, $yytokenvalue);
$this->yy_parse_failed();
$yymajor = self::YYNOCODE;
} elseif ($yymx !== self::YYERRORSYMBOL) {
6 years ago
$u2 = 0;
$this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
}
}
$this->yyerrcnt = 3;
$yyerrorhit = 1;
} else {
if ($this->yyerrcnt <= 0) {
$this->yy_syntax_error($yymajor, $yytokenvalue);
}
$this->yyerrcnt = 3;
$this->yy_destructor($yymajor, $yytokenvalue);
if ($yyendofinput) {
$this->yy_parse_failed();
}
$yymajor = self::YYNOCODE;
}
} else {
$this->yy_accept();
$yymajor = self::YYNOCODE;
}
} while ($yymajor !== self::YYNOCODE && $this->yyidx >= 0);
}
/**
* parse optional boolean keywords
*
* @param string $str
*
* @return bool
*/
private function parse_bool($str)
{
$str = strtolower($str);
if (in_array($str, array('on', 'yes', 'true'))) {
$res = true;
} else {
$res = false;
}
return $res;
}
/**
* set a config variable in target array
*
* @param array $var
* @param array $target_array
*/
private function set_var(array $var, array &$target_array)
{
$key = $var[ 'key' ];
$value = $var[ 'value' ];
if ($this->configOverwrite || !isset($target_array[ 'vars' ][ $key ])) {
$target_array[ 'vars' ][ $key ] = $value;
} else {
settype($target_array[ 'vars' ][ $key ], 'array');
$target_array[ 'vars' ][ $key ][] = $value;
}
}
/**
* add config variable to global vars
*
* @param array $vars
*/
private function add_global_vars(array $vars)
{
if (!isset($this->compiler->config_data[ 'vars' ])) {
$this->compiler->config_data[ 'vars' ] = array();
}
foreach ($vars as $var) {
$this->set_var($var, $this->compiler->config_data);
}
}
/**
* add config variable to section
*
* @param string $section_name
* @param array $vars
*/
private function add_section_vars($section_name, array $vars)
{
if (!isset($this->compiler->config_data[ 'sections' ][ $section_name ][ 'vars' ])) {
$this->compiler->config_data[ 'sections' ][ $section_name ][ 'vars' ] = array();
}
foreach ($vars as $var) {
$this->set_var($var, $this->compiler->config_data[ 'sections' ][ $section_name ]);
}
}
}