summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHannes Magnusson <bjori@php.net>2011-08-16 10:44:47 +0000
committerHannes Magnusson <bjori@php.net>2011-08-16 10:44:47 +0000
commit306c42023e048451c6bb819661b229e95f314231 (patch)
tree91913f59569990d82546e8495ef4fee8a54e24de
parent466d5414dfb43074c9bbfddad31bc96e4def336d (diff)
downloadphp-git-306c42023e048451c6bb819661b229e95f314231.tar.gz
Callable typehint following the rules of is_callable($arg, false);
-rw-r--r--Zend/tests/callable_type_hint_001.phpt39
-rw-r--r--Zend/tests/callable_type_hint_002.phpt27
-rw-r--r--Zend/tests/callable_type_hint_003.phpt21
-rw-r--r--Zend/zend.h1
-rw-r--r--Zend/zend_API.c2
-rw-r--r--Zend/zend_compile.c51
-rw-r--r--Zend/zend_execute.c25
-rw-r--r--Zend/zend_language_parser.y4
-rw-r--r--Zend/zend_language_scanner.c1330
-rw-r--r--Zend/zend_language_scanner.l4
-rw-r--r--ext/reflection/php_reflection.c17
-rw-r--r--ext/tokenizer/tokenizer_data.c4
12 files changed, 857 insertions, 668 deletions
diff --git a/Zend/tests/callable_type_hint_001.phpt b/Zend/tests/callable_type_hint_001.phpt
new file mode 100644
index 0000000000..36643fa64d
--- /dev/null
+++ b/Zend/tests/callable_type_hint_001.phpt
@@ -0,0 +1,39 @@
+--TEST--
+callable type hint#001
+--FILE--
+<?php
+
+class bar {
+ function baz() {}
+ static function foo() {}
+}
+function foo(callable $bar) {
+ var_dump($bar);
+}
+$closure = function () {};
+
+foo("strpos");
+foo("foo");
+foo(array("bar", "baz"));
+foo(array("bar", "foo"));
+foo($closure);
+--EXPECTF--
+string(6) "strpos"
+string(3) "foo"
+
+Strict Standards: Non-static method bar::baz() should not be called statically in %scallable_type_hint_001.php on line %d
+array(2) {
+ [0]=>
+ string(3) "bar"
+ [1]=>
+ string(3) "baz"
+}
+array(2) {
+ [0]=>
+ string(3) "bar"
+ [1]=>
+ string(3) "foo"
+}
+object(Closure)#%d (0) {
+}
+
diff --git a/Zend/tests/callable_type_hint_002.phpt b/Zend/tests/callable_type_hint_002.phpt
new file mode 100644
index 0000000000..b1b7339c31
--- /dev/null
+++ b/Zend/tests/callable_type_hint_002.phpt
@@ -0,0 +1,27 @@
+--TEST--
+callable type hint#002 - Reflection
+--FILE--
+<?php
+
+class bar {
+ static function foo(callable $arg) {}
+}
+function foo(callable $bar) {
+}
+$closure = function (callable $arg) {};
+
+$rf = new ReflectionFunction("foo");
+var_dump($rf->getParameters()[0]->isCallable());
+
+$rm = new ReflectionMethod("bar", "foo");
+var_dump($rm->getParameters()[0]->isCallable());
+
+$rc = new ReflectionFunction($closure);
+var_dump($rc->getParameters()[0]->isCallable());
+
+?>
+--EXPECT--
+bool(true)
+bool(true)
+bool(true)
+
diff --git a/Zend/tests/callable_type_hint_003.phpt b/Zend/tests/callable_type_hint_003.phpt
new file mode 100644
index 0000000000..83f5090afa
--- /dev/null
+++ b/Zend/tests/callable_type_hint_003.phpt
@@ -0,0 +1,21 @@
+--TEST--
+callable type hint#003
+--FILE--
+<?php
+
+function foo(callable $a, $b, callable $c) {
+ var_dump($a, $b, $c);
+}
+function bar(callable $a = null) {
+ var_dump($a);
+}
+
+foo("strpos", 123, "strpos");
+bar("substr");
+?>
+--EXPECT--
+string(6) "strpos"
+int(123)
+string(6) "strpos"
+string(6) "substr"
+
diff --git a/Zend/zend.h b/Zend/zend.h
index 8caa382326..4e1290a5c0 100644
--- a/Zend/zend.h
+++ b/Zend/zend.h
@@ -575,6 +575,7 @@ typedef int (*zend_write_func_t)(const char *str, uint str_length);
#define IS_RESOURCE 7
#define IS_CONSTANT 8
#define IS_CONSTANT_ARRAY 9
+#define IS_CALLABLE 10
/* Ugly hack to support constants as static array indices */
#define IS_CONSTANT_TYPE_MASK 0x00f
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index 96e5b13a6b..5401483db7 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -217,6 +217,8 @@ ZEND_API char *zend_get_type_by_const(int type) /* {{{ */
return "resource";
case IS_NULL:
return "null";
+ case IS_CALLABLE:
+ return "callable";
case IS_ARRAY:
return "array";
default:
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 48e7a2f0f9..943c5e4991 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -1890,27 +1890,38 @@ void zend_do_receive_arg(zend_uchar op, znode *varname, const znode *offset, con
cur_arg_info->allow_null = 0;
if (class_type->u.constant.type != IS_NULL) {
- cur_arg_info->type_hint = IS_OBJECT;
- if (ZEND_FETCH_CLASS_DEFAULT == zend_get_class_fetch_type(Z_STRVAL(class_type->u.constant), Z_STRLEN(class_type->u.constant))) {
- zend_resolve_class_name(class_type, opline->extended_value, 1 TSRMLS_CC);
- }
- class_type->u.constant.value.str.val = zend_new_interned_string(class_type->u.constant.value.str.val, class_type->u.constant.value.str.len + 1, 1 TSRMLS_CC);
- cur_arg_info->class_name = class_type->u.constant.value.str.val;
- cur_arg_info->class_name_len = class_type->u.constant.value.str.len;
- if (op == ZEND_RECV_INIT) {
- if (Z_TYPE(initialization->u.constant) == IS_NULL || (Z_TYPE(initialization->u.constant) == IS_CONSTANT && !strcasecmp(Z_STRVAL(initialization->u.constant), "NULL"))) {
- cur_arg_info->allow_null = 1;
- } else {
- zend_error(E_COMPILE_ERROR, "Default value for parameters with a class type hint can only be NULL");
+ if (class_type->u.constant.type == IS_ARRAY) {
+ cur_arg_info->type_hint = IS_ARRAY;
+ if (op == ZEND_RECV_INIT) {
+ if (Z_TYPE(initialization->u.constant) == IS_NULL || (Z_TYPE(initialization->u.constant) == IS_CONSTANT && !strcasecmp(Z_STRVAL(initialization->u.constant), "NULL"))) {
+ cur_arg_info->allow_null = 1;
+ } else if (Z_TYPE(initialization->u.constant) != IS_ARRAY && Z_TYPE(initialization->u.constant) != IS_CONSTANT_ARRAY) {
+ zend_error(E_COMPILE_ERROR, "Default value for parameters with array type hint can only be an array or NULL");
+ }
}
- }
- } else {
- cur_arg_info->type_hint = IS_ARRAY;
- if (op == ZEND_RECV_INIT) {
- if (Z_TYPE(initialization->u.constant) == IS_NULL || (Z_TYPE(initialization->u.constant) == IS_CONSTANT && !strcasecmp(Z_STRVAL(initialization->u.constant), "NULL"))) {
- cur_arg_info->allow_null = 1;
- } else if (Z_TYPE(initialization->u.constant) != IS_ARRAY && Z_TYPE(initialization->u.constant) != IS_CONSTANT_ARRAY) {
- zend_error(E_COMPILE_ERROR, "Default value for parameters with array type hint can only be an array or NULL");
+ } else if (class_type->u.constant.type == IS_CALLABLE) {
+ cur_arg_info->type_hint = IS_CALLABLE;
+ if (op == ZEND_RECV_INIT) {
+ if (Z_TYPE(initialization->u.constant) == IS_NULL || (Z_TYPE(initialization->u.constant) == IS_CONSTANT && !strcasecmp(Z_STRVAL(initialization->u.constant), "NULL"))) {
+ cur_arg_info->allow_null = 1;
+ } else {
+ zend_error(E_COMPILE_ERROR, "Default value for parameters with callable type hint can only be NULL");
+ }
+ }
+ } else {
+ cur_arg_info->type_hint = IS_OBJECT;
+ if (ZEND_FETCH_CLASS_DEFAULT == zend_get_class_fetch_type(Z_STRVAL(class_type->u.constant), Z_STRLEN(class_type->u.constant))) {
+ zend_resolve_class_name(class_type, opline->extended_value, 1 TSRMLS_CC);
+ }
+ class_type->u.constant.value.str.val = zend_new_interned_string(class_type->u.constant.value.str.val, class_type->u.constant.value.str.len + 1, 1 TSRMLS_CC);
+ cur_arg_info->class_name = class_type->u.constant.value.str.val;
+ cur_arg_info->class_name_len = class_type->u.constant.value.str.len;
+ if (op == ZEND_RECV_INIT) {
+ if (Z_TYPE(initialization->u.constant) == IS_NULL || (Z_TYPE(initialization->u.constant) == IS_CONSTANT && !strcasecmp(Z_STRVAL(initialization->u.constant), "NULL"))) {
+ cur_arg_info->allow_null = 1;
+ } else {
+ zend_error(E_COMPILE_ERROR, "Default value for parameters with a class type hint can only be NULL");
+ }
}
}
}
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 83a3fff6b4..90eb113fe2 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -626,13 +626,26 @@ static inline int zend_verify_arg_type(zend_function *zf, zend_uint arg_num, zva
need_msg = zend_verify_arg_class_kind(cur_arg_info, fetch_type, &class_name, &ce TSRMLS_CC);
return zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, need_msg, class_name, zend_zval_type_name(arg), "" TSRMLS_CC);
}
- } else if (cur_arg_info->type_hint && cur_arg_info->type_hint == IS_ARRAY) {
- if (!arg) {
- return zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be of the type array", "", "none", "" TSRMLS_CC);
- }
+ } else if (cur_arg_info->type_hint) {
+ switch(cur_arg_info->type_hint) {
+ case IS_ARRAY:
+ if (!arg) {
+ return zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be of the type array", "", "none", "" TSRMLS_CC);
+ }
+
+ if (Z_TYPE_P(arg) != IS_ARRAY && (Z_TYPE_P(arg) != IS_NULL || !cur_arg_info->allow_null)) {
+ return zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be of the type array", "", zend_zval_type_name(arg), "" TSRMLS_CC);
+ }
+ break;
+
+ case IS_CALLABLE:
+ if (!zend_is_callable(arg, IS_CALLABLE_CHECK_SILENT, NULL) && (Z_TYPE_P(arg) != IS_NULL || !cur_arg_info->allow_null)) {
+ return zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be callable", "", zend_zval_type_name(arg), "" TSRMLS_CC);
+ }
+ break;
- if (Z_TYPE_P(arg) != IS_ARRAY && (Z_TYPE_P(arg) != IS_NULL || !cur_arg_info->allow_null)) {
- return zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be of the type array", "", zend_zval_type_name(arg), "" TSRMLS_CC);
+ default:
+ zend_error(E_ERROR, "Unknown typehint");
}
}
return 1;
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index ef390ffd56..0a52fe4a25 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -186,6 +186,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
%token T_DOUBLE_ARROW "=> (T_DOUBLE_ARROW)"
%token T_LIST "list (T_LIST)"
%token T_ARRAY "array (T_ARRAY)"
+%token T_CALLABLE "callable (T_CALLABLE)"
%token T_CLASS_C "__CLASS__ (T_CLASS_C)"
%token T_TRAIT_C "__TRAIT__ (T_TRAIT_C)"
%token T_METHOD_C "__METHOD__ (T_METHOD_C)"
@@ -523,7 +524,8 @@ non_empty_parameter_list:
optional_class_type:
/* empty */ { $$.op_type = IS_UNUSED; }
- | T_ARRAY { $$.op_type = IS_CONST; Z_TYPE($$.u.constant)=IS_NULL; }
+ | T_ARRAY { $$.op_type = IS_CONST; Z_TYPE($$.u.constant)=IS_ARRAY; }
+ | T_CALLABLE { $$.op_type = IS_CONST; Z_TYPE($$.u.constant)=IS_CALLABLE; }
| fully_qualified_class_name { $$ = $1; }
;
diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c
index 4447a2f7ff..c7301b2c7c 100644
--- a/Zend/zend_language_scanner.c
+++ b/Zend/zend_language_scanner.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Sun Aug 7 18:30:41 2011 */
+/* Generated by re2c 0.13.5 on Tue Aug 16 12:22:59 2011 */
#line 1 "Zend/zend_language_scanner.l"
/*
+----------------------------------------------------------------------+
@@ -1083,7 +1083,7 @@ yyc_INITIAL:
yy3:
YYDEBUG(3, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1764 "Zend/zend_language_scanner.l"
+#line 1768 "Zend/zend_language_scanner.l"
{
if (YYCURSOR > YYLIMIT) {
return 0;
@@ -1161,7 +1161,7 @@ yy5:
yy6:
YYDEBUG(6, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1752 "Zend/zend_language_scanner.l"
+#line 1756 "Zend/zend_language_scanner.l"
{
if (CG(short_tags)) {
zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1180,7 +1180,7 @@ yy7:
if ((yych = *YYCURSOR) == '=') goto yy43;
YYDEBUG(8, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1729 "Zend/zend_language_scanner.l"
+#line 1733 "Zend/zend_language_scanner.l"
{
if (CG(asp_tags)) {
zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1378,7 +1378,7 @@ yy35:
++YYCURSOR;
YYDEBUG(38, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1689 "Zend/zend_language_scanner.l"
+#line 1693 "Zend/zend_language_scanner.l"
{
YYCTYPE *bracket = zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1));
@@ -1422,7 +1422,7 @@ yy43:
++YYCURSOR;
YYDEBUG(44, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1707 "Zend/zend_language_scanner.l"
+#line 1711 "Zend/zend_language_scanner.l"
{
if (CG(asp_tags)) {
zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1440,7 +1440,7 @@ yy45:
++YYCURSOR;
YYDEBUG(46, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1720 "Zend/zend_language_scanner.l"
+#line 1724 "Zend/zend_language_scanner.l"
{
zendlval->value.str.val = yytext; /* no copying - intentional */
zendlval->value.str.len = yyleng;
@@ -1475,7 +1475,7 @@ yy50:
yy51:
YYDEBUG(51, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1742 "Zend/zend_language_scanner.l"
+#line 1746 "Zend/zend_language_scanner.l"
{
zendlval->value.str.val = yytext; /* no copying - intentional */
zendlval->value.str.len = yyleng;
@@ -1555,7 +1555,7 @@ yyc_ST_BACKQUOTE:
yy56:
YYDEBUG(56, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2215 "Zend/zend_language_scanner.l"
+#line 2219 "Zend/zend_language_scanner.l"
{
if (YYCURSOR > YYLIMIT) {
return 0;
@@ -1607,7 +1607,7 @@ yy58:
++YYCURSOR;
YYDEBUG(59, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2159 "Zend/zend_language_scanner.l"
+#line 2163 "Zend/zend_language_scanner.l"
{
BEGIN(ST_IN_SCRIPTING);
return '`';
@@ -1622,7 +1622,7 @@ yy61:
++YYCURSOR;
YYDEBUG(62, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2146 "Zend/zend_language_scanner.l"
+#line 2150 "Zend/zend_language_scanner.l"
{
zendlval->value.lval = (long) '{';
yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -1645,7 +1645,7 @@ yy63:
yy65:
YYDEBUG(65, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1846 "Zend/zend_language_scanner.l"
+#line 1850 "Zend/zend_language_scanner.l"
{
zend_copy_value(zendlval, (yytext+1), (yyleng-1));
zendlval->type = IS_STRING;
@@ -1657,7 +1657,7 @@ yy66:
++YYCURSOR;
YYDEBUG(67, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1431 "Zend/zend_language_scanner.l"
+#line 1435 "Zend/zend_language_scanner.l"
{
yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
return T_DOLLAR_OPEN_CURLY_BRACES;
@@ -1676,7 +1676,7 @@ yy70:
++YYCURSOR;
YYDEBUG(71, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1838 "Zend/zend_language_scanner.l"
+#line 1842 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 1);
yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -1702,7 +1702,7 @@ yy73:
++YYCURSOR;
YYDEBUG(74, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1828 "Zend/zend_language_scanner.l"
+#line 1832 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 3);
yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -1778,7 +1778,7 @@ yy77:
yy78:
YYDEBUG(78, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2165 "Zend/zend_language_scanner.l"
+#line 2169 "Zend/zend_language_scanner.l"
{
if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
@@ -1838,7 +1838,7 @@ yy80:
++YYCURSOR;
YYDEBUG(81, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2154 "Zend/zend_language_scanner.l"
+#line 2158 "Zend/zend_language_scanner.l"
{
BEGIN(ST_IN_SCRIPTING);
return '"';
@@ -1853,7 +1853,7 @@ yy83:
++YYCURSOR;
YYDEBUG(84, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2146 "Zend/zend_language_scanner.l"
+#line 2150 "Zend/zend_language_scanner.l"
{
zendlval->value.lval = (long) '{';
yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -1876,7 +1876,7 @@ yy85:
yy87:
YYDEBUG(87, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1846 "Zend/zend_language_scanner.l"
+#line 1850 "Zend/zend_language_scanner.l"
{
zend_copy_value(zendlval, (yytext+1), (yyleng-1));
zendlval->type = IS_STRING;
@@ -1888,7 +1888,7 @@ yy88:
++YYCURSOR;
YYDEBUG(89, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1431 "Zend/zend_language_scanner.l"
+#line 1435 "Zend/zend_language_scanner.l"
{
yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
return T_DOLLAR_OPEN_CURLY_BRACES;
@@ -1907,7 +1907,7 @@ yy92:
++YYCURSOR;
YYDEBUG(93, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1838 "Zend/zend_language_scanner.l"
+#line 1842 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 1);
yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -1933,7 +1933,7 @@ yy95:
++YYCURSOR;
YYDEBUG(96, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1828 "Zend/zend_language_scanner.l"
+#line 1832 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 3);
yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -1952,7 +1952,7 @@ yyc_ST_END_HEREDOC:
++YYCURSOR;
YYDEBUG(100, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2133 "Zend/zend_language_scanner.l"
+#line 2137 "Zend/zend_language_scanner.l"
{
YYCURSOR += CG(heredoc_len) - 1;
yyleng = CG(heredoc_len);
@@ -2026,7 +2026,7 @@ yy103:
yy104:
YYDEBUG(104, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2257 "Zend/zend_language_scanner.l"
+#line 2261 "Zend/zend_language_scanner.l"
{
int newline = 0;
@@ -2112,7 +2112,7 @@ yy107:
++YYCURSOR;
YYDEBUG(108, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2146 "Zend/zend_language_scanner.l"
+#line 2150 "Zend/zend_language_scanner.l"
{
zendlval->value.lval = (long) '{';
yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -2135,7 +2135,7 @@ yy109:
yy111:
YYDEBUG(111, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1846 "Zend/zend_language_scanner.l"
+#line 1850 "Zend/zend_language_scanner.l"
{
zend_copy_value(zendlval, (yytext+1), (yyleng-1));
zendlval->type = IS_STRING;
@@ -2147,7 +2147,7 @@ yy112:
++YYCURSOR;
YYDEBUG(113, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1431 "Zend/zend_language_scanner.l"
+#line 1435 "Zend/zend_language_scanner.l"
{
yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
return T_DOLLAR_OPEN_CURLY_BRACES;
@@ -2166,7 +2166,7 @@ yy116:
++YYCURSOR;
YYDEBUG(117, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1838 "Zend/zend_language_scanner.l"
+#line 1842 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 1);
yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -2192,7 +2192,7 @@ yy119:
++YYCURSOR;
YYDEBUG(120, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1828 "Zend/zend_language_scanner.l"
+#line 1832 "Zend/zend_language_scanner.l"
{
yyless(yyleng - 3);
yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -2365,23 +2365,23 @@ yy123:
YYDEBUG(-1, yych);
switch ((yych = *YYCURSOR)) {
case 'C':
- case 'c': goto yy719;
+ case 'c': goto yy726;
case 'L':
- case 'l': goto yy720;
+ case 'l': goto yy727;
case 'M':
- case 'm': goto yy721;
+ case 'm': goto yy728;
case 'N':
- case 'n': goto yy722;
+ case 'n': goto yy729;
case 'V':
- case 'v': goto yy723;
+ case 'v': goto yy730;
case 'X':
- case 'x': goto yy724;
+ case 'x': goto yy731;
default: goto yy186;
}
yy124:
YYDEBUG(124, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1869 "Zend/zend_language_scanner.l"
+#line 1873 "Zend/zend_language_scanner.l"
{
zend_copy_value(zendlval, yytext, yyleng);
zendlval->type = IS_STRING;
@@ -2393,20 +2393,20 @@ yy125:
yych = *++YYCURSOR;
if (yych <= 'O') {
if (yych <= 'H') {
- if (yych == 'E') goto yy701;
+ if (yych == 'E') goto yy708;
goto yy186;
} else {
- if (yych <= 'I') goto yy702;
+ if (yych <= 'I') goto yy709;
if (yych <= 'N') goto yy186;
- goto yy703;
+ goto yy710;
}
} else {
if (yych <= 'h') {
- if (yych == 'e') goto yy701;
+ if (yych == 'e') goto yy708;
goto yy186;
} else {
- if (yych <= 'i') goto yy702;
- if (yych == 'o') goto yy703;
+ if (yych <= 'i') goto yy709;
+ if (yych == 'o') goto yy710;
goto yy186;
}
}
@@ -2415,20 +2415,20 @@ yy126:
yych = *++YYCURSOR;
if (yych <= 'U') {
if (yych <= 'N') {
- if (yych == 'I') goto yy680;
+ if (yych == 'I') goto yy687;
goto yy186;
} else {
- if (yych <= 'O') goto yy681;
+ if (yych <= 'O') goto yy688;
if (yych <= 'T') goto yy186;
- goto yy682;
+ goto yy689;
}
} else {
if (yych <= 'n') {
- if (yych == 'i') goto yy680;
+ if (yych == 'i') goto yy687;
goto yy186;
} else {
- if (yych <= 'o') goto yy681;
- if (yych == 'u') goto yy682;
+ if (yych <= 'o') goto yy688;
+ if (yych == 'u') goto yy689;
goto yy186;
}
}
@@ -2613,7 +2613,7 @@ yy137:
yy138:
YYDEBUG(138, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1420 "Zend/zend_language_scanner.l"
+#line 1424 "Zend/zend_language_scanner.l"
{
return yytext[0];
}
@@ -2877,7 +2877,7 @@ yy167:
++YYCURSOR;
YYDEBUG(168, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1425 "Zend/zend_language_scanner.l"
+#line 1429 "Zend/zend_language_scanner.l"
{
yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
return '{';
@@ -2888,7 +2888,7 @@ yy169:
++YYCURSOR;
YYDEBUG(170, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1437 "Zend/zend_language_scanner.l"
+#line 1441 "Zend/zend_language_scanner.l"
{
RESET_DOC_COMMENT();
if (!zend_stack_is_empty(&SCNG(state_stack))) {
@@ -2924,7 +2924,7 @@ yy171:
yy172:
YYDEBUG(172, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1483 "Zend/zend_language_scanner.l"
+#line 1487 "Zend/zend_language_scanner.l"
{
if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
zendlval->value.lval = strtol(yytext, NULL, 0);
@@ -2973,7 +2973,7 @@ yy175:
yy176:
YYDEBUG(176, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1876 "Zend/zend_language_scanner.l"
+#line 1880 "Zend/zend_language_scanner.l"
{
while (YYCURSOR < YYLIMIT) {
switch (*YYCURSOR++) {
@@ -3014,7 +3014,7 @@ yy177:
yy178:
YYDEBUG(178, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1967 "Zend/zend_language_scanner.l"
+#line 1971 "Zend/zend_language_scanner.l"
{
register char *s, *t;
char *end;
@@ -3089,7 +3089,7 @@ yy179:
yy180:
YYDEBUG(180, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2036 "Zend/zend_language_scanner.l"
+#line 2040 "Zend/zend_language_scanner.l"
{
int bprefix = (yytext[0] != '"') ? 1 : 0;
@@ -3136,7 +3136,7 @@ yy181:
++YYCURSOR;
YYDEBUG(182, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2127 "Zend/zend_language_scanner.l"
+#line 2131 "Zend/zend_language_scanner.l"
{
BEGIN(ST_BACKQUOTE);
return '`';
@@ -3147,7 +3147,7 @@ yy183:
++YYCURSOR;
YYDEBUG(184, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2385 "Zend/zend_language_scanner.l"
+#line 2389 "Zend/zend_language_scanner.l"
{
if (YYCURSOR > YYLIMIT) {
return 0;
@@ -3183,7 +3183,7 @@ yy187:
yy189:
YYDEBUG(189, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1544 "Zend/zend_language_scanner.l"
+#line 1548 "Zend/zend_language_scanner.l"
{
zendlval->value.dval = zend_strtod(yytext, NULL);
zendlval->type = IS_DOUBLE;
@@ -3281,7 +3281,7 @@ yy199:
}
YYDEBUG(201, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1462 "Zend/zend_language_scanner.l"
+#line 1466 "Zend/zend_language_scanner.l"
{
char *bin = yytext + 2; /* Skip "0b" */
int len = yyleng - 2;
@@ -3314,7 +3314,7 @@ yy202:
}
YYDEBUG(204, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1504 "Zend/zend_language_scanner.l"
+#line 1508 "Zend/zend_language_scanner.l"
{
char *hex = yytext + 2; /* Skip "0x" */
int len = yyleng - 2;
@@ -3344,7 +3344,7 @@ yy205:
yy206:
YYDEBUG(206, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1944 "Zend/zend_language_scanner.l"
+#line 1948 "Zend/zend_language_scanner.l"
{
zendlval->value.str.val = yytext; /* no copying - intentional */
zendlval->value.str.len = yyleng;
@@ -3386,7 +3386,7 @@ yy209:
yy211:
YYDEBUG(211, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1846 "Zend/zend_language_scanner.l"
+#line 1850 "Zend/zend_language_scanner.l"
{
zend_copy_value(zendlval, (yytext+1), (yyleng-1));
zendlval->type = IS_STRING;
@@ -3406,7 +3406,7 @@ yy213:
}
YYDEBUG(214, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1408 "Zend/zend_language_scanner.l"
+#line 1412 "Zend/zend_language_scanner.l"
{
return T_LOGICAL_XOR;
}
@@ -3419,7 +3419,7 @@ yy215:
}
YYDEBUG(216, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1400 "Zend/zend_language_scanner.l"
+#line 1404 "Zend/zend_language_scanner.l"
{
return T_LOGICAL_OR;
}
@@ -3429,7 +3429,7 @@ yy217:
++YYCURSOR;
YYDEBUG(218, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1388 "Zend/zend_language_scanner.l"
+#line 1392 "Zend/zend_language_scanner.l"
{
return T_XOR_EQUAL;
}
@@ -3439,7 +3439,7 @@ yy219:
++YYCURSOR;
YYDEBUG(220, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1392 "Zend/zend_language_scanner.l"
+#line 1396 "Zend/zend_language_scanner.l"
{
return T_BOOLEAN_OR;
}
@@ -3449,7 +3449,7 @@ yy221:
++YYCURSOR;
YYDEBUG(222, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1384 "Zend/zend_language_scanner.l"
+#line 1388 "Zend/zend_language_scanner.l"
{
return T_OR_EQUAL;
}
@@ -3459,7 +3459,7 @@ yy223:
++YYCURSOR;
YYDEBUG(224, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1396 "Zend/zend_language_scanner.l"
+#line 1400 "Zend/zend_language_scanner.l"
{
return T_BOOLEAN_AND;
}
@@ -3469,7 +3469,7 @@ yy225:
++YYCURSOR;
YYDEBUG(226, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1380 "Zend/zend_language_scanner.l"
+#line 1384 "Zend/zend_language_scanner.l"
{
return T_AND_EQUAL;
}
@@ -3482,7 +3482,7 @@ yy227:
yy228:
YYDEBUG(228, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1953 "Zend/zend_language_scanner.l"
+#line 1957 "Zend/zend_language_scanner.l"
{
if (CG(asp_tags)) {
BEGIN(INITIAL);
@@ -3501,7 +3501,7 @@ yy229:
++YYCURSOR;
YYDEBUG(230, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1368 "Zend/zend_language_scanner.l"
+#line 1372 "Zend/zend_language_scanner.l"
{
return T_MOD_EQUAL;
}
@@ -3536,7 +3536,7 @@ yy235:
++YYCURSOR;
YYDEBUG(236, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1364 "Zend/zend_language_scanner.l"
+#line 1368 "Zend/zend_language_scanner.l"
{
return T_CONCAT_EQUAL;
}
@@ -3549,7 +3549,7 @@ yy237:
yy238:
YYDEBUG(238, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1910 "Zend/zend_language_scanner.l"
+#line 1914 "Zend/zend_language_scanner.l"
{
int doc_com;
@@ -3593,7 +3593,7 @@ yy240:
++YYCURSOR;
YYDEBUG(241, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1360 "Zend/zend_language_scanner.l"
+#line 1364 "Zend/zend_language_scanner.l"
{
return T_DIV_EQUAL;
}
@@ -3620,7 +3620,7 @@ yy245:
++YYCURSOR;
YYDEBUG(246, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1356 "Zend/zend_language_scanner.l"
+#line 1360 "Zend/zend_language_scanner.l"
{
return T_MUL_EQUAL;
}
@@ -3631,7 +3631,7 @@ yy247:
if ((yych = *YYCURSOR) == '=') goto yy251;
YYDEBUG(248, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1416 "Zend/zend_language_scanner.l"
+#line 1420 "Zend/zend_language_scanner.l"
{
return T_SR;
}
@@ -3641,7 +3641,7 @@ yy249:
++YYCURSOR;
YYDEBUG(250, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1344 "Zend/zend_language_scanner.l"
+#line 1348 "Zend/zend_language_scanner.l"
{
return T_IS_GREATER_OR_EQUAL;
}
@@ -3651,7 +3651,7 @@ yy251:
++YYCURSOR;
YYDEBUG(252, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1376 "Zend/zend_language_scanner.l"
+#line 1380 "Zend/zend_language_scanner.l"
{
return T_SR_EQUAL;
}
@@ -3666,7 +3666,7 @@ yy253:
yy254:
YYDEBUG(254, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1412 "Zend/zend_language_scanner.l"
+#line 1416 "Zend/zend_language_scanner.l"
{
return T_SL;
}
@@ -3682,7 +3682,7 @@ yy256:
++YYCURSOR;
YYDEBUG(257, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1340 "Zend/zend_language_scanner.l"
+#line 1344 "Zend/zend_language_scanner.l"
{
return T_IS_SMALLER_OR_EQUAL;
}
@@ -3693,7 +3693,7 @@ yy258:
yy259:
YYDEBUG(259, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1336 "Zend/zend_language_scanner.l"
+#line 1340 "Zend/zend_language_scanner.l"
{
return T_IS_NOT_EQUAL;
}
@@ -3748,7 +3748,7 @@ yy267:
++YYCURSOR;
YYDEBUG(268, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1372 "Zend/zend_language_scanner.l"
+#line 1376 "Zend/zend_language_scanner.l"
{
return T_SL_EQUAL;
}
@@ -3857,7 +3857,7 @@ yy278:
yy279:
YYDEBUG(279, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2078 "Zend/zend_language_scanner.l"
+#line 2082 "Zend/zend_language_scanner.l"
{
char *s;
int bprefix = (yytext[0] != '<') ? 1 : 0;
@@ -3945,7 +3945,7 @@ yy283:
++YYCURSOR;
YYDEBUG(285, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1328 "Zend/zend_language_scanner.l"
+#line 1332 "Zend/zend_language_scanner.l"
{
return T_IS_NOT_IDENTICAL;
}
@@ -3955,7 +3955,7 @@ yy286:
++YYCURSOR;
YYDEBUG(287, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1348 "Zend/zend_language_scanner.l"
+#line 1352 "Zend/zend_language_scanner.l"
{
return T_PLUS_EQUAL;
}
@@ -3965,7 +3965,7 @@ yy288:
++YYCURSOR;
YYDEBUG(289, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1316 "Zend/zend_language_scanner.l"
+#line 1320 "Zend/zend_language_scanner.l"
{
return T_INC;
}
@@ -3999,7 +3999,7 @@ yy294:
if ((yych = *YYCURSOR) == '=') goto yy298;
YYDEBUG(295, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1332 "Zend/zend_language_scanner.l"
+#line 1336 "Zend/zend_language_scanner.l"
{
return T_IS_EQUAL;
}
@@ -4019,7 +4019,7 @@ yy298:
++YYCURSOR;
YYDEBUG(299, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1324 "Zend/zend_language_scanner.l"
+#line 1328 "Zend/zend_language_scanner.l"
{
return T_IS_IDENTICAL;
}
@@ -4153,7 +4153,7 @@ yy316:
}
YYDEBUG(319, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1679 "Zend/zend_language_scanner.l"
+#line 1683 "Zend/zend_language_scanner.l"
{
if (CG(current_namespace)) {
*zendlval = *CG(current_namespace);
@@ -4183,7 +4183,7 @@ yy321:
}
YYDEBUG(324, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1652 "Zend/zend_language_scanner.l"
+#line 1656 "Zend/zend_language_scanner.l"
{
char *filename = zend_get_compiled_filename(TSRMLS_C);
const size_t filename_len = strlen(filename);
@@ -4235,7 +4235,7 @@ yy327:
}
YYDEBUG(330, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1634 "Zend/zend_language_scanner.l"
+#line 1638 "Zend/zend_language_scanner.l"
{
zendlval->value.lval = CG(zend_lineno);
zendlval->type = IS_LONG;
@@ -4276,7 +4276,7 @@ yy335:
}
YYDEBUG(338, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1613 "Zend/zend_language_scanner.l"
+#line 1617 "Zend/zend_language_scanner.l"
{
char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL;
char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL;
@@ -4348,7 +4348,7 @@ yy346:
}
YYDEBUG(349, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1597 "Zend/zend_language_scanner.l"
+#line 1601 "Zend/zend_language_scanner.l"
{
char *func_name = NULL;
@@ -4384,7 +4384,7 @@ yy351:
}
YYDEBUG(354, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1640 "Zend/zend_language_scanner.l"
+#line 1644 "Zend/zend_language_scanner.l"
{
char *filename = zend_get_compiled_filename(TSRMLS_C);
@@ -4426,7 +4426,7 @@ yy358:
}
YYDEBUG(361, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1577 "Zend/zend_language_scanner.l"
+#line 1581 "Zend/zend_language_scanner.l"
{
char *trait_name = NULL;
@@ -4476,7 +4476,7 @@ yy365:
}
YYDEBUG(368, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1550 "Zend/zend_language_scanner.l"
+#line 1554 "Zend/zend_language_scanner.l"
{
char *class_name = NULL;
@@ -5219,7 +5219,7 @@ yy485:
++YYCURSOR;
YYDEBUG(486, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1352 "Zend/zend_language_scanner.l"
+#line 1356 "Zend/zend_language_scanner.l"
{
return T_MINUS_EQUAL;
}
@@ -5229,7 +5229,7 @@ yy487:
++YYCURSOR;
YYDEBUG(488, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1320 "Zend/zend_language_scanner.l"
+#line 1324 "Zend/zend_language_scanner.l"
{
return T_DEC;
}
@@ -5632,7 +5632,7 @@ yy555:
}
YYDEBUG(556, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1404 "Zend/zend_language_scanner.l"
+#line 1408 "Zend/zend_language_scanner.l"
{
return T_LOGICAL_AND;
}
@@ -6239,14 +6239,23 @@ yy652:
YYDEBUG(652, *YYCURSOR);
yych = *++YYCURSOR;
if (yych <= 'T') {
- if (yych <= 'R') goto yy186;
- if (yych <= 'S') goto yy674;
- goto yy673;
+ if (yych <= 'L') {
+ if (yych <= 'K') goto yy186;
+ goto yy675;
+ } else {
+ if (yych <= 'R') goto yy186;
+ if (yych <= 'S') goto yy674;
+ goto yy673;
+ }
} else {
- if (yych <= 'r') goto yy186;
- if (yych <= 's') goto yy674;
- if (yych <= 't') goto yy673;
- goto yy186;
+ if (yych <= 'r') {
+ if (yych == 'l') goto yy675;
+ goto yy186;
+ } else {
+ if (yych <= 's') goto yy674;
+ if (yych <= 't') goto yy673;
+ goto yy186;
+ }
}
yy653:
YYDEBUG(653, *YYCURSOR);
@@ -6319,7 +6328,7 @@ yy661:
{
return T_CONTINUE;
}
-#line 6323 "Zend/zend_language_scanner.c"
+#line 6332 "Zend/zend_language_scanner.c"
yy663:
YYDEBUG(663, *YYCURSOR);
++YYCURSOR;
@@ -6332,7 +6341,7 @@ yy663:
{
return T_CONST;
}
-#line 6336 "Zend/zend_language_scanner.c"
+#line 6345 "Zend/zend_language_scanner.c"
yy665:
YYDEBUG(665, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6361,7 +6370,7 @@ yy668:
{
return T_CLONE;
}
-#line 6365 "Zend/zend_language_scanner.c"
+#line 6374 "Zend/zend_language_scanner.c"
yy670:
YYDEBUG(670, *YYCURSOR);
yych = *++YYCURSOR;
@@ -6379,724 +6388,763 @@ yy671:
{
return T_CLASS;
}
-#line 6383 "Zend/zend_language_scanner.c"
+#line 6392 "Zend/zend_language_scanner.c"
yy673:
YYDEBUG(673, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'C') goto yy677;
- if (yych == 'c') goto yy677;
+ if (yych == 'C') goto yy684;
+ if (yych == 'c') goto yy684;
goto yy186;
yy674:
YYDEBUG(674, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'E') goto yy675;
- if (yych != 'e') goto yy186;
+ if (yych == 'E') goto yy682;
+ if (yych == 'e') goto yy682;
+ goto yy186;
yy675:
YYDEBUG(675, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'L') goto yy676;
+ if (yych != 'l') goto yy186;
+yy676:
+ YYDEBUG(676, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'A') goto yy677;
+ if (yych != 'a') goto yy186;
+yy677:
+ YYDEBUG(677, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'B') goto yy678;
+ if (yych != 'b') goto yy186;
+yy678:
+ YYDEBUG(678, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'L') goto yy679;
+ if (yych != 'l') goto yy186;
+yy679:
+ YYDEBUG(679, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych == 'E') goto yy680;
+ if (yych != 'e') goto yy186;
+yy680:
+ YYDEBUG(680, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(676, *YYCURSOR);
+ YYDEBUG(681, *YYCURSOR);
+ yyleng = YYCURSOR - SCNG(yy_text);
+#line 1316 "Zend/zend_language_scanner.l"
+ {
+ return T_CALLABLE;
+}
+#line 6442 "Zend/zend_language_scanner.c"
+yy682:
+ YYDEBUG(682, *YYCURSOR);
+ ++YYCURSOR;
+ if (yybm[0+(yych = *YYCURSOR)] & 4) {
+ goto yy185;
+ }
+ YYDEBUG(683, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1102 "Zend/zend_language_scanner.l"
{
return T_CASE;
}
-#line 6407 "Zend/zend_language_scanner.c"
-yy677:
- YYDEBUG(677, *YYCURSOR);
+#line 6455 "Zend/zend_language_scanner.c"
+yy684:
+ YYDEBUG(684, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'H') goto yy678;
+ if (yych == 'H') goto yy685;
if (yych != 'h') goto yy186;
-yy678:
- YYDEBUG(678, *YYCURSOR);
+yy685:
+ YYDEBUG(685, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(679, *YYCURSOR);
+ YYDEBUG(686, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1026 "Zend/zend_language_scanner.l"
{
return T_CATCH;
}
-#line 6425 "Zend/zend_language_scanner.c"
-yy680:
- YYDEBUG(680, *YYCURSOR);
+#line 6473 "Zend/zend_language_scanner.c"
+yy687:
+ YYDEBUG(687, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'N') goto yy697;
- if (yych == 'n') goto yy697;
+ if (yych == 'N') goto yy704;
+ if (yych == 'n') goto yy704;
goto yy186;
-yy681:
- YYDEBUG(681, *YYCURSOR);
+yy688:
+ YYDEBUG(688, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'R') goto yy690;
- if (yych == 'r') goto yy690;
+ if (yych == 'R') goto yy697;
+ if (yych == 'r') goto yy697;
goto yy186;
-yy682:
- YYDEBUG(682, *YYCURSOR);
+yy689:
+ YYDEBUG(689, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'N') goto yy683;
+ if (yych == 'N') goto yy690;
if (yych != 'n') goto yy186;
-yy683:
- YYDEBUG(683, *YYCURSOR);
+yy690:
+ YYDEBUG(690, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'C') goto yy684;
+ if (yych == 'C') goto yy691;
if (yych != 'c') goto yy186;
-yy684:
- YYDEBUG(684, *YYCURSOR);
+yy691:
+ YYDEBUG(691, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'T') goto yy685;
+ if (yych == 'T') goto yy692;
if (yych != 't') goto yy186;
-yy685:
- YYDEBUG(685, *YYCURSOR);
+yy692:
+ YYDEBUG(692, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'I') goto yy686;
+ if (yych == 'I') goto yy693;
if (yych != 'i') goto yy186;
-yy686:
- YYDEBUG(686, *YYCURSOR);
+yy693:
+ YYDEBUG(693, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'O') goto yy687;
+ if (yych == 'O') goto yy694;
if (yych != 'o') goto yy186;
-yy687:
- YYDEBUG(687, *YYCURSOR);
+yy694:
+ YYDEBUG(694, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'N') goto yy688;
+ if (yych == 'N') goto yy695;
if (yych != 'n') goto yy186;
-yy688:
- YYDEBUG(688, *YYCURSOR);
+yy695:
+ YYDEBUG(695, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(689, *YYCURSOR);
+ YYDEBUG(696, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1010 "Zend/zend_language_scanner.l"
{
return T_FUNCTION;
}
-#line 6480 "Zend/zend_language_scanner.c"
-yy690:
- YYDEBUG(690, *YYCURSOR);
+#line 6528 "Zend/zend_language_scanner.c"
+yy697:
+ YYDEBUG(697, *YYCURSOR);
++YYCURSOR;
if ((yych = *YYCURSOR) <= '^') {
if (yych <= '@') {
- if (yych <= '/') goto yy691;
+ if (yych <= '/') goto yy698;
if (yych <= '9') goto yy185;
} else {
- if (yych == 'E') goto yy692;
+ if (yych == 'E') goto yy699;
if (yych <= 'Z') goto yy185;
}
} else {
if (yych <= 'd') {
if (yych != '`') goto yy185;
} else {
- if (yych <= 'e') goto yy692;
+ if (yych <= 'e') goto yy699;
if (yych <= 'z') goto yy185;
if (yych >= 0x7F) goto yy185;
}
}
-yy691:
- YYDEBUG(691, *YYCURSOR);
+yy698:
+ YYDEBUG(698, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1062 "Zend/zend_language_scanner.l"
{
return T_FOR;
}
-#line 6508 "Zend/zend_language_scanner.c"
-yy692:
- YYDEBUG(692, *YYCURSOR);
+#line 6556 "Zend/zend_language_scanner.c"
+yy699:
+ YYDEBUG(699, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'A') goto yy693;
+ if (yych == 'A') goto yy700;
if (yych != 'a') goto yy186;
-yy693:
- YYDEBUG(693, *YYCURSOR);
+yy700:
+ YYDEBUG(700, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'C') goto yy694;
+ if (yych == 'C') goto yy701;
if (yych != 'c') goto yy186;
-yy694:
- YYDEBUG(694, *YYCURSOR);
+yy701:
+ YYDEBUG(701, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'H') goto yy695;
+ if (yych == 'H') goto yy702;
if (yych != 'h') goto yy186;
-yy695:
- YYDEBUG(695, *YYCURSOR);
+yy702:
+ YYDEBUG(702, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(696, *YYCURSOR);
+ YYDEBUG(703, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1070 "Zend/zend_language_scanner.l"
{
return T_FOREACH;
}
-#line 6536 "Zend/zend_language_scanner.c"
-yy697:
- YYDEBUG(697, *YYCURSOR);
+#line 6584 "Zend/zend_language_scanner.c"
+yy704:
+ YYDEBUG(704, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'A') goto yy698;
+ if (yych == 'A') goto yy705;
if (yych != 'a') goto yy186;
-yy698:
- YYDEBUG(698, *YYCURSOR);
+yy705:
+ YYDEBUG(705, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'L') goto yy699;
+ if (yych == 'L') goto yy706;
if (yych != 'l') goto yy186;
-yy699:
- YYDEBUG(699, *YYCURSOR);
+yy706:
+ YYDEBUG(706, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(700, *YYCURSOR);
+ YYDEBUG(707, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1284 "Zend/zend_language_scanner.l"
{
return T_FINAL;
}
-#line 6559 "Zend/zend_language_scanner.c"
-yy701:
- YYDEBUG(701, *YYCURSOR);
+#line 6607 "Zend/zend_language_scanner.c"
+yy708:
+ YYDEBUG(708, *YYCURSOR);
yych = *++YYCURSOR;
if (yych <= 'F') {
- if (yych == 'C') goto yy707;
+ if (yych == 'C') goto yy714;
if (yych <= 'E') goto yy186;
- goto yy708;
+ goto yy715;
} else {
if (yych <= 'c') {
if (yych <= 'b') goto yy186;
- goto yy707;
+ goto yy714;
} else {
- if (yych == 'f') goto yy708;
+ if (yych == 'f') goto yy715;
goto yy186;
}
}
-yy702:
- YYDEBUG(702, *YYCURSOR);
+yy709:
+ YYDEBUG(709, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'E') goto yy705;
- if (yych == 'e') goto yy705;
+ if (yych == 'E') goto yy712;
+ if (yych == 'e') goto yy712;
goto yy186;
-yy703:
- YYDEBUG(703, *YYCURSOR);
+yy710:
+ YYDEBUG(710, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(704, *YYCURSOR);
+ YYDEBUG(711, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1058 "Zend/zend_language_scanner.l"
{
return T_DO;
}
-#line 6594 "Zend/zend_language_scanner.c"
-yy705:
- YYDEBUG(705, *YYCURSOR);
+#line 6642 "Zend/zend_language_scanner.c"
+yy712:
+ YYDEBUG(712, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(706, *YYCURSOR);
+ YYDEBUG(713, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1006 "Zend/zend_language_scanner.l"
{
return T_EXIT;
}
-#line 6607 "Zend/zend_language_scanner.c"
-yy707:
- YYDEBUG(707, *YYCURSOR);
+#line 6655 "Zend/zend_language_scanner.c"
+yy714:
+ YYDEBUG(714, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'L') goto yy714;
- if (yych == 'l') goto yy714;
+ if (yych == 'L') goto yy721;
+ if (yych == 'l') goto yy721;
goto yy186;
-yy708:
- YYDEBUG(708, *YYCURSOR);
+yy715:
+ YYDEBUG(715, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'A') goto yy709;
+ if (yych == 'A') goto yy716;
if (yych != 'a') goto yy186;
-yy709:
- YYDEBUG(709, *YYCURSOR);
+yy716:
+ YYDEBUG(716, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'U') goto yy710;
+ if (yych == 'U') goto yy717;
if (yych != 'u') goto yy186;
-yy710:
- YYDEBUG(710, *YYCURSOR);
+yy717:
+ YYDEBUG(717, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'L') goto yy711;
+ if (yych == 'L') goto yy718;
if (yych != 'l') goto yy186;
-yy711:
- YYDEBUG(711, *YYCURSOR);
+yy718:
+ YYDEBUG(718, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'T') goto yy712;
+ if (yych == 'T') goto yy719;
if (yych != 't') goto yy186;
-yy712:
- YYDEBUG(712, *YYCURSOR);
+yy719:
+ YYDEBUG(719, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(713, *YYCURSOR);
+ YYDEBUG(720, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1106 "Zend/zend_language_scanner.l"
{
return T_DEFAULT;
}
-#line 6646 "Zend/zend_language_scanner.c"
-yy714:
- YYDEBUG(714, *YYCURSOR);
+#line 6694 "Zend/zend_language_scanner.c"
+yy721:
+ YYDEBUG(721, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'A') goto yy715;
+ if (yych == 'A') goto yy722;
if (yych != 'a') goto yy186;
-yy715:
- YYDEBUG(715, *YYCURSOR);
+yy722:
+ YYDEBUG(722, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'R') goto yy716;
+ if (yych == 'R') goto yy723;
if (yych != 'r') goto yy186;
-yy716:
- YYDEBUG(716, *YYCURSOR);
+yy723:
+ YYDEBUG(723, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'E') goto yy717;
+ if (yych == 'E') goto yy724;
if (yych != 'e') goto yy186;
-yy717:
- YYDEBUG(717, *YYCURSOR);
+yy724:
+ YYDEBUG(724, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(718, *YYCURSOR);
+ YYDEBUG(725, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1078 "Zend/zend_language_scanner.l"
{
return T_DECLARE;
}
-#line 6674 "Zend/zend_language_scanner.c"
-yy719:
- YYDEBUG(719, *YYCURSOR);
+#line 6722 "Zend/zend_language_scanner.c"
+yy726:
+ YYDEBUG(726, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'H') goto yy781;
- if (yych == 'h') goto yy781;
+ if (yych == 'H') goto yy788;
+ if (yych == 'h') goto yy788;
goto yy186;
-yy720:
- YYDEBUG(720, *YYCURSOR);
+yy727:
+ YYDEBUG(727, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'S') goto yy775;
- if (yych == 's') goto yy775;
+ if (yych == 'S') goto yy782;
+ if (yych == 's') goto yy782;
goto yy186;
-yy721:
- YYDEBUG(721, *YYCURSOR);
+yy728:
+ YYDEBUG(728, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'P') goto yy771;
- if (yych == 'p') goto yy771;
+ if (yych == 'P') goto yy778;
+ if (yych == 'p') goto yy778;
goto yy186;
-yy722:
- YYDEBUG(722, *YYCURSOR);
+yy729:
+ YYDEBUG(729, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'D') goto yy737;
- if (yych == 'd') goto yy737;
+ if (yych == 'D') goto yy744;
+ if (yych == 'd') goto yy744;
goto yy186;
-yy723:
- YYDEBUG(723, *YYCURSOR);
+yy730:
+ YYDEBUG(730, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'A') goto yy734;
- if (yych == 'a') goto yy734;
+ if (yych == 'A') goto yy741;
+ if (yych == 'a') goto yy741;
goto yy186;
-yy724:
- YYDEBUG(724, *YYCURSOR);
+yy731:
+ YYDEBUG(731, *YYCURSOR);
yych = *++YYCURSOR;
if (yych <= 'T') {
- if (yych == 'I') goto yy725;
+ if (yych == 'I') goto yy732;
if (yych <= 'S') goto yy186;
- goto yy726;
+ goto yy733;
} else {
if (yych <= 'i') {
if (yych <= 'h') goto yy186;
} else {
- if (yych == 't') goto yy726;
+ if (yych == 't') goto yy733;
goto yy186;
}
}
-yy725:
- YYDEBUG(725, *YYCURSOR);
+yy732:
+ YYDEBUG(732, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'T') goto yy732;
- if (yych == 't') goto yy732;
+ if (yych == 'T') goto yy739;
+ if (yych == 't') goto yy739;
goto yy186;
-yy726:
- YYDEBUG(726, *YYCURSOR);
+yy733:
+ YYDEBUG(733, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'E') goto yy727;
+ if (yych == 'E') goto yy734;
if (yych != 'e') goto yy186;
-yy727:
- YYDEBUG(727, *YYCURSOR);
+yy734:
+ YYDEBUG(734, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'N') goto yy728;
+ if (yych == 'N') goto yy735;
if (yych != 'n') goto yy186;
-yy728:
- YYDEBUG(728, *YYCURSOR);
+yy735:
+ YYDEBUG(735, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'D') goto yy729;
+ if (yych == 'D') goto yy736;
if (yych != 'd') goto yy186;
-yy729:
- YYDEBUG(729, *YYCURSOR);
+yy736:
+ YYDEBUG(736, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'S') goto yy730;
+ if (yych == 'S') goto yy737;
if (yych != 's') goto yy186;
-yy730:
- YYDEBUG(730, *YYCURSOR);
+yy737:
+ YYDEBUG(737, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(731, *YYCURSOR);
+ YYDEBUG(738, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1142 "Zend/zend_language_scanner.l"
{
return T_EXTENDS;
}
-#line 6758 "Zend/zend_language_scanner.c"
-yy732:
- YYDEBUG(732, *YYCURSOR);
+#line 6806 "Zend/zend_language_scanner.c"
+yy739:
+ YYDEBUG(739, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(733, *YYCURSOR);
+ YYDEBUG(740, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1002 "Zend/zend_language_scanner.l"
{
return T_EXIT;
}
-#line 6771 "Zend/zend_language_scanner.c"
-yy734:
- YYDEBUG(734, *YYCURSOR);
+#line 6819 "Zend/zend_language_scanner.c"
+yy741:
+ YYDEBUG(741, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'L') goto yy735;
+ if (yych == 'L') goto yy742;
if (yych != 'l') goto yy186;
-yy735:
- YYDEBUG(735, *YYCURSOR);
+yy742:
+ YYDEBUG(742, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(736, *YYCURSOR);
+ YYDEBUG(743, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1228 "Zend/zend_language_scanner.l"
{
return T_EVAL;
}
-#line 6789 "Zend/zend_language_scanner.c"
-yy737:
- YYDEBUG(737, *YYCURSOR);
+#line 6837 "Zend/zend_language_scanner.c"
+yy744:
+ YYDEBUG(744, *YYCURSOR);
yych = *++YYCURSOR;
YYDEBUG(-1, yych);
switch (yych) {
case 'D':
- case 'd': goto yy738;
+ case 'd': goto yy745;
case 'F':
- case 'f': goto yy739;
+ case 'f': goto yy746;
case 'I':
- case 'i': goto yy740;
+ case 'i': goto yy747;
case 'S':
- case 's': goto yy741;
+ case 's': goto yy748;
case 'W':
- case 'w': goto yy742;
+ case 'w': goto yy749;
default: goto yy186;
}
-yy738:
- YYDEBUG(738, *YYCURSOR);
+yy745:
+ YYDEBUG(745, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'E') goto yy764;
- if (yych == 'e') goto yy764;
+ if (yych == 'E') goto yy771;
+ if (yych == 'e') goto yy771;
goto yy186;
-yy739:
- YYDEBUG(739, *YYCURSOR);
+yy746:
+ YYDEBUG(746, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'O') goto yy756;
- if (yych == 'o') goto yy756;
+ if (yych == 'O') goto yy763;
+ if (yych == 'o') goto yy763;
goto yy186;
-yy740:
- YYDEBUG(740, *YYCURSOR);
+yy747:
+ YYDEBUG(747, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'F') goto yy754;
- if (yych == 'f') goto yy754;
+ if (yych == 'F') goto yy761;
+ if (yych == 'f') goto yy761;
goto yy186;
-yy741:
- YYDEBUG(741, *YYCURSOR);
+yy748:
+ YYDEBUG(748, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'W') goto yy748;
- if (yych == 'w') goto yy748;
+ if (yych == 'W') goto yy755;
+ if (yych == 'w') goto yy755;
goto yy186;
-yy742:
- YYDEBUG(742, *YYCURSOR);
+yy749:
+ YYDEBUG(749, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'H') goto yy743;
+ if (yych == 'H') goto yy750;
if (yych != 'h') goto yy186;
-yy743:
- YYDEBUG(743, *YYCURSOR);
+yy750:
+ YYDEBUG(750, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'I') goto yy744;
+ if (yych == 'I') goto yy751;
if (yych != 'i') goto yy186;
-yy744:
- YYDEBUG(744, *YYCURSOR);
+yy751:
+ YYDEBUG(751, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'L') goto yy745;
+ if (yych == 'L') goto yy752;
if (yych != 'l') goto yy186;
-yy745:
- YYDEBUG(745, *YYCURSOR);
+yy752:
+ YYDEBUG(752, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'E') goto yy746;
+ if (yych == 'E') goto yy753;
if (yych != 'e') goto yy186;
-yy746:
- YYDEBUG(746, *YYCURSOR);
+yy753:
+ YYDEBUG(753, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(747, *YYCURSOR);
+ YYDEBUG(754, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1054 "Zend/zend_language_scanner.l"
{
return T_ENDWHILE;
}
-#line 6863 "Zend/zend_language_scanner.c"
-yy748:
- YYDEBUG(748, *YYCURSOR);
+#line 6911 "Zend/zend_language_scanner.c"
+yy755:
+ YYDEBUG(755, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'I') goto yy749;
+ if (yych == 'I') goto yy756;
if (yych != 'i') goto yy186;
-yy749:
- YYDEBUG(749, *YYCURSOR);
+yy756:
+ YYDEBUG(756, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'T') goto yy750;
+ if (yych == 'T') goto yy757;
if (yych != 't') goto yy186;
-yy750:
- YYDEBUG(750, *YYCURSOR);
+yy757:
+ YYDEBUG(757, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'C') goto yy751;
+ if (yych == 'C') goto yy758;
if (yych != 'c') goto yy186;
-yy751:
- YYDEBUG(751, *YYCURSOR);
+yy758:
+ YYDEBUG(758, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'H') goto yy752;
+ if (yych == 'H') goto yy759;
if (yych != 'h') goto yy186;
-yy752:
- YYDEBUG(752, *YYCURSOR);
+yy759:
+ YYDEBUG(759, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(753, *YYCURSOR);
+ YYDEBUG(760, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1098 "Zend/zend_language_scanner.l"
{
return T_ENDSWITCH;
}
-#line 6896 "Zend/zend_language_scanner.c"
-yy754:
- YYDEBUG(754, *YYCURSOR);
+#line 6944 "Zend/zend_language_scanner.c"
+yy761:
+ YYDEBUG(761, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(755, *YYCURSOR);
+ YYDEBUG(762, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1042 "Zend/zend_language_scanner.l"
{
return T_ENDIF;
}
-#line 6909 "Zend/zend_language_scanner.c"
-yy756:
- YYDEBUG(756, *YYCURSOR);
+#line 6957 "Zend/zend_language_scanner.c"
+yy763:
+ YYDEBUG(763, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'R') goto yy757;
+ if (yych == 'R') goto yy764;
if (yych != 'r') goto yy186;
-yy757:
- YYDEBUG(757, *YYCURSOR);
+yy764:
+ YYDEBUG(764, *YYCURSOR);
++YYCURSOR;
if ((yych = *YYCURSOR) <= '^') {
if (yych <= '@') {
- if (yych <= '/') goto yy758;
+ if (yych <= '/') goto yy765;
if (yych <= '9') goto yy185;
} else {
- if (yych == 'E') goto yy759;
+ if (yych == 'E') goto yy766;
if (yych <= 'Z') goto yy185;
}
} else {
if (yych <= 'd') {
if (yych != '`') goto yy185;
} else {
- if (yych <= 'e') goto yy759;
+ if (yych <= 'e') goto yy766;
if (yych <= 'z') goto yy185;
if (yych >= 0x7F) goto yy185;
}
}
-yy758:
- YYDEBUG(758, *YYCURSOR);
+yy765:
+ YYDEBUG(765, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1066 "Zend/zend_language_scanner.l"
{
return T_ENDFOR;
}
-#line 6942 "Zend/zend_language_scanner.c"
-yy759:
- YYDEBUG(759, *YYCURSOR);
+#line 6990 "Zend/zend_language_scanner.c"
+yy766:
+ YYDEBUG(766, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'A') goto yy760;
+ if (yych == 'A') goto yy767;
if (yych != 'a') goto yy186;
-yy760:
- YYDEBUG(760, *YYCURSOR);
+yy767:
+ YYDEBUG(767, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'C') goto yy761;
+ if (yych == 'C') goto yy768;
if (yych != 'c') goto yy186;
-yy761:
- YYDEBUG(761, *YYCURSOR);
+yy768:
+ YYDEBUG(768, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'H') goto yy762;
+ if (yych == 'H') goto yy769;
if (yych != 'h') goto yy186;
-yy762:
- YYDEBUG(762, *YYCURSOR);
+yy769:
+ YYDEBUG(769, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(763, *YYCURSOR);
+ YYDEBUG(770, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1074 "Zend/zend_language_scanner.l"
{
return T_ENDFOREACH;
}
-#line 6970 "Zend/zend_language_scanner.c"
-yy764:
- YYDEBUG(764, *YYCURSOR);
+#line 7018 "Zend/zend_language_scanner.c"
+yy771:
+ YYDEBUG(771, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'C') goto yy765;
+ if (yych == 'C') goto yy772;
if (yych != 'c') goto yy186;
-yy765:
- YYDEBUG(765, *YYCURSOR);
+yy772:
+ YYDEBUG(772, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'L') goto yy766;
+ if (yych == 'L') goto yy773;
if (yych != 'l') goto yy186;
-yy766:
- YYDEBUG(766, *YYCURSOR);
+yy773:
+ YYDEBUG(773, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'A') goto yy767;
+ if (yych == 'A') goto yy774;
if (yych != 'a') goto yy186;
-yy767:
- YYDEBUG(767, *YYCURSOR);
+yy774:
+ YYDEBUG(774, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'R') goto yy768;
+ if (yych == 'R') goto yy775;
if (yych != 'r') goto yy186;
-yy768:
- YYDEBUG(768, *YYCURSOR);
+yy775:
+ YYDEBUG(775, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'E') goto yy769;
+ if (yych == 'E') goto yy776;
if (yych != 'e') goto yy186;
-yy769:
- YYDEBUG(769, *YYCURSOR);
+yy776:
+ YYDEBUG(776, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(770, *YYCURSOR);
+ YYDEBUG(777, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1082 "Zend/zend_language_scanner.l"
{
return T_ENDDECLARE;
}
-#line 7008 "Zend/zend_language_scanner.c"
-yy771:
- YYDEBUG(771, *YYCURSOR);
+#line 7056 "Zend/zend_language_scanner.c"
+yy778:
+ YYDEBUG(778, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'T') goto yy772;
+ if (yych == 'T') goto yy779;
if (yych != 't') goto yy186;
-yy772:
- YYDEBUG(772, *YYCURSOR);
+yy779:
+ YYDEBUG(779, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'Y') goto yy773;
+ if (yych == 'Y') goto yy780;
if (yych != 'y') goto yy186;
-yy773:
- YYDEBUG(773, *YYCURSOR);
+yy780:
+ YYDEBUG(780, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(774, *YYCURSOR);
+ YYDEBUG(781, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1268 "Zend/zend_language_scanner.l"
{
return T_EMPTY;
}
-#line 7031 "Zend/zend_language_scanner.c"
-yy775:
- YYDEBUG(775, *YYCURSOR);
+#line 7079 "Zend/zend_language_scanner.c"
+yy782:
+ YYDEBUG(782, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'E') goto yy776;
+ if (yych == 'E') goto yy783;
if (yych != 'e') goto yy186;
-yy776:
- YYDEBUG(776, *YYCURSOR);
+yy783:
+ YYDEBUG(783, *YYCURSOR);
++YYCURSOR;
if ((yych = *YYCURSOR) <= '^') {
if (yych <= '@') {
- if (yych <= '/') goto yy777;
+ if (yych <= '/') goto yy784;
if (yych <= '9') goto yy185;
} else {
- if (yych == 'I') goto yy778;
+ if (yych == 'I') goto yy785;
if (yych <= 'Z') goto yy185;
}
} else {
if (yych <= 'h') {
if (yych != '`') goto yy185;
} else {
- if (yych <= 'i') goto yy778;
+ if (yych <= 'i') goto yy785;
if (yych <= 'z') goto yy185;
if (yych >= 0x7F) goto yy185;
}
}
-yy777:
- YYDEBUG(777, *YYCURSOR);
+yy784:
+ YYDEBUG(784, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1046 "Zend/zend_language_scanner.l"
{
return T_ELSE;
}
-#line 7064 "Zend/zend_language_scanner.c"
-yy778:
- YYDEBUG(778, *YYCURSOR);
+#line 7112 "Zend/zend_language_scanner.c"
+yy785:
+ YYDEBUG(785, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'F') goto yy779;
+ if (yych == 'F') goto yy786;
if (yych != 'f') goto yy186;
-yy779:
- YYDEBUG(779, *YYCURSOR);
+yy786:
+ YYDEBUG(786, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(780, *YYCURSOR);
+ YYDEBUG(787, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1038 "Zend/zend_language_scanner.l"
{
return T_ELSEIF;
}
-#line 7082 "Zend/zend_language_scanner.c"
-yy781:
- YYDEBUG(781, *YYCURSOR);
+#line 7130 "Zend/zend_language_scanner.c"
+yy788:
+ YYDEBUG(788, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == 'O') goto yy782;
+ if (yych == 'O') goto yy789;
if (yych != 'o') goto yy186;
-yy782:
- YYDEBUG(782, *YYCURSOR);
+yy789:
+ YYDEBUG(789, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 4) {
goto yy185;
}
- YYDEBUG(783, *YYCURSOR);
+ YYDEBUG(790, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1122 "Zend/zend_language_scanner.l"
{
return T_ECHO;
}
-#line 7100 "Zend/zend_language_scanner.c"
+#line 7148 "Zend/zend_language_scanner.c"
}
/* *********************************** */
yyc_ST_LOOKING_FOR_PROPERTY:
@@ -7135,39 +7183,39 @@ yyc_ST_LOOKING_FOR_PROPERTY:
64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64,
};
- YYDEBUG(784, *YYCURSOR);
+ YYDEBUG(791, *YYCURSOR);
YYFILL(2);
yych = *YYCURSOR;
if (yych <= '-') {
if (yych <= '\r') {
- if (yych <= 0x08) goto yy792;
- if (yych <= '\n') goto yy786;
- if (yych <= '\f') goto yy792;
+ if (yych <= 0x08) goto yy799;
+ if (yych <= '\n') goto yy793;
+ if (yych <= '\f') goto yy799;
} else {
- if (yych == ' ') goto yy786;
- if (yych <= ',') goto yy792;
- goto yy788;
+ if (yych == ' ') goto yy793;
+ if (yych <= ',') goto yy799;
+ goto yy795;
}
} else {
if (yych <= '_') {
- if (yych <= '@') goto yy792;
- if (yych <= 'Z') goto yy790;
- if (yych <= '^') goto yy792;
- goto yy790;
+ if (yych <= '@') goto yy799;
+ if (yych <= 'Z') goto yy797;
+ if (yych <= '^') goto yy799;
+ goto yy797;
} else {
- if (yych <= '`') goto yy792;
- if (yych <= 'z') goto yy790;
- if (yych <= '~') goto yy792;
- goto yy790;
+ if (yych <= '`') goto yy799;
+ if (yych <= 'z') goto yy797;
+ if (yych <= '~') goto yy799;
+ goto yy797;
}
}
-yy786:
- YYDEBUG(786, *YYCURSOR);
+yy793:
+ YYDEBUG(793, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy798;
-yy787:
- YYDEBUG(787, *YYCURSOR);
+ goto yy805;
+yy794:
+ YYDEBUG(794, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1155 "Zend/zend_language_scanner.l"
{
@@ -7177,13 +7225,13 @@ yy787:
HANDLE_NEWLINES(yytext, yyleng);
return T_WHITESPACE;
}
-#line 7181 "Zend/zend_language_scanner.c"
-yy788:
- YYDEBUG(788, *YYCURSOR);
+#line 7229 "Zend/zend_language_scanner.c"
+yy795:
+ YYDEBUG(795, *YYCURSOR);
++YYCURSOR;
- if ((yych = *YYCURSOR) == '>') goto yy795;
-yy789:
- YYDEBUG(789, *YYCURSOR);
+ if ((yych = *YYCURSOR) == '>') goto yy802;
+yy796:
+ YYDEBUG(796, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1174 "Zend/zend_language_scanner.l"
{
@@ -7191,14 +7239,14 @@ yy789:
yy_pop_state(TSRMLS_C);
goto restart;
}
-#line 7195 "Zend/zend_language_scanner.c"
-yy790:
- YYDEBUG(790, *YYCURSOR);
+#line 7243 "Zend/zend_language_scanner.c"
+yy797:
+ YYDEBUG(797, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy794;
-yy791:
- YYDEBUG(791, *YYCURSOR);
+ goto yy801;
+yy798:
+ YYDEBUG(798, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1167 "Zend/zend_language_scanner.l"
{
@@ -7207,43 +7255,43 @@ yy791:
zendlval->type = IS_STRING;
return T_STRING;
}
-#line 7211 "Zend/zend_language_scanner.c"
-yy792:
- YYDEBUG(792, *YYCURSOR);
+#line 7259 "Zend/zend_language_scanner.c"
+yy799:
+ YYDEBUG(799, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy789;
-yy793:
- YYDEBUG(793, *YYCURSOR);
+ goto yy796;
+yy800:
+ YYDEBUG(800, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy794:
- YYDEBUG(794, *YYCURSOR);
+yy801:
+ YYDEBUG(801, *YYCURSOR);
if (yybm[0+yych] & 64) {
- goto yy793;
+ goto yy800;
}
- goto yy791;
-yy795:
- YYDEBUG(795, *YYCURSOR);
+ goto yy798;
+yy802:
+ YYDEBUG(802, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(796, *YYCURSOR);
+ YYDEBUG(803, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
#line 1163 "Zend/zend_language_scanner.l"
{
return T_OBJECT_OPERATOR;
}
-#line 7236 "Zend/zend_language_scanner.c"
-yy797:
- YYDEBUG(797, *YYCURSOR);
+#line 7284 "Zend/zend_language_scanner.c"
+yy804:
+ YYDEBUG(804, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy798:
- YYDEBUG(798, *YYCURSOR);
+yy805:
+ YYDEBUG(805, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy797;
+ goto yy804;
}
- goto yy787;
+ goto yy794;
}
/* *********************************** */
yyc_ST_LOOKING_FOR_VARNAME:
@@ -7282,27 +7330,27 @@ yyc_ST_LOOKING_FOR_VARNAME:
128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128,
};
- YYDEBUG(799, *YYCURSOR);
+ YYDEBUG(806, *YYCURSOR);
YYFILL(2);
yych = *YYCURSOR;
if (yych <= '_') {
- if (yych <= '@') goto yy803;
- if (yych <= 'Z') goto yy801;
- if (yych <= '^') goto yy803;
+ if (yych <= '@') goto yy810;
+ if (yych <= 'Z') goto yy808;
+ if (yych <= '^') goto yy810;
} else {
- if (yych <= '`') goto yy803;
- if (yych <= 'z') goto yy801;
- if (yych <= '~') goto yy803;
+ if (yych <= '`') goto yy810;
+ if (yych <= 'z') goto yy808;
+ if (yych <= '~') goto yy810;
}
-yy801:
- YYDEBUG(801, *YYCURSOR);
+yy808:
+ YYDEBUG(808, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy806;
-yy802:
- YYDEBUG(802, *YYCURSOR);
+ goto yy813;
+yy809:
+ YYDEBUG(809, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1446 "Zend/zend_language_scanner.l"
+#line 1450 "Zend/zend_language_scanner.l"
{
zend_copy_value(zendlval, yytext, yyleng);
zendlval->type = IS_STRING;
@@ -7310,42 +7358,42 @@ yy802:
yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
return T_STRING_VARNAME;
}
-#line 7314 "Zend/zend_language_scanner.c"
-yy803:
- YYDEBUG(803, *YYCURSOR);
+#line 7362 "Zend/zend_language_scanner.c"
+yy810:
+ YYDEBUG(810, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(804, *YYCURSOR);
+ YYDEBUG(811, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1455 "Zend/zend_language_scanner.l"
+#line 1459 "Zend/zend_language_scanner.l"
{
yyless(0);
yy_pop_state(TSRMLS_C);
yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
goto restart;
}
-#line 7327 "Zend/zend_language_scanner.c"
-yy805:
- YYDEBUG(805, *YYCURSOR);
+#line 7375 "Zend/zend_language_scanner.c"
+yy812:
+ YYDEBUG(812, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy806:
- YYDEBUG(806, *YYCURSOR);
+yy813:
+ YYDEBUG(813, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy805;
+ goto yy812;
}
- goto yy802;
+ goto yy809;
}
/* *********************************** */
yyc_ST_NOWDOC:
- YYDEBUG(807, *YYCURSOR);
+ YYDEBUG(814, *YYCURSOR);
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(809, *YYCURSOR);
+ YYDEBUG(816, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(810, *YYCURSOR);
+ YYDEBUG(817, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2329 "Zend/zend_language_scanner.l"
+#line 2333 "Zend/zend_language_scanner.l"
{
int newline = 0;
@@ -7400,7 +7448,7 @@ nowdoc_scan_done:
HANDLE_NEWLINES(yytext, yyleng - newline);
return T_ENCAPSED_AND_WHITESPACE;
}
-#line 7404 "Zend/zend_language_scanner.c"
+#line 7452 "Zend/zend_language_scanner.c"
/* *********************************** */
yyc_ST_VAR_OFFSET:
{
@@ -7438,76 +7486,76 @@ yyc_ST_VAR_OFFSET:
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
};
- YYDEBUG(811, *YYCURSOR);
+ YYDEBUG(818, *YYCURSOR);
YYFILL(3);
yych = *YYCURSOR;
if (yych <= '/') {
if (yych <= ' ') {
if (yych <= '\f') {
- if (yych <= 0x08) goto yy825;
- if (yych <= '\n') goto yy821;
- goto yy825;
+ if (yych <= 0x08) goto yy832;
+ if (yych <= '\n') goto yy828;
+ goto yy832;
} else {
- if (yych <= '\r') goto yy821;
- if (yych <= 0x1F) goto yy825;
- goto yy821;
+ if (yych <= '\r') goto yy828;
+ if (yych <= 0x1F) goto yy832;
+ goto yy828;
}
} else {
if (yych <= '$') {
- if (yych <= '"') goto yy820;
- if (yych <= '#') goto yy821;
- goto yy816;
+ if (yych <= '"') goto yy827;
+ if (yych <= '#') goto yy828;
+ goto yy823;
} else {
- if (yych == '\'') goto yy821;
- goto yy820;
+ if (yych == '\'') goto yy828;
+ goto yy827;
}
}
} else {
if (yych <= '\\') {
if (yych <= '@') {
- if (yych <= '0') goto yy813;
- if (yych <= '9') goto yy815;
- goto yy820;
+ if (yych <= '0') goto yy820;
+ if (yych <= '9') goto yy822;
+ goto yy827;
} else {
- if (yych <= 'Z') goto yy823;
- if (yych <= '[') goto yy820;
- goto yy821;
+ if (yych <= 'Z') goto yy830;
+ if (yych <= '[') goto yy827;
+ goto yy828;
}
} else {
if (yych <= '_') {
- if (yych <= ']') goto yy818;
- if (yych <= '^') goto yy820;
- goto yy823;
+ if (yych <= ']') goto yy825;
+ if (yych <= '^') goto yy827;
+ goto yy830;
} else {
- if (yych <= '`') goto yy820;
- if (yych <= 'z') goto yy823;
- if (yych <= '~') goto yy820;
- goto yy823;
+ if (yych <= '`') goto yy827;
+ if (yych <= 'z') goto yy830;
+ if (yych <= '~') goto yy827;
+ goto yy830;
}
}
}
-yy813:
- YYDEBUG(813, *YYCURSOR);
+yy820:
+ YYDEBUG(820, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'W') {
if (yych <= '9') {
- if (yych >= '0') goto yy837;
+ if (yych >= '0') goto yy844;
} else {
- if (yych == 'B') goto yy834;
+ if (yych == 'B') goto yy841;
}
} else {
if (yych <= 'b') {
- if (yych <= 'X') goto yy836;
- if (yych >= 'b') goto yy834;
+ if (yych <= 'X') goto yy843;
+ if (yych >= 'b') goto yy841;
} else {
- if (yych == 'x') goto yy836;
+ if (yych == 'x') goto yy843;
}
}
-yy814:
- YYDEBUG(814, *YYCURSOR);
+yy821:
+ YYDEBUG(821, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1525 "Zend/zend_language_scanner.l"
+#line 1529 "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)) {
zendlval->value.lval = strtol(yytext, NULL, 10);
@@ -7519,81 +7567,81 @@ yy814:
}
return T_NUM_STRING;
}
-#line 7523 "Zend/zend_language_scanner.c"
-yy815:
- YYDEBUG(815, *YYCURSOR);
+#line 7571 "Zend/zend_language_scanner.c"
+yy822:
+ YYDEBUG(822, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy833;
-yy816:
- YYDEBUG(816, *YYCURSOR);
+ goto yy840;
+yy823:
+ YYDEBUG(823, *YYCURSOR);
++YYCURSOR;
if ((yych = *YYCURSOR) <= '_') {
- if (yych <= '@') goto yy817;
- if (yych <= 'Z') goto yy829;
- if (yych >= '_') goto yy829;
+ if (yych <= '@') goto yy824;
+ if (yych <= 'Z') goto yy836;
+ if (yych >= '_') goto yy836;
} else {
- if (yych <= '`') goto yy817;
- if (yych <= 'z') goto yy829;
- if (yych >= 0x7F) goto yy829;
+ if (yych <= '`') goto yy824;
+ if (yych <= 'z') goto yy836;
+ if (yych >= 0x7F) goto yy836;
}
-yy817:
- YYDEBUG(817, *YYCURSOR);
+yy824:
+ YYDEBUG(824, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1857 "Zend/zend_language_scanner.l"
+#line 1861 "Zend/zend_language_scanner.l"
{
/* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
return yytext[0];
}
-#line 7548 "Zend/zend_language_scanner.c"
-yy818:
- YYDEBUG(818, *YYCURSOR);
+#line 7596 "Zend/zend_language_scanner.c"
+yy825:
+ YYDEBUG(825, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(819, *YYCURSOR);
+ YYDEBUG(826, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1852 "Zend/zend_language_scanner.l"
+#line 1856 "Zend/zend_language_scanner.l"
{
yy_pop_state(TSRMLS_C);
return ']';
}
-#line 7559 "Zend/zend_language_scanner.c"
-yy820:
- YYDEBUG(820, *YYCURSOR);
+#line 7607 "Zend/zend_language_scanner.c"
+yy827:
+ YYDEBUG(827, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy817;
-yy821:
- YYDEBUG(821, *YYCURSOR);
+ goto yy824;
+yy828:
+ YYDEBUG(828, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(822, *YYCURSOR);
+ YYDEBUG(829, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1862 "Zend/zend_language_scanner.l"
+#line 1866 "Zend/zend_language_scanner.l"
{
/* Invalid rule to return a more explicit parse error with proper line number */
yyless(0);
yy_pop_state(TSRMLS_C);
return T_ENCAPSED_AND_WHITESPACE;
}
-#line 7576 "Zend/zend_language_scanner.c"
-yy823:
- YYDEBUG(823, *YYCURSOR);
+#line 7624 "Zend/zend_language_scanner.c"
+yy830:
+ YYDEBUG(830, *YYCURSOR);
++YYCURSOR;
yych = *YYCURSOR;
- goto yy828;
-yy824:
- YYDEBUG(824, *YYCURSOR);
+ goto yy835;
+yy831:
+ YYDEBUG(831, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1869 "Zend/zend_language_scanner.l"
+#line 1873 "Zend/zend_language_scanner.l"
{
zend_copy_value(zendlval, yytext, yyleng);
zendlval->type = IS_STRING;
return T_STRING;
}
-#line 7591 "Zend/zend_language_scanner.c"
-yy825:
- YYDEBUG(825, *YYCURSOR);
+#line 7639 "Zend/zend_language_scanner.c"
+yy832:
+ YYDEBUG(832, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(826, *YYCURSOR);
+ YYDEBUG(833, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 2385 "Zend/zend_language_scanner.l"
+#line 2389 "Zend/zend_language_scanner.l"
{
if (YYCURSOR > YYLIMIT) {
return 0;
@@ -7602,118 +7650,118 @@ yy825:
zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
goto restart;
}
-#line 7606 "Zend/zend_language_scanner.c"
-yy827:
- YYDEBUG(827, *YYCURSOR);
+#line 7654 "Zend/zend_language_scanner.c"
+yy834:
+ YYDEBUG(834, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy828:
- YYDEBUG(828, *YYCURSOR);
+yy835:
+ YYDEBUG(835, *YYCURSOR);
if (yybm[0+yych] & 16) {
- goto yy827;
+ goto yy834;
}
- goto yy824;
-yy829:
- YYDEBUG(829, *YYCURSOR);
+ goto yy831;
+yy836:
+ YYDEBUG(836, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(830, *YYCURSOR);
+ YYDEBUG(837, *YYCURSOR);
if (yych <= '^') {
if (yych <= '9') {
- if (yych >= '0') goto yy829;
+ if (yych >= '0') goto yy836;
} else {
- if (yych <= '@') goto yy831;
- if (yych <= 'Z') goto yy829;
+ if (yych <= '@') goto yy838;
+ if (yych <= 'Z') goto yy836;
}
} else {
if (yych <= '`') {
- if (yych <= '_') goto yy829;
+ if (yych <= '_') goto yy836;
} else {
- if (yych <= 'z') goto yy829;
- if (yych >= 0x7F) goto yy829;
+ if (yych <= 'z') goto yy836;
+ if (yych >= 0x7F) goto yy836;
}
}
-yy831:
- YYDEBUG(831, *YYCURSOR);
+yy838:
+ YYDEBUG(838, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1846 "Zend/zend_language_scanner.l"
+#line 1850 "Zend/zend_language_scanner.l"
{
zend_copy_value(zendlval, (yytext+1), (yyleng-1));
zendlval->type = IS_STRING;
return T_VARIABLE;
}
-#line 7648 "Zend/zend_language_scanner.c"
-yy832:
- YYDEBUG(832, *YYCURSOR);
+#line 7696 "Zend/zend_language_scanner.c"
+yy839:
+ YYDEBUG(839, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
-yy833:
- YYDEBUG(833, *YYCURSOR);
+yy840:
+ YYDEBUG(840, *YYCURSOR);
if (yybm[0+yych] & 32) {
- goto yy832;
+ goto yy839;
}
- goto yy814;
-yy834:
- YYDEBUG(834, *YYCURSOR);
+ goto yy821;
+yy841:
+ YYDEBUG(841, *YYCURSOR);
yych = *++YYCURSOR;
if (yybm[0+yych] & 128) {
- goto yy842;
+ goto yy849;
}
-yy835:
- YYDEBUG(835, *YYCURSOR);
+yy842:
+ YYDEBUG(842, *YYCURSOR);
YYCURSOR = YYMARKER;
- goto yy814;
-yy836:
- YYDEBUG(836, *YYCURSOR);
+ goto yy821;
+yy843:
+ YYDEBUG(843, *YYCURSOR);
yych = *++YYCURSOR;
if (yybm[0+yych] & 64) {
- goto yy840;
+ goto yy847;
}
- goto yy835;
-yy837:
- YYDEBUG(837, *YYCURSOR);
+ goto yy842;
+yy844:
+ YYDEBUG(844, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(838, *YYCURSOR);
- if (yych <= '/') goto yy839;
- if (yych <= '9') goto yy837;
-yy839:
- YYDEBUG(839, *YYCURSOR);
+ YYDEBUG(845, *YYCURSOR);
+ if (yych <= '/') goto yy846;
+ if (yych <= '9') goto yy844;
+yy846:
+ YYDEBUG(846, *YYCURSOR);
yyleng = YYCURSOR - SCNG(yy_text);
-#line 1537 "Zend/zend_language_scanner.l"
+#line 1541 "Zend/zend_language_scanner.l"
{ /* Offset must be treated as a string */
zendlval->value.str.val = (char *)estrndup(yytext, yyleng);
zendlval->value.str.len = yyleng;
zendlval->type = IS_STRING;
return T_NUM_STRING;
}
-#line 7695 "Zend/zend_language_scanner.c"
-yy840:
- YYDEBUG(840, *YYCURSOR);
+#line 7743 "Zend/zend_language_scanner.c"
+yy847:
+ YYDEBUG(847, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(841, *YYCURSOR);
+ YYDEBUG(848, *YYCURSOR);
if (yybm[0+yych] & 64) {
- goto yy840;
+ goto yy847;
}
- goto yy839;
-yy842:
- YYDEBUG(842, *YYCURSOR);
+ goto yy846;
+yy849:
+ YYDEBUG(849, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(843, *YYCURSOR);
+ YYDEBUG(850, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy842;
+ goto yy849;
}
- goto yy839;
+ goto yy846;
}
}
-#line 2394 "Zend/zend_language_scanner.l"
+#line 2398 "Zend/zend_language_scanner.l"
}
diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l
index a5c7fd1833..0e3583472f 100644
--- a/Zend/zend_language_scanner.l
+++ b/Zend/zend_language_scanner.l
@@ -1313,6 +1313,10 @@ NEWLINE ("\r"|"\n"|"\r\n")
return T_ARRAY;
}
+<ST_IN_SCRIPTING>"callable" {
+ return T_CALLABLE;
+}
+
<ST_IN_SCRIPTING>"++" {
return T_INC;
}
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 9f770360d3..3dfd2f276b 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -2383,6 +2383,22 @@ ZEND_METHOD(reflection_parameter, isArray)
}
/* }}} */
+/* {{{ proto public bool ReflectionParameter::isCallable()
+ Returns whether parameter MUST be callable */
+ZEND_METHOD(reflection_parameter, isCallable)
+{
+ reflection_object *intern;
+ parameter_reference *param;
+
+ if (zend_parse_parameters_none() == FAILURE) {
+ return;
+ }
+ GET_REFLECTION_OBJECT_PTR(param);
+
+ RETVAL_BOOL(param->arg_info->type_hint == IS_CALLABLE);
+}
+/* }}} */
+
/* {{{ proto public bool ReflectionParameter::allowsNull()
Returns whether NULL is allowed as this parameters's value */
ZEND_METHOD(reflection_parameter, allowsNull)
@@ -5827,6 +5843,7 @@ static const zend_function_entry reflection_parameter_functions[] = {
ZEND_ME(reflection_parameter, getDeclaringClass, arginfo_reflection__void, 0)
ZEND_ME(reflection_parameter, getClass, arginfo_reflection__void, 0)
ZEND_ME(reflection_parameter, isArray, arginfo_reflection__void, 0)
+ ZEND_ME(reflection_parameter, isCallable, arginfo_reflection__void, 0)
ZEND_ME(reflection_parameter, allowsNull, arginfo_reflection__void, 0)
ZEND_ME(reflection_parameter, getPosition, arginfo_reflection__void, 0)
ZEND_ME(reflection_parameter, isOptional, arginfo_reflection__void, 0)
diff --git a/ext/tokenizer/tokenizer_data.c b/ext/tokenizer/tokenizer_data.c
index 12d8b0a584..54c10399a0 100644
--- a/ext/tokenizer/tokenizer_data.c
+++ b/ext/tokenizer/tokenizer_data.c
@@ -69,6 +69,7 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) {
REGISTER_LONG_CONSTANT("T_INT_CAST", T_INT_CAST, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_DEC", T_DEC, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_INC", T_INC, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("T_SCALAR_CAST", T_SCALAR_CAST, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_CLONE", T_CLONE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_NEW", T_NEW, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_EXIT", T_EXIT, CONST_CS | CONST_PERSISTENT);
@@ -134,6 +135,7 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) {
REGISTER_LONG_CONSTANT("T_DOUBLE_ARROW", T_DOUBLE_ARROW, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_LIST", T_LIST, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_ARRAY", T_ARRAY, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("T_CALLABLE", T_CALLABLE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_CLASS_C", T_CLASS_C, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_METHOD_C", T_METHOD_C, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("T_FUNC_C", T_FUNC_C, CONST_CS | CONST_PERSISTENT);
@@ -201,6 +203,7 @@ char *get_token_type_name(int token_type)
case T_INT_CAST: return "T_INT_CAST";
case T_DEC: return "T_DEC";
case T_INC: return "T_INC";
+ case T_SCALAR_CAST: return "T_SCALAR_CAST";
case T_CLONE: return "T_CLONE";
case T_NEW: return "T_NEW";
case T_EXIT: return "T_EXIT";
@@ -266,6 +269,7 @@ char *get_token_type_name(int token_type)
case T_DOUBLE_ARROW: return "T_DOUBLE_ARROW";
case T_LIST: return "T_LIST";
case T_ARRAY: return "T_ARRAY";
+ case T_CALLABLE: return "T_CALLABLE";
case T_CLASS_C: return "T_CLASS_C";
case T_METHOD_C: return "T_METHOD_C";
case T_FUNC_C: return "T_FUNC_C";