summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorAndrea Faulds <ajf@ajf.me>2015-01-09 06:32:36 +0000
committerAndrea Faulds <ajf@ajf.me>2015-01-17 18:50:28 +0000
commit5f29b980514867f1a09969ca6a1c1f5fb00c3027 (patch)
treecac4264b542148111d6b611385a3788092c8e373 /Zend
parentca11bc0325496bef94d4417f300e323040fb11db (diff)
downloadphp-git-5f29b980514867f1a09969ca6a1c1f5fb00c3027.tar.gz
Error on invalid octal (fixes PHPSadness #31)
Further error checks
Diffstat (limited to 'Zend')
-rw-r--r--Zend/zend_language_scanner.c959
-rw-r--r--Zend/zend_language_scanner.l62
-rw-r--r--Zend/zend_language_scanner_defs.h2
3 files changed, 556 insertions, 467 deletions
diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c
index f9f2c4ba07..6ef1bf11cb 100644
--- a/Zend/zend_language_scanner.c
+++ b/Zend/zend_language_scanner.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.6 */
+/* Generated by re2c 0.13.7.5 */
#line 1 "Zend/zend_language_scanner.l"
/*
+----------------------------------------------------------------------+
@@ -1126,7 +1126,7 @@ yyc_INITIAL:
yy4:
YYDEBUG(4, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1712 "Zend/zend_language_scanner.l"
+#line 1754 "Zend/zend_language_scanner.l"
{
if (YYCURSOR > YYLIMIT) {
return 0;
@@ -1189,7 +1189,7 @@ yy6:
yy7:
YYDEBUG(7, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1703 "Zend/zend_language_scanner.l"
+#line 1745 "Zend/zend_language_scanner.l"
{
if (CG(short_tags)) {
BEGIN(ST_IN_SCRIPTING);
@@ -1204,7 +1204,7 @@ yy8:
++YYCURSOR;
YYDEBUG(9, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1690 "Zend/zend_language_scanner.l"
+#line 1732 "Zend/zend_language_scanner.l"
{
BEGIN(ST_IN_SCRIPTING);
return T_OPEN_TAG_WITH_ECHO;
@@ -1240,7 +1240,7 @@ yy14:
yy15:
YYDEBUG(15, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1696 "Zend/zend_language_scanner.l"
+#line 1738 "Zend/zend_language_scanner.l"
{
HANDLE_NEWLINE(yytext[yyleng-1]);
BEGIN(ST_IN_SCRIPTING);
@@ -1256,38 +1256,38 @@ yy16:
yyc_ST_BACKQUOTE:
{
static const unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 0, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 128,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 0, 0, 0, 0, 0, 0,
+ 0, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 0, 0, 0, 128,
+ 0, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 0, 0, 0, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
};
YYDEBUG(17, *YYCURSOR);
YYFILL(2);
@@ -1316,7 +1316,7 @@ yyc_ST_BACKQUOTE:
yy20:
YYDEBUG(20, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2122 "Zend/zend_language_scanner.l"
+#line 2164 "Zend/zend_language_scanner.l"
{
if (YYCURSOR > YYLIMIT) {
return 0;
@@ -1368,7 +1368,7 @@ yy22:
++YYCURSOR;
YYDEBUG(23, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2066 "Zend/zend_language_scanner.l"
+#line 2108 "Zend/zend_language_scanner.l"
{
BEGIN(ST_IN_SCRIPTING);
return '`';
@@ -1383,7 +1383,7 @@ yy25:
++YYCURSOR;
YYDEBUG(26, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2053 "Zend/zend_language_scanner.l"
+#line 2095 "Zend/zend_language_scanner.l"
{
Z_LVAL_P(zendlval) = (zend_long) '{';
yy_push_state(ST_IN_SCRIPTING);
@@ -1402,16 +1402,17 @@ yy27:
goto yy27;
}
if (yych == '-') goto yy32;
- if (yych == '[') goto yy34;
+ if (yych <= '@') goto yy29;
+ if (yych <= '[') goto yy34;
yy29:
YYDEBUG(29, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1777 "Zend/zend_language_scanner.l"
+#line 1819 "Zend/zend_language_scanner.l"
{
zend_copy_value(zendlval, (yytext+1), (yyleng-1));
return T_VARIABLE;
}
-#line 1415 "Zend/zend_language_scanner.c"
+#line 1416 "Zend/zend_language_scanner.c"
yy30:
YYDEBUG(30, *YYCURSOR);
++YYCURSOR;
@@ -1422,7 +1423,7 @@ yy30:
yy_push_state(ST_LOOKING_FOR_VARNAME);
return T_DOLLAR_OPEN_CURLY_BRACES;
}
-#line 1426 "Zend/zend_language_scanner.c"
+#line 1427 "Zend/zend_language_scanner.c"
yy32:
YYDEBUG(32, *YYCURSOR);
yych = *++YYCURSOR;
@@ -1436,14 +1437,14 @@ yy34:
++YYCURSOR;
YYDEBUG(35, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1770 "Zend/zend_language_scanner.l"
+#line 1812 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 1);
yy_push_state(ST_VAR_OFFSET);
zend_copy_value(zendlval, (yytext+1), (yyleng-1));
return T_VARIABLE;
}
-#line 1447 "Zend/zend_language_scanner.c"
+#line 1448 "Zend/zend_language_scanner.c"
yy36:
YYDEBUG(36, *YYCURSOR);
yych = *++YYCURSOR;
@@ -1461,51 +1462,51 @@ yy37:
++YYCURSOR;
YYDEBUG(38, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1761 "Zend/zend_language_scanner.l"
+#line 1803 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 3);
yy_push_state(ST_LOOKING_FOR_PROPERTY);
zend_copy_value(zendlval, (yytext+1), (yyleng-1));
return T_VARIABLE;
}
-#line 1472 "Zend/zend_language_scanner.c"
+#line 1473 "Zend/zend_language_scanner.c"
}
/* *********************************** */
yyc_ST_DOUBLE_QUOTES:
{
static const unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 0, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 128,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 0, 0, 0, 0, 0, 0,
+ 0, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 0, 0, 0, 128,
+ 0, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 0, 0, 0, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
};
YYDEBUG(39, *YYCURSOR);
YYFILL(2);
@@ -1536,7 +1537,7 @@ yy41:
yy42:
YYDEBUG(42, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2072 "Zend/zend_language_scanner.l"
+#line 2114 "Zend/zend_language_scanner.l"
{
if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
@@ -1585,7 +1586,7 @@ double_quotes_scan_done:
zend_scan_escape_string(zendlval, yytext, yyleng, '"');
return T_ENCAPSED_AND_WHITESPACE;
}
-#line 1589 "Zend/zend_language_scanner.c"
+#line 1590 "Zend/zend_language_scanner.c"
yy43:
YYDEBUG(43, *YYCURSOR);
yych = *++YYCURSOR;
@@ -1596,12 +1597,12 @@ yy44:
++YYCURSOR;
YYDEBUG(45, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2061 "Zend/zend_language_scanner.l"
+#line 2103 "Zend/zend_language_scanner.l"
{
BEGIN(ST_IN_SCRIPTING);
return '"';
}
-#line 1605 "Zend/zend_language_scanner.c"
+#line 1606 "Zend/zend_language_scanner.c"
yy46:
YYDEBUG(46, *YYCURSOR);
yych = *++YYCURSOR;
@@ -1611,14 +1612,14 @@ yy47:
++YYCURSOR;
YYDEBUG(48, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2053 "Zend/zend_language_scanner.l"
+#line 2095 "Zend/zend_language_scanner.l"
{
Z_LVAL_P(zendlval) = (zend_long) '{';
yy_push_state(ST_IN_SCRIPTING);
yyless(1);
return T_CURLY_OPEN;
}
-#line 1622 "Zend/zend_language_scanner.c"
+#line 1623 "Zend/zend_language_scanner.c"
yy49:
YYDEBUG(49, *YYCURSOR);
yyaccept = 0;
@@ -1630,16 +1631,17 @@ yy49:
goto yy49;
}
if (yych == '-') goto yy54;
- if (yych == '[') goto yy56;
+ if (yych <= '@') goto yy51;
+ if (yych <= '[') goto yy56;
yy51:
YYDEBUG(51, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1777 "Zend/zend_language_scanner.l"
+#line 1819 "Zend/zend_language_scanner.l"
{
zend_copy_value(zendlval, (yytext+1), (yyleng-1));
return T_VARIABLE;
}
-#line 1643 "Zend/zend_language_scanner.c"
+#line 1645 "Zend/zend_language_scanner.c"
yy52:
YYDEBUG(52, *YYCURSOR);
++YYCURSOR;
@@ -1650,7 +1652,7 @@ yy52:
yy_push_state(ST_LOOKING_FOR_VARNAME);
return T_DOLLAR_OPEN_CURLY_BRACES;
}
-#line 1654 "Zend/zend_language_scanner.c"
+#line 1656 "Zend/zend_language_scanner.c"
yy54:
YYDEBUG(54, *YYCURSOR);
yych = *++YYCURSOR;
@@ -1664,14 +1666,14 @@ yy56:
++YYCURSOR;
YYDEBUG(57, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1770 "Zend/zend_language_scanner.l"
+#line 1812 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 1);
yy_push_state(ST_VAR_OFFSET);
zend_copy_value(zendlval, (yytext+1), (yyleng-1));
return T_VARIABLE;
}
-#line 1675 "Zend/zend_language_scanner.c"
+#line 1677 "Zend/zend_language_scanner.c"
yy58:
YYDEBUG(58, *YYCURSOR);
yych = *++YYCURSOR;
@@ -1689,14 +1691,14 @@ yy59:
++YYCURSOR;
YYDEBUG(60, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1761 "Zend/zend_language_scanner.l"
+#line 1803 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 3);
yy_push_state(ST_LOOKING_FOR_PROPERTY);
zend_copy_value(zendlval, (yytext+1), (yyleng-1));
return T_VARIABLE;
}
-#line 1700 "Zend/zend_language_scanner.c"
+#line 1702 "Zend/zend_language_scanner.c"
}
/* *********************************** */
yyc_ST_END_HEREDOC:
@@ -1707,7 +1709,7 @@ yyc_ST_END_HEREDOC:
++YYCURSOR;
YYDEBUG(64, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2039 "Zend/zend_language_scanner.l"
+#line 2081 "Zend/zend_language_scanner.l"
{
zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack));
@@ -1720,43 +1722,43 @@ yyc_ST_END_HEREDOC:
BEGIN(ST_IN_SCRIPTING);
return T_END_HEREDOC;
}
-#line 1724 "Zend/zend_language_scanner.c"
+#line 1726 "Zend/zend_language_scanner.c"
/* *********************************** */
yyc_ST_HEREDOC:
{
static const unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 0, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 128,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 0, 0, 0, 0, 0, 0,
+ 0, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 0, 0, 0, 128,
+ 0, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 0, 0, 0, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
};
YYDEBUG(65, *YYCURSOR);
YYFILL(2);
@@ -1782,7 +1784,7 @@ yy67:
yy68:
YYDEBUG(68, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2164 "Zend/zend_language_scanner.l"
+#line 2206 "Zend/zend_language_scanner.l"
{
int newline = 0;
@@ -1855,7 +1857,7 @@ heredoc_scan_done:
zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0);
return T_ENCAPSED_AND_WHITESPACE;
}
-#line 1859 "Zend/zend_language_scanner.c"
+#line 1861 "Zend/zend_language_scanner.c"
yy69:
YYDEBUG(69, *YYCURSOR);
yych = *++YYCURSOR;
@@ -1870,14 +1872,14 @@ yy71:
++YYCURSOR;
YYDEBUG(72, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2053 "Zend/zend_language_scanner.l"
+#line 2095 "Zend/zend_language_scanner.l"
{
Z_LVAL_P(zendlval) = (zend_long) '{';
yy_push_state(ST_IN_SCRIPTING);
yyless(1);
return T_CURLY_OPEN;
}
-#line 1881 "Zend/zend_language_scanner.c"
+#line 1883 "Zend/zend_language_scanner.c"
yy73:
YYDEBUG(73, *YYCURSOR);
yyaccept = 0;
@@ -1889,16 +1891,17 @@ yy73:
goto yy73;
}
if (yych == '-') goto yy78;
- if (yych == '[') goto yy80;
+ if (yych <= '@') goto yy75;
+ if (yych <= '[') goto yy80;
yy75:
YYDEBUG(75, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1777 "Zend/zend_language_scanner.l"
+#line 1819 "Zend/zend_language_scanner.l"
{
zend_copy_value(zendlval, (yytext+1), (yyleng-1));
return T_VARIABLE;
}
-#line 1902 "Zend/zend_language_scanner.c"
+#line 1905 "Zend/zend_language_scanner.c"
yy76:
YYDEBUG(76, *YYCURSOR);
++YYCURSOR;
@@ -1909,7 +1912,7 @@ yy76:
yy_push_state(ST_LOOKING_FOR_VARNAME);
return T_DOLLAR_OPEN_CURLY_BRACES;
}
-#line 1913 "Zend/zend_language_scanner.c"
+#line 1916 "Zend/zend_language_scanner.c"
yy78:
YYDEBUG(78, *YYCURSOR);
yych = *++YYCURSOR;
@@ -1923,14 +1926,14 @@ yy80:
++YYCURSOR;
YYDEBUG(81, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1770 "Zend/zend_language_scanner.l"
+#line 1812 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 1);
yy_push_state(ST_VAR_OFFSET);
zend_copy_value(zendlval, (yytext+1), (yyleng-1));
return T_VARIABLE;
}
-#line 1934 "Zend/zend_language_scanner.c"
+#line 1937 "Zend/zend_language_scanner.c"
yy82:
YYDEBUG(82, *YYCURSOR);
yych = *++YYCURSOR;
@@ -1948,51 +1951,51 @@ yy83:
++YYCURSOR;
YYDEBUG(84, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1761 "Zend/zend_language_scanner.l"
+#line 1803 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 3);
yy_push_state(ST_LOOKING_FOR_PROPERTY);
zend_copy_value(zendlval, (yytext+1), (yyleng-1));
return T_VARIABLE;
}
-#line 1959 "Zend/zend_language_scanner.c"
+#line 1962 "Zend/zend_language_scanner.c"
}
/* *********************************** */
yyc_ST_IN_SCRIPTING:
{
static const unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 192, 64, 0, 0, 64, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 192, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 60, 60, 44, 44, 44, 44, 44, 44,
- 44, 44, 0, 0, 0, 0, 0, 0,
- 0, 36, 36, 36, 36, 36, 36, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 0, 0, 0, 0, 4,
- 0, 36, 36, 36, 36, 36, 36, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 0, 0, 0, 0, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 192, 64, 0, 0, 64, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 192, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 60, 60, 44, 44, 44, 44, 44, 44,
+ 44, 44, 0, 0, 0, 0, 0, 0,
+ 0, 36, 36, 36, 36, 36, 36, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 0, 0, 0, 0, 4,
+ 0, 36, 36, 36, 36, 36, 36, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 0, 0, 0, 0, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4,
};
YYDEBUG(85, *YYCURSOR);
YYFILL(16);
@@ -2138,12 +2141,12 @@ yy87:
yy88:
YYDEBUG(88, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1800 "Zend/zend_language_scanner.l"
+#line 1842 "Zend/zend_language_scanner.l"
{
zend_copy_value(zendlval, yytext, yyleng);
return T_STRING;
}
-#line 2147 "Zend/zend_language_scanner.c"
+#line 2150 "Zend/zend_language_scanner.c"
yy89:
YYDEBUG(89, *YYCURSOR);
yych = *++YYCURSOR;
@@ -2379,7 +2382,7 @@ yy103:
{
return yytext[0];
}
-#line 2383 "Zend/zend_language_scanner.c"
+#line 2386 "Zend/zend_language_scanner.c"
yy104:
YYDEBUG(104, *YYCURSOR);
++YYCURSOR;
@@ -2393,7 +2396,7 @@ yy105:
HANDLE_NEWLINES(yytext, yyleng);
return T_WHITESPACE;
}
-#line 2397 "Zend/zend_language_scanner.c"
+#line 2400 "Zend/zend_language_scanner.c"
yy106:
YYDEBUG(106, *YYCURSOR);
yych = *++YYCURSOR;
@@ -2408,7 +2411,7 @@ yy107:
{
return T_NS_SEPARATOR;
}
-#line 2412 "Zend/zend_language_scanner.c"
+#line 2415 "Zend/zend_language_scanner.c"
yy109:
YYDEBUG(109, *YYCURSOR);
yyaccept = 1;
@@ -2642,7 +2645,7 @@ yy132:
yy_push_state(ST_IN_SCRIPTING);
return '{';
}
-#line 2646 "Zend/zend_language_scanner.c"
+#line 2649 "Zend/zend_language_scanner.c"
yy134:
YYDEBUG(134, *YYCURSOR);
++YYCURSOR;
@@ -2656,7 +2659,7 @@ yy134:
}
return '}';
}
-#line 2660 "Zend/zend_language_scanner.c"
+#line 2663 "Zend/zend_language_scanner.c"
yy136:
YYDEBUG(136, *YYCURSOR);
yyaccept = 2;
@@ -2684,25 +2687,46 @@ yy136:
yy137:
YYDEBUG(137, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1597 "Zend/zend_language_scanner.l"
+#line 1602 "Zend/zend_language_scanner.l"
{
+ char *end;
if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
- ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, NULL, 0));
+ errno = 0;
+ ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0));
+ /* This isn't an assert, we need to ensure 019 isn't valid octal
+ * Because the lexing itself doesn't do that for us
+ */
+ if (end != yytext + yyleng) {
+ zend_error_noreturn(E_COMPILE_ERROR, "Invalid numeric literal");
+ }
+ ZEND_ASSERT(!errno);
} else {
errno = 0;
- ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, NULL, 0));
+ ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0));
if (errno == ERANGE) { /* Overflow */
+ errno = 0;
if (yytext[0] == '0') { /* octal overflow */
- ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, NULL));
+ errno = 0;
+ ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, &end));
} else {
- ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL));
+ ZVAL_DOUBLE(zendlval, zend_strtod(yytext, &end));
+ }
+ /* Also not an assert for the same reason */
+ if (end != yytext + yyleng) {
+ zend_error_noreturn(E_COMPILE_ERROR, "Invalid numeric literal");
}
+ ZEND_ASSERT(!errno);
return T_DNUMBER;
}
+ /* Also not an assert for the same reason */
+ if (end != yytext + yyleng) {
+ zend_error_noreturn(E_COMPILE_ERROR, "Invalid numeric literal");
+ }
+ ZEND_ASSERT(!errno);
}
return T_LNUMBER;
}
-#line 2706 "Zend/zend_language_scanner.c"
+#line 2730 "Zend/zend_language_scanner.c"
yy138:
YYDEBUG(138, *YYCURSOR);
yyaccept = 2;
@@ -2730,7 +2754,7 @@ yy140:
yy141:
YYDEBUG(141, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1806 "Zend/zend_language_scanner.l"
+#line 1848 "Zend/zend_language_scanner.l"
{
while (YYCURSOR < YYLIMIT) {
switch (*YYCURSOR++) {
@@ -2759,14 +2783,14 @@ yy141:
return T_COMMENT;
}
-#line 2763 "Zend/zend_language_scanner.c"
+#line 2787 "Zend/zend_language_scanner.c"
yy142:
YYDEBUG(142, *YYCURSOR);
++YYCURSOR;
yy143:
YYDEBUG(143, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1874 "Zend/zend_language_scanner.l"
+#line 1916 "Zend/zend_language_scanner.l"
{
register char *s, *t;
char *end;
@@ -2834,14 +2858,14 @@ yy143:
}
return T_CONSTANT_ENCAPSED_STRING;
}
-#line 2838 "Zend/zend_language_scanner.c"
+#line 2862 "Zend/zend_language_scanner.c"
yy144:
YYDEBUG(144, *YYCURSOR);
++YYCURSOR;
yy145:
YYDEBUG(145, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1943 "Zend/zend_language_scanner.l"
+#line 1985 "Zend/zend_language_scanner.l"
{
int bprefix = (yytext[0] != '"') ? 1 : 0;
@@ -2882,24 +2906,24 @@ yy145:
BEGIN(ST_DOUBLE_QUOTES);
return '"';
}
-#line 2886 "Zend/zend_language_scanner.c"
+#line 2910 "Zend/zend_language_scanner.c"
yy146:
YYDEBUG(146, *YYCURSOR);
++YYCURSOR;
YYDEBUG(147, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2033 "Zend/zend_language_scanner.l"
+#line 2075 "Zend/zend_language_scanner.l"
{
BEGIN(ST_BACKQUOTE);
return '`';
}
-#line 2897 "Zend/zend_language_scanner.c"
+#line 2921 "Zend/zend_language_scanner.c"
yy148:
YYDEBUG(148, *YYCURSOR);
++YYCURSOR;
YYDEBUG(149, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2295 "Zend/zend_language_scanner.l"
+#line 2337 "Zend/zend_language_scanner.l"
{
if (YYCURSOR > YYLIMIT) {
return 0;
@@ -2908,7 +2932,7 @@ yy148:
zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
goto restart;
}
-#line 2912 "Zend/zend_language_scanner.c"
+#line 2936 "Zend/zend_language_scanner.c"
yy150:
YYDEBUG(150, *YYCURSOR);
++YYCURSOR;
@@ -2935,12 +2959,16 @@ yy152:
yy154:
YYDEBUG(154, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1652 "Zend/zend_language_scanner.l"
+#line 1690 "Zend/zend_language_scanner.l"
{
- ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL));
+ char *end;
+
+ ZVAL_DOUBLE(zendlval, zend_strtod(yytext, &end));
+ /* errno isn't checked since we allow HUGE_VAL/INF overflow */
+ ZEND_ASSERT(end == yytext + yyleng);
return T_DNUMBER;
}
-#line 2944 "Zend/zend_language_scanner.c"
+#line 2972 "Zend/zend_language_scanner.c"
yy155:
YYDEBUG(155, *YYCURSOR);
yyaccept = 2;
@@ -3036,6 +3064,7 @@ yy164:
{
char *bin = yytext + 2; /* Skip "0b" */
int len = yyleng - 2;
+ char *end;
/* Skip any leading 0s */
while (*bin == '0') {
@@ -3047,15 +3076,19 @@ yy164:
if (len == 0) {
ZVAL_LONG(zendlval, 0);
} else {
- ZVAL_LONG(zendlval, ZEND_STRTOL(bin, NULL, 2));
+ errno = 0;
+ ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2));
+ ZEND_ASSERT(!errno && end == yytext + yyleng);
}
return T_LNUMBER;
} else {
- ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, NULL));
+ ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, &end));
+ /* errno isn't checked since we allow HUGE_VAL/INF overflow */
+ ZEND_ASSERT(end == yytext + yyleng);
return T_DNUMBER;
}
}
-#line 3059 "Zend/zend_language_scanner.c"
+#line 3092 "Zend/zend_language_scanner.c"
yy167:
YYDEBUG(167, *YYCURSOR);
++YYCURSOR;
@@ -3067,10 +3100,11 @@ yy167:
}
YYDEBUG(169, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1615 "Zend/zend_language_scanner.l"
+#line 1641 "Zend/zend_language_scanner.l"
{
char *hex = yytext + 2; /* Skip "0x" */
int len = yyleng - 2;
+ char *end;
/* Skip any leading 0s */
while (*hex == '0') {
@@ -3082,15 +3116,19 @@ yy167:
if (len == 0) {
ZVAL_LONG(zendlval, 0);
} else {
- ZVAL_LONG(zendlval, ZEND_STRTOL(hex, NULL, 16));
+ errno = 0;
+ ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16));
+ ZEND_ASSERT(!errno && end == hex + len);
}
return T_LNUMBER;
} else {
- ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, NULL));
+ ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, &end));
+ /* errno isn't checked since we allow HUGE_VAL/INF overflow */
+ ZEND_ASSERT(end == hex + len);
return T_DNUMBER;
}
}
-#line 3094 "Zend/zend_language_scanner.c"
+#line 3132 "Zend/zend_language_scanner.c"
yy170:
YYDEBUG(170, *YYCURSOR);
++YYCURSOR;
@@ -3115,12 +3153,12 @@ yy170:
yy172:
YYDEBUG(172, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1777 "Zend/zend_language_scanner.l"
+#line 1819 "Zend/zend_language_scanner.l"
{
zend_copy_value(zendlval, (yytext+1), (yyleng-1));
return T_VARIABLE;
}
-#line 3124 "Zend/zend_language_scanner.c"
+#line 3162 "Zend/zend_language_scanner.c"
yy173:
YYDEBUG(173, *YYCURSOR);
yych = *++YYCURSOR;
@@ -3138,7 +3176,7 @@ yy174:
{
return T_LOGICAL_XOR;
}
-#line 3142 "Zend/zend_language_scanner.c"
+#line 3180 "Zend/zend_language_scanner.c"
yy176:
YYDEBUG(176, *YYCURSOR);
++YYCURSOR;
@@ -3151,7 +3189,7 @@ yy176:
{
return T_LOGICAL_OR;
}
-#line 3155 "Zend/zend_language_scanner.c"
+#line 3193 "Zend/zend_language_scanner.c"
yy178:
YYDEBUG(178, *YYCURSOR);
++YYCURSOR;
@@ -3161,7 +3199,7 @@ yy178:
{
return T_XOR_EQUAL;
}
-#line 3165 "Zend/zend_language_scanner.c"
+#line 3203 "Zend/zend_language_scanner.c"
yy180:
YYDEBUG(180, *YYCURSOR);
++YYCURSOR;
@@ -3171,7 +3209,7 @@ yy180:
{
return T_BOOLEAN_OR;
}
-#line 3175 "Zend/zend_language_scanner.c"
+#line 3213 "Zend/zend_language_scanner.c"
yy182:
YYDEBUG(182, *YYCURSOR);
++YYCURSOR;
@@ -3181,7 +3219,7 @@ yy182:
{
return T_OR_EQUAL;
}
-#line 3185 "Zend/zend_language_scanner.c"
+#line 3223 "Zend/zend_language_scanner.c"
yy184:
YYDEBUG(184, *YYCURSOR);
++YYCURSOR;
@@ -3191,7 +3229,7 @@ yy184:
{
return T_BOOLEAN_AND;
}
-#line 3195 "Zend/zend_language_scanner.c"
+#line 3233 "Zend/zend_language_scanner.c"
yy186:
YYDEBUG(186, *YYCURSOR);
++YYCURSOR;
@@ -3201,7 +3239,7 @@ yy186:
{
return T_AND_EQUAL;
}
-#line 3205 "Zend/zend_language_scanner.c"
+#line 3243 "Zend/zend_language_scanner.c"
yy188:
YYDEBUG(188, *YYCURSOR);
++YYCURSOR;
@@ -3211,7 +3249,7 @@ yy188:
{
return T_MOD_EQUAL;
}
-#line 3215 "Zend/zend_language_scanner.c"
+#line 3253 "Zend/zend_language_scanner.c"
yy190:
YYDEBUG(190, *YYCURSOR);
yyaccept = 4;
@@ -3220,7 +3258,7 @@ yy190:
yy191:
YYDEBUG(191, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1835 "Zend/zend_language_scanner.l"
+#line 1877 "Zend/zend_language_scanner.l"
{
int doc_com;
@@ -3253,7 +3291,7 @@ yy191:
return T_COMMENT;
}
-#line 3257 "Zend/zend_language_scanner.c"
+#line 3295 "Zend/zend_language_scanner.c"
yy192:
YYDEBUG(192, *YYCURSOR);
yych = *++YYCURSOR;
@@ -3267,7 +3305,7 @@ yy193:
{
return T_DIV_EQUAL;
}
-#line 3271 "Zend/zend_language_scanner.c"
+#line 3309 "Zend/zend_language_scanner.c"
yy195:
YYDEBUG(195, *YYCURSOR);
yych = *++YYCURSOR;
@@ -3295,7 +3333,7 @@ yy198:
{
return T_POW;
}
-#line 3299 "Zend/zend_language_scanner.c"
+#line 3337 "Zend/zend_language_scanner.c"
yy200:
YYDEBUG(200, *YYCURSOR);
++YYCURSOR;
@@ -3305,7 +3343,7 @@ yy200:
{
return T_MUL_EQUAL;
}
-#line 3309 "Zend/zend_language_scanner.c"
+#line 3347 "Zend/zend_language_scanner.c"
yy202:
YYDEBUG(202, *YYCURSOR);
++YYCURSOR;
@@ -3315,7 +3353,7 @@ yy202:
{
return T_POW_EQUAL;
}
-#line 3319 "Zend/zend_language_scanner.c"
+#line 3357 "Zend/zend_language_scanner.c"
yy204:
YYDEBUG(204, *YYCURSOR);
++YYCURSOR;
@@ -3326,7 +3364,7 @@ yy204:
{
return T_SR;
}
-#line 3330 "Zend/zend_language_scanner.c"
+#line 3368 "Zend/zend_language_scanner.c"
yy206:
YYDEBUG(206, *YYCURSOR);
++YYCURSOR;
@@ -3336,7 +3374,7 @@ yy206:
{
return T_IS_GREATER_OR_EQUAL;
}
-#line 3340 "Zend/zend_language_scanner.c"
+#line 3378 "Zend/zend_language_scanner.c"
yy208:
YYDEBUG(208, *YYCURSOR);
++YYCURSOR;
@@ -3346,7 +3384,7 @@ yy208:
{
return T_SR_EQUAL;
}
-#line 3350 "Zend/zend_language_scanner.c"
+#line 3388 "Zend/zend_language_scanner.c"
yy210:
YYDEBUG(210, *YYCURSOR);
yyaccept = 5;
@@ -3361,7 +3399,7 @@ yy211:
{
return T_SL;
}
-#line 3365 "Zend/zend_language_scanner.c"
+#line 3403 "Zend/zend_language_scanner.c"
yy212:
YYDEBUG(212, *YYCURSOR);
++YYCURSOR;
@@ -3371,7 +3409,7 @@ yy212:
{
return T_IS_SMALLER_OR_EQUAL;
}
-#line 3375 "Zend/zend_language_scanner.c"
+#line 3413 "Zend/zend_language_scanner.c"
yy214:
YYDEBUG(214, *YYCURSOR);
++YYCURSOR;
@@ -3382,7 +3420,7 @@ yy215:
{
return T_IS_NOT_EQUAL;
}
-#line 3386 "Zend/zend_language_scanner.c"
+#line 3424 "Zend/zend_language_scanner.c"
yy216:
YYDEBUG(216, *YYCURSOR);
++YYCURSOR;
@@ -3392,7 +3430,7 @@ yy216:
{
return T_SL_EQUAL;
}
-#line 3396 "Zend/zend_language_scanner.c"
+#line 3434 "Zend/zend_language_scanner.c"
yy218:
YYDEBUG(218, *YYCURSOR);
++YYCURSOR;
@@ -3497,7 +3535,7 @@ yy227:
yy228:
YYDEBUG(228, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1985 "Zend/zend_language_scanner.l"
+#line 2027 "Zend/zend_language_scanner.l"
{
char *s;
int bprefix = (yytext[0] != '<') ? 1 : 0;
@@ -3544,7 +3582,7 @@ yy228:
return T_START_HEREDOC;
}
-#line 3548 "Zend/zend_language_scanner.c"
+#line 3586 "Zend/zend_language_scanner.c"
yy229:
YYDEBUG(229, *YYCURSOR);
yych = *++YYCURSOR;
@@ -3588,7 +3626,7 @@ yy232:
{
return T_IS_NOT_IDENTICAL;
}
-#line 3592 "Zend/zend_language_scanner.c"
+#line 3630 "Zend/zend_language_scanner.c"
yy235:
YYDEBUG(235, *YYCURSOR);
++YYCURSOR;
@@ -3598,7 +3636,7 @@ yy235:
{
return T_PLUS_EQUAL;
}
-#line 3602 "Zend/zend_language_scanner.c"
+#line 3640 "Zend/zend_language_scanner.c"
yy237:
YYDEBUG(237, *YYCURSOR);
++YYCURSOR;
@@ -3608,7 +3646,7 @@ yy237:
{
return T_INC;
}
-#line 3612 "Zend/zend_language_scanner.c"
+#line 3650 "Zend/zend_language_scanner.c"
yy239:
YYDEBUG(239, *YYCURSOR);
yych = *++YYCURSOR;
@@ -3631,7 +3669,7 @@ yy241:
{
return T_LIST;
}
-#line 3635 "Zend/zend_language_scanner.c"
+#line 3673 "Zend/zend_language_scanner.c"
yy243:
YYDEBUG(243, *YYCURSOR);
++YYCURSOR;
@@ -3642,7 +3680,7 @@ yy243:
{
return T_IS_EQUAL;
}
-#line 3646 "Zend/zend_language_scanner.c"
+#line 3684 "Zend/zend_language_scanner.c"
yy245:
YYDEBUG(245, *YYCURSOR);
++YYCURSOR;
@@ -3652,7 +3690,7 @@ yy245:
{
return T_DOUBLE_ARROW;
}
-#line 3656 "Zend/zend_language_scanner.c"
+#line 3694 "Zend/zend_language_scanner.c"
yy247:
YYDEBUG(247, *YYCURSOR);
++YYCURSOR;
@@ -3662,7 +3700,7 @@ yy247:
{
return T_IS_IDENTICAL;
}
-#line 3666 "Zend/zend_language_scanner.c"
+#line 3704 "Zend/zend_language_scanner.c"
yy249:
YYDEBUG(249, *YYCURSOR);
yych = *++YYCURSOR;
@@ -3792,11 +3830,11 @@ yy265:
}
YYDEBUG(268, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1685 "Zend/zend_language_scanner.l"
+#line 1727 "Zend/zend_language_scanner.l"
{
return T_NS_C;
}
-#line 3800 "Zend/zend_language_scanner.c"
+#line 3838 "Zend/zend_language_scanner.c"
yy269:
YYDEBUG(269, *YYCURSOR);
yych = *++YYCURSOR;
@@ -3816,11 +3854,11 @@ yy270:
}
YYDEBUG(273, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1681 "Zend/zend_language_scanner.l"
+#line 1723 "Zend/zend_language_scanner.l"
{
return T_DIR;
}
-#line 3824 "Zend/zend_language_scanner.c"
+#line 3862 "Zend/zend_language_scanner.c"
yy274:
YYDEBUG(274, *YYCURSOR);
yych = *++YYCURSOR;
@@ -3845,11 +3883,11 @@ yy276:
}
YYDEBUG(279, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1673 "Zend/zend_language_scanner.l"
+#line 1715 "Zend/zend_language_scanner.l"
{
return T_LINE;
}
-#line 3853 "Zend/zend_language_scanner.c"
+#line 3891 "Zend/zend_language_scanner.c"
yy280:
YYDEBUG(280, *YYCURSOR);
yych = *++YYCURSOR;
@@ -3884,11 +3922,11 @@ yy284:
}
YYDEBUG(287, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1669 "Zend/zend_language_scanner.l"
+#line 1711 "Zend/zend_language_scanner.l"
{
return T_METHOD_C;
}
-#line 3892 "Zend/zend_language_scanner.c"
+#line 3930 "Zend/zend_language_scanner.c"
yy288:
YYDEBUG(288, *YYCURSOR);
yych = *++YYCURSOR;
@@ -3939,11 +3977,11 @@ yy295:
}
YYDEBUG(298, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1665 "Zend/zend_language_scanner.l"
+#line 1707 "Zend/zend_language_scanner.l"
{
return T_FUNC_C;
}
-#line 3947 "Zend/zend_language_scanner.c"
+#line 3985 "Zend/zend_language_scanner.c"
yy299:
YYDEBUG(299, *YYCURSOR);
yych = *++YYCURSOR;
@@ -3963,11 +4001,11 @@ yy300:
}
YYDEBUG(303, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1677 "Zend/zend_language_scanner.l"
+#line 1719 "Zend/zend_language_scanner.l"
{
return T_FILE;
}
-#line 3971 "Zend/zend_language_scanner.c"
+#line 4009 "Zend/zend_language_scanner.c"
yy304:
YYDEBUG(304, *YYCURSOR);
yych = *++YYCURSOR;
@@ -3997,11 +4035,11 @@ yy307:
}
YYDEBUG(310, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1661 "Zend/zend_language_scanner.l"
+#line 1703 "Zend/zend_language_scanner.l"
{
return T_TRAIT_C;
}
-#line 4005 "Zend/zend_language_scanner.c"
+#line 4043 "Zend/zend_language_scanner.c"
yy311:
YYDEBUG(311, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4031,11 +4069,11 @@ yy314:
}
YYDEBUG(317, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1657 "Zend/zend_language_scanner.l"
+#line 1699 "Zend/zend_language_scanner.l"
{
return T_CLASS_C;
}
-#line 4039 "Zend/zend_language_scanner.c"
+#line 4077 "Zend/zend_language_scanner.c"
yy318:
YYDEBUG(318, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4101,7 +4139,7 @@ yy329:
{
return T_HALT_COMPILER;
}
-#line 4105 "Zend/zend_language_scanner.c"
+#line 4143 "Zend/zend_language_scanner.c"
yy331:
YYDEBUG(331, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4125,7 +4163,7 @@ yy333:
{
return T_USE;
}
-#line 4129 "Zend/zend_language_scanner.c"
+#line 4167 "Zend/zend_language_scanner.c"
yy335:
YYDEBUG(335, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4148,7 +4186,7 @@ yy337:
{
return T_UNSET;
}
-#line 4152 "Zend/zend_language_scanner.c"
+#line 4190 "Zend/zend_language_scanner.c"
yy339:
YYDEBUG(339, *YYCURSOR);
++YYCURSOR;
@@ -4324,7 +4362,7 @@ yy354:
{
return T_INT_CAST;
}
-#line 4328 "Zend/zend_language_scanner.c"
+#line 4366 "Zend/zend_language_scanner.c"
yy357:
YYDEBUG(357, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4372,7 +4410,7 @@ yy362:
{
return T_DOUBLE_CAST;
}
-#line 4376 "Zend/zend_language_scanner.c"
+#line 4414 "Zend/zend_language_scanner.c"
yy366:
YYDEBUG(366, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4446,7 +4484,7 @@ yy376:
{
return T_STRING_CAST;
}
-#line 4450 "Zend/zend_language_scanner.c"
+#line 4488 "Zend/zend_language_scanner.c"
yy380:
YYDEBUG(380, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4483,7 +4521,7 @@ yy383:
{
return T_ARRAY_CAST;
}
-#line 4487 "Zend/zend_language_scanner.c"
+#line 4525 "Zend/zend_language_scanner.c"
yy387:
YYDEBUG(387, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4525,7 +4563,7 @@ yy391:
{
return T_OBJECT_CAST;
}
-#line 4529 "Zend/zend_language_scanner.c"
+#line 4567 "Zend/zend_language_scanner.c"
yy395:
YYDEBUG(395, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4570,7 +4608,7 @@ yy400:
{
return T_BOOL_CAST;
}
-#line 4574 "Zend/zend_language_scanner.c"
+#line 4612 "Zend/zend_language_scanner.c"
yy403:
YYDEBUG(403, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4634,7 +4672,7 @@ yy411:
{
return T_UNSET_CAST;
}
-#line 4638 "Zend/zend_language_scanner.c"
+#line 4676 "Zend/zend_language_scanner.c"
yy415:
YYDEBUG(415, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4652,7 +4690,7 @@ yy416:
{
return T_VAR;
}
-#line 4656 "Zend/zend_language_scanner.c"
+#line 4694 "Zend/zend_language_scanner.c"
yy418:
YYDEBUG(418, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4676,7 +4714,7 @@ yy420:
{
return T_NEW;
}
-#line 4680 "Zend/zend_language_scanner.c"
+#line 4718 "Zend/zend_language_scanner.c"
yy422:
YYDEBUG(422, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4719,7 +4757,7 @@ yy428:
{
return T_NAMESPACE;
}
-#line 4723 "Zend/zend_language_scanner.c"
+#line 4761 "Zend/zend_language_scanner.c"
yy430:
YYDEBUG(430, *YYCURSOR);
++YYCURSOR;
@@ -4728,12 +4766,12 @@ yy430:
yy431:
YYDEBUG(431, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1868 "Zend/zend_language_scanner.l"
+#line 1910 "Zend/zend_language_scanner.l"
{
BEGIN(INITIAL);
return T_CLOSE_TAG; /* implicit ';' at php-end tag */
}
-#line 4737 "Zend/zend_language_scanner.c"
+#line 4775 "Zend/zend_language_scanner.c"
yy432:
YYDEBUG(432, *YYCURSOR);
++YYCURSOR;
@@ -4743,7 +4781,7 @@ yy432:
{
return T_COALESCE;
}
-#line 4747 "Zend/zend_language_scanner.c"
+#line 4785 "Zend/zend_language_scanner.c"
yy434:
YYDEBUG(434, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4778,7 +4816,7 @@ yy438:
{
return T_CONCAT_EQUAL;
}
-#line 4782 "Zend/zend_language_scanner.c"
+#line 4820 "Zend/zend_language_scanner.c"
yy440:
YYDEBUG(440, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4791,7 +4829,7 @@ yy440:
{
return T_ELLIPSIS;
}
-#line 4795 "Zend/zend_language_scanner.c"
+#line 4833 "Zend/zend_language_scanner.c"
yy443:
YYDEBUG(443, *YYCURSOR);
++YYCURSOR;
@@ -4801,7 +4839,7 @@ yy443:
{
return T_PAAMAYIM_NEKUDOTAYIM;
}
-#line 4805 "Zend/zend_language_scanner.c"
+#line 4843 "Zend/zend_language_scanner.c"
yy445:
YYDEBUG(445, *YYCURSOR);
++YYCURSOR;
@@ -4827,7 +4865,7 @@ yy447:
{
return T_MINUS_EQUAL;
}
-#line 4831 "Zend/zend_language_scanner.c"
+#line 4869 "Zend/zend_language_scanner.c"
yy449:
YYDEBUG(449, *YYCURSOR);
++YYCURSOR;
@@ -4837,7 +4875,7 @@ yy449:
{
return T_DEC;
}
-#line 4841 "Zend/zend_language_scanner.c"
+#line 4879 "Zend/zend_language_scanner.c"
yy451:
YYDEBUG(451, *YYCURSOR);
++YYCURSOR;
@@ -4848,7 +4886,7 @@ yy451:
yy_push_state(ST_LOOKING_FOR_PROPERTY);
return T_OBJECT_OPERATOR;
}
-#line 4852 "Zend/zend_language_scanner.c"
+#line 4890 "Zend/zend_language_scanner.c"
yy453:
YYDEBUG(453, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4897,7 +4935,7 @@ yy458:
{
return T_PUBLIC;
}
-#line 4901 "Zend/zend_language_scanner.c"
+#line 4939 "Zend/zend_language_scanner.c"
yy460:
YYDEBUG(460, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4956,7 +4994,7 @@ yy467:
{
return T_PROTECTED;
}
-#line 4960 "Zend/zend_language_scanner.c"
+#line 4998 "Zend/zend_language_scanner.c"
yy469:
YYDEBUG(469, *YYCURSOR);
yych = *++YYCURSOR;
@@ -4990,7 +5028,7 @@ yy473:
{
return T_PRIVATE;
}
-#line 4994 "Zend/zend_language_scanner.c"
+#line 5032 "Zend/zend_language_scanner.c"
yy475:
YYDEBUG(475, *YYCURSOR);
++YYCURSOR;
@@ -5003,7 +5041,7 @@ yy475:
{
return T_PRINT;
}
-#line 5007 "Zend/zend_language_scanner.c"
+#line 5045 "Zend/zend_language_scanner.c"
yy477:
YYDEBUG(477, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5032,7 +5070,7 @@ yy480:
{
return T_GOTO;
}
-#line 5036 "Zend/zend_language_scanner.c"
+#line 5074 "Zend/zend_language_scanner.c"
yy482:
YYDEBUG(482, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5060,7 +5098,7 @@ yy485:
{
return T_GLOBAL;
}
-#line 5064 "Zend/zend_language_scanner.c"
+#line 5102 "Zend/zend_language_scanner.c"
yy487:
YYDEBUG(487, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5101,7 +5139,7 @@ yy493:
{
return T_BREAK;
}
-#line 5105 "Zend/zend_language_scanner.c"
+#line 5143 "Zend/zend_language_scanner.c"
yy495:
YYDEBUG(495, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5145,7 +5183,7 @@ yy501:
{
return T_SWITCH;
}
-#line 5149 "Zend/zend_language_scanner.c"
+#line 5187 "Zend/zend_language_scanner.c"
yy503:
YYDEBUG(503, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5173,7 +5211,7 @@ yy506:
{
return T_STATIC;
}
-#line 5177 "Zend/zend_language_scanner.c"
+#line 5215 "Zend/zend_language_scanner.c"
yy508:
YYDEBUG(508, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5204,7 +5242,7 @@ yy511:
{
return T_AS;
}
-#line 5208 "Zend/zend_language_scanner.c"
+#line 5246 "Zend/zend_language_scanner.c"
yy513:
YYDEBUG(513, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5227,7 +5265,7 @@ yy515:
{
return T_ARRAY;
}
-#line 5231 "Zend/zend_language_scanner.c"
+#line 5269 "Zend/zend_language_scanner.c"
yy517:
YYDEBUG(517, *YYCURSOR);
++YYCURSOR;
@@ -5240,7 +5278,7 @@ yy517:
{
return T_LOGICAL_AND;
}
-#line 5244 "Zend/zend_language_scanner.c"
+#line 5282 "Zend/zend_language_scanner.c"
yy519:
YYDEBUG(519, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5278,7 +5316,7 @@ yy524:
{
return T_ABSTRACT;
}
-#line 5282 "Zend/zend_language_scanner.c"
+#line 5320 "Zend/zend_language_scanner.c"
yy526:
YYDEBUG(526, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5306,7 +5344,7 @@ yy529:
{
return T_WHILE;
}
-#line 5310 "Zend/zend_language_scanner.c"
+#line 5348 "Zend/zend_language_scanner.c"
yy531:
YYDEBUG(531, *YYCURSOR);
++YYCURSOR;
@@ -5319,7 +5357,7 @@ yy531:
{
return T_IF;
}
-#line 5323 "Zend/zend_language_scanner.c"
+#line 5361 "Zend/zend_language_scanner.c"
yy533:
YYDEBUG(533, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5375,7 +5413,7 @@ yy538:
{
return T_ISSET;
}
-#line 5379 "Zend/zend_language_scanner.c"
+#line 5417 "Zend/zend_language_scanner.c"
yy540:
YYDEBUG(540, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5433,7 +5471,7 @@ yy547:
{
return T_INCLUDE;
}
-#line 5437 "Zend/zend_language_scanner.c"
+#line 5475 "Zend/zend_language_scanner.c"
yy548:
YYDEBUG(548, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5466,7 +5504,7 @@ yy552:
{
return T_INCLUDE_ONCE;
}
-#line 5470 "Zend/zend_language_scanner.c"
+#line 5508 "Zend/zend_language_scanner.c"
yy554:
YYDEBUG(554, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5504,7 +5542,7 @@ yy559:
{
return T_INTERFACE;
}
-#line 5508 "Zend/zend_language_scanner.c"
+#line 5546 "Zend/zend_language_scanner.c"
yy561:
YYDEBUG(561, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5558,7 +5596,7 @@ yy567:
{
return T_INSTEADOF;
}
-#line 5562 "Zend/zend_language_scanner.c"
+#line 5600 "Zend/zend_language_scanner.c"
yy569:
YYDEBUG(569, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5591,7 +5629,7 @@ yy573:
{
return T_INSTANCEOF;
}
-#line 5595 "Zend/zend_language_scanner.c"
+#line 5633 "Zend/zend_language_scanner.c"
yy575:
YYDEBUG(575, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5639,7 +5677,7 @@ yy582:
{
return T_IMPLEMENTS;
}
-#line 5643 "Zend/zend_language_scanner.c"
+#line 5681 "Zend/zend_language_scanner.c"
yy584:
YYDEBUG(584, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5671,7 +5709,7 @@ yy585:
{
return T_TRY;
}
-#line 5675 "Zend/zend_language_scanner.c"
+#line 5713 "Zend/zend_language_scanner.c"
yy588:
YYDEBUG(588, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5694,7 +5732,7 @@ yy590:
{
return T_TRAIT;
}
-#line 5698 "Zend/zend_language_scanner.c"
+#line 5736 "Zend/zend_language_scanner.c"
yy592:
YYDEBUG(592, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5717,7 +5755,7 @@ yy594:
{
return T_THROW;
}
-#line 5721 "Zend/zend_language_scanner.c"
+#line 5759 "Zend/zend_language_scanner.c"
yy596:
YYDEBUG(596, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5745,7 +5783,7 @@ yy599:
{
return T_YIELD;
}
-#line 5749 "Zend/zend_language_scanner.c"
+#line 5787 "Zend/zend_language_scanner.c"
yy601:
YYDEBUG(601, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5810,7 +5848,7 @@ yy608:
{
return T_REQUIRE;
}
-#line 5814 "Zend/zend_language_scanner.c"
+#line 5852 "Zend/zend_language_scanner.c"
yy609:
YYDEBUG(609, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5843,7 +5881,7 @@ yy613:
{
return T_REQUIRE_ONCE;
}
-#line 5847 "Zend/zend_language_scanner.c"
+#line 5885 "Zend/zend_language_scanner.c"
yy615:
YYDEBUG(615, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5866,7 +5904,7 @@ yy617:
{
return T_RETURN;
}
-#line 5870 "Zend/zend_language_scanner.c"
+#line 5908 "Zend/zend_language_scanner.c"
yy619:
YYDEBUG(619, *YYCURSOR);
yych = *++YYCURSOR;
@@ -5960,7 +5998,7 @@ yy628:
{
return T_CONTINUE;
}
-#line 5964 "Zend/zend_language_scanner.c"
+#line 6002 "Zend/zend_language_scanner.c"
yy630:
YYDEBUG(630, *YYCURSOR);
++YYCURSOR;
@@ -5973,7 +6011,7 @@ yy630:
{
return T_CONST;
}
-#line 5977 "Zend/zend_language_scanner.c"
+#line 6015 "Zend/zend_language_scanner.c"
yy632:
YYDEBUG(632, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6002,7 +6040,7 @@ yy635:
{
return T_CLONE;
}
-#line 6006 "Zend/zend_language_scanner.c"
+#line 6044 "Zend/zend_language_scanner.c"
yy637:
YYDEBUG(637, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6020,7 +6058,7 @@ yy638:
{
return T_CLASS;
}
-#line 6024 "Zend/zend_language_scanner.c"
+#line 6062 "Zend/zend_language_scanner.c"
yy640:
YYDEBUG(640, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6070,7 +6108,7 @@ yy647:
{
return T_CALLABLE;
}
-#line 6074 "Zend/zend_language_scanner.c"
+#line 6112 "Zend/zend_language_scanner.c"
yy649:
YYDEBUG(649, *YYCURSOR);
++YYCURSOR;
@@ -6083,7 +6121,7 @@ yy649:
{
return T_CASE;
}
-#line 6087 "Zend/zend_language_scanner.c"
+#line 6125 "Zend/zend_language_scanner.c"
yy651:
YYDEBUG(651, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6101,7 +6139,7 @@ yy652:
{
return T_CATCH;
}
-#line 6105 "Zend/zend_language_scanner.c"
+#line 6143 "Zend/zend_language_scanner.c"
yy654:
YYDEBUG(654, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6156,7 +6194,7 @@ yy662:
{
return T_FUNCTION;
}
-#line 6160 "Zend/zend_language_scanner.c"
+#line 6198 "Zend/zend_language_scanner.c"
yy664:
YYDEBUG(664, *YYCURSOR);
++YYCURSOR;
@@ -6184,7 +6222,7 @@ yy665:
{
return T_FOR;
}
-#line 6188 "Zend/zend_language_scanner.c"
+#line 6226 "Zend/zend_language_scanner.c"
yy666:
YYDEBUG(666, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6212,7 +6250,7 @@ yy669:
{
return T_FOREACH;
}
-#line 6216 "Zend/zend_language_scanner.c"
+#line 6254 "Zend/zend_language_scanner.c"
yy671:
YYDEBUG(671, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6250,7 +6288,7 @@ yy674:
{
return T_FINAL;
}
-#line 6254 "Zend/zend_language_scanner.c"
+#line 6292 "Zend/zend_language_scanner.c"
yy675:
YYDEBUG(675, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6268,7 +6306,7 @@ yy676:
{
return T_FINALLY;
}
-#line 6272 "Zend/zend_language_scanner.c"
+#line 6310 "Zend/zend_language_scanner.c"
yy678:
YYDEBUG(678, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6303,7 +6341,7 @@ yy680:
{
return T_DO;
}
-#line 6307 "Zend/zend_language_scanner.c"
+#line 6345 "Zend/zend_language_scanner.c"
yy682:
YYDEBUG(682, *YYCURSOR);
++YYCURSOR;
@@ -6316,7 +6354,7 @@ yy682:
{
return T_EXIT;
}
-#line 6320 "Zend/zend_language_scanner.c"
+#line 6358 "Zend/zend_language_scanner.c"
yy684:
YYDEBUG(684, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6355,7 +6393,7 @@ yy689:
{
return T_DEFAULT;
}
-#line 6359 "Zend/zend_language_scanner.c"
+#line 6397 "Zend/zend_language_scanner.c"
yy691:
YYDEBUG(691, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6383,7 +6421,7 @@ yy694:
{
return T_DECLARE;
}
-#line 6387 "Zend/zend_language_scanner.c"
+#line 6425 "Zend/zend_language_scanner.c"
yy696:
YYDEBUG(696, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6467,7 +6505,7 @@ yy707:
{
return T_EXTENDS;
}
-#line 6471 "Zend/zend_language_scanner.c"
+#line 6509 "Zend/zend_language_scanner.c"
yy709:
YYDEBUG(709, *YYCURSOR);
++YYCURSOR;
@@ -6480,7 +6518,7 @@ yy709:
{
return T_EXIT;
}
-#line 6484 "Zend/zend_language_scanner.c"
+#line 6522 "Zend/zend_language_scanner.c"
yy711:
YYDEBUG(711, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6498,7 +6536,7 @@ yy712:
{
return T_EVAL;
}
-#line 6502 "Zend/zend_language_scanner.c"
+#line 6540 "Zend/zend_language_scanner.c"
yy714:
YYDEBUG(714, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6572,7 +6610,7 @@ yy723:
{
return T_ENDWHILE;
}
-#line 6576 "Zend/zend_language_scanner.c"
+#line 6614 "Zend/zend_language_scanner.c"
yy725:
YYDEBUG(725, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6605,7 +6643,7 @@ yy729:
{
return T_ENDSWITCH;
}
-#line 6609 "Zend/zend_language_scanner.c"
+#line 6647 "Zend/zend_language_scanner.c"
yy731:
YYDEBUG(731, *YYCURSOR);
++YYCURSOR;
@@ -6618,7 +6656,7 @@ yy731:
{
return T_ENDIF;
}
-#line 6622 "Zend/zend_language_scanner.c"
+#line 6660 "Zend/zend_language_scanner.c"
yy733:
YYDEBUG(733, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6651,7 +6689,7 @@ yy735:
{
return T_ENDFOR;
}
-#line 6655 "Zend/zend_language_scanner.c"
+#line 6693 "Zend/zend_language_scanner.c"
yy736:
YYDEBUG(736, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6679,7 +6717,7 @@ yy739:
{
return T_ENDFOREACH;
}
-#line 6683 "Zend/zend_language_scanner.c"
+#line 6721 "Zend/zend_language_scanner.c"
yy741:
YYDEBUG(741, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6717,7 +6755,7 @@ yy746:
{
return T_ENDDECLARE;
}
-#line 6721 "Zend/zend_language_scanner.c"
+#line 6759 "Zend/zend_language_scanner.c"
yy748:
YYDEBUG(748, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6740,7 +6778,7 @@ yy750:
{
return T_EMPTY;
}
-#line 6744 "Zend/zend_language_scanner.c"
+#line 6782 "Zend/zend_language_scanner.c"
yy752:
YYDEBUG(752, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6773,7 +6811,7 @@ yy754:
{
return T_ELSE;
}
-#line 6777 "Zend/zend_language_scanner.c"
+#line 6815 "Zend/zend_language_scanner.c"
yy755:
YYDEBUG(755, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6791,7 +6829,7 @@ yy756:
{
return T_ELSEIF;
}
-#line 6795 "Zend/zend_language_scanner.c"
+#line 6833 "Zend/zend_language_scanner.c"
yy758:
YYDEBUG(758, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6809,44 +6847,44 @@ yy759:
{
return T_ECHO;
}
-#line 6813 "Zend/zend_language_scanner.c"
+#line 6851 "Zend/zend_language_scanner.c"
}
/* *********************************** */
yyc_ST_LOOKING_FOR_PROPERTY:
{
static const unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 128, 128, 0, 0, 128, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 0, 0, 0, 0, 0, 0,
- 0, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 0, 0, 0, 0, 64,
- 0, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 0, 0, 0, 0, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 128, 128, 0, 0, 128, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 128, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 0, 0, 0, 0, 0, 0,
+ 0, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 0, 0, 0, 0, 64,
+ 0, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 0, 0, 0, 0, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
};
YYDEBUG(761, *YYCURSOR);
YYFILL(2);
@@ -6887,7 +6925,7 @@ yy764:
HANDLE_NEWLINES(yytext, yyleng);
return T_WHITESPACE;
}
-#line 6891 "Zend/zend_language_scanner.c"
+#line 6929 "Zend/zend_language_scanner.c"
yy765:
YYDEBUG(765, *YYCURSOR);
++YYCURSOR;
@@ -6901,7 +6939,7 @@ yy766:
yy_pop_state();
goto restart;
}
-#line 6905 "Zend/zend_language_scanner.c"
+#line 6943 "Zend/zend_language_scanner.c"
yy767:
YYDEBUG(767, *YYCURSOR);
++YYCURSOR;
@@ -6916,7 +6954,7 @@ yy768:
zend_copy_value(zendlval, yytext, yyleng);
return T_STRING;
}
-#line 6920 "Zend/zend_language_scanner.c"
+#line 6958 "Zend/zend_language_scanner.c"
yy769:
YYDEBUG(769, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6941,7 +6979,7 @@ yy772:
{
return T_OBJECT_OPERATOR;
}
-#line 6945 "Zend/zend_language_scanner.c"
+#line 6983 "Zend/zend_language_scanner.c"
yy774:
YYDEBUG(774, *YYCURSOR);
++YYCURSOR;
@@ -6958,38 +6996,38 @@ yy775:
yyc_ST_LOOKING_FOR_VARNAME:
{
static const unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 0, 0, 0, 0, 0, 0,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 128,
- 0, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 0, 0, 0, 0, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
- 128, 128, 128, 128, 128, 128, 128, 128,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 0, 0, 0, 0, 0, 0,
+ 0, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 0, 0, 0, 128,
+ 0, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 0, 0, 0, 0, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128,
};
YYDEBUG(776, *YYCURSOR);
YYFILL(2);
@@ -7033,7 +7071,7 @@ yy779:
yy_push_state(ST_IN_SCRIPTING);
goto restart;
}
-#line 7037 "Zend/zend_language_scanner.c"
+#line 7075 "Zend/zend_language_scanner.c"
yy780:
YYDEBUG(780, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7048,8 +7086,10 @@ yy782:
if (yybm[0+yych] & 128) {
goto yy781;
}
- if (yych == '[') goto yy784;
+ if (yych <= '@') goto yy783;
+ if (yych <= '[') goto yy784;
if (yych == '}') goto yy784;
+yy783:
YYDEBUG(783, *YYCURSOR);
YYCURSOR = YYMARKER;
goto yy779;
@@ -7066,7 +7106,7 @@ yy784:
yy_push_state(ST_IN_SCRIPTING);
return T_STRING_VARNAME;
}
-#line 7070 "Zend/zend_language_scanner.c"
+#line 7110 "Zend/zend_language_scanner.c"
}
/* *********************************** */
yyc_ST_NOWDOC:
@@ -7077,7 +7117,7 @@ yyc_ST_NOWDOC:
++YYCURSOR;
YYDEBUG(789, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2238 "Zend/zend_language_scanner.l"
+#line 2280 "Zend/zend_language_scanner.l"
{
int newline = 0;
@@ -7133,43 +7173,43 @@ nowdoc_scan_done:
HANDLE_NEWLINES(yytext, yyleng - newline);
return T_ENCAPSED_AND_WHITESPACE;
}
-#line 7137 "Zend/zend_language_scanner.c"
+#line 7177 "Zend/zend_language_scanner.c"
/* *********************************** */
yyc_ST_VAR_OFFSET:
{
static const unsigned char yybm[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 240, 240, 112, 112, 112, 112, 112, 112,
- 112, 112, 0, 0, 0, 0, 0, 0,
- 0, 80, 80, 80, 80, 80, 80, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 0, 0, 0, 0, 16,
- 0, 80, 80, 80, 80, 80, 80, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 0, 0, 0, 0, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 16, 16, 16, 16, 16,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 240, 240, 112, 112, 112, 112, 112, 112,
+ 112, 112, 0, 0, 0, 0, 0, 0,
+ 0, 80, 80, 80, 80, 80, 80, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 0, 0, 0, 0, 16,
+ 0, 80, 80, 80, 80, 80, 80, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 0, 0, 0, 0, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16,
};
YYDEBUG(790, *YYCURSOR);
YYFILL(3);
@@ -7240,16 +7280,23 @@ yy792:
yy793:
YYDEBUG(793, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1638 "Zend/zend_language_scanner.l"
+#line 1669 "Zend/zend_language_scanner.l"
{ /* Offset could be treated as a long */
if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) {
- ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, NULL, 10));
+ char *end;
+ errno = 0;
+ ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 10));
+ if (errno == ERANGE) {
+ goto string;
+ }
+ ZEND_ASSERT(end == yytext + yyleng);
} else {
+string:
ZVAL_STRINGL(zendlval, yytext, yyleng);
}
return T_NUM_STRING;
}
-#line 7253 "Zend/zend_language_scanner.c"
+#line 7300 "Zend/zend_language_scanner.c"
yy794:
YYDEBUG(794, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7269,23 +7316,23 @@ yy795:
yy796:
YYDEBUG(796, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1787 "Zend/zend_language_scanner.l"
+#line 1829 "Zend/zend_language_scanner.l"
{
/* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
return yytext[0];
}
-#line 7278 "Zend/zend_language_scanner.c"
+#line 7325 "Zend/zend_language_scanner.c"
yy797:
YYDEBUG(797, *YYCURSOR);
++YYCURSOR;
YYDEBUG(798, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1782 "Zend/zend_language_scanner.l"
+#line 1824 "Zend/zend_language_scanner.l"
{
yy_pop_state();
return ']';
}
-#line 7289 "Zend/zend_language_scanner.c"
+#line 7336 "Zend/zend_language_scanner.c"
yy799:
YYDEBUG(799, *YYCURSOR);
yych = *++YYCURSOR;
@@ -7295,7 +7342,7 @@ yy800:
++YYCURSOR;
YYDEBUG(801, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1792 "Zend/zend_language_scanner.l"
+#line 1834 "Zend/zend_language_scanner.l"
{
/* Invalid rule to return a more explicit parse error with proper line number */
yyless(0);
@@ -7303,7 +7350,7 @@ yy800:
ZVAL_NULL(zendlval);
return T_ENCAPSED_AND_WHITESPACE;
}
-#line 7307 "Zend/zend_language_scanner.c"
+#line 7354 "Zend/zend_language_scanner.c"
yy802:
YYDEBUG(802, *YYCURSOR);
++YYCURSOR;
@@ -7312,18 +7359,18 @@ yy802:
yy803:
YYDEBUG(803, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1800 "Zend/zend_language_scanner.l"
+#line 1842 "Zend/zend_language_scanner.l"
{
zend_copy_value(zendlval, yytext, yyleng);
return T_STRING;
}
-#line 7321 "Zend/zend_language_scanner.c"
+#line 7368 "Zend/zend_language_scanner.c"
yy804:
YYDEBUG(804, *YYCURSOR);
++YYCURSOR;
YYDEBUG(805, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2295 "Zend/zend_language_scanner.l"
+#line 2337 "Zend/zend_language_scanner.l"
{
if (YYCURSOR > YYLIMIT) {
return 0;
@@ -7332,7 +7379,7 @@ yy804:
zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
goto restart;
}
-#line 7336 "Zend/zend_language_scanner.c"
+#line 7383 "Zend/zend_language_scanner.c"
yy806:
YYDEBUG(806, *YYCURSOR);
++YYCURSOR;
@@ -7368,12 +7415,12 @@ yy808:
yy810:
YYDEBUG(810, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1777 "Zend/zend_language_scanner.l"
+#line 1819 "Zend/zend_language_scanner.l"
{
zend_copy_value(zendlval, (yytext+1), (yyleng-1));
return T_VARIABLE;
}
-#line 7377 "Zend/zend_language_scanner.c"
+#line 7424 "Zend/zend_language_scanner.c"
yy811:
YYDEBUG(811, *YYCURSOR);
++YYCURSOR;
@@ -7413,12 +7460,12 @@ yy816:
yy818:
YYDEBUG(818, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1647 "Zend/zend_language_scanner.l"
+#line 1685 "Zend/zend_language_scanner.l"
{ /* Offset must be treated as a string */
ZVAL_STRINGL(zendlval, yytext, yyleng);
return T_NUM_STRING;
}
-#line 7422 "Zend/zend_language_scanner.c"
+#line 7469 "Zend/zend_language_scanner.c"
yy819:
YYDEBUG(819, *YYCURSOR);
++YYCURSOR;
@@ -7441,6 +7488,6 @@ yy821:
goto yy818;
}
}
-#line 2304 "Zend/zend_language_scanner.l"
+#line 2346 "Zend/zend_language_scanner.l"
}
diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l
index 938bc4e7d7..2412631d91 100644
--- a/Zend/zend_language_scanner.l
+++ b/Zend/zend_language_scanner.l
@@ -1574,6 +1574,7 @@ NEWLINE ("\r"|"\n"|"\r\n")
<ST_IN_SCRIPTING>{BNUM} {
char *bin = yytext + 2; /* Skip "0b" */
int len = yyleng - 2;
+ char *end;
/* Skip any leading 0s */
while (*bin == '0') {
@@ -1585,29 +1586,54 @@ NEWLINE ("\r"|"\n"|"\r\n")
if (len == 0) {
ZVAL_LONG(zendlval, 0);
} else {
- ZVAL_LONG(zendlval, ZEND_STRTOL(bin, NULL, 2));
+ errno = 0;
+ ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2));
+ ZEND_ASSERT(!errno && end == yytext + yyleng);
}
return T_LNUMBER;
} else {
- ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, NULL));
+ ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, &end));
+ /* errno isn't checked since we allow HUGE_VAL/INF overflow */
+ ZEND_ASSERT(end == yytext + yyleng);
return T_DNUMBER;
}
}
<ST_IN_SCRIPTING>{LNUM} {
+ char *end;
if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
- ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, NULL, 0));
+ errno = 0;
+ ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0));
+ /* This isn't an assert, we need to ensure 019 isn't valid octal
+ * Because the lexing itself doesn't do that for us
+ */
+ if (end != yytext + yyleng) {
+ zend_error_noreturn(E_COMPILE_ERROR, "Invalid numeric literal");
+ }
+ ZEND_ASSERT(!errno);
} else {
errno = 0;
- ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, NULL, 0));
+ ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0));
if (errno == ERANGE) { /* Overflow */
+ errno = 0;
if (yytext[0] == '0') { /* octal overflow */
- ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, NULL));
+ errno = 0;
+ ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, &end));
} else {
- ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL));
+ ZVAL_DOUBLE(zendlval, zend_strtod(yytext, &end));
+ }
+ /* Also not an assert for the same reason */
+ if (end != yytext + yyleng) {
+ zend_error_noreturn(E_COMPILE_ERROR, "Invalid numeric literal");
}
+ ZEND_ASSERT(!errno);
return T_DNUMBER;
}
+ /* Also not an assert for the same reason */
+ if (end != yytext + yyleng) {
+ zend_error_noreturn(E_COMPILE_ERROR, "Invalid numeric literal");
+ }
+ ZEND_ASSERT(!errno);
}
return T_LNUMBER;
}
@@ -1615,6 +1641,7 @@ NEWLINE ("\r"|"\n"|"\r\n")
<ST_IN_SCRIPTING>{HNUM} {
char *hex = yytext + 2; /* Skip "0x" */
int len = yyleng - 2;
+ char *end;
/* Skip any leading 0s */
while (*hex == '0') {
@@ -1626,19 +1653,30 @@ NEWLINE ("\r"|"\n"|"\r\n")
if (len == 0) {
ZVAL_LONG(zendlval, 0);
} else {
- ZVAL_LONG(zendlval, ZEND_STRTOL(hex, NULL, 16));
+ errno = 0;
+ ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16));
+ ZEND_ASSERT(!errno && end == hex + len);
}
return T_LNUMBER;
} else {
- ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, NULL));
+ ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, &end));
+ /* errno isn't checked since we allow HUGE_VAL/INF overflow */
+ ZEND_ASSERT(end == hex + len);
return T_DNUMBER;
}
}
<ST_VAR_OFFSET>[0]|([1-9][0-9]*) { /* Offset could be treated as a long */
if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) {
- ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, NULL, 10));
+ char *end;
+ errno = 0;
+ ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 10));
+ if (errno == ERANGE) {
+ goto string;
+ }
+ ZEND_ASSERT(end == yytext + yyleng);
} else {
+string:
ZVAL_STRINGL(zendlval, yytext, yyleng);
}
return T_NUM_STRING;
@@ -1650,7 +1688,11 @@ NEWLINE ("\r"|"\n"|"\r\n")
}
<ST_IN_SCRIPTING>{DNUM}|{EXPONENT_DNUM} {
- ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL));
+ char *end;
+
+ ZVAL_DOUBLE(zendlval, zend_strtod(yytext, &end));
+ /* errno isn't checked since we allow HUGE_VAL/INF overflow */
+ ZEND_ASSERT(end == yytext + yyleng);
return T_DNUMBER;
}
diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h
index 1118239c8d..baf859bcd4 100644
--- a/Zend/zend_language_scanner_defs.h
+++ b/Zend/zend_language_scanner_defs.h
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.6 */
+/* Generated by re2c 0.13.7.5 */
#line 3 "Zend/zend_language_scanner_defs.h"
enum YYCONDTYPE {