aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php')
-rw-r--r--vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php797
1 files changed, 387 insertions, 410 deletions
diff --git a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php
index b7551a2b5..1c76f7bc8 100644
--- a/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php
+++ b/vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php
@@ -1,70 +1,5 @@
<?php
-class TPC_yyToken implements ArrayAccess
-{
- public $string = '';
-
- public $metadata = array();
-
- public function __construct($s, $m = array())
- {
- if ($s instanceof TPC_yyToken) {
- $this->string = $s->string;
- $this->metadata = $s->metadata;
- } else {
- $this->string = (string) $s;
- if ($m instanceof TPC_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 TPC_yyToken) ? $value->metadata : $value;
- $this->metadata = array_merge($this->metadata, $x);
-
- return;
- }
- $offset = count($this->metadata);
- }
- if ($value === null) {
- return;
- }
- if ($value instanceof TPC_yyToken) {
- if ($value->metadata) {
- $this->metadata[ $offset ] = $value->metadata;
- }
- } elseif ($value) {
- $this->metadata[ $offset ] = $value;
- }
- }
-
- public function offsetUnset($offset)
- {
- unset($this->metadata[ $offset ]);
- }
-}
-
class TPC_yyStackEntry
{
public $stateno; /* The state-number */
@@ -74,8 +9,6 @@ class TPC_yyStackEntry
** is the value of the token */
}
-;
-
#line 12 "../smarty/lexer/smarty_internal_configfileparser.y"
/**
@@ -91,74 +24,250 @@ class TPC_yyStackEntry
class Smarty_Internal_Configfileparser
{
#line 25 "../smarty/lexer/smarty_internal_configfileparser.y"
-
+ 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 = -21;
+ 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;
+ static public $yy_action = array(
+ 29, 30, 34, 33, 24, 13, 19, 25, 35, 21,
+ 59, 8, 3, 1, 20, 12, 14, 31, 20, 12,
+ 15, 17, 23, 18, 27, 26, 4, 5, 6, 32,
+ 2, 11, 28, 22, 16, 9, 7, 10,
+ );
+ static public $yy_lookahead = array(
+ 7, 8, 9, 10, 11, 12, 5, 27, 15, 16,
+ 20, 21, 23, 23, 17, 18, 13, 14, 17, 18,
+ 15, 2, 17, 4, 25, 26, 6, 3, 3, 14,
+ 23, 1, 24, 17, 2, 25, 22, 25,
+ );
+ static public $yy_shift_ofst = array(
+ -8, 1, 1, 1, -7, -3, -3, 30, -8, -8,
+ -8, 19, 5, 3, 15, 16, 24, 25, 32, 20,
+ );
+ static public $yy_reduce_ofst = array(
+ -10, -1, -1, -1, -20, 10, 12, 8, 14, 7,
+ -11,
+ );
+ static public $yyExpectedTokens = array(
+ 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(2, 4,),
+ array(15, 17,),
+ array(13, 14,),
+ array(14,),
+ array(17,),
+ array(3,),
+ array(3,),
+ array(2,),
+ array(6,),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ array(),
+ );
+ static public $yy_default = array(
+ 44, 37, 41, 40, 58, 58, 58, 36, 39, 44,
+ 44, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 55, 54, 57, 56, 50, 45, 43, 42, 38, 46,
+ 47, 52, 51, 49, 48, 53,
+ );
+ public static $yyFallback = array();
+ 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',
+ );
+ 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),
+ );
+ 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,
+ );
+ /**
+ * helper map
+ *
+ * @var array
+ */
+ private static $escapes_single = array('\\' => '\\',
+ '\'' => '\'');
/**
* result status
*
* @var bool
*/
public $successful = true;
-
/**
* return value
*
* @var mixed
*/
public $retvalue = 0;
-
/**
* @var
*/
public $yymajor;
-
/**
- * lexer object
+ * compiler object
*
- * @var Smarty_Internal_Configfilelexer
+ * @var Smarty_Internal_Config_File_Compiler
*/
- private $lex;
-
+ public $compiler = null;
/**
- * internal error flag
+ * smarty object
*
- * @var bool
+ * @var Smarty
*/
- private $internalError = false;
-
+ public $smarty = null;
+ public $yyTraceFILE;
+ public $yyTracePrompt;
+ public $yyidx;
+ public $yyerrcnt;
+ public $yystack = array();
+ 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',
+ );
/**
- * compiler object
+ * lexer object
*
- * @var Smarty_Internal_Config_File_Compiler
+ * @var Smarty_Internal_Configfilelexer
*/
- public $compiler = null;
-
+ private $lex;
/**
- * smarty object
+ * internal error flag
*
- * @var Smarty
+ * @var bool
*/
- public $smarty = null;
-
+ private $internalError = false;
/**
* copy of config_overwrite property
*
* @var bool
*/
private $configOverwrite = false;
-
/**
* copy of config_read_hidden property
*
* @var bool
*/
private $configReadHidden = false;
-
- /**
- * helper map
- *
- * @var array
- */
- private static $escapes_single = Array('\\' => '\\', '\'' => '\'');
+ private $_retvalue;
/**
* constructor
@@ -175,22 +284,12 @@ class Smarty_Internal_Configfileparser
$this->configReadHidden = $this->smarty->config_read_hidden;
}
- /**
- * parse optional boolean keywords
- *
- * @param string $str
- *
- * @return bool
- */
- private function parse_bool($str)
+ public static function yy_destructor($yymajor, $yypminor)
{
- $str = strtolower($str);
- if (in_array($str, array('on', 'yes', 'true'))) {
- $res = true;
- } else {
- $res = false;
+ switch ($yymajor) {
+ default:
+ break; /* If no destructor action specified: do nothing */
}
- return $res;
}
/**
@@ -205,10 +304,8 @@ class Smarty_Internal_Configfileparser
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 = "";
+ $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 ] ])) {
@@ -218,8 +315,7 @@ class Smarty_Internal_Configfileparser
$str .= $s;
}
return $str;
- }
-
+ } /* Index of top element in stack */
/**
* parse double quoted string
*
@@ -231,8 +327,7 @@ class Smarty_Internal_Configfileparser
{
$inner_str = substr($qstr, 1, strlen($qstr) - 2);
return stripcslashes($inner_str);
- }
-
+ } /* Shifts left before out of the error */
/**
* parse triple quoted string
*
@@ -243,153 +338,12 @@ class Smarty_Internal_Configfileparser
private static function parse_tripple_double_quoted_string($qstr)
{
return stripcslashes($qstr);
- }
-
- /**
- * 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 ]);
- }
- }
-
- 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;
-
- static public $yy_action = array(29, 30, 34, 33, 24, 13, 19, 25, 35, 21, 59, 8, 3, 1, 20, 12, 14, 31, 20, 12, 15,
- 17, 23, 18, 27, 26, 4, 5, 6, 32, 2, 11, 28, 22, 16, 9, 7, 10,);
-
- static public $yy_lookahead = array(7, 8, 9, 10, 11, 12, 5, 27, 15, 16, 20, 21, 23, 23, 17, 18, 13, 14, 17, 18, 15,
- 2, 17, 4, 25, 26, 6, 3, 3, 14, 23, 1, 24, 17, 2, 25, 22, 25,);
-
- const YY_SHIFT_USE_DFLT = - 8;
-
- const YY_SHIFT_MAX = 19;
-
- static public $yy_shift_ofst = array(- 8, 1, 1, 1, - 7, - 3, - 3, 30, - 8, - 8, - 8, 19, 5, 3, 15, 16, 24, 25, 32,
- 20,);
-
- const YY_REDUCE_USE_DFLT = - 21;
-
- const YY_REDUCE_MAX = 10;
-
- static public $yy_reduce_ofst = array(- 10, - 1, - 1, - 1, - 20, 10, 12, 8, 14, 7, - 11,);
-
- static public $yyExpectedTokens = array(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(2, 4,), array(15, 17,),
- array(13, 14,), array(14,), array(17,), array(3,), array(3,), array(2,),
- array(6,), array(), array(), array(), array(), array(), array(), array(),
- array(), array(), array(), array(), array(), array(), array(), array(),
- array(),);
-
- static public $yy_default = array(44, 37, 41, 40, 58, 58, 58, 36, 39, 44, 44, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- 55, 54, 57, 56, 50, 45, 43, 42, 38, 46, 47, 52, 51, 49, 48, 53,);
-
- const YYNOCODE = 29;
-
- const YYSTACKDEPTH = 100;
-
- const YYNSTATE = 36;
-
- const YYNRULE = 22;
-
- const YYERRORSYMBOL = 19;
-
- const YYERRSYMDT = 'yy0';
-
- const YYFALLBACK = 0;
-
- public static $yyFallback = array();
-
+ } /* The parser's stack */
public function Trace($TraceFILE, $zTracePrompt)
{
if (!$TraceFILE) {
$zTracePrompt = 0;
- } elseif (!$zTracePrompt) {
+ } else if (!$zTracePrompt) {
$TraceFILE = 0;
}
$this->yyTraceFILE = $TraceFILE;
@@ -402,31 +356,6 @@ class Smarty_Internal_Configfileparser
$this->yyTracePrompt = '<br>';
}
- public $yyTraceFILE;
-
- public $yyTracePrompt;
-
- public $yyidx; /* Index of top element in stack */
- public $yyerrcnt; /* Shifts left before out of the error */
- public $yystack = array(); /* The parser's stack */
-
- 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',);
-
- 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',);
-
public function tokenName($tokenType)
{
if ($tokenType === 0) {
@@ -435,15 +364,7 @@ class Smarty_Internal_Configfileparser
if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
return $this->yyTokenName[ $tokenType ];
} else {
- return "Unknown";
- }
- }
-
- public static function yy_destructor($yymajor, $yypminor)
- {
- switch ($yymajor) {
- default:
- break; /* If no destructor action specified: do nothing */
+ return 'Unknown';
}
}
@@ -454,12 +375,13 @@ class Smarty_Internal_Configfileparser
}
$yytos = array_pop($this->yystack);
if ($this->yyTraceFILE && $this->yyidx >= 0) {
- fwrite($this->yyTraceFILE, $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] . "\n");
+ fwrite($this->yyTraceFILE,
+ $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[ $yytos->major ] .
+ "\n");
}
$yymajor = $yytos->major;
self::yy_destructor($yymajor, $yytos->minor);
- $this->yyidx --;
-
+ $this->yyidx--;
return $yymajor;
}
@@ -496,7 +418,7 @@ class Smarty_Internal_Configfileparser
// reduce action
$done = 0;
do {
- if ($done ++ == 100) {
+ if ($done++ === 100) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
// too much recursion prevents proper detection
@@ -505,8 +427,9 @@ class Smarty_Internal_Configfileparser
}
$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 ]);
+ $nextstate = $this->yy_find_reduce_action(
+ $this->yystack[ $this->yyidx ]->stateno,
+ self::$yyRuleInfo[ $yyruleno ][ 0 ]);
if (isset(self::$yyExpectedTokens[ $nextstate ])) {
$expected = array_merge($expected, self::$yyExpectedTokens[ $nextstate ]);
if (isset($res4[ $nextstate ][ $token ])) {
@@ -517,8 +440,7 @@ class Smarty_Internal_Configfileparser
}
} else {
if ($res4[ $nextstate ][ $token ] =
- in_array($token, self::$yyExpectedTokens[ $nextstate ], true)
- ) {
+ in_array($token, self::$yyExpectedTokens[ $nextstate ], true)) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
return array_unique($expected);
@@ -527,20 +449,20 @@ class Smarty_Internal_Configfileparser
}
if ($nextstate < self::YYNSTATE) {
// we need to shift a non-terminal
- $this->yyidx ++;
+ $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) {
+ } else if ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
$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) {
+ } else if ($nextstate === self::YY_NO_ACTION) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
// input accepted, but not shifted (I guess)
@@ -548,15 +470,12 @@ class Smarty_Internal_Configfileparser
} else {
$yyact = $nextstate;
}
- }
- while (true);
+ } while (true);
}
break;
- }
- while (true);
+ } while (true);
$this->yyidx = $yyidx;
$this->yystack = $stack;
-
return array_unique($expected);
}
@@ -585,7 +504,7 @@ class Smarty_Internal_Configfileparser
// reduce action
$done = 0;
do {
- if ($done ++ == 100) {
+ if ($done++ === 100) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
// too much recursion prevents proper detection
@@ -594,8 +513,9 @@ class Smarty_Internal_Configfileparser
}
$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 ]);
+ $nextstate = $this->yy_find_reduce_action(
+ $this->yystack[ $this->yyidx ]->stateno,
+ self::$yyRuleInfo[ $yyruleno ][ 0 ]);
if (isset($res2[ $nextstate ][ $token ])) {
if ($res2[ $nextstate ][ $token ]) {
$this->yyidx = $yyidx;
@@ -604,9 +524,9 @@ class Smarty_Internal_Configfileparser
}
} else {
if ($res2[ $nextstate ][ $token ] = (isset(self::$yyExpectedTokens[ $nextstate ]) &&
- in_array($token, self::$yyExpectedTokens[ $nextstate ],
- true))
- ) {
+ in_array($token,
+ self::$yyExpectedTokens[ $nextstate ],
+ true))) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
return true;
@@ -614,13 +534,13 @@ class Smarty_Internal_Configfileparser
}
if ($nextstate < self::YYNSTATE) {
// we need to shift a non-terminal
- $this->yyidx ++;
+ $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) {
+ } else if ($nextstate === self::YYNSTATE + self::YYNRULE + 1) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
if (!$token) {
@@ -631,7 +551,7 @@ class Smarty_Internal_Configfileparser
// by ignoring input, this is in essence ignoring a
// syntax error!
return false;
- } elseif ($nextstate === self::YY_NO_ACTION) {
+ } else if ($nextstate === self::YY_NO_ACTION) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
// input accepted, but not shifted (I guess)
@@ -639,22 +559,18 @@ class Smarty_Internal_Configfileparser
} else {
$yyact = $nextstate;
}
- }
- while (true);
+ } while (true);
}
break;
- }
- while (true);
+ } 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
@@ -664,23 +580,22 @@ class Smarty_Internal_Configfileparser
if ($i === self::YY_SHIFT_USE_DFLT) {
return self::$yy_default[ $stateno ];
}
- if ($iLookAhead == self::YYNOCODE) {
+ 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 ($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->yyTracePrompt . 'FALLBACK ' .
+ $this->yyTokenName[ $iLookAhead ] . ' => ' .
$this->yyTokenName[ $iFallback ] . "\n");
}
-
return $this->yy_find_shift_action($iFallback);
}
-
return self::$yy_default[ $stateno ];
} else {
return self::$yy_action[ $i ];
@@ -690,19 +605,19 @@ class Smarty_Internal_Configfileparser
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) {
+ if ($i === self::YY_REDUCE_USE_DFLT) {
return self::$yy_default[ $stateno ];
}
- if ($iLookAhead == self::YYNOCODE) {
+ 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 ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
+ self::$yy_lookahead[ $i ] != $iLookAhead) {
return self::$yy_default[ $stateno ];
} else {
return self::$yy_action[ $i ];
@@ -711,9 +626,9 @@ class Smarty_Internal_Configfileparser
public function yy_shift($yyNewState, $yyMajor, $yypMinor)
{
- $this->yyidx ++;
+ $this->yyidx++;
if ($this->yyidx >= self::YYSTACKDEPTH) {
- $this->yyidx --;
+ $this->yyidx--;
if ($this->yyTraceFILE) {
fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
}
@@ -721,10 +636,8 @@ class Smarty_Internal_Configfileparser
$this->yy_pop_parser_stack();
}
#line 239 "../smarty/lexer/smarty_internal_configfileparser.y"
-
$this->internalError = true;
- $this->compiler->trigger_config_file_error("Stack overflow in configfile parser");
-
+ $this->compiler->trigger_config_file_error('Stack overflow in configfile parser');
return;
}
$yytos = new TPC_yyStackEntry;
@@ -733,141 +646,132 @@ class Smarty_Internal_Configfileparser
$yytos->minor = $yypMinor;
$this->yystack[] = $yytos;
if ($this->yyTraceFILE && $this->yyidx > 0) {
- fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt, $yyNewState);
+ fprintf($this->yyTraceFILE,
+ "%sShift %d\n",
+ $this->yyTracePrompt,
+ $yyNewState);
fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
- for ($i = 1; $i <= $this->yyidx; $i ++) {
- fprintf($this->yyTraceFILE, " %s", $this->yyTokenName[ $this->yystack[ $i ]->major ]);
+ for ($i = 1; $i <= $this->yyidx; $i++) {
+ fprintf($this->yyTraceFILE,
+ " %s",
+ $this->yyTokenName[ $this->yystack[ $i ]->major ]);
}
fwrite($this->yyTraceFILE, "\n");
}
}
- 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),);
-
- 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,);
-
- #line 245 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r0()
{
$this->_retvalue = null;
}
- #line 250 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r1()
{
$this->add_global_vars($this->yystack[ $this->yyidx + 0 ]->minor);
$this->_retvalue = null;
}
- #line 264 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r4()
{
- $this->add_section_vars($this->yystack[ $this->yyidx + - 3 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
+ $this->add_section_vars($this->yystack[ $this->yyidx + -3 ]->minor, $this->yystack[ $this->yyidx + 0 ]->minor);
$this->_retvalue = null;
}
- #line 269 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 245 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r5()
{
if ($this->configReadHidden) {
- $this->add_section_vars($this->yystack[ $this->yyidx + - 3 ]->minor,
+ $this->add_section_vars($this->yystack[ $this->yyidx + -3 ]->minor,
$this->yystack[ $this->yyidx + 0 ]->minor);
}
$this->_retvalue = null;
}
- #line 277 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 250 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r6()
{
- $this->_retvalue = $this->yystack[ $this->yyidx + - 1 ]->minor;
+ $this->_retvalue = $this->yystack[ $this->yyidx + -1 ]->minor;
}
- #line 281 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 264 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r7()
{
$this->_retvalue =
- array_merge($this->yystack[ $this->yyidx + - 1 ]->minor, Array($this->yystack[ $this->yyidx + 0 ]->minor));
+ array_merge($this->yystack[ $this->yyidx + -1 ]->minor, array($this->yystack[ $this->yyidx + 0 ]->minor));
}
- #line 285 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 269 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r8()
{
- $this->_retvalue = Array();
+ $this->_retvalue = array();
}
- #line 291 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 277 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r9()
{
- $this->_retvalue = Array("key" => $this->yystack[ $this->yyidx + - 2 ]->minor,
- "value" => $this->yystack[ $this->yyidx + 0 ]->minor);
+ $this->_retvalue = array('key' => $this->yystack[ $this->yyidx + -2 ]->minor,
+ 'value' => $this->yystack[ $this->yyidx + 0 ]->minor);
}
- #line 296 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 281 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r10()
{
- $this->_retvalue = (float) $this->yystack[ $this->yyidx + 0 ]->minor;
+ $this->_retvalue = (float)$this->yystack[ $this->yyidx + 0 ]->minor;
}
- #line 300 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 285 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r11()
{
- $this->_retvalue = (int) $this->yystack[ $this->yyidx + 0 ]->minor;
+ $this->_retvalue = (int)$this->yystack[ $this->yyidx + 0 ]->minor;
}
- #line 304 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 291 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r12()
{
$this->_retvalue = $this->parse_bool($this->yystack[ $this->yyidx + 0 ]->minor);
}
- #line 308 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 296 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r13()
{
$this->_retvalue = self::parse_single_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor);
}
- #line 312 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 300 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r14()
{
$this->_retvalue = self::parse_double_quoted_string($this->yystack[ $this->yyidx + 0 ]->minor);
}
- #line 316 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 304 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r15()
{
- $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[ $this->yyidx + - 1 ]->minor);
+ $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[ $this->yyidx + -1 ]->minor);
}
- #line 320 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 308 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r16()
{
$this->_retvalue = '';
}
- #line 324 "../smarty/lexer/smarty_internal_configfileparser.y"
+ #line 312 "../smarty/lexer/smarty_internal_configfileparser.y"
function yy_r17()
{
$this->_retvalue = $this->yystack[ $this->yyidx + 0 ]->minor;
}
- private $_retvalue;
-
+ #line 316 "../smarty/lexer/smarty_internal_configfileparser.y"
public function yy_reduce($yyruleno)
{
- if ($this->yyTraceFILE && $yyruleno >= 0 && $yyruleno < count(self::$yyRuleName)) {
- fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n", $this->yyTracePrompt, $yyruleno,
+ if ($this->yyTraceFILE && $yyruleno >= 0
+ && $yyruleno < count(self::$yyRuleName)) {
+ fprintf($this->yyTraceFILE,
+ "%sReduce (%d) [%s].\n",
+ $this->yyTracePrompt,
+ $yyruleno,
self::$yyRuleName[ $yyruleno ]);
}
-
$this->_retvalue = $yy_lefthand_side = null;
if (isset(self::$yyReduceMap[ $yyruleno ])) {
// call the action
@@ -878,14 +782,14 @@ class Smarty_Internal_Configfileparser
$yygoto = self::$yyRuleInfo[ $yyruleno ][ 0 ];
$yysize = self::$yyRuleInfo[ $yyruleno ][ 1 ];
$this->yyidx -= $yysize;
- for ($i = $yysize; $i; $i --) {
+ 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 ++;
+ $this->yyidx++;
$x = new TPC_yyStackEntry;
$x->stateno = $yyact;
$x->major = $yygoto;
@@ -894,11 +798,12 @@ class Smarty_Internal_Configfileparser
} else {
$this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
}
- } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
+ } else if ($yyact === self::YYNSTATE + self::YYNRULE + 1) {
$this->yy_accept();
}
}
+ #line 320 "../smarty/lexer/smarty_internal_configfileparser.y"
public function yy_parse_failed()
{
if ($this->yyTraceFILE) {
@@ -909,10 +814,10 @@ class Smarty_Internal_Configfileparser
}
}
+ #line 324 "../smarty/lexer/smarty_internal_configfileparser.y"
public function yy_syntax_error($yymajor, $TOKEN)
{
#line 232 "../smarty/lexer/smarty_internal_configfileparser.y"
-
$this->internalError = true;
$this->yymajor = $yymajor;
$this->compiler->trigger_config_file_error();
@@ -927,7 +832,6 @@ class Smarty_Internal_Configfileparser
$this->yy_pop_parser_stack();
}
#line 225 "../smarty/lexer/smarty_internal_configfileparser.y"
-
$this->successful = !$this->internalError;
$this->internalError = false;
$this->retvalue = $this->_retvalue;
@@ -936,10 +840,9 @@ class Smarty_Internal_Configfileparser
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;
+ $this->yyerrcnt = -1;
$x = new TPC_yyStackEntry;
$x->stateno = 0;
$x->major = 0;
@@ -947,53 +850,61 @@ class Smarty_Internal_Configfileparser
$this->yystack[] = $x;
}
$yyendofinput = ($yymajor == 0);
-
if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sInput %s\n", $this->yyTracePrompt, $this->yyTokenName[ $yymajor ]);
+ fprintf($this->yyTraceFILE,
+ "%sInput %s\n",
+ $this->yyTracePrompt,
+ $this->yyTokenName[ $yymajor ]);
}
-
do {
$yyact = $this->yy_find_shift_action($yymajor);
- if ($yymajor < self::YYERRORSYMBOL && !$this->yy_is_expected_token($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 --;
+ $this->yyerrcnt--;
if ($yyendofinput && $this->yyidx >= 0) {
$yymajor = 0;
} else {
$yymajor = self::YYNOCODE;
}
- } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
+ } else if ($yyact < self::YYNSTATE + self::YYNRULE) {
$this->yy_reduce($yyact - self::YYNSTATE);
- } elseif ($yyact == self::YY_ERROR_ACTION) {
+ } else if ($yyact === self::YY_ERROR_ACTION) {
if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sSyntax Error!\n", $this->yyTracePrompt);
+ fprintf($this->yyTraceFILE,
+ "%sSyntax Error!\n",
+ $this->yyTracePrompt);
}
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 ($yymx === self::YYERRORSYMBOL || $yyerrorhit) {
if ($this->yyTraceFILE) {
- fprintf($this->yyTraceFILE, "%sDiscard input token %s\n", $this->yyTracePrompt,
+ fprintf($this->yyTraceFILE,
+ "%sDiscard input token %s\n",
+ $this->yyTracePrompt,
$this->yyTokenName[ $yymajor ]);
}
$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) {
+ 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) {
+ } else if ($yymx !== self::YYERRORSYMBOL) {
$u2 = 0;
$this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
}
@@ -1015,8 +926,74 @@ class Smarty_Internal_Configfileparser
$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 ]);
}
- while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
}
}