Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F391459
smarty_internal_configfilelexer.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
9 KB
Subscribers
None
smarty_internal_configfilelexer.php
View Options
<?php
/**
* Smarty Internal Plugin Configfilelexer
*
* This is the lexer to break the config file source into tokens
* @package Smarty
* @subpackage Config
* @author Uwe Tews
*/
/**
* Smarty Internal Plugin Configfilelexer
*/
class
Smarty_Internal_Configfilelexer
{
public
$data
;
public
$counter
;
public
$token
;
public
$value
;
public
$node
;
public
$line
;
private
$state
=
1
;
public
$smarty_token_names
=
array
(
// Text for parser error messages
);
function
__construct
(
$data
,
$smarty
)
{
// set instance object
self
::
instance
(
$this
);
$this
->
data
=
$data
;
$this
->
counter
=
0
;
$this
->
line
=
1
;
$this
->
smarty
=
$smarty
;
}
public
static
function
&
instance
(
$new_instance
=
null
)
{
static
$instance
=
null
;
if
(
isset
(
$new_instance
)
&&
is_object
(
$new_instance
))
$instance
=
$new_instance
;
return
$instance
;
}
private
$_yy_state
=
1
;
private
$_yy_stack
=
array
();
function
yylex
()
{
return
$this
->{
'yylex'
.
$this
->
_yy_state
}();
}
function
yypushstate
(
$state
)
{
array_push
(
$this
->
_yy_stack
,
$this
->
_yy_state
);
$this
->
_yy_state
=
$state
;
}
function
yypopstate
()
{
$this
->
_yy_state
=
array_pop
(
$this
->
_yy_stack
);
}
function
yybegin
(
$state
)
{
$this
->
_yy_state
=
$state
;
}
function
yylex1
()
{
$tokenMap
=
array
(
1
=>
0
,
2
=>
0
,
3
=>
0
,
4
=>
0
,
5
=>
0
,
6
=>
0
,
7
=>
0
,
8
=>
1
,
10
=>
0
,
11
=>
0
,
12
=>
0
,
13
=>
0
,
);
if
(
$this
->
counter
>=
strlen
(
$this
->
data
))
{
return
false
;
// end of input
}
$yy_global_pattern
=
"/^(#)|^('[^'
\\\\\\\\
]*(?:
\\\\\\\\
.[^'
\\\\\\\\
]*)*')|^(
\"\"\"
[^
\"\\\\\\\\
]*(?:
\\\\\\\\
.[^
\"\\\\\\\\
]*)*
\"\"\"
)|^(
\"
[^
\"\\\\\\\\
]*(?:
\\\\\\\\
.[^
\"\\\\\\\\
]*)*
\"
)|^(
\\
[)|^(])|^(
\\
s*=
\\
s*)|^((
\n
|
\r\n
))|^([
\s
]+)|^(
\\
.)|^(
\\
w+)|^(.)/"
;
do
{
if
(
preg_match
(
$yy_global_pattern
,
substr
(
$this
->
data
,
$this
->
counter
),
$yymatches
))
{
$yysubmatches
=
$yymatches
;
$yymatches
=
array_filter
(
$yymatches
,
'strlen'
);
// remove empty sub-patterns
if
(!
count
(
$yymatches
))
{
throw
new
Exception
(
'Error: lexing failed because a rule matched'
.
'an empty string. Input "'
.
substr
(
$this
->
data
,
$this
->
counter
,
5
)
.
'... state START'
);
}
next
(
$yymatches
);
// skip global match
$this
->
token
=
key
(
$yymatches
);
// token number
if
(
$tokenMap
[
$this
->
token
])
{
// extract sub-patterns for passing to lex function
$yysubmatches
=
array_slice
(
$yysubmatches
,
$this
->
token
+
1
,
$tokenMap
[
$this
->
token
]);
}
else
{
$yysubmatches
=
array
();
}
$this
->
value
=
current
(
$yymatches
);
// token value
$r
=
$this
->{
'yy_r1_'
.
$this
->
token
}(
$yysubmatches
);
if
(
$r
===
null
)
{
$this
->
counter
+=
strlen
(
$this
->
value
);
$this
->
line
+=
substr_count
(
$this
->
value
,
"
\n
"
);
// accept this token
return
true
;
}
elseif
(
$r
===
true
)
{
// we have changed state
// process this token in the new state
return
$this
->
yylex
();
}
elseif
(
$r
===
false
)
{
$this
->
counter
+=
strlen
(
$this
->
value
);
$this
->
line
+=
substr_count
(
$this
->
value
,
"
\n
"
);
if
(
$this
->
counter
>=
strlen
(
$this
->
data
))
{
return
false
;
// end of input
}
// skip this token
continue
;
}
else
{
$yy_yymore_patterns
=
array
(
1
=>
array
(
0
,
"^('[^'
\\\\\\\\
]*(?:
\\\\\\\\
.[^'
\\\\\\\\
]*)*')|^(
\"\"\"
[^
\"\\\\\\\\
]*(?:
\\\\\\\\
.[^
\"\\\\\\\\
]*)*
\"\"\"
)|^(
\"
[^
\"\\\\\\\\
]*(?:
\\\\\\\\
.[^
\"\\\\\\\\
]*)*
\"
)|^(
\\
[)|^(])|^(
\\
s*=
\\
s*)|^((
\n
|
\r\n
))|^([
\s
]+)|^(
\\
.)|^(
\\
w+)|^(.)"
),
2
=>
array
(
0
,
"^(
\"\"\"
[^
\"\\\\\\\\
]*(?:
\\\\\\\\
.[^
\"\\\\\\\\
]*)*
\"\"\"
)|^(
\"
[^
\"\\\\\\\\
]*(?:
\\\\\\\\
.[^
\"\\\\\\\\
]*)*
\"
)|^(
\\
[)|^(])|^(
\\
s*=
\\
s*)|^((
\n
|
\r\n
))|^([
\s
]+)|^(
\\
.)|^(
\\
w+)|^(.)"
),
3
=>
array
(
0
,
"^(
\"
[^
\"\\\\\\\\
]*(?:
\\\\\\\\
.[^
\"\\\\\\\\
]*)*
\"
)|^(
\\
[)|^(])|^(
\\
s*=
\\
s*)|^((
\n
|
\r\n
))|^([
\s
]+)|^(
\\
.)|^(
\\
w+)|^(.)"
),
4
=>
array
(
0
,
"^(
\\
[)|^(])|^(
\\
s*=
\\
s*)|^((
\n
|
\r\n
))|^([
\s
]+)|^(
\\
.)|^(
\\
w+)|^(.)"
),
5
=>
array
(
0
,
"^(])|^(
\\
s*=
\\
s*)|^((
\n
|
\r\n
))|^([
\s
]+)|^(
\\
.)|^(
\\
w+)|^(.)"
),
6
=>
array
(
0
,
"^(
\\
s*=
\\
s*)|^((
\n
|
\r\n
))|^([
\s
]+)|^(
\\
.)|^(
\\
w+)|^(.)"
),
7
=>
array
(
0
,
"^((
\n
|
\r\n
))|^([
\s
]+)|^(
\\
.)|^(
\\
w+)|^(.)"
),
8
=>
array
(
1
,
"^([
\s
]+)|^(
\\
.)|^(
\\
w+)|^(.)"
),
10
=>
array
(
1
,
"^(
\\
.)|^(
\\
w+)|^(.)"
),
11
=>
array
(
1
,
"^(
\\
w+)|^(.)"
),
12
=>
array
(
1
,
"^(.)"
),
13
=>
array
(
1
,
""
),
);
// yymore is needed
do
{
if
(!
strlen
(
$yy_yymore_patterns
[
$this
->
token
][
1
]))
{
throw
new
Exception
(
'cannot do yymore for the last token'
);
}
$yysubmatches
=
array
();
if
(
preg_match
(
'/'
.
$yy_yymore_patterns
[
$this
->
token
][
1
]
.
'/'
,
substr
(
$this
->
data
,
$this
->
counter
),
$yymatches
))
{
$yysubmatches
=
$yymatches
;
$yymatches
=
array_filter
(
$yymatches
,
'strlen'
);
// remove empty sub-patterns
next
(
$yymatches
);
// skip global match
$this
->
token
+=
key
(
$yymatches
)
+
$yy_yymore_patterns
[
$this
->
token
][
0
];
// token number
$this
->
value
=
current
(
$yymatches
);
// token value
$this
->
line
=
substr_count
(
$this
->
value
,
"
\n
"
);
if
(
$tokenMap
[
$this
->
token
])
{
// extract sub-patterns for passing to lex function
$yysubmatches
=
array_slice
(
$yysubmatches
,
$this
->
token
+
1
,
$tokenMap
[
$this
->
token
]);
}
else
{
$yysubmatches
=
array
();
}
}
$r
=
$this
->{
'yy_r1_'
.
$this
->
token
}(
$yysubmatches
);
}
while
(
$r
!==
null
&&
!
is_bool
(
$r
));
if
(
$r
===
true
)
{
// we have changed state
// process this token in the new state
return
$this
->
yylex
();
}
elseif
(
$r
===
false
)
{
$this
->
counter
+=
strlen
(
$this
->
value
);
$this
->
line
+=
substr_count
(
$this
->
value
,
"
\n
"
);
if
(
$this
->
counter
>=
strlen
(
$this
->
data
))
{
return
false
;
// end of input
}
// skip this token
continue
;
}
else
{
// accept
$this
->
counter
+=
strlen
(
$this
->
value
);
$this
->
line
+=
substr_count
(
$this
->
value
,
"
\n
"
);
return
true
;
}
}
}
else
{
throw
new
Exception
(
'Unexpected input at line'
.
$this
->
line
.
': '
.
$this
->
data
[
$this
->
counter
]);
}
break
;
}
while
(
true
);
}
// end function
const
START
=
1
;
function
yy_r1_1
(
$yy_subpatterns
)
{
$this
->
token
=
Smarty_Internal_Configfileparser
::
TPC_COMMENTSTART
;
}
function
yy_r1_2
(
$yy_subpatterns
)
{
$this
->
token
=
Smarty_Internal_Configfileparser
::
TPC_SI_QSTR
;
}
function
yy_r1_3
(
$yy_subpatterns
)
{
$this
->
token
=
Smarty_Internal_Configfileparser
::
TPC_ML_QSTR
;
}
function
yy_r1_4
(
$yy_subpatterns
)
{
$this
->
token
=
Smarty_Internal_Configfileparser
::
TPC_DO_QSTR
;
}
function
yy_r1_5
(
$yy_subpatterns
)
{
$this
->
token
=
Smarty_Internal_Configfileparser
::
TPC_OPENB
;
}
function
yy_r1_6
(
$yy_subpatterns
)
{
$this
->
token
=
Smarty_Internal_Configfileparser
::
TPC_CLOSEB
;
}
function
yy_r1_7
(
$yy_subpatterns
)
{
$this
->
token
=
Smarty_Internal_Configfileparser
::
TPC_EQUAL
;
}
function
yy_r1_8
(
$yy_subpatterns
)
{
$this
->
token
=
Smarty_Internal_Configfileparser
::
TPC_EOL
;
}
function
yy_r1_10
(
$yy_subpatterns
)
{
$this
->
token
=
Smarty_Internal_Configfileparser
::
TPC_SPACE
;
}
function
yy_r1_11
(
$yy_subpatterns
)
{
$this
->
token
=
Smarty_Internal_Configfileparser
::
TPC_DOT
;
}
function
yy_r1_12
(
$yy_subpatterns
)
{
$this
->
token
=
Smarty_Internal_Configfileparser
::
TPC_ID
;
}
function
yy_r1_13
(
$yy_subpatterns
)
{
$this
->
token
=
Smarty_Internal_Configfileparser
::
TPC_OTHER
;
}
}
?>
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Feb 22, 20:24 (1 d, 3 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25824
Default Alt Text
smarty_internal_configfilelexer.php (9 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment