From: Hannes Magnusson Date: Tue, 16 Aug 2011 10:44:47 +0000 (+0000) Subject: Callable typehint following the rules of is_callable($arg, false); X-Git-Tag: php-5.4.0beta1~422 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=550980cfe58f6c2c935079f10eaabc5c6c271cea;p=php Callable typehint following the rules of is_callable($arg, false); --- diff --git a/NEWS b/NEWS index 54562765df..32e17a569f 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,7 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? 2011, PHP 5.4.0 Beta - General improvements: + . Added callable typehint. (Hannes) . Turn on html_errors by default again in php.ini-production like it was in PHP 5.3, but only generate docref links when the docref_root INI setting is not empty. diff --git a/UPGRADING b/UPGRADING index 056f2a3fb8..abb45b4737 100755 --- a/UPGRADING +++ b/UPGRADING @@ -362,6 +362,15 @@ UPGRADE NOTES - PHP X.Y foo()[0] $foo->bar()[0] +- Callable typehint, argument must be callable (i.e. pass is_callable($arg, false)) + example: + function foo(callable $do) { + } + foo("strcmp"); + foo(function() {}); + $o = new ArrayObject(); + foo(array($o, "count")); + =================== 13. Windows support =================== @@ -459,6 +468,7 @@ UPGRADE NOTES - PHP X.Y - ReflectionClass::getTraitNames() - ReflectionClass::getTraitAliases() - ReflectionParameter::canBePassedByValue() + - ReflectionParameter::isCallable() - RegexIterator - RegexIterator::getRegex() 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-- + + 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-- +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-- + +--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 cd883cbe6f..774c1e85eb 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 a34a8d87e5..3678dd0d63 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:07:40 2011 */ +/* Generated by re2c 0.13.5 on Tue Aug 16 10:45:19 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; } +"callable" { + return T_CALLABLE; +} + "++" { 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";