diff options
Diffstat (limited to 'vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php')
-rw-r--r-- | vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php | 797 |
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); } } |