2009-03-22 16:09:05 +00:00
< ? php
/**
2015-05-16 16:33:50 +02:00
* Smarty Internal Plugin Configfilelexer
*
* This is the lexer to break the config file source into tokens
*
* @ package Smarty
* @ subpackage Config
* @ author Uwe Tews
*/
2009-03-22 16:09:05 +00:00
/**
2015-05-16 16:33:50 +02:00
* Smarty_Internal_Configfilelexer
*
* This is the config file lexer .
* It is generated from the smarty_internal_configfilelexer . plex file
*
* @ package Smarty
* @ subpackage Compiler
* @ author Uwe Tews
*/
2009-03-22 16:09:05 +00:00
class Smarty_Internal_Configfilelexer
{
2014-12-13 23:02:29 +01:00
/**
* Source
*
* @ var string
*/
2009-03-22 16:09:05 +00:00
public $data ;
2015-05-16 16:33:50 +02:00
2014-12-13 23:02:29 +01:00
/**
* byte counter
*
* @ var int
*/
2009-03-22 16:09:05 +00:00
public $counter ;
2015-05-16 16:33:50 +02:00
2014-12-13 23:02:29 +01:00
/**
* token number
*
* @ var int
*/
2009-03-22 16:09:05 +00:00
public $token ;
2015-05-16 16:33:50 +02:00
2014-12-13 23:02:29 +01:00
/**
* token value
*
* @ var string
*/
2009-03-22 16:09:05 +00:00
public $value ;
2015-05-16 16:33:50 +02:00
2014-12-13 23:02:29 +01:00
/**
* current line
*
* @ var int
*/
2009-03-22 16:09:05 +00:00
public $line ;
2015-05-16 16:33:50 +02:00
2014-12-13 23:02:29 +01:00
/**
* state number
*
* @ var int
*/
public $state = 1 ;
2015-05-16 16:33:50 +02:00
2014-12-13 23:02:29 +01:00
/**
* Smarty object
*
* @ var Smarty
*/
public $smarty = null ;
2015-05-16 16:33:50 +02:00
2014-12-13 23:02:29 +01:00
/**
* compiler object
*
* @ var Smarty_Internal_Config_File_Compiler
*/
private $compiler = null ;
2015-05-16 16:33:50 +02:00
2014-12-13 23:02:29 +01:00
/**
* copy of config_booleanize
*
* @ var bool
*/
private $configBooleanize = false ;
2015-05-16 16:33:50 +02:00
2014-12-13 23:02:29 +01:00
/**
* trace file
*
* @ var resource
*/
2013-12-15 15:25:50 +00:00
public $yyTraceFILE ;
2015-05-16 16:33:50 +02:00
2014-12-13 23:02:29 +01:00
/**
* trace prompt
*
* @ var string
*/
2013-12-15 15:25:50 +00:00
public $yyTracePrompt ;
2015-05-16 16:33:50 +02:00
2014-12-13 23:02:29 +01:00
/**
* state names
*
* @ var array
*/
2015-06-11 23:33:30 +02:00
public $state_name = array ( 1 => 'START' , 2 => 'VALUE' , 3 => 'NAKED_STRING_VALUE' , 4 => 'COMMENT' , 5 => 'SECTION' ,
6 => 'TRIPPLE' );
2015-05-16 16:33:50 +02:00
/**
* storage for assembled token patterns
*
* @ var sring
*/
private $yy_global_pattern1 = null ;
private $yy_global_pattern2 = null ;
private $yy_global_pattern3 = null ;
private $yy_global_pattern4 = null ;
private $yy_global_pattern5 = null ;
private $yy_global_pattern6 = null ;
2014-12-13 23:02:29 +01:00
/**
* token names
*
* @ var array
*/
public $smarty_token_names = array ( // Text for parser error messages
2014-06-17 20:24:20 +00:00
);
2014-12-13 23:02:29 +01:00
/**
* constructor
*
* @ param string $data template source
* @ param Smarty_Internal_Config_File_Compiler $compiler
*/
function __construct ( $data , Smarty_Internal_Config_File_Compiler $compiler )
2009-03-22 16:09:05 +00:00
{
// set instance object
2014-06-17 20:24:20 +00:00
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 ;
2014-07-16 21:40:57 +00:00
if ( preg_match ( '/^\xEF\xBB\xBF/' , $this -> data , $match )) {
2014-07-16 18:21:25 +00:00
$this -> counter += strlen ( $match [ 0 ]);
}
2009-03-22 16:09:05 +00:00
$this -> line = 1 ;
2014-06-06 02:40:04 +00:00
$this -> compiler = $compiler ;
$this -> smarty = $compiler -> smarty ;
2014-12-30 18:16:51 +01:00
$this -> configBooleanize = $this -> smarty -> config_booleanize ;
2011-10-06 14:36:30 +00:00
}
2014-06-17 20:24:20 +00:00
2013-07-15 18:18:28 +00:00
public static function & instance ( $new_instance = null )
2009-03-22 16:09:05 +00:00
{
static $instance = null ;
2014-06-17 20:24:20 +00:00
if ( isset ( $new_instance ) && is_object ( $new_instance )) {
2009-03-22 16:09:05 +00:00
$instance = $new_instance ;
2014-06-17 20:24:20 +00:00
}
2009-03-22 16:09:05 +00:00
return $instance ;
2014-06-17 20:24:20 +00:00
}
2013-12-15 15:25:50 +00:00
public function PrintTrace ()
{
$this -> yyTraceFILE = fopen ( 'php://output' , 'w' );
$this -> yyTracePrompt = '<br>' ;
2011-04-01 08:41:57 +00:00
}
2009-03-22 16:09:05 +00:00
private $_yy_state = 1 ;
2015-05-16 16:33:50 +02:00
2009-03-22 16:09:05 +00:00
private $_yy_stack = array ();
2013-07-14 21:12:08 +00:00
public function yylex ()
2009-03-22 16:09:05 +00:00
{
return $this -> { 'yylex' . $this -> _yy_state }();
}
2013-07-14 21:12:08 +00:00
public function yypushstate ( $state )
2009-03-22 16:09:05 +00:00
{
2013-12-15 15:25:50 +00:00
if ( $this -> yyTraceFILE ) {
2015-05-16 16:33:50 +02:00
fprintf ( $this -> yyTraceFILE , " %sState push %s \n " , $this -> yyTracePrompt , isset ( $this -> state_name [ $this -> _yy_state ]) ? $this -> state_name [ $this -> _yy_state ] : $this -> _yy_state );
2013-12-15 15:25:50 +00:00
}
2009-03-22 16:09:05 +00:00
array_push ( $this -> _yy_stack , $this -> _yy_state );
$this -> _yy_state = $state ;
2013-12-15 15:25:50 +00:00
if ( $this -> yyTraceFILE ) {
2015-05-16 16:33:50 +02:00
fprintf ( $this -> yyTraceFILE , " %snew State %s \n " , $this -> yyTracePrompt , isset ( $this -> state_name [ $this -> _yy_state ]) ? $this -> state_name [ $this -> _yy_state ] : $this -> _yy_state );
2013-12-15 15:25:50 +00:00
}
2009-03-22 16:09:05 +00:00
}
2013-07-14 21:12:08 +00:00
public function yypopstate ()
2009-03-22 16:09:05 +00:00
{
2015-05-16 16:33:50 +02:00
if ( $this -> yyTraceFILE ) {
fprintf ( $this -> yyTraceFILE , " %sState pop %s \n " , $this -> yyTracePrompt , isset ( $this -> state_name [ $this -> _yy_state ]) ? $this -> state_name [ $this -> _yy_state ] : $this -> _yy_state );
2013-12-15 15:25:50 +00:00
}
2015-05-16 16:33:50 +02:00
$this -> _yy_state = array_pop ( $this -> _yy_stack );
2013-12-15 15:25:50 +00:00
if ( $this -> yyTraceFILE ) {
2015-05-16 16:33:50 +02:00
fprintf ( $this -> yyTraceFILE , " %snew State %s \n " , $this -> yyTracePrompt , isset ( $this -> state_name [ $this -> _yy_state ]) ? $this -> state_name [ $this -> _yy_state ] : $this -> _yy_state );
2013-12-15 15:25:50 +00:00
}
2009-03-22 16:09:05 +00:00
}
2013-07-14 21:12:08 +00:00
public function yybegin ( $state )
2009-03-22 16:09:05 +00:00
{
2015-05-16 16:33:50 +02:00
$this -> _yy_state = $state ;
2013-12-15 15:25:50 +00:00
if ( $this -> yyTraceFILE ) {
2015-05-16 16:33:50 +02:00
fprintf ( $this -> yyTraceFILE , " %sState set %s \n " , $this -> yyTracePrompt , isset ( $this -> state_name [ $this -> _yy_state ]) ? $this -> state_name [ $this -> _yy_state ] : $this -> _yy_state );
2013-12-15 15:25:50 +00:00
}
2009-03-22 16:09:05 +00:00
}
2013-07-14 21:12:08 +00:00
public function yylex1 ()
2009-03-22 16:09:05 +00:00
{
2015-05-16 16:33:50 +02:00
if ( ! isset ( $this -> yy_global_pattern1 )) {
2015-06-11 23:33:30 +02:00
$this -> yy_global_pattern1 = " / \ G(#|;)| \ G( \\ [)| \ G( \\ ])| \ G(=)| \ G([ \t \r ]+)| \ G( \n )| \ G([0-9]*[a-zA-Z_] \\ w*)| \ G([ \ S \ s])/isS " ;
2015-05-16 16:33:50 +02:00
}
if ( $this -> counter >= strlen ( $this -> data )) {
2009-03-22 16:09:05 +00:00
return false ; // end of input
}
do {
2015-05-16 16:33:50 +02:00
if ( preg_match ( $this -> yy_global_pattern1 , $this -> data , $yymatches , null , $this -> counter )) {
2009-03-22 16:09:05 +00:00
$yysubmatches = $yymatches ;
2015-06-11 23:33:30 +02:00
if ( strlen ( $yysubmatches [ 0 ]) < 200 ) {
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yysubmatches );
} else {
$yymatches = array_filter ( $yymatches , 'strlen' );
}
2015-05-16 16:33:50 +02:00
if ( empty ( $yymatches )) {
throw new Exception ( 'Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr ( $this -> data , $this -> counter , 5 ) . '... state START' );
2009-03-22 16:09:05 +00:00
}
next ( $yymatches ); // skip global match
$this -> token = key ( $yymatches ); // token number
$this -> value = current ( $yymatches ); // token value
2015-05-16 16:33:50 +02:00
$r = $this -> { 'yy_r1_' . $this -> token }();
2009-03-22 16:09:05 +00:00
if ( $r === null ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2009-03-22 16:09:05 +00:00
$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 ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2009-03-22 16:09:05 +00:00
$this -> line += substr_count ( $this -> value , " \n " );
2015-05-16 16:33:50 +02:00
if ( $this -> counter >= strlen ( $this -> data )) {
2009-03-22 16:09:05 +00:00
return false ; // end of input
}
// skip this token
continue ;
2015-05-16 16:33:50 +02:00
}
} else {
throw new Exception ( 'Unexpected input at line' . $this -> line . ': ' . $this -> data [ $this -> counter ]);
2009-03-22 16:09:05 +00:00
}
break ;
} while ( true );
} // end function
2014-12-30 18:16:51 +01:00
const START = 1 ;
2009-03-22 16:09:05 +00:00
2015-05-16 16:33:50 +02:00
function yy_r1_1 ()
2009-03-22 16:09:05 +00:00
{
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_COMMENTSTART ;
$this -> yypushstate ( self :: COMMENT );
2009-03-22 16:09:05 +00:00
}
2015-05-16 16:33:50 +02:00
function yy_r1_2 ()
2009-03-22 16:09:05 +00:00
{
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_OPENB ;
$this -> yypushstate ( self :: SECTION );
2009-03-22 16:09:05 +00:00
}
2015-05-16 16:33:50 +02:00
function yy_r1_3 ()
2009-03-22 16:09:05 +00:00
{
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_CLOSEB ;
2009-03-22 16:09:05 +00:00
}
2015-05-16 16:33:50 +02:00
function yy_r1_4 ()
2009-03-22 16:09:05 +00:00
{
2013-12-15 15:25:50 +00:00
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_EQUAL ;
$this -> yypushstate ( self :: VALUE );
2009-03-22 16:09:05 +00:00
}
2015-05-16 16:33:50 +02:00
function yy_r1_5 ()
2009-03-22 16:09:05 +00:00
{
2015-05-16 16:33:50 +02:00
return false ;
2009-03-22 16:09:05 +00:00
}
2015-05-16 16:33:50 +02:00
function yy_r1_6 ()
2009-03-22 16:09:05 +00:00
{
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_NEWLINE ;
2009-03-22 16:09:05 +00:00
}
2015-05-16 16:33:50 +02:00
function yy_r1_7 ()
2011-12-18 15:39:51 +00:00
{
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_ID ;
2011-12-18 15:39:51 +00:00
}
2009-12-27 15:06:49 +00:00
2015-05-16 16:33:50 +02:00
function yy_r1_8 ()
{
2014-12-30 18:16:51 +01:00
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_OTHER ;
}
2014-12-30 18:16:51 +01:00
2013-07-14 21:12:08 +00:00
public function yylex2 ()
2009-12-27 15:06:49 +00:00
{
2015-05-16 16:33:50 +02:00
if ( ! isset ( $this -> yy_global_pattern2 )) {
2015-06-11 23:33:30 +02:00
$this -> yy_global_pattern2 = " / \ 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 )/isS " ;
2015-05-16 16:33:50 +02:00
}
if ( $this -> counter >= strlen ( $this -> data )) {
2009-12-27 15:06:49 +00:00
return false ; // end of input
}
do {
2015-05-16 16:33:50 +02:00
if ( preg_match ( $this -> yy_global_pattern2 , $this -> data , $yymatches , null , $this -> counter )) {
2009-12-27 15:06:49 +00:00
$yysubmatches = $yymatches ;
2015-06-11 23:33:30 +02:00
if ( strlen ( $yysubmatches [ 0 ]) < 200 ) {
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yysubmatches );
} else {
$yymatches = array_filter ( $yymatches , 'strlen' );
}
2015-05-16 16:33:50 +02:00
if ( empty ( $yymatches )) {
throw new Exception ( 'Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr ( $this -> data , $this -> counter , 5 ) . '... state VALUE' );
2009-12-27 15:06:49 +00:00
}
next ( $yymatches ); // skip global match
$this -> token = key ( $yymatches ); // token number
$this -> value = current ( $yymatches ); // token value
2015-05-16 16:33:50 +02:00
$r = $this -> { 'yy_r2_' . $this -> token }();
2009-12-27 15:06:49 +00:00
if ( $r === null ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2009-12-27 15:06:49 +00:00
$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 ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2009-12-27 15:06:49 +00:00
$this -> line += substr_count ( $this -> value , " \n " );
2015-05-16 16:33:50 +02:00
if ( $this -> counter >= strlen ( $this -> data )) {
2009-12-27 15:06:49 +00:00
return false ; // end of input
}
// skip this token
continue ;
2015-05-16 16:33:50 +02:00
}
} else {
throw new Exception ( 'Unexpected input at line' . $this -> line . ': ' . $this -> data [ $this -> counter ]);
2009-12-27 15:06:49 +00:00
}
break ;
} while ( true );
} // end function
2014-12-30 18:16:51 +01:00
const VALUE = 2 ;
2013-12-15 15:25:50 +00:00
2015-05-16 16:33:50 +02:00
function yy_r2_1 ()
2009-12-27 15:06:49 +00:00
{
2015-05-16 16:33:50 +02:00
return false ;
2009-12-27 15:06:49 +00:00
}
2015-05-16 16:33:50 +02:00
function yy_r2_2 ()
2009-12-27 15:06:49 +00:00
{
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_FLOAT ;
$this -> yypopstate ();
2009-12-27 15:06:49 +00:00
}
2015-05-16 16:33:50 +02:00
function yy_r2_3 ()
2009-12-27 15:06:49 +00:00
{
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_INT ;
$this -> yypopstate ();
2009-12-27 15:06:49 +00:00
}
2015-05-16 16:33:50 +02:00
function yy_r2_4 ()
2009-12-27 15:06:49 +00:00
{
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_TRIPPLE_QUOTES ;
$this -> yypushstate ( self :: TRIPPLE );
2009-12-27 15:06:49 +00:00
}
2015-05-16 16:33:50 +02:00
function yy_r2_5 ()
2009-12-27 15:06:49 +00:00
{
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_SINGLE_QUOTED_STRING ;
$this -> yypopstate ();
2009-12-27 15:06:49 +00:00
}
2015-05-16 16:33:50 +02:00
function yy_r2_6 ()
2009-12-27 15:06:49 +00:00
{
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_DOUBLE_QUOTED_STRING ;
2014-12-30 18:16:51 +01:00
$this -> yypopstate ();
}
2015-05-16 16:33:50 +02:00
function yy_r2_7 ()
2009-12-27 15:06:49 +00:00
{
2015-06-11 23:33:30 +02:00
if ( ! $this -> configBooleanize || ! in_array ( strtolower ( $this -> value ), Array ( " true " , " false " , " on " , " off " , " yes " ,
" no " ))
) {
2015-05-16 16:33:50 +02:00
$this -> yypopstate ();
$this -> yypushstate ( self :: NAKED_STRING_VALUE );
return true ; //reprocess in new state
} else {
$this -> token = Smarty_Internal_Configfileparser :: TPC_BOOL ;
$this -> yypopstate ();
}
2009-12-27 15:06:49 +00:00
}
2015-05-16 16:33:50 +02:00
function yy_r2_8 ()
2009-12-27 15:06:49 +00:00
{
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_NAKED_STRING ;
$this -> yypopstate ();
2009-12-27 15:06:49 +00:00
}
2015-05-16 16:33:50 +02:00
function yy_r2_9 ()
{
2014-12-30 18:16:51 +01:00
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_NAKED_STRING ;
$this -> value = " " ;
$this -> yypopstate ();
}
2014-12-30 18:16:51 +01:00
2013-07-14 21:12:08 +00:00
public function yylex3 ()
2009-12-27 15:06:49 +00:00
{
2015-05-16 16:33:50 +02:00
if ( ! isset ( $this -> yy_global_pattern3 )) {
2015-06-11 23:33:30 +02:00
$this -> yy_global_pattern3 = " / \ G([^ \n ]+?(?=[ \t \r ]* \n ))/isS " ;
2015-05-16 16:33:50 +02:00
}
if ( $this -> counter >= strlen ( $this -> data )) {
2009-12-27 15:06:49 +00:00
return false ; // end of input
}
do {
2015-05-16 16:33:50 +02:00
if ( preg_match ( $this -> yy_global_pattern3 , $this -> data , $yymatches , null , $this -> counter )) {
2009-12-27 15:06:49 +00:00
$yysubmatches = $yymatches ;
2015-06-11 23:33:30 +02:00
if ( strlen ( $yysubmatches [ 0 ]) < 200 ) {
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yysubmatches );
} else {
$yymatches = array_filter ( $yymatches , 'strlen' );
}
2015-05-16 16:33:50 +02:00
if ( empty ( $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' );
2009-12-27 15:06:49 +00:00
}
next ( $yymatches ); // skip global match
$this -> token = key ( $yymatches ); // token number
$this -> value = current ( $yymatches ); // token value
2015-05-16 16:33:50 +02:00
$r = $this -> { 'yy_r3_' . $this -> token }();
2009-12-27 15:06:49 +00:00
if ( $r === null ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2009-12-27 15:06:49 +00:00
$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 ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2009-12-27 15:06:49 +00:00
$this -> line += substr_count ( $this -> value , " \n " );
2015-05-16 16:33:50 +02:00
if ( $this -> counter >= strlen ( $this -> data )) {
2009-12-27 15:06:49 +00:00
return false ; // end of input
}
// skip this token
continue ;
2015-05-16 16:33:50 +02:00
}
} else {
throw new Exception ( 'Unexpected input at line' . $this -> line . ': ' . $this -> data [ $this -> counter ]);
2009-12-27 15:06:49 +00:00
}
break ;
} while ( true );
} // end function
2014-12-30 18:16:51 +01:00
const NAKED_STRING_VALUE = 3 ;
2015-05-16 16:33:50 +02:00
function yy_r3_1 ()
2009-03-22 16:09:05 +00:00
{
2015-05-16 16:33:50 +02: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
2013-07-14 21:12:08 +00:00
public function yylex4 ()
2009-03-22 16:09:05 +00:00
{
2015-05-16 16:33:50 +02:00
if ( ! isset ( $this -> yy_global_pattern4 )) {
2015-06-11 23:33:30 +02:00
$this -> yy_global_pattern4 = " / \ G([ \t \r ]+)| \ G([^ \n ]+?(?=[ \t \r ]* \n ))| \ G( \n )/isS " ;
2015-05-16 16:33:50 +02:00
}
if ( $this -> counter >= strlen ( $this -> data )) {
2009-12-27 15:06:49 +00:00
return false ; // end of input
}
2009-03-22 16:09:05 +00:00
2009-12-27 15:06:49 +00:00
do {
2015-05-16 16:33:50 +02:00
if ( preg_match ( $this -> yy_global_pattern4 , $this -> data , $yymatches , null , $this -> counter )) {
2009-12-27 15:06:49 +00:00
$yysubmatches = $yymatches ;
2015-06-11 23:33:30 +02:00
if ( strlen ( $yysubmatches [ 0 ]) < 200 ) {
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yysubmatches );
} else {
$yymatches = array_filter ( $yymatches , 'strlen' );
}
2015-05-16 16:33:50 +02:00
if ( empty ( $yymatches )) {
throw new Exception ( 'Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr ( $this -> data , $this -> counter , 5 ) . '... state COMMENT' );
2009-12-27 15:06:49 +00:00
}
next ( $yymatches ); // skip global match
$this -> token = key ( $yymatches ); // token number
$this -> value = current ( $yymatches ); // token value
2015-05-16 16:33:50 +02:00
$r = $this -> { 'yy_r4_' . $this -> token }();
2009-12-27 15:06:49 +00:00
if ( $r === null ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2009-12-27 15:06:49 +00:00
$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 ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2009-12-27 15:06:49 +00:00
$this -> line += substr_count ( $this -> value , " \n " );
2015-05-16 16:33:50 +02:00
if ( $this -> counter >= strlen ( $this -> data )) {
2009-12-27 15:06:49 +00:00
return false ; // end of input
}
// skip this token
continue ;
2015-05-16 16:33:50 +02:00
}
} else {
throw new Exception ( 'Unexpected input at line' . $this -> line . ': ' . $this -> data [ $this -> counter ]);
2009-12-27 15:06:49 +00:00
}
break ;
} while ( true );
} // end function
2014-12-30 18:16:51 +01:00
const COMMENT = 4 ;
2013-12-15 15:25:50 +00:00
2015-05-16 16:33:50 +02:00
function yy_r4_1 ()
2009-03-22 16:09:05 +00:00
{
2015-05-16 16:33:50 +02:00
return false ;
2009-03-22 16:09:05 +00:00
}
2015-05-16 16:33:50 +02:00
function yy_r4_2 ()
2009-03-22 16:09:05 +00:00
{
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_NAKED_STRING ;
2009-03-22 16:09:05 +00:00
}
2015-05-16 16:33:50 +02:00
function yy_r4_3 ()
{
2014-12-30 18:16:51 +01:00
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_NEWLINE ;
$this -> yypopstate ();
}
2014-12-30 18:16:51 +01:00
2013-07-14 21:12:08 +00:00
public function yylex5 ()
2010-01-16 12:03:53 +00:00
{
2015-05-16 16:33:50 +02:00
if ( ! isset ( $this -> yy_global_pattern5 )) {
2015-06-11 23:33:30 +02:00
$this -> yy_global_pattern5 = " / \ G( \\ .)| \ G(.*?(?=[ \ .=[ \ ] \r \n ]))/isS " ;
2015-05-16 16:33:50 +02:00
}
if ( $this -> counter >= strlen ( $this -> data )) {
2010-01-16 12:03:53 +00:00
return false ; // end of input
}
do {
2015-05-16 16:33:50 +02:00
if ( preg_match ( $this -> yy_global_pattern5 , $this -> data , $yymatches , null , $this -> counter )) {
2010-01-16 12:03:53 +00:00
$yysubmatches = $yymatches ;
2015-06-11 23:33:30 +02:00
if ( strlen ( $yysubmatches [ 0 ]) < 200 ) {
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yysubmatches );
} else {
$yymatches = array_filter ( $yymatches , 'strlen' );
}
2015-05-16 16:33:50 +02:00
if ( empty ( $yymatches )) {
throw new Exception ( 'Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr ( $this -> data , $this -> counter , 5 ) . '... state SECTION' );
2010-01-16 12:03:53 +00:00
}
next ( $yymatches ); // skip global match
$this -> token = key ( $yymatches ); // token number
$this -> value = current ( $yymatches ); // token value
2015-05-16 16:33:50 +02:00
$r = $this -> { 'yy_r5_' . $this -> token }();
2010-01-16 12:03:53 +00:00
if ( $r === null ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2010-01-16 12:03:53 +00:00
$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 ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2010-01-16 12:03:53 +00:00
$this -> line += substr_count ( $this -> value , " \n " );
2015-05-16 16:33:50 +02:00
if ( $this -> counter >= strlen ( $this -> data )) {
2010-01-16 12:03:53 +00:00
return false ; // end of input
}
// skip this token
continue ;
2015-05-16 16:33:50 +02:00
}
} else {
throw new Exception ( 'Unexpected input at line' . $this -> line . ': ' . $this -> data [ $this -> counter ]);
2010-01-16 12:03:53 +00:00
}
break ;
} while ( true );
} // end function
2014-12-30 18:16:51 +01:00
const SECTION = 5 ;
2015-05-16 16:33:50 +02:00
function yy_r5_1 ()
2010-01-16 12:03:53 +00:00
{
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_DOT ;
2010-01-16 12:03:53 +00:00
}
2015-05-16 16:33:50 +02:00
function yy_r5_2 ()
2010-01-16 12:03:53 +00:00
{
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_SECTION ;
$this -> yypopstate ();
2010-01-16 12:03:53 +00:00
}
2013-07-14 21:12:08 +00:00
public function yylex6 ()
2011-11-01 21:41:12 +00:00
{
2015-05-16 16:33:50 +02:00
if ( ! isset ( $this -> yy_global_pattern6 )) {
2015-06-11 23:33:30 +02:00
$this -> yy_global_pattern6 = " / \ G( \" \" \" (?=[ \t \r ]*[ \n #;]))| \ G([ \ S \ s])/isS " ;
2015-05-16 16:33:50 +02:00
}
if ( $this -> counter >= strlen ( $this -> data )) {
2011-11-01 21:41:12 +00:00
return false ; // end of input
}
do {
2015-05-16 16:33:50 +02:00
if ( preg_match ( $this -> yy_global_pattern6 , $this -> data , $yymatches , null , $this -> counter )) {
2011-11-01 21:41:12 +00:00
$yysubmatches = $yymatches ;
2015-06-11 23:33:30 +02:00
if ( strlen ( $yysubmatches [ 0 ]) < 200 ) {
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yysubmatches );
} else {
$yymatches = array_filter ( $yymatches , 'strlen' );
}
2015-05-16 16:33:50 +02:00
if ( empty ( $yymatches )) {
throw new Exception ( 'Error: lexing failed because a rule matched' . ' an empty string. Input "' . substr ( $this -> data , $this -> counter , 5 ) . '... state TRIPPLE' );
2011-11-01 21:41:12 +00:00
}
next ( $yymatches ); // skip global match
$this -> token = key ( $yymatches ); // token number
$this -> value = current ( $yymatches ); // token value
2015-05-16 16:33:50 +02:00
$r = $this -> { 'yy_r6_' . $this -> token }();
2011-11-01 21:41:12 +00:00
if ( $r === null ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2011-11-01 21:41:12 +00:00
$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 ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2011-11-01 21:41:12 +00:00
$this -> line += substr_count ( $this -> value , " \n " );
2015-05-16 16:33:50 +02:00
if ( $this -> counter >= strlen ( $this -> data )) {
2011-11-01 21:41:12 +00:00
return false ; // end of input
}
// skip this token
continue ;
2015-05-16 16:33:50 +02:00
}
} else {
throw new Exception ( 'Unexpected input at line' . $this -> line . ': ' . $this -> data [ $this -> counter ]);
2011-11-01 21:41:12 +00:00
}
break ;
} while ( true );
} // end function
2014-12-30 18:16:51 +01:00
const TRIPPLE = 6 ;
2011-11-01 21:41:12 +00:00
2015-05-16 16:33:50 +02:00
function yy_r6_1 ()
2011-11-01 21:41:12 +00:00
{
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_TRIPPLE_QUOTES_END ;
$this -> yypopstate ();
$this -> yypushstate ( self :: START );
2011-11-01 21:41:12 +00:00
}
2014-12-30 18:16:51 +01:00
2015-05-16 16:33:50 +02:00
function yy_r6_2 ()
{
2014-12-30 18:16:51 +01:00
2015-05-16 16:33:50 +02:00
$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 ];
} else {
$this -> compiler -> trigger_template_error ( " missing or misspelled literal closing tag " );
}
$this -> value = substr ( $this -> data , $this -> counter , $to - $this -> counter );
$this -> token = Smarty_Internal_Configfileparser :: TPC_TRIPPLE_TEXT ;
}
2015-06-11 23:33:30 +02:00
2011-02-01 12:51:01 +00:00
}