From f11e4e40bc8476c12e8154a1022bb6553b7b54aa Mon Sep 17 00:00:00 2001 From: "Uwe.Tews" Date: Sat, 16 Jan 2010 12:03:53 +0000 Subject: [PATCH] - internal change of config file lexer/parser on handling of section names - bugfix on registered objects (format parameter of register_object was not handled correctly) --- change_log.txt | 4 + ...ternal_compile_private_object_function.php | 25 +- .../smarty_internal_config_file_compiler.php | 2 +- .../smarty_internal_configfilelexer.php | 92 +++++- .../smarty_internal_configfileparser.php | 273 +++++++++--------- 5 files changed, 246 insertions(+), 150 deletions(-) diff --git a/change_log.txt b/change_log.txt index 4bb0966d..73648044 100644 --- a/change_log.txt +++ b/change_log.txt @@ -1,3 +1,7 @@ +01/16/2010 +- internal change of config file lexer/parser on handling of section names +- bugfix on registered objects (format parameter of register_object was not handled correctly) + 01/14/2010 - bugfix on backslash within single quoted strings - bugfix allow absolute filepath for config files diff --git a/libs/sysplugins/smarty_internal_compile_private_object_function.php b/libs/sysplugins/smarty_internal_compile_private_object_function.php index d147949a..573f6040 100644 --- a/libs/sysplugins/smarty_internal_compile_private_object_function.php +++ b/libs/sysplugins/smarty_internal_compile_private_object_function.php @@ -30,20 +30,23 @@ class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_Co $this->required_attributes = array(); $this->optional_attributes = array('_any'); // check and get attributes - $_attr = $this->_get_attributes($args); + $_attr = $this->_get_attributes($args); // convert attributes into parameter array string - $_paramsArray = array(); - foreach ($_attr as $_key => $_value) { - if (is_int($_key)) { - $_paramsArray[] = "$_key=>$_value"; - } else { - $_paramsArray[] = "'$_key'=>$_value"; + if ($this->compiler->smarty->registered_objects[$tag][2]) { + $_paramsArray = array(); + foreach ($_attr as $_key => $_value) { + if (is_int($_key)) { + $_paramsArray[] = "$_key=>$_value"; + } else { + $_paramsArray[] = "'$_key'=>$_value"; + } } + $_params = 'array(' . implode(",", $_paramsArray) . ')'; + $output = "smarty->registered_objects['{$tag}'][0]->{$methode}({$_params},\$_smarty_tpl->smarty,\$_smarty_tpl);?>"; + } else { + $_params = implode(",", $_attr); + $output = "smarty->registered_objects['{$tag}'][0]->{$methode}({$_params});?>"; } - $_params = 'array(' . implode(",", $_paramsArray) . ')'; - // compile code - $output = 'smarty->registered_objects[\''.$tag.'\'][0]->' . $methode . '(' . $_params . ',$_smarty_tpl->smarty,$_smarty_tpl);?>'; - return $output; } } diff --git a/libs/sysplugins/smarty_internal_config_file_compiler.php b/libs/sysplugins/smarty_internal_config_file_compiler.php index 8c530100..15479111 100644 --- a/libs/sysplugins/smarty_internal_config_file_compiler.php +++ b/libs/sysplugins/smarty_internal_config_file_compiler.php @@ -87,7 +87,7 @@ class Smarty_Internal_Config_File_Compiler { // $line--; } $match = preg_split("/\n/", $this->lex->data); - $error_text = 'Syntax Error in config file "' . $this->config->getConfigFilepath() . '" on line ' . $line . ' "'. $match[$line-1].'" '; + $error_text = "Syntax error in config file '{$this->config->getConfigFilepath()}' on line {$line} '{$match[$line-1]}' "; if (isset($args)) { // individual error message $error_text .= $args; diff --git a/libs/sysplugins/smarty_internal_configfilelexer.php b/libs/sysplugins/smarty_internal_configfilelexer.php index 26ffef40..50d9fd69 100644 --- a/libs/sysplugins/smarty_internal_configfilelexer.php +++ b/libs/sysplugins/smarty_internal_configfilelexer.php @@ -79,12 +79,12 @@ class Smarty_Internal_Configfilelexer 4 => 0, 5 => 0, 6 => 0, - 7 => 1, + 7 => 0, ); if ($this->counter >= strlen($this->data)) { return false; // end of input } - $yy_global_pattern = "/^(#)|^(=)|^([ \t\r]+)|^(\n)|^(\\.)|^([0-9]*[a-zA-Z_]\\w*)|^(\\[(.*?)\\])/"; + $yy_global_pattern = "/^(#)|^(\\[)|^(\\])|^(=)|^([ \t\r]+)|^(\n)|^([0-9]*[a-zA-Z_]\\w*)/"; do { if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) { @@ -143,33 +143,34 @@ class Smarty_Internal_Configfilelexer function yy_r1_2($yy_subpatterns) { - $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL; - $this->yypushstate(self::VALUE); + $this->token = Smarty_Internal_Configfileparser::TPC_OPENB; + $this->yypushstate(self::SECTION); } function yy_r1_3($yy_subpatterns) { - return false; + $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB; } function yy_r1_4($yy_subpatterns) { - $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE; + $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL; + $this->yypushstate(self::VALUE); } function yy_r1_5($yy_subpatterns) { - $this->token = Smarty_Internal_Configfileparser::TPC_DOT; + return false; } function yy_r1_6($yy_subpatterns) { - $this->token = Smarty_Internal_Configfileparser::TPC_ID; + $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE; } function yy_r1_7($yy_subpatterns) { - $this->token = Smarty_Internal_Configfileparser::TPC_SECTION; + $this->token = Smarty_Internal_Configfileparser::TPC_ID; } @@ -448,5 +449,78 @@ class Smarty_Internal_Configfilelexer } + + function yylex5() + { + $tokenMap = array ( + 1 => 0, + 2 => 0, + ); + if ($this->counter >= strlen($this->data)) { + return false; // end of input + } + $yy_global_pattern = "/^(\\.)|^(.*?(?=[\.=[\]\r\n]))/"; + + do { + if (preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches)) { + $yysubmatches = $yymatches; + $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns + if (!count($yymatches)) { + throw new Exception('Error: lexing failed because a rule matched' . + 'an empty string. Input "' . substr($this->data, + $this->counter, 5) . '... state SECTION'); + } + next($yymatches); // skip global match + $this->token = key($yymatches); // token number + if ($tokenMap[$this->token]) { + // extract sub-patterns for passing to lex function + $yysubmatches = array_slice($yysubmatches, $this->token + 1, + $tokenMap[$this->token]); + } else { + $yysubmatches = array(); + } + $this->value = current($yymatches); // token value + $r = $this->{'yy_r5_' . $this->token}($yysubmatches); + if ($r === null) { + $this->counter += strlen($this->value); + $this->line += substr_count($this->value, "\n"); + // accept this token + return true; + } elseif ($r === true) { + // we have changed state + // process this token in the new state + return $this->yylex(); + } elseif ($r === false) { + $this->counter += strlen($this->value); + $this->line += substr_count($this->value, "\n"); + if ($this->counter >= strlen($this->data)) { + return false; // end of input + } + // skip this token + continue; + } } else { + throw new Exception('Unexpected input at line' . $this->line . + ': ' . $this->data[$this->counter]); + } + break; + } while (true); + + } // end function + + + const SECTION = 5; + function yy_r5_1($yy_subpatterns) + { + + $this->token = Smarty_Internal_Configfileparser::TPC_DOT; + } + function yy_r5_2($yy_subpatterns) + { + + $this->token = Smarty_Internal_Configfileparser::TPC_SECTION; + $this->yypopstate(); + } + + } ?> diff --git a/libs/sysplugins/smarty_internal_configfileparser.php b/libs/sysplugins/smarty_internal_configfileparser.php index 4aab6650..3621a487 100644 --- a/libs/sysplugins/smarty_internal_configfileparser.php +++ b/libs/sysplugins/smarty_internal_configfileparser.php @@ -181,63 +181,69 @@ class Smarty_Internal_Configfileparser#line 79 "smarty_internal_configfileparser } #line 175 "smarty_internal_configfileparser.php" - const TPC_SECTION = 1; - const TPC_ID = 2; - const TPC_EQUAL = 3; - const TPC_FLOAT = 4; - const TPC_INT = 5; - const TPC_BOOL = 6; - const TPC_SINGLE_QUOTED_STRING = 7; - const TPC_DOUBLE_QUOTED_STRING = 8; - const TPC_TRIPPLE_DOUBLE_QUOTED_STRING = 9; - const TPC_NAKED_STRING = 10; - const TPC_NEWLINE = 11; - const TPC_COMMENTSTART = 12; - const YY_NO_ACTION = 46; - const YY_ACCEPT_ACTION = 45; - const YY_ERROR_ACTION = 44; + 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_DOUBLE_QUOTED_STRING = 12; + const TPC_NAKED_STRING = 13; + const TPC_NEWLINE = 14; + const TPC_COMMENTSTART = 15; + const YY_NO_ACTION = 54; + const YY_ACCEPT_ACTION = 53; + const YY_ERROR_ACTION = 52; - const YY_SZ_ACTTAB = 29; + const YY_SZ_ACTTAB = 35; static public $yy_action = array( - /* 0 */ 16, 21, 23, 22, 24, 13, 11, 10, 45, 7, - /* 10 */ 2, 1, 12, 8, 9, 14, 12, 8, 18, 17, - /* 20 */ 15, 4, 5, 20, 3, 43, 6, 43, 19, + /* 0 */ 26, 27, 21, 30, 29, 28, 31, 16, 53, 8, + /* 10 */ 19, 2, 20, 11, 24, 23, 20, 11, 17, 15, + /* 20 */ 3, 14, 13, 18, 4, 6, 5, 1, 12, 22, + /* 30 */ 9, 47, 10, 25, 7, ); static public $yy_lookahead = array( - /* 0 */ 4, 5, 6, 7, 8, 9, 10, 2, 14, 15, - /* 10 */ 17, 17, 11, 12, 10, 11, 11, 12, 19, 20, - /* 20 */ 11, 1, 16, 21, 3, 22, 19, 22, 18, + /* 0 */ 7, 8, 9, 10, 11, 12, 13, 5, 17, 18, + /* 10 */ 14, 20, 14, 15, 22, 23, 14, 15, 2, 2, + /* 20 */ 20, 4, 13, 14, 6, 3, 3, 20, 1, 24, + /* 30 */ 22, 25, 22, 21, 19, ); - const YY_SHIFT_USE_DFLT = -5; - const YY_SHIFT_MAX = 10; + const YY_SHIFT_USE_DFLT = -8; + const YY_SHIFT_MAX = 17; static public $yy_shift_ofst = array( - /* 0 */ -5, 5, 5, -4, 1, 20, -5, -5, 4, 9, - /* 10 */ 21, + /* 0 */ -8, 2, 2, 2, -7, -2, -2, 27, -8, -8, + /* 10 */ -8, 9, 17, -4, 16, 23, 18, 22, ); - const YY_REDUCE_USE_DFLT = -8; - const YY_REDUCE_MAX = 7; + const YY_REDUCE_USE_DFLT = -10; + const YY_REDUCE_MAX = 10; static public $yy_reduce_ofst = array( - /* 0 */ -6, -1, -1, 2, 7, 10, -7, 6, + /* 0 */ -9, -8, -8, -8, 5, 10, 8, 12, 15, 0, + /* 10 */ 7, ); static public $yyExpectedTokens = array( /* 0 */ array(), - /* 1 */ array(2, 11, 12, ), - /* 2 */ array(2, 11, 12, ), - /* 3 */ array(4, 5, 6, 7, 8, 9, 10, ), - /* 4 */ array(11, 12, ), - /* 5 */ array(1, ), - /* 6 */ array(), - /* 7 */ array(), - /* 8 */ array(10, 11, ), - /* 9 */ array(11, ), - /* 10 */ array(3, ), - /* 11 */ array(), - /* 12 */ array(), - /* 13 */ array(), - /* 14 */ array(), - /* 15 */ array(), - /* 16 */ array(), - /* 17 */ array(), + /* 1 */ array(5, 14, 15, ), + /* 2 */ array(5, 14, 15, ), + /* 3 */ array(5, 14, 15, ), + /* 4 */ array(7, 8, 9, 10, 11, 12, 13, ), + /* 5 */ array(14, 15, ), + /* 6 */ array(14, 15, ), + /* 7 */ array(1, ), + /* 8 */ array(), + /* 9 */ array(), + /* 10 */ array(), + /* 11 */ array(13, 14, ), + /* 12 */ array(2, 4, ), + /* 13 */ array(14, ), + /* 14 */ array(2, ), + /* 15 */ array(3, ), + /* 16 */ array(6, ), + /* 17 */ array(3, ), /* 18 */ array(), /* 19 */ array(), /* 20 */ array(), @@ -245,17 +251,25 @@ static public $yy_action = array( /* 22 */ array(), /* 23 */ array(), /* 24 */ array(), + /* 25 */ array(), + /* 26 */ array(), + /* 27 */ array(), + /* 28 */ array(), + /* 29 */ array(), + /* 30 */ array(), + /* 31 */ array(), ); static public $yy_default = array( - /* 0 */ 32, 26, 29, 44, 44, 25, 32, 28, 44, 44, - /* 10 */ 44, 40, 41, 39, 42, 43, 34, 31, 30, 27, - /* 20 */ 33, 35, 37, 36, 38, + /* 0 */ 40, 36, 33, 37, 52, 52, 52, 32, 35, 40, + /* 10 */ 40, 52, 52, 52, 52, 52, 52, 52, 50, 51, + /* 20 */ 49, 44, 41, 39, 38, 34, 42, 43, 47, 46, + /* 30 */ 45, 48, ); - const YYNOCODE = 23; + const YYNOCODE = 26; const YYSTACKDEPTH = 100; - const YYNSTATE = 25; - const YYNRULE = 19; - const YYERRORSYMBOL = 13; + const YYNSTATE = 32; + const YYNRULE = 20; + const YYERRORSYMBOL = 16; const YYERRSYMDT = 'yy0'; const YYFALLBACK = 0; static public $yyFallback = array( @@ -284,12 +298,13 @@ static public $yy_action = array( public $yystack = array(); /* The parser's stack */ public $yyTokenName = array( - '$', 'SECTION', 'ID', 'EQUAL', - 'FLOAT', 'INT', 'BOOL', 'SINGLE_QUOTED_STRING', - 'DOUBLE_QUOTED_STRING', 'TRIPPLE_DOUBLE_QUOTED_STRING', 'NAKED_STRING', 'NEWLINE', - 'COMMENTSTART', 'error', 'start', 'global_vars', - 'sections', 'var_list', 'section', 'newline', - 'var', 'value', + '$', 'OPENB', 'SECTION', 'CLOSEB', + 'DOT', 'ID', 'EQUAL', 'FLOAT', + 'INT', 'BOOL', 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING', + 'TRIPPLE_DOUBLE_QUOTED_STRING', 'NAKED_STRING', 'NEWLINE', 'COMMENTSTART', + 'error', 'start', 'global_vars', 'sections', + 'var_list', 'section', 'newline', 'var', + 'value', ); static public $yyRuleName = array( @@ -297,21 +312,22 @@ static public $yy_action = array( /* 1 */ "global_vars ::= var_list", /* 2 */ "sections ::= sections section", /* 3 */ "sections ::=", - /* 4 */ "section ::= SECTION newline var_list", - /* 5 */ "var_list ::= var_list newline", - /* 6 */ "var_list ::= var_list var", - /* 7 */ "var_list ::=", - /* 8 */ "var ::= ID EQUAL value", - /* 9 */ "value ::= FLOAT", - /* 10 */ "value ::= INT", - /* 11 */ "value ::= BOOL", - /* 12 */ "value ::= SINGLE_QUOTED_STRING", - /* 13 */ "value ::= DOUBLE_QUOTED_STRING", - /* 14 */ "value ::= TRIPPLE_DOUBLE_QUOTED_STRING", - /* 15 */ "value ::= NAKED_STRING", - /* 16 */ "newline ::= NEWLINE", - /* 17 */ "newline ::= COMMENTSTART NEWLINE", - /* 18 */ "newline ::= COMMENTSTART NAKED_STRING NEWLINE", + /* 4 */ "section ::= OPENB SECTION CLOSEB newline var_list", + /* 5 */ "section ::= OPENB DOT SECTION CLOSEB newline var_list", + /* 6 */ "var_list ::= var_list newline", + /* 7 */ "var_list ::= var_list var", + /* 8 */ "var_list ::=", + /* 9 */ "var ::= ID EQUAL value", + /* 10 */ "value ::= FLOAT", + /* 11 */ "value ::= INT", + /* 12 */ "value ::= BOOL", + /* 13 */ "value ::= SINGLE_QUOTED_STRING", + /* 14 */ "value ::= DOUBLE_QUOTED_STRING", + /* 15 */ "value ::= TRIPPLE_DOUBLE_QUOTED_STRING", + /* 16 */ "value ::= NAKED_STRING", + /* 17 */ "newline ::= NEWLINE", + /* 18 */ "newline ::= COMMENTSTART NEWLINE", + /* 19 */ "newline ::= COMMENTSTART NAKED_STRING NEWLINE", ); function tokenName($tokenType) @@ -585,34 +601,35 @@ static public $yy_action = array( } static public $yyRuleInfo = array( - array( 'lhs' => 14, 'rhs' => 2 ), - array( 'lhs' => 15, 'rhs' => 1 ), - array( 'lhs' => 16, 'rhs' => 2 ), - array( 'lhs' => 16, 'rhs' => 0 ), - array( 'lhs' => 18, 'rhs' => 3 ), array( 'lhs' => 17, 'rhs' => 2 ), - array( 'lhs' => 17, 'rhs' => 2 ), - array( 'lhs' => 17, 'rhs' => 0 ), - array( 'lhs' => 20, 'rhs' => 3 ), - array( 'lhs' => 21, 'rhs' => 1 ), - array( 'lhs' => 21, 'rhs' => 1 ), - array( 'lhs' => 21, 'rhs' => 1 ), - array( 'lhs' => 21, 'rhs' => 1 ), - array( 'lhs' => 21, 'rhs' => 1 ), - array( 'lhs' => 21, 'rhs' => 1 ), - array( 'lhs' => 21, 'rhs' => 1 ), - array( 'lhs' => 19, 'rhs' => 1 ), + array( 'lhs' => 18, 'rhs' => 1 ), array( 'lhs' => 19, 'rhs' => 2 ), - array( 'lhs' => 19, 'rhs' => 3 ), + array( 'lhs' => 19, 'rhs' => 0 ), + array( 'lhs' => 21, 'rhs' => 5 ), + array( 'lhs' => 21, 'rhs' => 6 ), + array( 'lhs' => 20, 'rhs' => 2 ), + array( 'lhs' => 20, 'rhs' => 2 ), + array( 'lhs' => 20, 'rhs' => 0 ), + array( 'lhs' => 23, 'rhs' => 3 ), + array( 'lhs' => 24, 'rhs' => 1 ), + array( 'lhs' => 24, 'rhs' => 1 ), + array( 'lhs' => 24, 'rhs' => 1 ), + array( 'lhs' => 24, 'rhs' => 1 ), + array( 'lhs' => 24, 'rhs' => 1 ), + array( 'lhs' => 24, 'rhs' => 1 ), + array( 'lhs' => 24, 'rhs' => 1 ), + array( 'lhs' => 22, 'rhs' => 1 ), + array( 'lhs' => 22, 'rhs' => 2 ), + array( 'lhs' => 22, 'rhs' => 3 ), ); static public $yyReduceMap = array( 0 => 0, 2 => 0, 3 => 0, - 16 => 0, 17 => 0, 18 => 0, + 19 => 0, 1 => 1, 4 => 4, 5 => 5, @@ -626,55 +643,53 @@ static public $yy_action = array( 13 => 13, 14 => 14, 15 => 15, + 16 => 16, ); #line 127 "smarty_internal_configfileparser.y" function yy_r0(){ $this->_retvalue = null; } -#line 627 "smarty_internal_configfileparser.php" +#line 645 "smarty_internal_configfileparser.php" #line 130 "smarty_internal_configfileparser.y" function yy_r1(){ $this->add_global_vars($this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = null; } -#line 630 "smarty_internal_configfileparser.php" -#line 136 "smarty_internal_configfileparser.y" - function yy_r4(){ $section = trim($this->yystack[$this->yyidx + -2]->minor,'[]'); - if (substr($section, 0, 1) != '.') { - $this->add_section_vars($section, $this->yystack[$this->yyidx + 0]->minor); - } elseif ($this->smarty->config_read_hidden) { - $this->add_section_vars(substr($section,1), $this->yystack[$this->yyidx + 0]->minor); - } - $this->_retvalue = null; } -#line 639 "smarty_internal_configfileparser.php" -#line 146 "smarty_internal_configfileparser.y" - function yy_r5(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; } -#line 642 "smarty_internal_configfileparser.php" -#line 147 "smarty_internal_configfileparser.y" - function yy_r6(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor, Array($this->yystack[$this->yyidx + 0]->minor)); } -#line 645 "smarty_internal_configfileparser.php" -#line 148 "smarty_internal_configfileparser.y" - function yy_r7(){ $this->_retvalue = Array(); } #line 648 "smarty_internal_configfileparser.php" -#line 152 "smarty_internal_configfileparser.y" - function yy_r8(){ $this->_retvalue = Array("key" => $this->yystack[$this->yyidx + -2]->minor, "value" => $this->yystack[$this->yyidx + 0]->minor); } +#line 136 "smarty_internal_configfileparser.y" + function yy_r4(){ $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = null; } #line 651 "smarty_internal_configfileparser.php" -#line 154 "smarty_internal_configfileparser.y" - function yy_r9(){ $this->_retvalue = (float) $this->yystack[$this->yyidx + 0]->minor; } +#line 137 "smarty_internal_configfileparser.y" + function yy_r5(){ if ($this->smarty->config_read_hidden) { $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor); } $this->_retvalue = null; } #line 654 "smarty_internal_configfileparser.php" -#line 155 "smarty_internal_configfileparser.y" - function yy_r10(){ $this->_retvalue = (int) $this->yystack[$this->yyidx + 0]->minor; } +#line 140 "smarty_internal_configfileparser.y" + function yy_r6(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; } #line 657 "smarty_internal_configfileparser.php" -#line 156 "smarty_internal_configfileparser.y" - function yy_r11(){ $this->_retvalue = $this->parse_bool($this->yystack[$this->yyidx + 0]->minor); } +#line 141 "smarty_internal_configfileparser.y" + function yy_r7(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor, Array($this->yystack[$this->yyidx + 0]->minor)); } #line 660 "smarty_internal_configfileparser.php" -#line 157 "smarty_internal_configfileparser.y" - function yy_r12(){ $this->_retvalue = self::parse_single_quoted_string($this->yystack[$this->yyidx + 0]->minor); } +#line 142 "smarty_internal_configfileparser.y" + function yy_r8(){ $this->_retvalue = Array(); } #line 663 "smarty_internal_configfileparser.php" -#line 158 "smarty_internal_configfileparser.y" - function yy_r13(){ $this->_retvalue = self::parse_double_quoted_string($this->yystack[$this->yyidx + 0]->minor); } +#line 146 "smarty_internal_configfileparser.y" + function yy_r9(){ $this->_retvalue = Array("key" => $this->yystack[$this->yyidx + -2]->minor, "value" => $this->yystack[$this->yyidx + 0]->minor); } #line 666 "smarty_internal_configfileparser.php" -#line 159 "smarty_internal_configfileparser.y" - function yy_r14(){ $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[$this->yyidx + 0]->minor); } +#line 148 "smarty_internal_configfileparser.y" + function yy_r10(){ $this->_retvalue = (float) $this->yystack[$this->yyidx + 0]->minor; } #line 669 "smarty_internal_configfileparser.php" -#line 160 "smarty_internal_configfileparser.y" - function yy_r15(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } +#line 149 "smarty_internal_configfileparser.y" + function yy_r11(){ $this->_retvalue = (int) $this->yystack[$this->yyidx + 0]->minor; } #line 672 "smarty_internal_configfileparser.php" +#line 150 "smarty_internal_configfileparser.y" + function yy_r12(){ $this->_retvalue = $this->parse_bool($this->yystack[$this->yyidx + 0]->minor); } +#line 675 "smarty_internal_configfileparser.php" +#line 151 "smarty_internal_configfileparser.y" + function yy_r13(){ $this->_retvalue = self::parse_single_quoted_string($this->yystack[$this->yyidx + 0]->minor); } +#line 678 "smarty_internal_configfileparser.php" +#line 152 "smarty_internal_configfileparser.y" + function yy_r14(){ $this->_retvalue = self::parse_double_quoted_string($this->yystack[$this->yyidx + 0]->minor); } +#line 681 "smarty_internal_configfileparser.php" +#line 153 "smarty_internal_configfileparser.y" + function yy_r15(){ $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[$this->yyidx + 0]->minor); } +#line 684 "smarty_internal_configfileparser.php" +#line 154 "smarty_internal_configfileparser.y" + function yy_r16(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } +#line 687 "smarty_internal_configfileparser.php" private $_retvalue; @@ -736,7 +751,7 @@ static public $yy_action = array( $this->internalError = true; $this->yymajor = $yymajor; $this->compiler->trigger_config_file_error(); -#line 735 "smarty_internal_configfileparser.php" +#line 750 "smarty_internal_configfileparser.php" } function yy_accept() @@ -753,7 +768,7 @@ static public $yy_action = array( $this->internalError = false; $this->retvalue = $this->_retvalue; //echo $this->retvalue."\n\n"; -#line 753 "smarty_internal_configfileparser.php" +#line 768 "smarty_internal_configfileparser.php" } function doParse($yymajor, $yytokenvalue)