mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-05 10:54:27 +02:00
lexer and parser optimizations
up to 30% higher compiling speed depending on template complexity
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
===== 3.1.22-dev ===== (xx.xx.2014)
|
||||
13.12.2014
|
||||
- improvement optimization of lexer and parser resulting in a up to 30% higher compiling speed
|
||||
|
||||
11.12.2014
|
||||
- bugfix resolve parser ambiguity between constant print tag {CONST} and other smarty tags after change of 09.12.2014
|
||||
|
||||
|
@@ -9,25 +9,103 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty Internal Plugin Configfilelexer
|
||||
* 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
|
||||
*/
|
||||
class Smarty_Internal_Configfilelexer
|
||||
{
|
||||
|
||||
/**
|
||||
* Source
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $data;
|
||||
/**
|
||||
* byte counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $counter;
|
||||
/**
|
||||
* token number
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $token;
|
||||
/**
|
||||
* token value
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $value;
|
||||
public $node;
|
||||
/**
|
||||
* current line
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $line;
|
||||
private $state = 1;
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
public $yyTraceFILE;
|
||||
/**
|
||||
* trace prompt
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $yyTracePrompt;
|
||||
/**
|
||||
* state names
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $state_name = array(1 => 'START', 2 => 'VALUE', 3 => 'NAKED_STRING_VALUE', 4 => 'COMMENT', 5 => 'SECTION', 6 => 'TRIPPLE');
|
||||
public $smarty_token_names = array( // Text for parser error messages
|
||||
/**
|
||||
* token names
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $smarty_token_names = array( // Text for parser error messages
|
||||
);
|
||||
|
||||
function __construct($data, $compiler)
|
||||
/**
|
||||
* constructor
|
||||
*
|
||||
* @param string $data template source
|
||||
* @param Smarty_Internal_Config_File_Compiler $compiler
|
||||
*/
|
||||
function __construct($data, Smarty_Internal_Config_File_Compiler $compiler)
|
||||
{
|
||||
// set instance object
|
||||
self::instance($this);
|
||||
@@ -39,6 +117,7 @@ class Smarty_Internal_Configfilelexer
|
||||
$this->line = 1;
|
||||
$this->compiler = $compiler;
|
||||
$this->smarty = $compiler->smarty;
|
||||
$this->configBooleanize = $compiler->smarty->config_booleanize;
|
||||
}
|
||||
|
||||
public static function &instance($new_instance = null)
|
||||
@@ -115,7 +194,7 @@ class Smarty_Internal_Configfilelexer
|
||||
do {
|
||||
if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
$yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
|
||||
if (!count($yymatches)) {
|
||||
throw new Exception('Error: lexing failed because a rule matched' .
|
||||
' an empty string. Input "' . substr($this->data,
|
||||
@@ -232,7 +311,7 @@ class Smarty_Internal_Configfilelexer
|
||||
do {
|
||||
if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
$yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
|
||||
if (!count($yymatches)) {
|
||||
throw new Exception('Error: lexing failed because a rule matched' .
|
||||
' an empty string. Input "' . substr($this->data,
|
||||
@@ -321,7 +400,7 @@ class Smarty_Internal_Configfilelexer
|
||||
function yy_r2_7($yy_subpatterns)
|
||||
{
|
||||
|
||||
if (!$this->smarty->config_booleanize || !in_array(strtolower($this->value), Array("true", "false", "on", "off", "yes", "no"))) {
|
||||
if (!$this->configBooleanize || !in_array(strtolower($this->value), Array("true", "false", "on", "off", "yes", "no"))) {
|
||||
$this->yypopstate();
|
||||
$this->yypushstate(self::NAKED_STRING_VALUE);
|
||||
return true; //reprocess in new state
|
||||
@@ -359,7 +438,7 @@ class Smarty_Internal_Configfilelexer
|
||||
do {
|
||||
if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
$yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
|
||||
if (!count($yymatches)) {
|
||||
throw new Exception('Error: lexing failed because a rule matched' .
|
||||
' an empty string. Input "' . substr($this->data,
|
||||
@@ -426,7 +505,7 @@ class Smarty_Internal_Configfilelexer
|
||||
do {
|
||||
if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
$yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
|
||||
if (!count($yymatches)) {
|
||||
throw new Exception('Error: lexing failed because a rule matched' .
|
||||
' an empty string. Input "' . substr($this->data,
|
||||
@@ -504,7 +583,7 @@ class Smarty_Internal_Configfilelexer
|
||||
do {
|
||||
if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
$yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
|
||||
if (!count($yymatches)) {
|
||||
throw new Exception('Error: lexing failed because a rule matched' .
|
||||
' an empty string. Input "' . substr($this->data,
|
||||
@@ -576,7 +655,7 @@ class Smarty_Internal_Configfilelexer
|
||||
do {
|
||||
if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
$yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
|
||||
if (!count($yymatches)) {
|
||||
throw new Exception('Error: lexing failed because a rule matched' .
|
||||
' an empty string. Input "' . substr($this->data,
|
||||
@@ -643,4 +722,3 @@ class Smarty_Internal_Configfilelexer
|
||||
$this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_TEXT;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,14 +1,5 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Smarty Internal Plugin Configfileparser
|
||||
* This is the config file parser.
|
||||
* It is generated from the internal.configfileparser.y file
|
||||
*
|
||||
* @package Smarty
|
||||
* @subpackage Compiler
|
||||
* @author Uwe Tews
|
||||
*/
|
||||
class TPC_yyToken implements ArrayAccess
|
||||
{
|
||||
public $string = '';
|
||||
@@ -31,7 +22,7 @@ class TPC_yyToken implements ArrayAccess
|
||||
|
||||
public function __toString()
|
||||
{
|
||||
return $this->_string;
|
||||
return $this->string;
|
||||
}
|
||||
|
||||
public function offsetExists($offset)
|
||||
@@ -76,8 +67,8 @@ class TPC_yyToken implements ArrayAccess
|
||||
|
||||
class TPC_yyStackEntry
|
||||
{
|
||||
public $stateno; /* The state-number */
|
||||
public $major; /* The major token value. This is the code
|
||||
public $stateno; /* The state-number */
|
||||
public $major; /* The major token value. This is the code
|
||||
** number for the token at this stack level */
|
||||
public $minor; /* The user-supplied minor token value. This
|
||||
** is the value of the token */
|
||||
@@ -85,26 +76,103 @@ class TPC_yyStackEntry
|
||||
|
||||
;
|
||||
|
||||
#line 12 "smarty_internal_configfileparser.y"
|
||||
class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparser.php"
|
||||
#line 12 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
|
||||
/**
|
||||
* Smarty Internal Plugin Configfileparse
|
||||
* This is the config file parser.
|
||||
* It is generated from the smarty_internal_configfileparser.y file
|
||||
*
|
||||
* @package Smarty
|
||||
* @subpackage Compiler
|
||||
* @author Uwe Tews
|
||||
*/
|
||||
class Smarty_Internal_Configfileparser
|
||||
{
|
||||
#line 14 "smarty_internal_configfileparser.y"
|
||||
#line 25 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
|
||||
// states whether the parse was successful or not
|
||||
/**
|
||||
* result status
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $successful = true;
|
||||
/**
|
||||
* return value
|
||||
*
|
||||
* @var mixed
|
||||
*/
|
||||
public $retvalue = 0;
|
||||
/**
|
||||
* @var
|
||||
*/
|
||||
public $yymajor;
|
||||
/**
|
||||
* lexer object
|
||||
*
|
||||
* @var Smarty_Internal_Configfilelexer
|
||||
*/
|
||||
private $lex;
|
||||
/**
|
||||
* internal error flag
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
private $internalError = false;
|
||||
/**
|
||||
* compiler object
|
||||
*
|
||||
* @var Smarty_Internal_Config_File_Compiler
|
||||
*/
|
||||
public $compiler = null;
|
||||
/**
|
||||
* smarty object
|
||||
*
|
||||
* @var Smarty
|
||||
*/
|
||||
public $smarty = null;
|
||||
/**
|
||||
* copy of config_overwrite property
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
private $configOverwrite = false;
|
||||
/**
|
||||
* copy of config_read_hidden property
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
private $configReadHidden = false;
|
||||
/**
|
||||
* helper map
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private static $escapes_single = Array('\\' => '\\',
|
||||
'\'' => '\'');
|
||||
|
||||
function __construct($lex, $compiler)
|
||||
/**
|
||||
* constructor
|
||||
*
|
||||
* @param Smarty_Internal_Configfilelexer $lex
|
||||
* @param Smarty_Internal_Config_File_Compiler $compiler
|
||||
*/
|
||||
function __construct(Smarty_Internal_Configfilelexer $lex, Smarty_Internal_Config_File_Compiler $compiler)
|
||||
{
|
||||
// set instance object
|
||||
self::instance($this);
|
||||
$this->lex = $lex;
|
||||
$this->smarty = $compiler->smarty;
|
||||
$this->compiler = $compiler;
|
||||
$this->configOverwrite = $compiler->smarty->config_overwrite;
|
||||
$this->configReadHidden = $compiler->smarty->config_read_hidden;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param null $new_instance
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
public static function &instance($new_instance = null)
|
||||
{
|
||||
static $instance = null;
|
||||
@@ -114,9 +182,17 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
return $instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* parse optional boolean keywords
|
||||
*
|
||||
* @param string $str
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private function parse_bool($str)
|
||||
{
|
||||
if (in_array(strtolower($str), array('on', 'yes', 'true'))) {
|
||||
$str = strtolower($str);
|
||||
if (in_array($str, array('on', 'yes', 'true'))) {
|
||||
$res = true;
|
||||
} else {
|
||||
$res = false;
|
||||
@@ -124,9 +200,15 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
return $res;
|
||||
}
|
||||
|
||||
private static $escapes_single = Array('\\' => '\\',
|
||||
'\'' => '\'');
|
||||
|
||||
/**
|
||||
* parse single quoted string
|
||||
* remove outer quotes
|
||||
* unescape inner quotes
|
||||
*
|
||||
* @param string $qstr
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private static function parse_single_quoted_string($qstr)
|
||||
{
|
||||
$escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes
|
||||
@@ -140,30 +222,48 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
$s = self::$escapes_single[$s[1]];
|
||||
}
|
||||
}
|
||||
|
||||
$str .= $s;
|
||||
}
|
||||
|
||||
return $str;
|
||||
}
|
||||
|
||||
/**
|
||||
* parse double quoted string
|
||||
*
|
||||
* @param string $qstr
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private static function parse_double_quoted_string($qstr)
|
||||
{
|
||||
$inner_str = substr($qstr, 1, strlen($qstr) - 2);
|
||||
return stripcslashes($inner_str);
|
||||
}
|
||||
|
||||
/**
|
||||
* parse triple quoted string
|
||||
*
|
||||
* @param string $qstr
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private static function parse_tripple_double_quoted_string($qstr)
|
||||
{
|
||||
return stripcslashes($qstr);
|
||||
}
|
||||
|
||||
/**
|
||||
* set a config variable in target array
|
||||
*
|
||||
* @param array $var
|
||||
* @param array $target_array
|
||||
*/
|
||||
private function set_var(Array $var, Array &$target_array)
|
||||
{
|
||||
$key = $var["key"];
|
||||
$value = $var["value"];
|
||||
|
||||
if ($this->smarty->config_overwrite || !isset($target_array['vars'][$key])) {
|
||||
if ($this->configOverwrite || !isset($target_array['vars'][$key])) {
|
||||
$target_array['vars'][$key] = $value;
|
||||
} else {
|
||||
settype($target_array['vars'][$key], 'array');
|
||||
@@ -171,6 +271,11 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* add config variable to global vars
|
||||
*
|
||||
* @param array $vars
|
||||
*/
|
||||
private function add_global_vars(Array $vars)
|
||||
{
|
||||
if (!isset($this->compiler->config_data['vars'])) {
|
||||
@@ -181,6 +286,12 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* add config variable to section
|
||||
*
|
||||
* @param string $section_name
|
||||
* @param array $vars
|
||||
*/
|
||||
private function add_section_vars($section_name, Array $vars)
|
||||
{
|
||||
if (!isset($this->compiler->config_data['sections'][$section_name]['vars'])) {
|
||||
@@ -191,8 +302,6 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
}
|
||||
}
|
||||
|
||||
#line 174 "smarty_internal_configfileparser.php"
|
||||
|
||||
const TPC_OPENB = 1;
|
||||
const TPC_SECTION = 2;
|
||||
const TPC_CLOSEB = 3;
|
||||
@@ -217,123 +326,71 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
|
||||
const YY_SZ_ACTTAB = 38;
|
||||
static public $yy_action = array(
|
||||
/* 0 */
|
||||
29, 30, 34, 33, 24, 13, 19, 25, 35, 21,
|
||||
/* 10 */
|
||||
59, 8, 3, 1, 20, 12, 14, 31, 20, 12,
|
||||
/* 20 */
|
||||
15, 17, 23, 18, 27, 26, 4, 5, 6, 32,
|
||||
/* 30 */
|
||||
2, 11, 28, 22, 16, 9, 7, 10,
|
||||
);
|
||||
static public $yy_lookahead = array(
|
||||
/* 0 */
|
||||
7, 8, 9, 10, 11, 12, 5, 27, 15, 16,
|
||||
/* 10 */
|
||||
20, 21, 23, 23, 17, 18, 13, 14, 17, 18,
|
||||
/* 20 */
|
||||
15, 2, 17, 4, 25, 26, 6, 3, 3, 14,
|
||||
/* 30 */
|
||||
23, 1, 24, 17, 2, 25, 22, 25,
|
||||
);
|
||||
const YY_SHIFT_USE_DFLT = - 8;
|
||||
const YY_SHIFT_MAX = 19;
|
||||
static public $yy_shift_ofst = array(
|
||||
/* 0 */
|
||||
- 8, 1, 1, 1, - 7, - 3, - 3, 30, - 8, - 8,
|
||||
/* 10 */
|
||||
- 8, 19, 5, 3, 15, 16, 24, 25, 32, 20,
|
||||
);
|
||||
const YY_REDUCE_USE_DFLT = - 21;
|
||||
const YY_REDUCE_MAX = 10;
|
||||
static public $yy_reduce_ofst = array(
|
||||
/* 0 */
|
||||
- 10, - 1, - 1, - 1, - 20, 10, 12, 8, 14, 7,
|
||||
/* 10 */
|
||||
- 11,
|
||||
);
|
||||
static public $yyExpectedTokens = array(
|
||||
/* 0 */
|
||||
array(),
|
||||
/* 1 */
|
||||
array(5, 17, 18,),
|
||||
/* 2 */
|
||||
array(5, 17, 18,),
|
||||
/* 3 */
|
||||
array(5, 17, 18,),
|
||||
/* 4 */
|
||||
array(7, 8, 9, 10, 11, 12, 15, 16,),
|
||||
/* 5 */
|
||||
array(17, 18,),
|
||||
/* 6 */
|
||||
array(17, 18,),
|
||||
/* 7 */
|
||||
array(1,),
|
||||
/* 8 */
|
||||
array(),
|
||||
/* 9 */
|
||||
array(),
|
||||
/* 10 */
|
||||
array(),
|
||||
/* 11 */
|
||||
array(2, 4,),
|
||||
/* 12 */
|
||||
array(15, 17,),
|
||||
/* 13 */
|
||||
array(13, 14,),
|
||||
/* 14 */
|
||||
array(14,),
|
||||
/* 15 */
|
||||
array(17,),
|
||||
/* 16 */
|
||||
array(3,),
|
||||
/* 17 */
|
||||
array(3,),
|
||||
/* 18 */
|
||||
array(2,),
|
||||
/* 19 */
|
||||
array(6,),
|
||||
/* 20 */
|
||||
array(),
|
||||
/* 21 */
|
||||
array(),
|
||||
/* 22 */
|
||||
array(),
|
||||
/* 23 */
|
||||
array(),
|
||||
/* 24 */
|
||||
array(),
|
||||
/* 25 */
|
||||
array(),
|
||||
/* 26 */
|
||||
array(),
|
||||
/* 27 */
|
||||
array(),
|
||||
/* 28 */
|
||||
array(),
|
||||
/* 29 */
|
||||
array(),
|
||||
/* 30 */
|
||||
array(),
|
||||
/* 31 */
|
||||
array(),
|
||||
/* 32 */
|
||||
array(),
|
||||
/* 33 */
|
||||
array(),
|
||||
/* 34 */
|
||||
array(),
|
||||
/* 35 */
|
||||
array(),
|
||||
);
|
||||
static public $yy_default = array(
|
||||
/* 0 */
|
||||
44, 37, 41, 40, 58, 58, 58, 36, 39, 44,
|
||||
/* 10 */
|
||||
44, 58, 58, 58, 58, 58, 58, 58, 58, 58,
|
||||
/* 20 */
|
||||
55, 54, 57, 56, 50, 45, 43, 42, 38, 46,
|
||||
/* 30 */
|
||||
47, 52, 51, 49, 48, 53,
|
||||
);
|
||||
const YYNOCODE = 29;
|
||||
@@ -364,9 +421,9 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
|
||||
public $yyTraceFILE;
|
||||
public $yyTracePrompt;
|
||||
public $yyidx; /* Index of top element in stack */
|
||||
public $yyerrcnt; /* Shifts left before out of the error */
|
||||
public $yystack = array(); /* The parser's stack */
|
||||
public $yyidx; /* Index of top element in stack */
|
||||
public $yyerrcnt; /* Shifts left before out of the error */
|
||||
public $yystack = array(); /* The parser's stack */
|
||||
|
||||
public $yyTokenName = array(
|
||||
'$', 'OPENB', 'SECTION', 'CLOSEB',
|
||||
@@ -379,49 +436,27 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
);
|
||||
|
||||
public static $yyRuleName = array(
|
||||
/* 0 */
|
||||
"start ::= global_vars sections",
|
||||
/* 1 */
|
||||
"global_vars ::= var_list",
|
||||
/* 2 */
|
||||
"sections ::= sections section",
|
||||
/* 3 */
|
||||
"sections ::=",
|
||||
/* 4 */
|
||||
"section ::= OPENB SECTION CLOSEB newline var_list",
|
||||
/* 5 */
|
||||
"section ::= OPENB DOT SECTION CLOSEB newline var_list",
|
||||
/* 6 */
|
||||
"var_list ::= var_list newline",
|
||||
/* 7 */
|
||||
"var_list ::= var_list var",
|
||||
/* 8 */
|
||||
"var_list ::=",
|
||||
/* 9 */
|
||||
"var ::= ID EQUAL value",
|
||||
/* 10 */
|
||||
"value ::= FLOAT",
|
||||
/* 11 */
|
||||
"value ::= INT",
|
||||
/* 12 */
|
||||
"value ::= BOOL",
|
||||
/* 13 */
|
||||
"value ::= SINGLE_QUOTED_STRING",
|
||||
/* 14 */
|
||||
"value ::= DOUBLE_QUOTED_STRING",
|
||||
/* 15 */
|
||||
"value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END",
|
||||
/* 16 */
|
||||
"value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END",
|
||||
/* 17 */
|
||||
"value ::= NAKED_STRING",
|
||||
/* 18 */
|
||||
"value ::= OTHER",
|
||||
/* 19 */
|
||||
"newline ::= NEWLINE",
|
||||
/* 20 */
|
||||
"newline ::= COMMENTSTART NEWLINE",
|
||||
/* 21 */
|
||||
"newline ::= COMMENTSTART NAKED_STRING NEWLINE",
|
||||
);
|
||||
|
||||
@@ -441,7 +476,7 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
{
|
||||
switch ($yymajor) {
|
||||
default:
|
||||
break; /* If no destructor action specified: do nothing */
|
||||
break; /* If no destructor action specified: do nothing */
|
||||
}
|
||||
}
|
||||
|
||||
@@ -496,10 +531,10 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
return array_unique($expected);
|
||||
}
|
||||
$yyruleno = $yyact - self::YYNSTATE;
|
||||
$this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
|
||||
$this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
|
||||
$nextstate = $this->yy_find_reduce_action(
|
||||
$this->yystack[$this->yyidx]->stateno,
|
||||
self::$yyRuleInfo[$yyruleno]['lhs']);
|
||||
self::$yyRuleInfo[$yyruleno][0]);
|
||||
if (isset(self::$yyExpectedTokens[$nextstate])) {
|
||||
$expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
|
||||
if (in_array($token,
|
||||
@@ -515,7 +550,7 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
$this->yyidx ++;
|
||||
$x = new TPC_yyStackEntry;
|
||||
$x->stateno = $nextstate;
|
||||
$x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
|
||||
$x->major = self::$yyRuleInfo[$yyruleno][0];
|
||||
$this->yystack[$this->yyidx] = $x;
|
||||
continue 2;
|
||||
} elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
|
||||
@@ -568,10 +603,10 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
return true;
|
||||
}
|
||||
$yyruleno = $yyact - self::YYNSTATE;
|
||||
$this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
|
||||
$this->yyidx -= self::$yyRuleInfo[$yyruleno][1];
|
||||
$nextstate = $this->yy_find_reduce_action(
|
||||
$this->yystack[$this->yyidx]->stateno,
|
||||
self::$yyRuleInfo[$yyruleno]['lhs']);
|
||||
self::$yyRuleInfo[$yyruleno][0]);
|
||||
if (isset(self::$yyExpectedTokens[$nextstate]) &&
|
||||
in_array($token, self::$yyExpectedTokens[$nextstate], true)
|
||||
) {
|
||||
@@ -585,7 +620,7 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
$this->yyidx ++;
|
||||
$x = new TPC_yyStackEntry;
|
||||
$x->stateno = $nextstate;
|
||||
$x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
|
||||
$x->major = self::$yyRuleInfo[$yyruleno][0];
|
||||
$this->yystack[$this->yyidx] = $x;
|
||||
continue 2;
|
||||
} elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
|
||||
@@ -642,8 +677,8 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
) {
|
||||
if ($this->yyTraceFILE) {
|
||||
fwrite($this->yyTraceFILE, $this->yyTracePrompt . "FALLBACK " .
|
||||
$this->yyTokenName[$iLookAhead] . " => " .
|
||||
$this->yyTokenName[$iFallback] . "\n");
|
||||
$this->yyTokenName[$iLookAhead] . " => " .
|
||||
$this->yyTokenName[$iFallback] . "\n");
|
||||
}
|
||||
|
||||
return $this->yy_find_shift_action($iFallback);
|
||||
@@ -690,11 +725,10 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
while ($this->yyidx >= 0) {
|
||||
$this->yy_pop_parser_stack();
|
||||
}
|
||||
#line 125 "smarty_internal_configfileparser.y"
|
||||
#line 257 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
|
||||
$this->internalError = true;
|
||||
$this->compiler->trigger_config_file_error("Stack overflow in configfile parser");
|
||||
#line 601 "smarty_internal_configfileparser.php"
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -716,28 +750,28 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
}
|
||||
|
||||
public static $yyRuleInfo = array(
|
||||
array('lhs' => 20, 'rhs' => 2),
|
||||
array('lhs' => 21, 'rhs' => 1),
|
||||
array('lhs' => 22, 'rhs' => 2),
|
||||
array('lhs' => 22, 'rhs' => 0),
|
||||
array('lhs' => 24, 'rhs' => 5),
|
||||
array('lhs' => 24, 'rhs' => 6),
|
||||
array('lhs' => 23, 'rhs' => 2),
|
||||
array('lhs' => 23, 'rhs' => 2),
|
||||
array('lhs' => 23, 'rhs' => 0),
|
||||
array('lhs' => 26, 'rhs' => 3),
|
||||
array('lhs' => 27, 'rhs' => 1),
|
||||
array('lhs' => 27, 'rhs' => 1),
|
||||
array('lhs' => 27, 'rhs' => 1),
|
||||
array('lhs' => 27, 'rhs' => 1),
|
||||
array('lhs' => 27, 'rhs' => 1),
|
||||
array('lhs' => 27, 'rhs' => 3),
|
||||
array('lhs' => 27, 'rhs' => 2),
|
||||
array('lhs' => 27, 'rhs' => 1),
|
||||
array('lhs' => 27, 'rhs' => 1),
|
||||
array('lhs' => 25, 'rhs' => 1),
|
||||
array('lhs' => 25, 'rhs' => 2),
|
||||
array('lhs' => 25, 'rhs' => 3),
|
||||
array(0 => 20, 1 => 2),
|
||||
array(0 => 21, 1 => 1),
|
||||
array(0 => 22, 1 => 2),
|
||||
array(0 => 22, 1 => 0),
|
||||
array(0 => 24, 1 => 5),
|
||||
array(0 => 24, 1 => 6),
|
||||
array(0 => 23, 1 => 2),
|
||||
array(0 => 23, 1 => 2),
|
||||
array(0 => 23, 1 => 0),
|
||||
array(0 => 26, 1 => 3),
|
||||
array(0 => 27, 1 => 1),
|
||||
array(0 => 27, 1 => 1),
|
||||
array(0 => 27, 1 => 1),
|
||||
array(0 => 27, 1 => 1),
|
||||
array(0 => 27, 1 => 1),
|
||||
array(0 => 27, 1 => 3),
|
||||
array(0 => 27, 1 => 2),
|
||||
array(0 => 27, 1 => 1),
|
||||
array(0 => 27, 1 => 1),
|
||||
array(0 => 25, 1 => 1),
|
||||
array(0 => 25, 1 => 2),
|
||||
array(0 => 25, 1 => 3),
|
||||
);
|
||||
|
||||
public static $yyReduceMap = array(
|
||||
@@ -765,109 +799,107 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
18 => 17,
|
||||
);
|
||||
|
||||
#line 131 "smarty_internal_configfileparser.y"
|
||||
#line 263 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
function yy_r0()
|
||||
{
|
||||
$this->_retvalue = null;
|
||||
}
|
||||
#line 675 "smarty_internal_configfileparser.php"
|
||||
#line 136 "smarty_internal_configfileparser.y"
|
||||
|
||||
#line 268 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
function yy_r1()
|
||||
{
|
||||
$this->add_global_vars($this->yystack[$this->yyidx + 0]->minor);
|
||||
$this->_retvalue = null;
|
||||
}
|
||||
#line 680 "smarty_internal_configfileparser.php"
|
||||
#line 149 "smarty_internal_configfileparser.y"
|
||||
|
||||
#line 281 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
function yy_r4()
|
||||
{
|
||||
$this->add_section_vars($this->yystack[$this->yyidx + - 3]->minor, $this->yystack[$this->yyidx + 0]->minor);
|
||||
$this->_retvalue = null;
|
||||
}
|
||||
#line 686 "smarty_internal_configfileparser.php"
|
||||
#line 154 "smarty_internal_configfileparser.y"
|
||||
|
||||
#line 286 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
function yy_r5()
|
||||
{
|
||||
if ($this->smarty->config_read_hidden) {
|
||||
if ($this->configReadHidden) {
|
||||
$this->add_section_vars($this->yystack[$this->yyidx + - 3]->minor, $this->yystack[$this->yyidx + 0]->minor);
|
||||
}
|
||||
$this->_retvalue = null;
|
||||
}
|
||||
#line 694 "smarty_internal_configfileparser.php"
|
||||
#line 162 "smarty_internal_configfileparser.y"
|
||||
|
||||
#line 294 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
function yy_r6()
|
||||
{
|
||||
$this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor;
|
||||
}
|
||||
#line 699 "smarty_internal_configfileparser.php"
|
||||
#line 166 "smarty_internal_configfileparser.y"
|
||||
|
||||
#line 298 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
function yy_r7()
|
||||
{
|
||||
$this->_retvalue = array_merge($this->yystack[$this->yyidx + - 1]->minor, Array($this->yystack[$this->yyidx + 0]->minor));
|
||||
}
|
||||
#line 704 "smarty_internal_configfileparser.php"
|
||||
#line 170 "smarty_internal_configfileparser.y"
|
||||
|
||||
#line 302 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
function yy_r8()
|
||||
{
|
||||
$this->_retvalue = Array();
|
||||
}
|
||||
#line 709 "smarty_internal_configfileparser.php"
|
||||
#line 176 "smarty_internal_configfileparser.y"
|
||||
|
||||
#line 308 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
function yy_r9()
|
||||
{
|
||||
$this->_retvalue = Array("key" => $this->yystack[$this->yyidx + - 2]->minor, "value" => $this->yystack[$this->yyidx + 0]->minor);
|
||||
}
|
||||
#line 714 "smarty_internal_configfileparser.php"
|
||||
#line 181 "smarty_internal_configfileparser.y"
|
||||
|
||||
#line 313 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
function yy_r10()
|
||||
{
|
||||
$this->_retvalue = (float) $this->yystack[$this->yyidx + 0]->minor;
|
||||
}
|
||||
#line 719 "smarty_internal_configfileparser.php"
|
||||
#line 185 "smarty_internal_configfileparser.y"
|
||||
|
||||
#line 317 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
function yy_r11()
|
||||
{
|
||||
$this->_retvalue = (int) $this->yystack[$this->yyidx + 0]->minor;
|
||||
}
|
||||
#line 724 "smarty_internal_configfileparser.php"
|
||||
#line 189 "smarty_internal_configfileparser.y"
|
||||
|
||||
#line 321 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
function yy_r12()
|
||||
{
|
||||
$this->_retvalue = $this->parse_bool($this->yystack[$this->yyidx + 0]->minor);
|
||||
}
|
||||
#line 729 "smarty_internal_configfileparser.php"
|
||||
#line 193 "smarty_internal_configfileparser.y"
|
||||
|
||||
#line 325 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
function yy_r13()
|
||||
{
|
||||
$this->_retvalue = self::parse_single_quoted_string($this->yystack[$this->yyidx + 0]->minor);
|
||||
}
|
||||
#line 734 "smarty_internal_configfileparser.php"
|
||||
#line 197 "smarty_internal_configfileparser.y"
|
||||
|
||||
#line 329 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
function yy_r14()
|
||||
{
|
||||
$this->_retvalue = self::parse_double_quoted_string($this->yystack[$this->yyidx + 0]->minor);
|
||||
}
|
||||
#line 739 "smarty_internal_configfileparser.php"
|
||||
#line 201 "smarty_internal_configfileparser.y"
|
||||
|
||||
#line 333 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
function yy_r15()
|
||||
{
|
||||
$this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[$this->yyidx + - 1]->minor);
|
||||
}
|
||||
#line 744 "smarty_internal_configfileparser.php"
|
||||
#line 205 "smarty_internal_configfileparser.y"
|
||||
|
||||
#line 337 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
function yy_r16()
|
||||
{
|
||||
$this->_retvalue = '';
|
||||
}
|
||||
#line 749 "smarty_internal_configfileparser.php"
|
||||
#line 209 "smarty_internal_configfileparser.y"
|
||||
|
||||
#line 341 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
function yy_r17()
|
||||
{
|
||||
$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
|
||||
}
|
||||
|
||||
#line 754 "smarty_internal_configfileparser.php"
|
||||
|
||||
private $_retvalue;
|
||||
|
||||
public function yy_reduce($yyruleno)
|
||||
@@ -888,8 +920,8 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
$this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
|
||||
$yy_lefthand_side = $this->_retvalue;
|
||||
}
|
||||
$yygoto = self::$yyRuleInfo[$yyruleno]['lhs'];
|
||||
$yysize = self::$yyRuleInfo[$yyruleno]['rhs'];
|
||||
$yygoto = self::$yyRuleInfo[$yyruleno][0];
|
||||
$yysize = self::$yyRuleInfo[$yyruleno][1];
|
||||
$this->yyidx -= $yysize;
|
||||
for ($i = $yysize; $i; $i --) {
|
||||
// pop all of the right-hand side parameters
|
||||
@@ -924,12 +956,11 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
|
||||
public function yy_syntax_error($yymajor, $TOKEN)
|
||||
{
|
||||
#line 118 "smarty_internal_configfileparser.y"
|
||||
#line 250 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
|
||||
$this->internalError = true;
|
||||
$this->yymajor = $yymajor;
|
||||
$this->compiler->trigger_config_file_error();
|
||||
#line 816 "smarty_internal_configfileparser.php"
|
||||
}
|
||||
|
||||
public function yy_accept()
|
||||
@@ -938,20 +969,19 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
|
||||
}
|
||||
while ($this->yyidx >= 0) {
|
||||
$stack = $this->yy_pop_parser_stack();
|
||||
$this->yy_pop_parser_stack();
|
||||
}
|
||||
#line 110 "smarty_internal_configfileparser.y"
|
||||
#line 242 "../smarty/lexer/smarty_internal_configfileparser.y"
|
||||
|
||||
$this->successful = !$this->internalError;
|
||||
$this->internalError = false;
|
||||
$this->retvalue = $this->_retvalue;
|
||||
//echo $this->retvalue."\n\n";
|
||||
#line 833 "smarty_internal_configfileparser.php"
|
||||
}
|
||||
|
||||
public function doParse($yymajor, $yytokenvalue)
|
||||
{
|
||||
$yyerrorhit = 0; /* True if yymajor has invoked an error */
|
||||
$yyerrorhit = 0; /* True if yymajor has invoked an error */
|
||||
|
||||
if ($this->yyidx === null || $this->yyidx < 0) {
|
||||
$this->yyidx = 0;
|
||||
@@ -1040,3 +1070,4 @@ class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparse
|
||||
} while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -9,25 +9,129 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* Smarty Internal Plugin Templatelexer
|
||||
* Smarty_Internal_Templatelexer
|
||||
* This is the template file lexer.
|
||||
* It is generated from the smarty_internal_templatelexer.plex file
|
||||
*
|
||||
* @package Smarty
|
||||
* @subpackage Compiler
|
||||
* @author Uwe Tews
|
||||
*/
|
||||
class Smarty_Internal_Templatelexer
|
||||
{
|
||||
/**
|
||||
* Source
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $data;
|
||||
/**
|
||||
* byte counter
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $counter;
|
||||
/**
|
||||
* token number
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $token;
|
||||
/**
|
||||
* token value
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $value;
|
||||
public $node;
|
||||
/**
|
||||
* current line
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $line;
|
||||
/**
|
||||
* tag start line
|
||||
*
|
||||
* @var
|
||||
*/
|
||||
public $taglineno;
|
||||
/**
|
||||
* flag if parsing php script
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $is_phpScript = false;
|
||||
/**
|
||||
* escaped left delimiter
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $ldel = '';
|
||||
/**
|
||||
* escaped left delimiter length
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $ldel_length = 0;
|
||||
/**
|
||||
* escaped right delimiter
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $rdel = '';
|
||||
/**
|
||||
* escaped right delimiter length
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $rdel_length = 0;
|
||||
/**
|
||||
* state number
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $state = 1;
|
||||
public $smarty;
|
||||
public $literal_cnt = 0;
|
||||
private $heredoc_id_stack = Array();
|
||||
/**
|
||||
* Smarty object
|
||||
*
|
||||
* @var Smarty
|
||||
*/
|
||||
public $smarty = null;
|
||||
/**
|
||||
* compiler object
|
||||
*
|
||||
* @var Smarty_Internal_TemplateCompilerBase
|
||||
*/
|
||||
private $compiler = null;
|
||||
/**
|
||||
* literal tag nesting level
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
private $literal_cnt = 0;
|
||||
/**
|
||||
* trace file
|
||||
*
|
||||
* @var resource
|
||||
*/
|
||||
public $yyTraceFILE;
|
||||
/**
|
||||
* trace prompt
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $yyTracePrompt;
|
||||
/**
|
||||
* state names
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $state_name = array(1 => 'TEXT', 2 => 'SMARTY', 3 => 'LITERAL', 4 => 'DOUBLEQUOTEDSTRING', 5 => 'CHILDBODY');
|
||||
/**
|
||||
* token names
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $smarty_token_names = array( // Text for parser error messages
|
||||
'IDENTITY' => '===',
|
||||
'NONEIDENTITY' => '!==',
|
||||
@@ -80,9 +184,14 @@ class Smarty_Internal_Templatelexer
|
||||
'TO' => 'to',
|
||||
);
|
||||
|
||||
function __construct($data, $compiler)
|
||||
/**
|
||||
* constructor
|
||||
*
|
||||
* @param string $data template source
|
||||
* @param Smarty_Internal_TemplateCompilerBase $compiler
|
||||
*/
|
||||
function __construct($data, Smarty_Internal_TemplateCompilerBase $compiler)
|
||||
{
|
||||
// $this->data = preg_replace("/(\r\n|\r|\n)/", "\n", $data);
|
||||
$this->data = $data;
|
||||
$this->counter = 0;
|
||||
if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) {
|
||||
@@ -174,7 +283,7 @@ class Smarty_Internal_Templatelexer
|
||||
do {
|
||||
if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
$yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
|
||||
if (!count($yymatches)) {
|
||||
throw new Exception('Error: lexing failed because a rule matched' .
|
||||
' an empty string. Input "' . substr($this->data,
|
||||
@@ -472,7 +581,7 @@ class Smarty_Internal_Templatelexer
|
||||
do {
|
||||
if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
$yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
|
||||
if (!count($yymatches)) {
|
||||
throw new Exception('Error: lexing failed because a rule matched' .
|
||||
' an empty string. Input "' . substr($this->data,
|
||||
@@ -975,7 +1084,7 @@ class Smarty_Internal_Templatelexer
|
||||
do {
|
||||
if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
$yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
|
||||
if (!count($yymatches)) {
|
||||
throw new Exception('Error: lexing failed because a rule matched' .
|
||||
' an empty string. Input "' . substr($this->data,
|
||||
@@ -1078,7 +1187,7 @@ class Smarty_Internal_Templatelexer
|
||||
do {
|
||||
if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
$yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
|
||||
if (!count($yymatches)) {
|
||||
throw new Exception('Error: lexing failed because a rule matched' .
|
||||
' an empty string. Input "' . substr($this->data,
|
||||
@@ -1253,7 +1362,7 @@ class Smarty_Internal_Templatelexer
|
||||
do {
|
||||
if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
$yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
|
||||
if (!count($yymatches)) {
|
||||
throw new Exception('Error: lexing failed because a rule matched' .
|
||||
' an empty string. Input "' . substr($this->data,
|
||||
@@ -1358,7 +1467,7 @@ class Smarty_Internal_Templatelexer
|
||||
do {
|
||||
if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
$yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
|
||||
if (!count($yymatches)) {
|
||||
throw new Exception('Error: lexing failed because a rule matched' .
|
||||
' an empty string. Input "' . substr($this->data,
|
||||
@@ -1474,7 +1583,7 @@ class Smarty_Internal_Templatelexer
|
||||
do {
|
||||
if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
|
||||
$yysubmatches = $yymatches;
|
||||
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
|
||||
$yymatches = preg_grep("/(.|\s)+/", $yysubmatches);
|
||||
if (!count($yymatches)) {
|
||||
throw new Exception('Error: lexing failed because a rule matched' .
|
||||
' an empty string. Input "' . substr($this->data,
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user