2009-03-22 16:09:05 +00:00
< ? php
/**
2014-06-17 20:24:20 +00: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
/**
2014-12-13 23:02:29 +01: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
2014-06-17 20:24:20 +00:00
*/
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 ;
2014-12-13 23:02:29 +01:00
/**
* byte counter
*
* @ var int
*/
2009-03-22 16:09:05 +00:00
public $counter ;
2014-12-13 23:02:29 +01:00
/**
* token number
*
* @ var int
*/
2009-03-22 16:09:05 +00:00
public $token ;
2014-12-13 23:02:29 +01:00
/**
* token value
*
* @ var string
*/
2009-03-22 16:09:05 +00:00
public $value ;
2014-12-13 23:02:29 +01:00
/**
* current line
*
* @ var int
*/
2009-03-22 16:09:05 +00:00
public $line ;
2014-12-13 23:02:29 +01:00
/**
* state number
*
* @ var int
*/
public $state = 1 ;
/**
* Smarty object
*
* @ var Smarty
*/
public $smarty = null ;
/**
* compiler object
*
* @ var Smarty_Internal_Config_File_Compiler
*/
private $compiler = null ;
/**
* copy of config_booleanize
*
* @ var bool
*/
private $configBooleanize = false ;
/**
* trace file
*
* @ var resource
*/
2013-12-15 15:25:50 +00:00
public $yyTraceFILE ;
2014-12-13 23:02:29 +01:00
/**
* trace prompt
*
* @ var string
*/
2013-12-15 15:25:50 +00:00
public $yyTracePrompt ;
2014-12-13 23:02:29 +01:00
/**
* state names
*
* @ var array
*/
2014-06-17 20:24:20 +00:00
public $state_name = array ( 1 => 'START' , 2 => 'VALUE' , 3 => 'NAKED_STRING_VALUE' , 4 => 'COMMENT' , 5 => 'SECTION' , 6 => 'TRIPPLE' );
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 16:03:21 +01:00
$this -> configBooleanize = $compiler -> template -> 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 ;
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 ) {
2014-06-17 20:24:20 +00: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 ) {
2014-06-17 20:24:20 +00: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
{
2014-06-17 20:24:20 +00: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
}
2014-06-17 20:24:20 +00:00
$this -> _yy_state = array_pop ( $this -> _yy_stack );
2013-12-15 15:25:50 +00:00
if ( $this -> yyTraceFILE ) {
2014-06-17 20:24:20 +00: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
{
2014-06-17 20:24:20 +00:00
$this -> _yy_state = $state ;
2013-12-15 15:25:50 +00:00
if ( $this -> yyTraceFILE ) {
2014-06-17 20:24:20 +00: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
{
2014-06-17 20:24:20 +00:00
$tokenMap = array (
1 => 0 ,
2 => 0 ,
3 => 0 ,
4 => 0 ,
5 => 0 ,
6 => 0 ,
7 => 0 ,
8 => 0 ,
);
if ( $this -> counter >= strlen ( $this -> data )) {
2009-03-22 16:09:05 +00:00
return false ; // end of input
}
2011-12-18 15:39:51 +00:00
$yy_global_pattern = " / \ G(#|;)| \ G( \\ [)| \ G( \\ ])| \ G(=)| \ G([ \t \r ]+)| \ G( \n )| \ G([0-9]*[a-zA-Z_] \\ w*)| \ G([ \ S \ s])/iS " ;
2009-03-22 16:09:05 +00:00
do {
2014-06-17 20:24:20 +00:00
if ( preg_match ( $yy_global_pattern , $this -> data , $yymatches , null , $this -> counter )) {
2009-03-22 16:09:05 +00:00
$yysubmatches = $yymatches ;
2014-12-13 23:02:29 +01:00
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yysubmatches );
2009-03-22 16:09:05 +00:00
if ( ! count ( $yymatches )) {
throw new Exception ( 'Error: lexing failed because a rule matched' .
2014-06-17 20:24:20 +00:00
' 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
if ( $tokenMap [ $this -> token ]) {
// extract sub-patterns for passing to lex function
$yysubmatches = array_slice ( $yysubmatches , $this -> token + 1 ,
2014-06-17 20:24:20 +00:00
$tokenMap [ $this -> token ]);
2009-03-22 16:09:05 +00:00
} else {
$yysubmatches = array ();
}
$this -> value = current ( $yymatches ); // token value
$r = $this -> { 'yy_r1_' . $this -> token }( $yysubmatches );
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 " );
2014-06-17 20:24:20 +00:00
if ( $this -> counter >= strlen ( $this -> data )) {
2009-03-22 16:09:05 +00:00
return false ; // end of input
}
// skip this token
continue ;
2014-06-17 20:24:20 +00:00
}
} else {
2009-03-22 16:09:05 +00:00
throw new Exception ( 'Unexpected input at line' . $this -> line .
2014-06-17 20:24:20 +00:00
': ' . $this -> data [ $this -> counter ]);
2009-03-22 16:09:05 +00:00
}
break ;
} while ( true );
} // end function
const START = 1 ;
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r1_1 ( $yy_subpatterns )
2009-03-22 16:09:05 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_COMMENTSTART ;
$this -> yypushstate ( self :: COMMENT );
2009-03-22 16:09:05 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r1_2 ( $yy_subpatterns )
2009-03-22 16:09:05 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_OPENB ;
$this -> yypushstate ( self :: SECTION );
2009-03-22 16:09:05 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r1_3 ( $yy_subpatterns )
2009-03-22 16:09:05 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_CLOSEB ;
2009-03-22 16:09:05 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r1_4 ( $yy_subpatterns )
2009-03-22 16:09:05 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_EQUAL ;
$this -> yypushstate ( self :: VALUE );
2009-03-22 16:09:05 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r1_5 ( $yy_subpatterns )
2009-03-22 16:09:05 +00:00
{
2013-12-15 15:25:50 +00:00
2014-06-17 20:24:20 +00:00
return false ;
2009-03-22 16:09:05 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r1_6 ( $yy_subpatterns )
2009-03-22 16:09:05 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_NEWLINE ;
2009-03-22 16:09:05 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r1_7 ( $yy_subpatterns )
2009-03-22 16:09:05 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_ID ;
2009-03-22 16:09:05 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r1_8 ( $yy_subpatterns )
2011-12-18 15:39:51 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_OTHER ;
2011-12-18 15:39:51 +00:00
}
2009-12-27 15:06:49 +00:00
2013-07-14 21:12:08 +00:00
public function yylex2 ()
2009-12-27 15:06:49 +00:00
{
2014-06-17 20:24:20 +00:00
$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 )) {
2009-12-27 15:06:49 +00:00
return false ; // end of input
}
2011-11-01 21:41:12 +00:00
$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 " ;
2009-12-27 15:06:49 +00:00
do {
2014-06-17 20:24:20 +00:00
if ( preg_match ( $yy_global_pattern , $this -> data , $yymatches , null , $this -> counter )) {
2009-12-27 15:06:49 +00:00
$yysubmatches = $yymatches ;
2014-12-13 23:02:29 +01:00
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yysubmatches );
2009-12-27 15:06:49 +00:00
if ( ! count ( $yymatches )) {
throw new Exception ( 'Error: lexing failed because a rule matched' .
2014-06-17 20:24:20 +00:00
' 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
if ( $tokenMap [ $this -> token ]) {
// extract sub-patterns for passing to lex function
$yysubmatches = array_slice ( $yysubmatches , $this -> token + 1 ,
2014-06-17 20:24:20 +00:00
$tokenMap [ $this -> token ]);
2009-12-27 15:06:49 +00:00
} else {
$yysubmatches = array ();
}
$this -> value = current ( $yymatches ); // token value
$r = $this -> { 'yy_r2_' . $this -> token }( $yysubmatches );
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 " );
2014-06-17 20:24:20 +00:00
if ( $this -> counter >= strlen ( $this -> data )) {
2009-12-27 15:06:49 +00:00
return false ; // end of input
}
// skip this token
continue ;
2014-06-17 20:24:20 +00:00
}
} else {
2009-12-27 15:06:49 +00:00
throw new Exception ( 'Unexpected input at line' . $this -> line .
2014-06-17 20:24:20 +00:00
': ' . $this -> data [ $this -> counter ]);
2009-12-27 15:06:49 +00:00
}
break ;
} while ( true );
} // end function
const VALUE = 2 ;
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r2_1 ( $yy_subpatterns )
2009-12-27 15:06:49 +00:00
{
2013-12-15 15:25:50 +00:00
2014-06-17 20:24:20 +00:00
return false ;
2009-12-27 15:06:49 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r2_2 ( $yy_subpatterns )
2009-12-27 15:06:49 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_FLOAT ;
$this -> yypopstate ();
2009-12-27 15:06:49 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r2_3 ( $yy_subpatterns )
2009-12-27 15:06:49 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_INT ;
$this -> yypopstate ();
2009-12-27 15:06:49 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r2_4 ( $yy_subpatterns )
2009-12-27 15:06:49 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_TRIPPLE_QUOTES ;
$this -> yypushstate ( self :: TRIPPLE );
2009-12-27 15:06:49 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r2_5 ( $yy_subpatterns )
2009-12-27 15:06:49 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_SINGLE_QUOTED_STRING ;
$this -> yypopstate ();
2009-12-27 15:06:49 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r2_6 ( $yy_subpatterns )
2009-12-27 15:06:49 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_DOUBLE_QUOTED_STRING ;
$this -> yypopstate ();
2009-12-27 15:06:49 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r2_7 ( $yy_subpatterns )
2009-12-27 15:06:49 +00:00
{
2014-12-13 23:02:29 +01:00
if ( ! $this -> configBooleanize || ! in_array ( strtolower ( $this -> value ), Array ( " true " , " false " , " on " , " off " , " yes " , " no " ))) {
2014-06-17 20:24:20 +00: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
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r2_8 ( $yy_subpatterns )
2009-12-27 15:06:49 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_NAKED_STRING ;
$this -> yypopstate ();
2009-12-27 15:06:49 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r2_9 ( $yy_subpatterns )
2009-12-27 15:06:49 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_NAKED_STRING ;
$this -> value = " " ;
$this -> yypopstate ();
2009-12-27 15:06:49 +00:00
}
2013-07-14 21:12:08 +00:00
public function yylex3 ()
2009-12-27 15:06:49 +00:00
{
2014-06-17 20:24:20 +00:00
$tokenMap = array (
1 => 0 ,
);
if ( $this -> counter >= strlen ( $this -> data )) {
2009-12-27 15:06:49 +00:00
return false ; // end of input
}
2011-09-16 14:19:56 +00:00
$yy_global_pattern = " / \ G([^ \n ]+?(?=[ \t \r ]* \n ))/iS " ;
2009-12-27 15:06:49 +00:00
do {
2014-06-17 20:24:20 +00:00
if ( preg_match ( $yy_global_pattern , $this -> data , $yymatches , null , $this -> counter )) {
2009-12-27 15:06:49 +00:00
$yysubmatches = $yymatches ;
2014-12-13 23:02:29 +01:00
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yysubmatches );
2009-12-27 15:06:49 +00:00
if ( ! count ( $yymatches )) {
throw new Exception ( 'Error: lexing failed because a rule matched' .
2014-06-17 20:24:20 +00:00
' 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
if ( $tokenMap [ $this -> token ]) {
// extract sub-patterns for passing to lex function
$yysubmatches = array_slice ( $yysubmatches , $this -> token + 1 ,
2014-06-17 20:24:20 +00:00
$tokenMap [ $this -> token ]);
2009-12-27 15:06:49 +00:00
} else {
$yysubmatches = array ();
}
$this -> value = current ( $yymatches ); // token value
$r = $this -> { 'yy_r3_' . $this -> token }( $yysubmatches );
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 " );
2014-06-17 20:24:20 +00:00
if ( $this -> counter >= strlen ( $this -> data )) {
2009-12-27 15:06:49 +00:00
return false ; // end of input
}
// skip this token
continue ;
2014-06-17 20:24:20 +00:00
}
} else {
2009-12-27 15:06:49 +00:00
throw new Exception ( 'Unexpected input at line' . $this -> line .
2014-06-17 20:24:20 +00:00
': ' . $this -> data [ $this -> counter ]);
2009-12-27 15:06:49 +00:00
}
break ;
} while ( true );
} // end function
const NAKED_STRING_VALUE = 3 ;
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r3_1 ( $yy_subpatterns )
2009-03-22 16:09:05 +00:00
{
2014-06-17 20:24:20 +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
2013-07-14 21:12:08 +00:00
public function yylex4 ()
2009-03-22 16:09:05 +00:00
{
2014-06-17 20:24:20 +00:00
$tokenMap = array (
1 => 0 ,
2 => 0 ,
3 => 0 ,
);
if ( $this -> counter >= strlen ( $this -> data )) {
2009-12-27 15:06:49 +00:00
return false ; // end of input
}
2011-09-16 14:19:56 +00:00
$yy_global_pattern = " / \ G([ \t \r ]+)| \ G([^ \n ]+?(?=[ \t \r ]* \n ))| \ G( \n )/iS " ;
2009-03-22 16:09:05 +00:00
2009-12-27 15:06:49 +00:00
do {
2014-06-17 20:24:20 +00:00
if ( preg_match ( $yy_global_pattern , $this -> data , $yymatches , null , $this -> counter )) {
2009-12-27 15:06:49 +00:00
$yysubmatches = $yymatches ;
2014-12-13 23:02:29 +01:00
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yysubmatches );
2009-12-27 15:06:49 +00:00
if ( ! count ( $yymatches )) {
throw new Exception ( 'Error: lexing failed because a rule matched' .
2014-06-17 20:24:20 +00:00
' 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
if ( $tokenMap [ $this -> token ]) {
// extract sub-patterns for passing to lex function
$yysubmatches = array_slice ( $yysubmatches , $this -> token + 1 ,
2014-06-17 20:24:20 +00:00
$tokenMap [ $this -> token ]);
2009-12-27 15:06:49 +00:00
} else {
$yysubmatches = array ();
}
$this -> value = current ( $yymatches ); // token value
$r = $this -> { 'yy_r4_' . $this -> token }( $yysubmatches );
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 " );
2014-06-17 20:24:20 +00:00
if ( $this -> counter >= strlen ( $this -> data )) {
2009-12-27 15:06:49 +00:00
return false ; // end of input
}
// skip this token
continue ;
2014-06-17 20:24:20 +00:00
}
} else {
2009-12-27 15:06:49 +00:00
throw new Exception ( 'Unexpected input at line' . $this -> line .
2014-06-17 20:24:20 +00:00
': ' . $this -> data [ $this -> counter ]);
2009-12-27 15:06:49 +00:00
}
break ;
} while ( true );
} // end function
const COMMENT = 4 ;
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r4_1 ( $yy_subpatterns )
2009-12-27 15:06:49 +00:00
{
2013-12-15 15:25:50 +00:00
2014-06-17 20:24:20 +00:00
return false ;
2009-03-22 16:09:05 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r4_2 ( $yy_subpatterns )
2009-03-22 16:09:05 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_NAKED_STRING ;
2009-03-22 16:09:05 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r4_3 ( $yy_subpatterns )
2009-03-22 16:09:05 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_NEWLINE ;
$this -> yypopstate ();
2009-03-22 16:09:05 +00:00
}
2013-07-14 21:12:08 +00:00
public function yylex5 ()
2010-01-16 12:03:53 +00:00
{
2014-06-17 20:24:20 +00:00
$tokenMap = array (
1 => 0 ,
2 => 0 ,
);
if ( $this -> counter >= strlen ( $this -> data )) {
2010-01-16 12:03:53 +00:00
return false ; // end of input
}
2011-09-16 14:19:56 +00:00
$yy_global_pattern = " / \ G( \\ .)| \ G(.*?(?=[ \ .=[ \ ] \r \n ]))/iS " ;
2010-01-16 12:03:53 +00:00
do {
2014-06-17 20:24:20 +00:00
if ( preg_match ( $yy_global_pattern , $this -> data , $yymatches , null , $this -> counter )) {
2010-01-16 12:03:53 +00:00
$yysubmatches = $yymatches ;
2014-12-13 23:02:29 +01:00
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yysubmatches );
2010-01-16 12:03:53 +00:00
if ( ! count ( $yymatches )) {
throw new Exception ( 'Error: lexing failed because a rule matched' .
2014-06-17 20:24:20 +00:00
' 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
if ( $tokenMap [ $this -> token ]) {
// extract sub-patterns for passing to lex function
$yysubmatches = array_slice ( $yysubmatches , $this -> token + 1 ,
2014-06-17 20:24:20 +00:00
$tokenMap [ $this -> token ]);
2010-01-16 12:03:53 +00:00
} else {
$yysubmatches = array ();
}
$this -> value = current ( $yymatches ); // token value
$r = $this -> { 'yy_r5_' . $this -> token }( $yysubmatches );
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 " );
2014-06-17 20:24:20 +00:00
if ( $this -> counter >= strlen ( $this -> data )) {
2010-01-16 12:03:53 +00:00
return false ; // end of input
}
// skip this token
continue ;
2014-06-17 20:24:20 +00:00
}
} else {
2010-01-16 12:03:53 +00:00
throw new Exception ( 'Unexpected input at line' . $this -> line .
2014-06-17 20:24:20 +00:00
': ' . $this -> data [ $this -> counter ]);
2010-01-16 12:03:53 +00:00
}
break ;
} while ( true );
} // end function
const SECTION = 5 ;
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r5_1 ( $yy_subpatterns )
2010-01-16 12:03:53 +00:00
{
2014-06-17 20:24:20 +00:00
$this -> token = Smarty_Internal_Configfileparser :: TPC_DOT ;
2010-01-16 12:03:53 +00:00
}
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r5_2 ( $yy_subpatterns )
2010-01-16 12:03:53 +00:00
{
2014-06-17 20:24:20 +00: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
{
2014-06-17 20:24:20 +00:00
$tokenMap = array (
1 => 0 ,
2 => 0 ,
);
if ( $this -> counter >= strlen ( $this -> data )) {
2011-11-01 21:41:12 +00:00
return false ; // end of input
}
2011-12-18 15:39:51 +00:00
$yy_global_pattern = " / \ G( \" \" \" (?=[ \t \r ]*[ \n #;]))| \ G([ \ S \ s])/iS " ;
2011-11-01 21:41:12 +00:00
do {
2014-06-17 20:24:20 +00:00
if ( preg_match ( $yy_global_pattern , $this -> data , $yymatches , null , $this -> counter )) {
2011-11-01 21:41:12 +00:00
$yysubmatches = $yymatches ;
2014-12-13 23:02:29 +01:00
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yysubmatches );
2011-11-01 21:41:12 +00:00
if ( ! count ( $yymatches )) {
throw new Exception ( 'Error: lexing failed because a rule matched' .
2014-06-17 20:24:20 +00:00
' 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
if ( $tokenMap [ $this -> token ]) {
// extract sub-patterns for passing to lex function
$yysubmatches = array_slice ( $yysubmatches , $this -> token + 1 ,
2014-06-17 20:24:20 +00:00
$tokenMap [ $this -> token ]);
2011-11-01 21:41:12 +00:00
} else {
$yysubmatches = array ();
}
$this -> value = current ( $yymatches ); // token value
$r = $this -> { 'yy_r6_' . $this -> token }( $yysubmatches );
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 " );
2014-06-17 20:24:20 +00:00
if ( $this -> counter >= strlen ( $this -> data )) {
2011-11-01 21:41:12 +00:00
return false ; // end of input
}
// skip this token
continue ;
2014-06-17 20:24:20 +00:00
}
} else {
2011-11-01 21:41:12 +00:00
throw new Exception ( 'Unexpected input at line' . $this -> line .
2014-06-17 20:24:20 +00:00
': ' . $this -> data [ $this -> counter ]);
2011-11-01 21:41:12 +00:00
}
break ;
} while ( true );
} // end function
const TRIPPLE = 6 ;
2014-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r6_1 ( $yy_subpatterns )
2011-11-01 21:41:12 +00:00
{
2014-06-17 20:24:20 +00: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-06-17 20:24:20 +00:00
2013-12-15 15:25:50 +00:00
function yy_r6_2 ( $yy_subpatterns )
2011-11-01 21:41:12 +00:00
{
2014-06-17 20:24:20 +00: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 ;
2011-11-01 21:41:12 +00:00
}
2011-02-01 12:51:01 +00:00
}