PATH:
home
/
letacommog
/
crmleta
/
libraries
/
Smarty
/
libs
/
sysplugins
<?php /** * Smarty Internal Plugin Configfilelexer * * This is the lexer to break the config file source into tokens * @package Smarty * @subpackage Config * @author Uwe Tews */ /** * Smarty Internal Plugin Configfilelexer */ class Smarty_Internal_Configfilelexer { public $data; public $counter; public $token; public $value; public $node; public $line; private $state = 1; public $smarty_token_names = array ( // Text for parser error messages ); function __construct($data, $smarty) { // set instance object self::instance($this); $this->data = $data . "\n"; //now all lines are \n-terminated $this->counter = 0; $this->line = 1; $this->smarty = $smarty; $this->mbstring_overload = ini_get('mbstring.func_overload') & 2; } public static function &instance($new_instance = null) { static $instance = null; if (isset($new_instance) && is_object($new_instance)) $instance = $new_instance; return $instance; } private $_yy_state = 1; private $_yy_stack = array(); function yylex() { return $this->{'yylex' . $this->_yy_state}(); } function yypushstate($state) { array_push($this->_yy_stack, $this->_yy_state); $this->_yy_state = $state; } function yypopstate() { $this->_yy_state = array_pop($this->_yy_stack); } function yybegin($state) { $this->_yy_state = $state; } function yylex1() { $tokenMap = array ( 1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0, 6 => 0, 7 => 0, 8 => 0, ); if ($this->counter >= strlen($this->data)) { return false; // end of input } $yy_global_pattern = "/\G(#|;)|\G(\\[)|\G(\\])|\G(=)|\G([ \t\r]+)|\G(\n)|\G([0-9]*[a-zA-Z_]\\w*)|\G([\S\s])/iS"; do { if ($this->mbstring_overload ? preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) { $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 START'); } 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_r1_' . $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 START = 1; function yy_r1_1($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART; $this->yypushstate(self::COMMENT); } function yy_r1_2($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_OPENB; $this->yypushstate(self::SECTION); } function yy_r1_3($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB; } function yy_r1_4($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL; $this->yypushstate(self::VALUE); } function yy_r1_5($yy_subpatterns) { return false; } function yy_r1_6($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE; } function yy_r1_7($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_ID; } function yy_r1_8($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_OTHER; } function yylex2() { $tokenMap = array ( 1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0, 6 => 0, 7 => 0, 8 => 0, 9 => 0, ); if ($this->counter >= strlen($this->data)) { return false; // end of input } $yy_global_pattern = "/\G([ \t\r]+)|\G(\\d+\\.\\d+(?=[ \t\r]*[\n#;]))|\G(\\d+(?=[ \t\r]*[\n#;]))|\G(\"\"\")|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#;]))|\G(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#;]))|\G([a-zA-Z]+(?=[ \t\r]*[\n#;]))|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/iS"; do { if ($this->mbstring_overload ? preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) { $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 VALUE'); } 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_r2_' . $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 VALUE = 2; function yy_r2_1($yy_subpatterns) { return false; } function yy_r2_2($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_FLOAT; $this->yypopstate(); } function yy_r2_3($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_INT; $this->yypopstate(); } function yy_r2_4($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES; $this->yypushstate(self::TRIPPLE); } function yy_r2_5($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_SINGLE_QUOTED_STRING; $this->yypopstate(); } function yy_r2_6($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING; $this->yypopstate(); } function yy_r2_7($yy_subpatterns) { if (!$this->smarty->config_booleanize || !in_array(strtolower($this->value), Array("true", "false", "on", "off", "yes", "no")) ) { $this->yypopstate(); $this->yypushstate(self::NAKED_STRING_VALUE); return true; //reprocess in new state } else { $this->token = Smarty_Internal_Configfileparser::TPC_BOOL; $this->yypopstate(); } } function yy_r2_8($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; $this->yypopstate(); } function yy_r2_9($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; $this->value = ""; $this->yypopstate(); } function yylex3() { $tokenMap = array ( 1 => 0, ); if ($this->counter >= strlen($this->data)) { return false; // end of input } $yy_global_pattern = "/\G([^\n]+?(?=[ \t\r]*\n))/iS"; do { if ($this->mbstring_overload ? preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) { $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 NAKED_STRING_VALUE'); } 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_r3_' . $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 NAKED_STRING_VALUE = 3; function yy_r3_1($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; $this->yypopstate(); } function yylex4() { $tokenMap = array ( 1 => 0, 2 => 0, 3 => 0, ); if ($this->counter >= strlen($this->data)) { return false; // end of input } $yy_global_pattern = "/\G([ \t\r]+)|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/iS"; do { if ($this->mbstring_overload ? preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) { $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 COMMENT'); } 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_r4_' . $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 COMMENT = 4; function yy_r4_1($yy_subpatterns) { return false; } function yy_r4_2($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; } function yy_r4_3($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE; $this->yypopstate(); } function yylex5() { $tokenMap = array ( 1 => 0, 2 => 0, ); if ($this->counter >= strlen($this->data)) { return false; // end of input } $yy_global_pattern = "/\G(\\.)|\G(.*?(?=[\.=[\]\r\n]))/iS"; do { if ($this->mbstring_overload ? preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) { $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(); } function yylex6() { $tokenMap = array ( 1 => 0, 2 => 0, ); if ($this->counter >= strlen($this->data)) { return false; // end of input } $yy_global_pattern = "/\G(\"\"\"(?=[ \t\r]*[\n#;]))|\G([\S\s])/iS"; do { if ($this->mbstring_overload ? preg_match($yy_global_pattern, substr($this->data, $this->counter), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) { $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 TRIPPLE'); } 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_r6_' . $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 TRIPPLE = 6; function yy_r6_1($yy_subpatterns) { $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES_END; $this->yypopstate(); $this->yypushstate(self::START); } function yy_r6_2($yy_subpatterns) { $to = strlen($this->data); preg_match("/\"\"\"[ \t\r]*[\n#;]/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter); if (isset($match[0][1])) { $to = $match[0][1]; } $this->value = substr($this->data,$this->counter,$to-$this->counter); $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_TEXT; } } ?>
[+]
..
[-] smarty_internal_compile_for.php
[edit]
[-] smarty_internal_compile_while.php
[edit]
[-] smarty_internal_template.php
[edit]
[-] smarty_security.php
[edit]
[-] smarty_internal_compile_setfilter.php
[edit]
[-] smarty_internal_filter_handler.php
[edit]
[-] smarty_internal_resource_string.php
[edit]
[-] smarty_internal_data.php
[edit]
[-] smarty_internal_compile_include.php
[edit]
[-] smarty_internal_compile_nocache.php
[edit]
[-] smarty_internal_resource_file.php
[edit]
[-] smarty_internal_compile_include_php.php
[edit]
[-] smarty_internal_compile_break.php
[edit]
[-] smarty_internal_nocache_insert.php
[edit]
[-] smarty_internal_configfileparser.php
[edit]
[-] smarty_resource_uncompiled.php
[edit]
[-] smarty_internal_resource_extends.php
[edit]
[-] smarty_internal_compile_private_print_expression.php
[edit]
[-] smarty_internal_compile_extends.php
[edit]
[-] smarty_internal_debug.php
[edit]
[-] smarty_internal_write_file.php
[edit]
[-] smarty_resource.php
[edit]
[-] smarty_internal_templatebase.php
[edit]
[-] smarty_cacheresource_keyvaluestore.php
[edit]
[-] smarty_internal_compile_append.php
[edit]
[-] smarty_internal_compilebase.php
[edit]
[-] smarty_internal_compile_if.php
[edit]
[-] smarty_resource_recompiled.php
[edit]
[-] smarty_internal_compile_private_block_plugin.php
[edit]
[-] smarty_internal_resource_registered.php
[edit]
[-] smarty_internal_parsetree.php
[edit]
[-] smarty_internal_function_call_handler.php
[edit]
[-] smarty_internal_compile_private_modifier.php
[edit]
[-] smarty_internal_compile_foreach.php
[edit]
[-] smarty_internal_templateparser.php
[edit]
[-] smarty_internal_compile_capture.php
[edit]
[-] smarty_internal_compile_private_registered_block.php
[edit]
[-] smarty_internal_compile_private_object_block_function.php
[edit]
[-] smarty_internal_utility.php
[edit]
[-] smarty_internal_compile_config_load.php
[edit]
[-] smarty_internal_compile_block.php
[edit]
[-] smarty_resource_custom.php
[edit]
[-] smarty_internal_resource_stream.php
[edit]
[-] smarty_internal_resource_eval.php
[edit]
[-] smarty_internal_templatelexer.php
[edit]
[-] smarty_internal_compile_call.php
[edit]
[-] smarty_internal_compile_insert.php
[edit]
[-] smarty_internal_compile_section.php
[edit]
[-] smarty_config_source.php
[edit]
[-] smarty_internal_config.php
[edit]
[-] smarty_internal_smartytemplatecompiler.php
[edit]
[-] smarty_cacheresource_custom.php
[edit]
[-] smarty_internal_resource_php.php
[edit]
[-] smarty_internal_compile_function.php
[edit]
[-] smarty_internal_compile_private_object_function.php
[edit]
[-] smarty_internal_configfilelexer.php
[edit]
[-] smarty_cacheresource.php
[edit]
[-] smarty_internal_cacheresource_file.php
[edit]
[-] smarty_internal_compile_assign.php
[edit]
[-] smarty_internal_config_file_compiler.php
[edit]
[-] smarty_internal_compile_eval.php
[edit]
[-] smarty_internal_templatecompilerbase.php
[edit]
[-] smarty_internal_compile_private_registered_function.php
[edit]
[-] smarty_internal_compile_rdelim.php
[edit]
[-] smarty_internal_compile_ldelim.php
[edit]
[-] smarty_internal_compile_private_special_variable.php
[edit]
[-] smarty_internal_compile_private_function_plugin.php
[edit]
[-] smarty_internal_compile_debug.php
[edit]
[-] smarty_internal_get_include_path.php
[edit]
[-] smarty_internal_compile_continue.php
[edit]