| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  | * Smarty Internal Plugin Configfilelexer | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | * This is the lexer to break the config file source into tokens  | 
					
						
							|  |  |  | * @package Smarty | 
					
						
							|  |  |  | * @subpackage Config | 
					
						
							|  |  |  | * @author Uwe Tews  | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2009-10-31 00:44:58 +00:00
										 |  |  | * Smarty Internal Plugin Configfilelexer | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | */ | 
					
						
							|  |  |  | 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
 | 
					
						
							|  |  |  |    				); | 
					
						
							|  |  |  |     				 | 
					
						
							|  |  |  |     				 | 
					
						
							| 
									
										
										
										
											2009-08-08 17:28:23 +00:00
										 |  |  |     function __construct($data, $smarty) | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     { | 
					
						
							|  |  |  |         // set instance object
 | 
					
						
							|  |  |  |         self::instance($this);  | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  |         $this->data = $data . "\n"; //now all lines are \n-terminated
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |         $this->counter = 0; | 
					
						
							|  |  |  |         $this->line = 1; | 
					
						
							| 
									
										
										
										
											2009-08-08 17:28:23 +00:00
										 |  |  |         $this->smarty = $smarty;  | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |      } | 
					
						
							|  |  |  |     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; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     function yylex1() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $tokenMap = array ( | 
					
						
							|  |  |  |               1 => 0, | 
					
						
							|  |  |  |               2 => 0, | 
					
						
							|  |  |  |               3 => 0, | 
					
						
							|  |  |  |               4 => 0, | 
					
						
							|  |  |  |               5 => 0, | 
					
						
							|  |  |  |               6 => 0, | 
					
						
							| 
									
										
										
										
											2010-01-16 12:03:53 +00:00
										 |  |  |               7 => 0, | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |             ); | 
					
						
							|  |  |  |         if ($this->counter >= strlen($this->data)) { | 
					
						
							|  |  |  |             return false; // end of input
 | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2010-01-16 12:03:53 +00:00
										 |  |  |         $yy_global_pattern = "/^(#)|^(\\[)|^(\\])|^(=)|^([ \t\r]+)|^(\n)|^([0-9]*[a-zA-Z_]\\w*)/"; | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         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 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; | 
					
						
							| 
									
										
										
										
											2009-12-05 15:10:47 +00:00
										 |  |  |                 }            } else { | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |                 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) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  |     $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART; | 
					
						
							|  |  |  |     $this->yypushstate(self::COMMENT); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     } | 
					
						
							|  |  |  |     function yy_r1_2($yy_subpatterns) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-16 12:03:53 +00:00
										 |  |  |     $this->token = Smarty_Internal_Configfileparser::TPC_OPENB; | 
					
						
							|  |  |  |     $this->yypushstate(self::SECTION); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     } | 
					
						
							|  |  |  |     function yy_r1_3($yy_subpatterns) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-16 12:03:53 +00:00
										 |  |  |     $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB; | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     } | 
					
						
							|  |  |  |     function yy_r1_4($yy_subpatterns) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-16 12:03:53 +00:00
										 |  |  |     $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL; | 
					
						
							|  |  |  |     $this->yypushstate(self::VALUE); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     } | 
					
						
							|  |  |  |     function yy_r1_5($yy_subpatterns) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-16 12:03:53 +00:00
										 |  |  |     return false; | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     } | 
					
						
							|  |  |  |     function yy_r1_6($yy_subpatterns) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-16 12:03:53 +00:00
										 |  |  |     $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE; | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     } | 
					
						
							|  |  |  |     function yy_r1_7($yy_subpatterns) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-16 12:03:53 +00:00
										 |  |  |     $this->token = Smarty_Internal_Configfileparser::TPC_ID; | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     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 = "/^([ \t\r]+)|^(\\d+\\.\\d+(?=[ \t\r]*[\n#]))|^(\\d+(?=[ \t\r]*[\n#]))|^('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#]))|^(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#]))|^(\"\"\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"\"\"(?=[ \t\r]*[\n#]))|^([a-zA-Z]+(?=[ \t\r]*[\n#]))|^([^\n]+?(?=[ \t\r]*\n))|^(\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 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_SINGLE_QUOTED_STRING; | 
					
						
							|  |  |  |     $this->yypopstate(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     function yy_r2_5($yy_subpatterns) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING; | 
					
						
							|  |  |  |     $this->yypopstate(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     function yy_r2_6($yy_subpatterns) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_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 = "/^([^\n]+?(?=[ \t\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 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) | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  |     $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; | 
					
						
							|  |  |  |     $this->yypopstate(); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function yylex4() | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  |         $tokenMap = array ( | 
					
						
							|  |  |  |               1 => 0, | 
					
						
							|  |  |  |               2 => 0, | 
					
						
							|  |  |  |               3 => 0, | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |         if ($this->counter >= strlen($this->data)) { | 
					
						
							|  |  |  |             return false; // end of input
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         $yy_global_pattern = "/^([ \t\r]+)|^([^\n]+?(?=[ \t\r]*\n))|^(\n)/"; | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  |         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 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; | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  |     function yy_r4_2($yy_subpatterns) | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  |     $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING; | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  |     function yy_r4_3($yy_subpatterns) | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  |     $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE; | 
					
						
							|  |  |  |     $this->yypopstate(); | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-27 15:06:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-16 12:03:53 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     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(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-22 16:09:05 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-11-14 13:02:48 +00:00
										 |  |  | ?>
 |