2009-03-22 16:09:05 +00:00
< ? php
2015-09-01 01:54:28 +02:00
/*
* This file is part of Smarty .
*
* ( c ) 2015 Uwe Tews
2014-06-08 16:00:56 +00:00
*
2015-09-01 01:54:28 +02:00
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
2014-06-08 16:00:56 +00:00
*/
/**
2014-12-13 23:02:29 +01:00
* Smarty_Internal_Templatelexer
* This is the template file lexer .
* It is generated from the smarty_internal_templatelexer . plex file
*
2018-08-19 02:35:46 +02:00
*
2015-09-01 01:54:28 +02:00
* @ author Uwe Tews < uwe . tews @ googlemail . com >
2014-06-08 16:00:56 +00:00
*/
class Smarty_Internal_Templatelexer
{
2014-12-13 23:02:29 +01:00
/**
* Source
*
* @ var string
*/
2014-06-08 16:00:56 +00:00
public $data ;
2018-08-31 02:37:47 +02:00
2016-11-07 03:08:11 +01:00
/**
* Source length
*
* @ var int
*/
2016-11-11 21:17:32 +01:00
public $dataLength = null ;
2018-08-31 02:37:47 +02:00
2014-12-13 23:02:29 +01:00
/**
* byte counter
*
* @ var int
*/
2014-06-08 16:00:56 +00:00
public $counter ;
2018-08-31 02:37:47 +02:00
2014-12-13 23:02:29 +01:00
/**
* token number
*
* @ var int
*/
2014-06-08 16:00:56 +00:00
public $token ;
2018-08-31 02:37:47 +02:00
2014-12-13 23:02:29 +01:00
/**
* token value
*
* @ var string
*/
2014-06-08 16:00:56 +00:00
public $value ;
2018-08-31 02:37:47 +02:00
2014-12-13 23:02:29 +01:00
/**
* current line
*
* @ var int
*/
2014-06-08 16:00:56 +00:00
public $line ;
2018-08-31 02:37:47 +02:00
2014-12-13 23:02:29 +01:00
/**
* tag start line
*
* @ var
*/
2014-06-08 16:00:56 +00:00
public $taglineno ;
2018-08-31 02:37:47 +02:00
2015-05-16 16:33:50 +02:00
/**
2015-05-06 00:03:26 +02:00
* php code type
*
* @ var string
*/
public $phpType = '' ;
2018-08-31 02:37:47 +02:00
2021-10-13 12:15:17 +02:00
/**
2014-12-13 23:02:29 +01:00
* state number
*
* @ var int
*/
2014-06-08 16:00:56 +00:00
public $state = 1 ;
2018-08-31 02:37:47 +02:00
2014-12-13 23:02:29 +01:00
/**
* Smarty object
*
* @ var Smarty
*/
public $smarty = null ;
2018-08-31 02:37:47 +02:00
2014-12-13 23:02:29 +01:00
/**
* compiler object
*
* @ var Smarty_Internal_TemplateCompilerBase
*/
2015-05-23 18:56:00 +02:00
public $compiler = null ;
2018-08-31 02:37:47 +02:00
2014-12-13 23:02:29 +01:00
/**
* trace file
*
* @ var resource
*/
2014-06-08 16:00:56 +00:00
public $yyTraceFILE ;
2018-08-31 02:37:47 +02:00
2014-12-13 23:02:29 +01:00
/**
* trace prompt
*
* @ var string
*/
2014-06-08 16:00:56 +00:00
public $yyTracePrompt ;
2018-08-31 02:37:47 +02:00
2015-06-01 22:26:45 +02:00
/**
* XML flag true while processing xml
*
* @ var bool
*/
public $is_xml = false ;
2018-08-31 02:37:47 +02:00
2014-12-13 23:02:29 +01:00
/**
* state names
*
* @ var array
*/
2015-09-01 01:54:28 +02:00
public $state_name = array ( 1 => 'TEXT' , 2 => 'TAG' , 3 => 'TAGBODY' , 4 => 'LITERAL' , 5 => 'DOUBLEQUOTEDSTRING' ,);
2018-08-31 02:37:47 +02:00
2017-08-09 11:15:33 +02:00
/**
* token names
*
* @ var array
*/
public $smarty_token_names = array ( // Text for parser error messages
2017-10-07 08:40:28 +02:00
'NOT' => '(!,not)' ,
'OPENP' => '(' ,
'CLOSEP' => ')' ,
'OPENB' => '[' ,
'CLOSEB' => ']' ,
'PTR' => '->' ,
'APTR' => '=>' ,
'EQUAL' => '=' ,
'NUMBER' => 'number' ,
'UNIMATH' => '+" , "-' ,
'MATH' => '*" , "/" , "%' ,
'INCDEC' => '++" , "--' ,
'SPACE' => ' ' ,
'DOLLAR' => '$' ,
'SEMICOLON' => ';' ,
'COLON' => ':' ,
'DOUBLECOLON' => '::' ,
'AT' => '@' ,
'HATCH' => '#' ,
'QUOTE' => '"' ,
'BACKTICK' => '`' ,
'VERT' => '"|" modifier' ,
'DOT' => '.' ,
'COMMA' => '","' ,
'QMARK' => '"?"' ,
'ID' => 'id, name' ,
'TEXT' => 'text' ,
'LDELSLASH' => '{/..} closing tag' ,
'LDEL' => '{...} Smarty tag' ,
'COMMENT' => 'comment' ,
'AS' => 'as' ,
'TO' => 'to' ,
'PHP' => '"<?php", "<%", "{php}" tag' ,
'LOGOP' => '"<", "==" ... logical operator' ,
'TLOGOP' => '"lt", "eq" ... logical operator; "is div by" ... if condition' ,
'SCOND' => '"is even" ... if condition' ,
);
2018-08-31 02:37:47 +02:00
2017-08-09 11:15:33 +02:00
/**
* literal tag nesting level
*
* @ var int
*/
private $literal_cnt = 0 ;
2018-08-31 02:37:47 +02:00
2015-05-16 16:33:50 +02:00
/**
2017-10-07 08:40:28 +02:00
* preg token pattern for state TEXT
2015-05-16 16:33:50 +02:00
*
2015-05-23 18:56:00 +02:00
* @ var string
2015-05-16 16:33:50 +02:00
*/
private $yy_global_pattern1 = null ;
2018-08-31 02:37:47 +02:00
2017-10-07 08:40:28 +02:00
/**
* preg token pattern for state TAG
*
* @ var string
*/
2015-05-16 16:33:50 +02:00
private $yy_global_pattern2 = null ;
2018-08-31 02:37:47 +02:00
2017-10-07 08:40:28 +02:00
/**
* preg token pattern for state TAGBODY
*
* @ var string
*/
2015-05-16 16:33:50 +02:00
private $yy_global_pattern3 = null ;
2018-08-31 02:37:47 +02:00
2017-10-07 08:40:28 +02:00
/**
* preg token pattern for state LITERAL
*
* @ var string
*/
2015-05-16 16:33:50 +02:00
private $yy_global_pattern4 = null ;
2018-08-31 02:37:47 +02:00
2017-10-07 08:40:28 +02:00
/**
* preg token pattern for state DOUBLEQUOTEDSTRING
*
* @ var null
*/
2015-05-16 16:33:50 +02:00
private $yy_global_pattern5 = null ;
2018-08-31 02:37:47 +02:00
2018-09-18 04:46:30 +02:00
/**
* preg token pattern for text
*
* @ var null
*/
private $yy_global_text = null ;
2018-08-31 02:37:47 +02:00
2018-09-18 04:46:30 +02:00
/**
* preg token pattern for literal
*
* @ var null
*/
private $yy_global_literal = null ;
2014-12-13 23:02:29 +01:00
/**
* constructor
*
2018-08-19 02:35:46 +02:00
* @ param string $source template source
2014-12-13 23:02:29 +01:00
* @ param Smarty_Internal_TemplateCompilerBase $compiler
*/
2018-08-19 02:35:46 +02:00
public function __construct ( $source , Smarty_Internal_TemplateCompilerBase $compiler )
2014-06-08 16:00:56 +00:00
{
2017-10-07 08:40:28 +02:00
$this -> data = $source ;
$this -> dataLength = strlen ( $this -> data );
2014-06-08 16:00:56 +00:00
$this -> counter = 0 ;
2016-08-05 01:00:51 +02:00
if ( preg_match ( '/^\xEF\xBB\xBF/i' , $this -> data , $match )) {
2021-10-13 12:15:17 +02:00
$this -> counter += strlen ( $match [ 0 ]);
2014-07-16 18:21:25 +00:00
}
2014-06-08 16:00:56 +00:00
$this -> line = 1 ;
2017-10-21 13:14:14 +02:00
$this -> smarty = $compiler -> template -> smarty ;
2014-06-08 16:00:56 +00:00
$this -> compiler = $compiler ;
2017-10-21 13:14:14 +02:00
$this -> compiler -> initDelimiterPreg ();
2021-10-13 12:15:17 +02:00
$this -> smarty_token_names [ 'LDEL' ] = $this -> smarty -> getLeftDelimiter ();
$this -> smarty_token_names [ 'RDEL' ] = $this -> smarty -> getRightDelimiter ();
2014-06-08 16:00:56 +00:00
}
2017-10-07 08:40:28 +02:00
/**
* open lexer / parser trace file
2018-08-19 02:35:46 +02:00
*
2017-10-07 08:40:28 +02:00
*/
2014-06-08 16:00:56 +00:00
public function PrintTrace ()
{
$this -> yyTraceFILE = fopen ( 'php://output' , 'w' );
$this -> yyTracePrompt = '<br>' ;
}
2021-10-13 12:15:17 +02:00
/**
2017-10-07 08:40:28 +02:00
* replace placeholders with runtime preg code
*
2017-10-21 13:14:14 +02:00
* @ param string $preg
2017-10-07 08:40:28 +02:00
*
* @ return string
*/
2021-10-13 12:15:17 +02:00
public function replace ( $preg )
{
2017-10-21 13:14:14 +02:00
return $this -> compiler -> replaceDelimiter ( $preg );
2021-10-13 12:15:17 +02:00
}
2017-10-07 08:40:28 +02:00
2018-08-19 02:35:46 +02:00
/**
* check if current value is an autoliteral left delimiter
*
* @ return bool
*/
2017-08-09 12:20:33 +02:00
public function isAutoLiteral ()
{
2017-10-21 13:14:14 +02:00
return $this -> smarty -> getAutoLiteral () && isset ( $this -> value [ $this -> compiler -> getLdelLength () ]) ?
strpos ( " \n \t \r " , $this -> value [ $this -> compiler -> getLdelLength () ]) !== false : false ;
2021-10-13 12:15:17 +02:00
}
private $_yy_state = 1 ;
private $_yy_stack = array ();
2017-10-07 08:40:28 +02:00
public function yylex ()
{
return $this -> { 'yylex' . $this -> _yy_state }();
}
public function yypushstate ( $state )
{
if ( $this -> yyTraceFILE ) {
2021-10-13 12:15:17 +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 );
2017-10-07 08:40:28 +02:00
}
array_push ( $this -> _yy_stack , $this -> _yy_state );
$this -> _yy_state = $state ;
if ( $this -> yyTraceFILE ) {
2021-10-13 12:15:17 +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 );
2017-10-07 08:40:28 +02:00
}
}
public function yypopstate ()
{
2021-10-13 12:15:17 +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 );
2017-10-07 08:40:28 +02:00
}
2021-10-13 12:15:17 +02:00
$this -> _yy_state = array_pop ( $this -> _yy_stack );
2017-10-07 08:40:28 +02:00
if ( $this -> yyTraceFILE ) {
2021-10-13 12:15:17 +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 );
2017-10-07 08:40:28 +02:00
}
2021-10-13 12:15:17 +02:00
2017-10-07 08:40:28 +02:00
}
public function yybegin ( $state )
{
2021-10-13 12:15:17 +02:00
$this -> _yy_state = $state ;
2017-10-07 08:40:28 +02:00
if ( $this -> yyTraceFILE ) {
2021-10-13 12:15:17 +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 );
2017-10-07 08:40:28 +02:00
}
}
2021-10-13 12:15:17 +02:00
2018-06-12 09:58:15 +02: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 )) {
2021-10-13 12:15:17 +02:00
$this -> yy_global_pattern1 = $this -> replace ( " / \ G([ { ][}])| \ G((SMARTYldel)SMARTYal[*])| \ G((SMARTYldel)SMARTYautoliteral \\ s+SMARTYliteral)| \ G((SMARTYldel)SMARTYalliteral \\ s*SMARTYrdel)| \ G((SMARTYldel)SMARTYal[ \ /]literal \\ s*SMARTYrdel)| \ G((SMARTYldel)SMARTYal)| \ G([ \ S \ s])/isS " );
2015-05-16 16:33:50 +02:00
}
2016-11-11 21:17:32 +01:00
if ( ! isset ( $this -> dataLength )) {
$this -> dataLength = strlen ( $this -> data );
2016-11-07 03:08:11 +01:00
}
2021-10-13 12:15:17 +02:00
if ( $this -> counter >= $this -> dataLength ) {
2009-10-31 00:44:58 +00:00
return false ; // end of input
}
2021-10-13 12:15:17 +02:00
2009-10-31 00:44:58 +00:00
do {
2021-10-13 12:15:17 +02:00
if ( preg_match ( $this -> yy_global_pattern1 , $this -> data , $yymatches , 0 , $this -> counter )) {
if ( ! isset ( $yymatches [ 0 ][ 1 ])) {
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yymatches );
2015-06-11 23:33:30 +02:00
} else {
2016-11-07 03:08:11 +01:00
$yymatches = array_filter ( $yymatches );
2015-06-11 23:33:30 +02:00
}
2015-05-16 16:33:50 +02:00
if ( empty ( $yymatches )) {
2018-08-19 02:35:46 +02:00
throw new Exception ( 'Error: lexing failed because a rule matched' .
2021-10-13 12:15:17 +02:00
' an empty string. Input "' . substr ( $this -> data ,
$this -> counter , 5 ) . '... state TEXT' );
2009-10-31 00:44:58 +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-10-31 00:44:58 +00:00
if ( $r === null ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2009-10-31 00:44:58 +00:00
$this -> line += substr_count ( $this -> value , " \n " );
// accept this token
return true ;
2018-08-19 02:35:46 +02:00
} elseif ( $r === true ) {
2009-10-31 00:44:58 +00:00
// we have changed state
// process this token in the new state
return $this -> yylex ();
2018-08-19 02:35:46 +02:00
} elseif ( $r === false ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2009-10-31 00:44:58 +00:00
$this -> line += substr_count ( $this -> value , " \n " );
2021-10-13 12:15:17 +02:00
if ( $this -> counter >= $this -> dataLength ) {
2009-10-31 00:44:58 +00:00
return false ; // end of input
}
// skip this token
continue ;
2021-10-13 12:15:17 +02:00
} } else {
throw new Exception ( 'Unexpected input at line' . $this -> line .
': ' . $this -> data [ $this -> counter ]);
2009-10-31 00:44:58 +00:00
}
break ;
2017-07-21 08:12:33 +02:00
} while ( true );
2021-10-13 12:15:17 +02:00
} // end function
const TEXT = 1 ;
2018-08-31 02:37:47 +02:00
public function yy_r1_1 ()
2009-10-31 00:44:58 +00:00
{
2017-10-12 08:21:12 +02:00
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_TEXT ;
}
2018-08-31 02:37:47 +02:00
public function yy_r1_2 ()
2010-11-11 21:34:36 +00:00
{
2021-10-13 12:15:17 +02:00
$to = $this -> dataLength ;
preg_match ( " /[*] { $this -> compiler -> getRdelPreg () } [ \n ]?/ " , $this -> data , $match , PREG_OFFSET_CAPTURE , $this -> counter );
if ( isset ( $match [ 0 ][ 1 ])) {
$to = $match [ 0 ][ 1 ] + strlen ( $match [ 0 ][ 0 ]);
2015-05-23 18:56:00 +02:00
} else {
2021-10-13 12:15:17 +02:00
$this -> compiler -> trigger_template_error ( " missing or misspelled comment closing tag ' { $this -> smarty -> getRightDelimiter () } ' " );
2015-05-23 18:56:00 +02:00
}
2021-10-13 12:15:17 +02:00
$this -> value = substr ( $this -> data , $this -> counter , $to - $this -> counter );
2015-05-23 18:56:00 +02:00
return false ;
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r1_4 ()
2015-06-27 16:09:50 +02:00
{
2017-10-12 08:21:12 +02:00
2017-08-09 11:15:33 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_TEXT ;
2021-10-13 12:15:17 +02:00
}
public function yy_r1_6 ()
2015-05-16 16:33:50 +02:00
{
2021-10-13 12:15:17 +02:00
2017-08-09 11:15:33 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_LITERALSTART ;
$this -> yypushstate ( self :: LITERAL );
2021-10-13 12:15:17 +02:00
}
public function yy_r1_8 ()
2009-11-25 20:56:51 +00:00
{
2021-10-13 12:15:17 +02:00
2017-08-09 11:15:33 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_LITERALEND ;
$this -> yypushstate ( self :: LITERAL );
2021-10-13 12:15:17 +02:00
}
public function yy_r1_10 ()
2015-06-27 15:35:27 +02:00
{
2021-10-13 12:15:17 +02:00
2017-08-09 11:15:33 +02:00
$this -> yypushstate ( self :: TAG );
return true ;
2021-10-13 12:15:17 +02:00
}
public function yy_r1_12 ()
2017-08-09 11:15:33 +02:00
{
2017-10-12 08:21:12 +02:00
2021-10-13 12:15:17 +02:00
if ( ! isset ( $this -> yy_global_text )) {
$this -> yy_global_text = $this -> replace ( '/(SMARTYldel)SMARTYal/isS' );
}
$to = $this -> dataLength ;
preg_match ( $this -> yy_global_text , $this -> data , $match , PREG_OFFSET_CAPTURE , $this -> counter );
if ( isset ( $match [ 0 ][ 1 ])) {
$to = $match [ 0 ][ 1 ];
}
$this -> value = substr ( $this -> data , $this -> counter , $to - $this -> counter );
$this -> token = Smarty_Internal_Templateparser :: TP_TEXT ;
}
2015-05-16 16:33:50 +02:00
2021-10-13 12:15:17 +02:00
2018-06-12 09:58:15 +02:00
public function yylex2 ()
2015-05-16 16:33:50 +02:00
{
2015-05-18 04:12:40 +02:00
if ( ! isset ( $this -> yy_global_pattern2 )) {
2021-10-13 12:15:17 +02:00
$this -> yy_global_pattern2 = $this -> replace ( " / \ G((SMARTYldel)SMARTYal(if|elseif|else if|while) \\ s+)| \ G((SMARTYldel)SMARTYalfor \\ s+)| \ G((SMARTYldel)SMARTYalforeach(?![^ \ s]))| \ G((SMARTYldel)SMARTYalsetfilter \\ s+)| \ G((SMARTYldel)SMARTYalmake_nocache \\ s+)| \ G((SMARTYldel)SMARTYal[0-9]*[a-zA-Z_] \\ w*( \\ s+nocache)? \\ s*SMARTYrdel)| \ G((SMARTYldel)SMARTYal[ $ ]smarty \\ .block \\ .(child|parent) \\ s*SMARTYrdel)| \ G((SMARTYldel)SMARTYal[ \ /][0-9]*[a-zA-Z_] \\ w* \\ s*SMARTYrdel)| \ G((SMARTYldel)SMARTYal[ $ ][0-9]*[a-zA-Z_] \\ w*( \\ s+nocache)? \\ s*SMARTYrdel)| \ G((SMARTYldel)SMARTYal[ \ /])| \ G((SMARTYldel)SMARTYal)/isS " );
2015-05-16 16:33:50 +02:00
}
2016-11-11 21:17:32 +01:00
if ( ! isset ( $this -> dataLength )) {
$this -> dataLength = strlen ( $this -> data );
2016-11-07 03:08:11 +01:00
}
2021-10-13 12:15:17 +02:00
if ( $this -> counter >= $this -> dataLength ) {
2015-05-18 04:12:40 +02:00
return false ; // end of input
}
2021-10-13 12:15:17 +02:00
2015-05-18 04:12:40 +02:00
do {
2021-10-13 12:15:17 +02:00
if ( preg_match ( $this -> yy_global_pattern2 , $this -> data , $yymatches , 0 , $this -> counter )) {
if ( ! isset ( $yymatches [ 0 ][ 1 ])) {
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yymatches );
2015-06-11 23:33:30 +02:00
} else {
2016-11-07 03:08:11 +01:00
$yymatches = array_filter ( $yymatches );
2015-06-11 23:33:30 +02:00
}
2015-05-18 04:12:40 +02:00
if ( empty ( $yymatches )) {
2018-08-19 02:35:46 +02:00
throw new Exception ( 'Error: lexing failed because a rule matched' .
2021-10-13 12:15:17 +02:00
' an empty string. Input "' . substr ( $this -> data ,
$this -> counter , 5 ) . '... state TAG' );
2015-05-18 04:12:40 +02:00
}
next ( $yymatches ); // skip global match
$this -> token = key ( $yymatches ); // token number
$this -> value = current ( $yymatches ); // token value
$r = $this -> { 'yy_r2_' . $this -> token }();
if ( $r === null ) {
$this -> counter += strlen ( $this -> value );
$this -> line += substr_count ( $this -> value , " \n " );
// accept this token
return true ;
2018-08-19 02:35:46 +02:00
} elseif ( $r === true ) {
2015-05-18 04:12:40 +02:00
// we have changed state
// process this token in the new state
return $this -> yylex ();
2018-08-19 02:35:46 +02:00
} elseif ( $r === false ) {
2015-05-18 04:12:40 +02:00
$this -> counter += strlen ( $this -> value );
$this -> line += substr_count ( $this -> value , " \n " );
2021-10-13 12:15:17 +02:00
if ( $this -> counter >= $this -> dataLength ) {
2015-05-18 04:12:40 +02:00
return false ; // end of input
}
// skip this token
continue ;
2021-10-13 12:15:17 +02:00
} } else {
throw new Exception ( 'Unexpected input at line' . $this -> line .
': ' . $this -> data [ $this -> counter ]);
2015-05-18 04:12:40 +02:00
}
break ;
2017-07-21 08:12:33 +02:00
} while ( true );
2021-10-13 12:15:17 +02:00
} // end function
const TAG = 2 ;
2018-08-31 02:37:47 +02:00
public function yy_r2_1 ()
2015-05-18 04:12:40 +02:00
{
2021-10-13 12:15:17 +02:00
2015-05-18 04:12:40 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_LDELIF ;
$this -> yybegin ( self :: TAGBODY );
$this -> taglineno = $this -> line ;
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r2_4 ()
2015-05-16 16:33:50 +02:00
{
2021-10-13 12:15:17 +02:00
2015-05-18 04:12:40 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_LDELFOR ;
$this -> yybegin ( self :: TAGBODY );
$this -> taglineno = $this -> line ;
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r2_6 ()
2010-09-15 15:17:28 +00:00
{
2021-10-13 12:15:17 +02:00
2015-05-18 04:12:40 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_LDELFOREACH ;
$this -> yybegin ( self :: TAGBODY );
2015-05-06 00:03:26 +02:00
$this -> taglineno = $this -> line ;
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r2_8 ()
2014-10-07 22:07:15 +00:00
{
2021-10-13 12:15:17 +02:00
2015-05-18 04:12:40 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_LDELSETFILTER ;
$this -> yybegin ( self :: TAGBODY );
2015-05-06 00:03:26 +02:00
$this -> taglineno = $this -> line ;
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r2_10 ()
2016-02-14 02:54:38 +01:00
{
2021-10-13 12:15:17 +02:00
2016-02-14 02:54:38 +01:00
$this -> token = Smarty_Internal_Templateparser :: TP_LDELMAKENOCACHE ;
$this -> yybegin ( self :: TAGBODY );
$this -> taglineno = $this -> line ;
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r2_12 ()
2010-09-15 15:17:28 +00:00
{
2021-10-13 12:15:17 +02:00
2015-05-18 04:12:40 +02:00
$this -> yypopstate ();
$this -> token = Smarty_Internal_Templateparser :: TP_SIMPLETAG ;
2015-05-06 00:03:26 +02:00
$this -> taglineno = $this -> line ;
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r2_15 ()
2018-03-26 22:35:31 +02:00
{
2021-10-13 12:15:17 +02:00
$this -> yypopstate ();
$this -> token = Smarty_Internal_Templateparser :: TP_SMARTYBLOCKCHILDPARENT ;
$this -> taglineno = $this -> line ;
}
2018-08-31 02:37:47 +02:00
public function yy_r2_18 ()
2010-09-15 15:17:28 +00:00
{
2021-10-13 12:15:17 +02:00
2015-05-18 04:12:40 +02:00
$this -> yypopstate ();
$this -> token = Smarty_Internal_Templateparser :: TP_CLOSETAG ;
2015-05-06 00:03:26 +02:00
$this -> taglineno = $this -> line ;
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r2_20 ()
2011-01-31 14:15:12 +00:00
{
2021-10-13 12:15:17 +02:00
if ( $this -> _yy_stack [ count ( $this -> _yy_stack ) - 1 ] === self :: TEXT ) {
2015-06-08 23:54:46 +02:00
$this -> yypopstate ();
2015-09-01 01:54:28 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_SIMPELOUTPUT ;
2015-06-08 23:54:46 +02:00
$this -> taglineno = $this -> line ;
} else {
2017-10-21 13:14:14 +02:00
$this -> value = $this -> smarty -> getLeftDelimiter ();
2015-06-08 23:54:46 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_LDEL ;
$this -> yybegin ( self :: TAGBODY );
$this -> taglineno = $this -> line ;
}
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r2_23 ()
2012-08-21 21:54:30 +00:00
{
2021-10-13 12:15:17 +02:00
2015-05-18 04:12:40 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_LDELSLASH ;
$this -> yybegin ( self :: TAGBODY );
$this -> taglineno = $this -> line ;
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r2_25 ()
2009-10-31 00:44:58 +00:00
{
2021-10-13 12:15:17 +02:00
2015-05-18 04:12:40 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_LDEL ;
$this -> yybegin ( self :: TAGBODY );
$this -> taglineno = $this -> line ;
2021-10-13 12:15:17 +02:00
}
2015-05-18 04:12:40 +02:00
2021-10-13 12:15:17 +02:00
2018-06-12 09:58:15 +02:00
public function yylex3 ()
2015-05-18 04:12:40 +02:00
{
if ( ! isset ( $this -> yy_global_pattern3 )) {
2021-10-13 12:15:17 +02:00
$this -> yy_global_pattern3 = $this -> replace ( " / \ G( \\ s*SMARTYrdel)| \ G((SMARTYldel)SMARTYal)| \ G([ \" ])| \ G('[^' \\ \\ ]*(?: \\ \\ .[^' \\ \\ ]*)*')| \ G([ $ ][0-9]*[a-zA-Z_] \\ w*)| \ G([ $ ])| \ G( \\ s+is \\ s+in \\ s+)| \ G( \\ s+as \\ s+)| \ G( \\ s+to \\ s+)| \ G( \\ s+step \\ s+)| \ G( \\ s+instanceof \\ s+)| \ G( \\ s*([!=][=] { 1,2}|[<][=>]?|[>][=]?|[&|] { 2}) \\ s*)| \ G( \\ s+(eq|ne|neq|gt|ge|gte|lt|le|lte|mod|and|or|xor) \\ s+)| \ G( \\ s+is \\ s+(not \\ s+)?(odd|even|div) \\ s+by \\ s+)| \ G( \\ s+is \\ s+(not \\ s+)?(odd|even))| \ G([!] \\ s*|not \\ s+)| \ G([(](int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)[)] \\ s*)| \ G( \\ s*[(] \\ s*)| \ G( \\ s*[)])| \ G( \\ [ \\ s*)| \ G( \\ s* \\ ])| \ G( \\ s*[-][>] \\ s*)| \ G( \\ s*[=][>] \\ s*)| \ G( \\ s*[=] \\ s*)| \ G(([+]|[-]) { 2})| \ G( \\ s*([+]|[-]) \\ s*)| \ G( \\ s*([*] { 1,2}|[% \ /^&]|[<>] { 2}) \\ s*)| \ G([@])| \ G(array \\ s*[(] \\ s*)| \ G([#])| \ G( \\ s+[0-9]*[a-zA-Z_][a-zA-Z0-9_ \ -:]* \\ s*[=] \\ s*)| \ G(([0-9]*[a-zA-Z_] \\ w*)?( \\ \\ [0-9]*[a-zA-Z_] \\ w*)+)| \ G([0-9]*[a-zA-Z_] \\ w*)| \ G( \\ d+)| \ G([`])| \ G([|][@]?)| \ G([.])| \ G( \\ s*[,] \\ s*)| \ G( \\ s*[;] \\ s*)| \ G([:] { 2})| \ G( \\ s*[:] \\ s*)| \ G( \\ s*[?] \\ s*)| \ G(0[xX][0-9a-fA-F]+)| \ G( \\ s+)| \ G([ \ S \ s])/isS " );
2015-05-16 16:33:50 +02:00
}
2016-11-11 21:17:32 +01:00
if ( ! isset ( $this -> dataLength )) {
$this -> dataLength = strlen ( $this -> data );
2016-11-07 03:08:11 +01:00
}
2021-10-13 12:15:17 +02:00
if ( $this -> counter >= $this -> dataLength ) {
2009-03-22 16:09:05 +00:00
return false ; // end of input
}
2021-10-13 12:15:17 +02:00
2009-03-22 16:09:05 +00:00
do {
2021-10-13 12:15:17 +02:00
if ( preg_match ( $this -> yy_global_pattern3 , $this -> data , $yymatches , 0 , $this -> counter )) {
if ( ! isset ( $yymatches [ 0 ][ 1 ])) {
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yymatches );
2015-06-11 23:33:30 +02:00
} else {
2016-11-07 03:08:11 +01:00
$yymatches = array_filter ( $yymatches );
2015-06-11 23:33:30 +02:00
}
2015-05-16 16:33:50 +02:00
if ( empty ( $yymatches )) {
2018-08-19 02:35:46 +02:00
throw new Exception ( 'Error: lexing failed because a rule matched' .
2021-10-13 12:15:17 +02:00
' an empty string. Input "' . substr ( $this -> data ,
$this -> counter , 5 ) . '... state TAGBODY' );
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-18 04:12:40 +02:00
$r = $this -> { 'yy_r3_' . $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 ;
2018-08-19 02:35:46 +02:00
} elseif ( $r === true ) {
2009-03-22 16:09:05 +00:00
// we have changed state
// process this token in the new state
return $this -> yylex ();
2018-08-19 02:35:46 +02:00
} 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 " );
2021-10-13 12:15:17 +02:00
if ( $this -> counter >= $this -> dataLength ) {
2009-03-22 16:09:05 +00:00
return false ; // end of input
}
// skip this token
continue ;
2021-10-13 12:15:17 +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 ;
2017-07-21 08:12:33 +02:00
} while ( true );
2021-10-13 12:15:17 +02:00
} // end function
const TAGBODY = 3 ;
2018-08-31 02:37:47 +02:00
public function yy_r3_1 ()
2015-05-18 04:12:40 +02:00
{
2021-10-13 12:15:17 +02:00
2015-05-18 04:12:40 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_RDEL ;
$this -> yypopstate ();
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r3_2 ()
2015-11-25 21:19:23 +01:00
{
2021-10-13 12:15:17 +02:00
2017-08-09 11:15:33 +02:00
$this -> yypushstate ( self :: TAG );
return true ;
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r3_4 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_QUOTE ;
$this -> yypushstate ( self :: DOUBLEQUOTEDSTRING );
2017-10-12 20:15:42 +02:00
$this -> compiler -> enterDoubleQuote ();
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r3_5 ()
2009-03-22 16:09:05 +00:00
{
2017-10-12 08:21:12 +02:00
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_SINGLEQUOTESTRING ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_6 ()
2009-03-22 16:09:05 +00:00
{
2017-10-12 08:21:12 +02:00
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_DOLLARID ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_7 ()
2017-10-12 08:21:12 +02:00
{
2009-03-22 16:09:05 +00:00
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_DOLLAR ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_8 ()
2010-05-31 17:58:23 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_ISIN ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_9 ()
2010-05-31 17:58:23 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_AS ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_10 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_TO ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_11 ()
2009-06-14 13:08:13 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_STEP ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_12 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_INSTANCEOF ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_13 ()
2010-02-10 20:51:36 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_LOGOP ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_15 ()
2009-12-03 22:39:45 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_SLOGOP ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_17 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_TLOGOP ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_20 ()
2016-02-10 03:19:25 +01:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_SINGLECOND ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_23 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_NOT ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_24 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_TYPECAST ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_28 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_OPENP ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_29 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_CLOSEP ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_30 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_OPENB ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_31 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_CLOSEB ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_32 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_PTR ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_33 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_APTR ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_34 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_EQUAL ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_35 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_INCDEC ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_37 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_UNIMATH ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_39 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_MATH ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_41 ()
2015-05-16 14:47:12 +02:00
{
2009-03-22 16:09:05 +00:00
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_AT ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_42 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_ARRAYOPEN ;
}
2018-08-31 02:37:47 +02:00
public function yy_r3_43 ()
2018-10-09 03:36:14 +02:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_HATCH ;
}
2018-10-09 03:36:14 +02:00
public function yy_r3_44 ()
2017-10-12 08:21:12 +02:00
{
2021-10-13 12:15:17 +02:00
2015-05-16 16:33:50 +02:00
// resolve conflicts with shorttag and right_delimiter starting with '='
2021-10-13 12:15:17 +02:00
if ( substr ( $this -> data , $this -> counter + strlen ( $this -> value ) - 1 , $this -> compiler -> getRdelLength ()) === $this -> smarty -> getRightDelimiter ()) {
preg_match ( '/\s+/' , $this -> value , $match );
$this -> value = $match [ 0 ];
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_SPACE ;
} else {
$this -> token = Smarty_Internal_Templateparser :: TP_ATTR ;
}
2021-10-13 12:15:17 +02:00
}
2018-10-09 03:36:14 +02:00
public function yy_r3_45 ()
2017-10-12 08:21:12 +02:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_NAMESPACE ;
}
2018-10-09 03:36:14 +02:00
public function yy_r3_48 ()
2017-10-12 08:21:12 +02:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_ID ;
}
2018-10-09 03:36:14 +02:00
public function yy_r3_49 ()
2017-10-12 08:21:12 +02:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_INTEGER ;
}
2018-10-09 03:36:14 +02:00
public function yy_r3_50 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
2017-10-12 08:21:12 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_BACKTICK ;
$this -> yypopstate ();
2021-10-13 12:15:17 +02:00
}
2018-10-09 03:36:14 +02:00
public function yy_r3_51 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_VERT ;
}
2018-10-09 03:36:14 +02:00
public function yy_r3_52 ()
2015-05-16 14:47:12 +02:00
{
2014-06-08 16:00:56 +00:00
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_DOT ;
}
2018-10-09 03:36:14 +02:00
public function yy_r3_53 ()
2015-05-16 14:47:12 +02:00
{
2014-06-08 16:00:56 +00:00
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_COMMA ;
}
2018-10-09 03:36:14 +02:00
public function yy_r3_54 ()
2013-08-24 18:46:31 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_SEMICOLON ;
}
2018-10-09 03:36:14 +02:00
public function yy_r3_55 ()
2013-08-24 18:46:31 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_DOUBLECOLON ;
}
2018-10-09 03:36:14 +02:00
public function yy_r3_56 ()
2013-08-24 18:46:31 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_COLON ;
}
2018-10-09 03:36:14 +02:00
public function yy_r3_57 ()
2013-08-24 18:46:31 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_QMARK ;
}
2018-10-09 03:36:14 +02:00
public function yy_r3_58 ()
2013-08-24 18:46:31 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_HEX ;
}
2018-10-09 03:36:14 +02:00
public function yy_r3_59 ()
2009-03-22 16:09:05 +00:00
{
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_SPACE ;
}
2018-10-09 03:36:14 +02:00
public function yy_r3_60 ()
2015-05-16 14:47:12 +02:00
{
2021-10-13 12:15:17 +02:00
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_TEXT ;
2021-10-13 12:15:17 +02:00
}
2013-08-12 21:09:29 +00:00
2021-10-13 12:15:17 +02:00
2018-06-12 09:58:15 +02:00
public function yylex4 ()
2009-10-31 00:44:58 +00:00
{
2015-05-18 04:12:40 +02:00
if ( ! isset ( $this -> yy_global_pattern4 )) {
2021-10-13 12:15:17 +02:00
$this -> yy_global_pattern4 = $this -> replace ( " / \ G((SMARTYldel)SMARTYalliteral \\ s*SMARTYrdel)| \ G((SMARTYldel)SMARTYal[ \ /]literal \\ s*SMARTYrdel)| \ G([ \ S \ s])/isS " );
2015-05-16 16:33:50 +02:00
}
2016-11-11 21:17:32 +01:00
if ( ! isset ( $this -> dataLength )) {
$this -> dataLength = strlen ( $this -> data );
2016-11-07 03:08:11 +01:00
}
2021-10-13 12:15:17 +02:00
if ( $this -> counter >= $this -> dataLength ) {
2009-10-31 00:44:58 +00:00
return false ; // end of input
}
2021-10-13 12:15:17 +02:00
2009-10-31 00:44:58 +00:00
do {
2021-10-13 12:15:17 +02:00
if ( preg_match ( $this -> yy_global_pattern4 , $this -> data , $yymatches , 0 , $this -> counter )) {
if ( ! isset ( $yymatches [ 0 ][ 1 ])) {
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yymatches );
2015-06-11 23:33:30 +02:00
} else {
2016-11-07 03:08:11 +01:00
$yymatches = array_filter ( $yymatches );
2015-06-11 23:33:30 +02:00
}
2015-05-16 16:33:50 +02:00
if ( empty ( $yymatches )) {
2018-08-19 02:35:46 +02:00
throw new Exception ( 'Error: lexing failed because a rule matched' .
2021-10-13 12:15:17 +02:00
' an empty string. Input "' . substr ( $this -> data ,
$this -> counter , 5 ) . '... state LITERAL' );
2009-10-31 00:44:58 +00:00
}
next ( $yymatches ); // skip global match
$this -> token = key ( $yymatches ); // token number
$this -> value = current ( $yymatches ); // token value
2015-05-18 04:12:40 +02:00
$r = $this -> { 'yy_r4_' . $this -> token }();
2009-10-31 00:44:58 +00:00
if ( $r === null ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2009-10-31 00:44:58 +00:00
$this -> line += substr_count ( $this -> value , " \n " );
// accept this token
return true ;
2018-08-19 02:35:46 +02:00
} elseif ( $r === true ) {
2009-10-31 00:44:58 +00:00
// we have changed state
// process this token in the new state
return $this -> yylex ();
2018-08-19 02:35:46 +02:00
} elseif ( $r === false ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2009-10-31 00:44:58 +00:00
$this -> line += substr_count ( $this -> value , " \n " );
2021-10-13 12:15:17 +02:00
if ( $this -> counter >= $this -> dataLength ) {
2009-10-31 00:44:58 +00:00
return false ; // end of input
}
// skip this token
continue ;
2021-10-13 12:15:17 +02:00
} } else {
throw new Exception ( 'Unexpected input at line' . $this -> line .
': ' . $this -> data [ $this -> counter ]);
2009-10-31 00:44:58 +00:00
}
break ;
2017-07-21 08:12:33 +02:00
} while ( true );
2021-10-13 12:15:17 +02:00
} // end function
const LITERAL = 4 ;
2018-08-31 02:37:47 +02:00
public function yy_r4_1 ()
2015-05-16 16:33:50 +02:00
{
2021-10-13 12:15:17 +02:00
2017-07-21 08:12:33 +02:00
$this -> literal_cnt ++ ;
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_LITERAL ;
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r4_3 ()
2015-05-16 16:33:50 +02:00
{
2021-10-13 12:15:17 +02:00
2015-05-16 16:33:50 +02:00
if ( $this -> literal_cnt ) {
2021-10-13 12:15:17 +02:00
$this -> literal_cnt -- ;
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_LITERAL ;
} else {
$this -> token = Smarty_Internal_Templateparser :: TP_LITERALEND ;
$this -> yypopstate ();
}
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r4_5 ()
2017-10-07 08:40:28 +02:00
{
2017-07-21 08:12:33 +02:00
2021-10-13 12:15:17 +02:00
if ( ! isset ( $this -> yy_global_literal )) {
$this -> yy_global_literal = $this -> replace ( '/(SMARTYldel)SMARTYal[\/]?literalSMARTYrdel/isS' );
}
$to = $this -> dataLength ;
preg_match ( $this -> yy_global_literal , $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_Templateparser :: TP_LITERAL ;
}
2018-06-12 09:58:15 +02:00
public function yylex5 ()
2010-02-24 18:01:03 +00:00
{
2015-05-18 04:12:40 +02:00
if ( ! isset ( $this -> yy_global_pattern5 )) {
2021-10-13 12:15:17 +02:00
$this -> yy_global_pattern5 = $this -> replace ( " / \ G((SMARTYldel)SMARTYautoliteral \\ s+SMARTYliteral)| \ G((SMARTYldel)SMARTYalliteral \\ s*SMARTYrdel)| \ G((SMARTYldel)SMARTYal[ \ /]literal \\ s*SMARTYrdel)| \ G((SMARTYldel)SMARTYal[ \ /])| \ G((SMARTYldel)SMARTYal[0-9]*[a-zA-Z_] \\ w*)| \ G((SMARTYldel)SMARTYal)| \ G([ \" ])| \ G([`][ $ ])| \ G([ $ ][0-9]*[a-zA-Z_] \\ w*)| \ G([ $ ])| \ G(([^ \" \\ \\ ]*?)((?: \\ \\ .[^ \" \\ \\ ]*?)*?)(?=((SMARTYldel)SMARTYal| \\ $ |` \\ $ | \" SMARTYliteral)))| \ G([ \ S \ s])/isS " );
2015-05-16 16:33:50 +02:00
}
2016-11-11 21:17:32 +01:00
if ( ! isset ( $this -> dataLength )) {
$this -> dataLength = strlen ( $this -> data );
2016-11-07 03:08:11 +01:00
}
2021-10-13 12:15:17 +02:00
if ( $this -> counter >= $this -> dataLength ) {
2010-02-24 18:01:03 +00:00
return false ; // end of input
}
2021-10-13 12:15:17 +02:00
2010-02-24 18:01:03 +00:00
do {
2021-10-13 12:15:17 +02:00
if ( preg_match ( $this -> yy_global_pattern5 , $this -> data , $yymatches , 0 , $this -> counter )) {
if ( ! isset ( $yymatches [ 0 ][ 1 ])) {
$yymatches = preg_grep ( " /(.| \ s)+/ " , $yymatches );
2015-06-11 23:33:30 +02:00
} else {
2016-11-07 03:08:11 +01:00
$yymatches = array_filter ( $yymatches );
2015-06-11 23:33:30 +02:00
}
2015-05-16 16:33:50 +02:00
if ( empty ( $yymatches )) {
2018-08-19 02:35:46 +02:00
throw new Exception ( 'Error: lexing failed because a rule matched' .
2021-10-13 12:15:17 +02:00
' an empty string. Input "' . substr ( $this -> data ,
$this -> counter , 5 ) . '... state DOUBLEQUOTEDSTRING' );
2010-02-24 18:01:03 +00:00
}
next ( $yymatches ); // skip global match
$this -> token = key ( $yymatches ); // token number
$this -> value = current ( $yymatches ); // token value
2015-05-18 04:12:40 +02:00
$r = $this -> { 'yy_r5_' . $this -> token }();
2010-02-24 18:01:03 +00:00
if ( $r === null ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2010-02-24 18:01:03 +00:00
$this -> line += substr_count ( $this -> value , " \n " );
// accept this token
return true ;
2018-08-19 02:35:46 +02:00
} elseif ( $r === true ) {
2010-02-24 18:01:03 +00:00
// we have changed state
// process this token in the new state
return $this -> yylex ();
2018-08-19 02:35:46 +02:00
} elseif ( $r === false ) {
2014-06-17 20:24:20 +00:00
$this -> counter += strlen ( $this -> value );
2010-02-24 18:01:03 +00:00
$this -> line += substr_count ( $this -> value , " \n " );
2021-10-13 12:15:17 +02:00
if ( $this -> counter >= $this -> dataLength ) {
2010-02-24 18:01:03 +00:00
return false ; // end of input
}
// skip this token
continue ;
2021-10-13 12:15:17 +02:00
} } else {
throw new Exception ( 'Unexpected input at line' . $this -> line .
': ' . $this -> data [ $this -> counter ]);
2010-02-24 18:01:03 +00:00
}
break ;
2017-07-21 08:12:33 +02:00
} while ( true );
2021-10-13 12:15:17 +02:00
} // end function
const DOUBLEQUOTEDSTRING = 5 ;
2018-08-31 02:37:47 +02:00
public function yy_r5_1 ()
2010-02-24 18:01:03 +00:00
{
2017-10-12 08:21:12 +02:00
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_TEXT ;
}
2018-08-31 02:37:47 +02:00
public function yy_r5_3 ()
2010-01-11 20:44:01 +00:00
{
2017-10-12 08:21:12 +02:00
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_TEXT ;
}
2018-08-31 02:37:47 +02:00
public function yy_r5_5 ()
2010-05-31 17:58:23 +00:00
{
2017-10-12 08:21:12 +02:00
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_TEXT ;
}
2018-08-31 02:37:47 +02:00
public function yy_r5_7 ()
2010-05-31 17:58:23 +00:00
{
2021-10-13 12:15:17 +02:00
2017-08-09 11:15:33 +02:00
$this -> yypushstate ( self :: TAG );
return true ;
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r5_9 ()
2010-05-31 17:58:23 +00:00
{
2021-10-13 12:15:17 +02:00
2017-08-09 11:15:33 +02:00
$this -> yypushstate ( self :: TAG );
return true ;
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r5_11 ()
2017-08-09 11:15:33 +02:00
{
2021-10-13 12:15:17 +02:00
2017-08-09 11:15:33 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_LDEL ;
$this -> taglineno = $this -> line ;
$this -> yypushstate ( self :: TAGBODY );
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r5_13 ()
2010-01-11 20:44:01 +00:00
{
2021-10-13 12:15:17 +02:00
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_QUOTE ;
$this -> yypopstate ();
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r5_14 ()
2010-01-11 20:44:01 +00:00
{
2021-10-13 12:15:17 +02:00
2015-05-16 16:33:50 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_BACKTICK ;
2021-10-13 12:15:17 +02:00
$this -> value = substr ( $this -> value , 0 , - 1 );
2015-05-18 04:12:40 +02:00
$this -> yypushstate ( self :: TAGBODY );
2015-05-16 16:33:50 +02:00
$this -> taglineno = $this -> line ;
2021-10-13 12:15:17 +02:00
}
2018-08-31 02:37:47 +02:00
public function yy_r5_15 ()
2010-01-11 20:44:01 +00:00
{
2017-10-12 08:21:12 +02:00
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_DOLLARID ;
}
2018-08-31 02:37:47 +02:00
public function yy_r5_16 ()
2010-01-11 20:44:01 +00:00
{
2017-10-12 08:21:12 +02:00
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_TEXT ;
}
2018-08-31 02:37:47 +02:00
public function yy_r5_17 ()
2010-01-11 20:44:01 +00:00
{
2018-09-18 04:46:30 +02:00
2021-10-13 12:15:17 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_TEXT ;
}
2018-09-18 04:46:30 +02:00
public function yy_r5_22 ()
{
2021-10-13 12:15:17 +02:00
2018-09-18 04:46:30 +02:00
$to = $this -> dataLength ;
2021-10-13 12:15:17 +02:00
$this -> value = substr ( $this -> data , $this -> counter , $to - $this -> counter );
2018-09-18 04:46:30 +02:00
$this -> token = Smarty_Internal_Templateparser :: TP_TEXT ;
2021-10-13 12:15:17 +02:00
}
2018-09-18 04:46:30 +02:00
2021-10-13 12:15:17 +02:00
}