From 18c78af2d9ff27cf2df3ad0e63f5c4cce11a5db3 Mon Sep 17 00:00:00 2001 From: bwoebi Date: Sun, 15 Sep 2013 16:31:06 +0200 Subject: [PATCH 1/9] Added support for keywords for class/method/label/declare/class const names --- Zend/tests/bug43343.phpt | 10 +- Zend/tests/identifier_or_keyword.phpt | 54 ++ Zend/tests/lsb_006.phpt | 2 +- Zend/tests/lsb_007.phpt | 2 +- Zend/tests/lsb_008.phpt | 3 +- Zend/tests/lsb_009.phpt | 3 +- Zend/tests/traits/error_013.phpt | 19 - Zend/tests/traits/language018.phpt | 15 - Zend/tests/traits/language019.phpt | 15 - Zend/zend_compile.c | 22 +- Zend/zend_highlight.c | 39 +- Zend/zend_language_parser.y | 213 ++++--- Zend/zend_language_scanner.c | 825 +++++++++++++------------- Zend/zend_language_scanner.h | 16 + Zend/zend_language_scanner.l | 137 ++--- ext/tokenizer/tokenizer.c | 15 +- tests/basic/bug51709_1.phpt | 16 +- tests/basic/bug51709_2.phpt | 12 +- tests/lang/bug21820.phpt | 2 +- 19 files changed, 764 insertions(+), 656 deletions(-) create mode 100644 Zend/tests/identifier_or_keyword.phpt delete mode 100644 Zend/tests/traits/error_013.phpt delete mode 100644 Zend/tests/traits/language018.phpt delete mode 100644 Zend/tests/traits/language019.phpt diff --git a/Zend/tests/bug43343.phpt b/Zend/tests/bug43343.phpt index 79b3e5a24ad38..3cf19fdc0cf43 100644 --- a/Zend/tests/bug43343.phpt +++ b/Zend/tests/bug43343.phpt @@ -2,10 +2,12 @@ Bug #43343 (Variable class name) --FILE-- --EXPECTF-- -Parse error: %s error%sexpecting%sT_NS_SEPARATOR%sin %sbug43343.php on line 5 +object(namespace)#1 (0) { +} diff --git a/Zend/tests/identifier_or_keyword.phpt b/Zend/tests/identifier_or_keyword.phpt new file mode 100644 index 0000000000000..5469cea37ac36 --- /dev/null +++ b/Zend/tests/identifier_or_keyword.phpt @@ -0,0 +1,54 @@ +--TEST-- +Basic keyword support +--FILE-- +catch: + case new yield: + echo "O"; + default: + goto try; +} +echo "goto T_TRY failed"; +try: + +interface global {} + +class abstract extends namespace\yield implements \global { + public function __construct (array $array, callable $call) { + } +} + +if (new abstract(["array_arg"], function () {})) { + echo "k"; + + // Test if it doesn't throw a parse error. fatal error is normal. + // inner_keyword + interface function extends const, break, continue, goto, echo, throw, if, do, for, foreach, declare, instanceof, as, switch, print, class, interface, while, trait, extends, implements, new, clone, var, eval, include, require, namespace, use, insteadof, isset, empty, abstract, final, private, protected, public, unset, list, array, callable, or, and, xor {} + + // keyword + $obj->elseif->endif->else->endwhile->endfor->endforeach->enddeclare->endswitch->case->exit; +} + +?> +--EXPECTF-- +Ok +Fatal error: %s in %s on line %d diff --git a/Zend/tests/lsb_006.phpt b/Zend/tests/lsb_006.phpt index 84cd22a99572d..9be6934f90f72 100644 --- a/Zend/tests/lsb_006.phpt +++ b/Zend/tests/lsb_006.phpt @@ -9,5 +9,5 @@ class Foo extends static { ?> ==DONE== --EXPECTF-- -Parse error: %s error,%sexpecting %s in %s on line %d +Fatal error: Cannot use 'static' as class name as it is reserved in %s on line %d diff --git a/Zend/tests/lsb_007.phpt b/Zend/tests/lsb_007.phpt index 607f8efeb4398..5fdc1fe55ec99 100644 --- a/Zend/tests/lsb_007.phpt +++ b/Zend/tests/lsb_007.phpt @@ -9,5 +9,5 @@ class Foo implements static { ?> ==DONE== --EXPECTF-- -Parse error: %s error,%sexpecting %s in %s on line %d +Fatal error: Cannot use 'static' as interface name as it is reserved in %s on line %d diff --git a/Zend/tests/lsb_008.phpt b/Zend/tests/lsb_008.phpt index b700e2df94359..0374bce66225c 100644 --- a/Zend/tests/lsb_008.phpt +++ b/Zend/tests/lsb_008.phpt @@ -4,6 +4,7 @@ ZE2 Late Static Binding class name "static" --EXPECTF-- -Parse error: %s error,%sexpecting %s in %s on line %d +Fatal error: Cannot use 'static' as class name as it is reserved in %s on line %d diff --git a/Zend/tests/lsb_009.phpt b/Zend/tests/lsb_009.phpt index d8d41817c8b82..26458848ed6ea 100644 --- a/Zend/tests/lsb_009.phpt +++ b/Zend/tests/lsb_009.phpt @@ -4,6 +4,7 @@ ZE2 Late Static Binding interface name "static" --EXPECTF-- -Parse error: %s error,%sexpecting %s in %s on line %d +Fatal error: Cannot use 'static' as interface name as it is reserved in %s on line %d diff --git a/Zend/tests/traits/error_013.phpt b/Zend/tests/traits/error_013.phpt deleted file mode 100644 index d9fda2d0056ff..0000000000000 --- a/Zend/tests/traits/error_013.phpt +++ /dev/null @@ -1,19 +0,0 @@ ---TEST-- -Trying to use static as method modifier ---FILE-- -test()); - -?> ---EXPECTF-- -Fatal error: Cannot use 'static' as method modifier in %s on line %d diff --git a/Zend/tests/traits/language018.phpt b/Zend/tests/traits/language018.phpt deleted file mode 100644 index 169cb50c6b07c..0000000000000 --- a/Zend/tests/traits/language018.phpt +++ /dev/null @@ -1,15 +0,0 @@ ---TEST-- -abstract alias ---FILE-- - ---EXPECTF-- -Fatal error: Cannot use 'abstract' as method modifier in %s on line %d diff --git a/Zend/tests/traits/language019.phpt b/Zend/tests/traits/language019.phpt deleted file mode 100644 index 83318c58a2e73..0000000000000 --- a/Zend/tests/traits/language019.phpt +++ /dev/null @@ -1,15 +0,0 @@ ---TEST-- -final alias ---FILE-- - ---EXPECTF-- -Fatal error: Cannot use 'final' as method modifier in %s on line %d diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 672f62b7eefa3..5fc8ea9f14fa1 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -4943,9 +4943,13 @@ void zend_do_begin_class_declaration(const znode *class_token, znode *class_name lcname = zend_str_tolower_dup(Z_STRVAL(class_name->u.constant), Z_STRLEN(class_name->u.constant)); - if (!(strcmp(lcname, "self") && strcmp(lcname, "parent"))) { + if (!(strcmp(lcname, "self") && strcmp(lcname, "parent") && strcmp(lcname, "static"))) { efree(lcname); - zend_error(E_COMPILE_ERROR, "Cannot use '%s' as class name as it is reserved", Z_STRVAL(class_name->u.constant)); + if (parent_class_name) { + zend_error(E_COMPILE_ERROR, "Cannot use '%s' as class name as it is reserved", Z_STRVAL(class_name->u.constant)); + } else { + zend_error(E_COMPILE_ERROR, "Cannot use '%s' as interface name as it is reserved", Z_STRVAL(class_name->u.constant)); + } } /* Class name must not conflict with import names */ @@ -6932,9 +6936,11 @@ void zend_do_begin_namespace(const znode *name, zend_bool with_bracket TSRMLS_DC if (name) { lcname = zend_str_tolower_dup(Z_STRVAL(name->u.constant), Z_STRLEN(name->u.constant)); if (((Z_STRLEN(name->u.constant) == sizeof("self")-1) && - !memcmp(lcname, "self", sizeof("self")-1)) || + !memcmp(lcname, "self", sizeof("self")-1)) || ((Z_STRLEN(name->u.constant) == sizeof("parent")-1) && - !memcmp(lcname, "parent", sizeof("parent")-1))) { + !memcmp(lcname, "parent", sizeof("parent")-1)) || + ((Z_STRLEN(name->u.constant) == sizeof("static")-1) && + !memcmp(lcname, "static", sizeof("static")-1))) { zend_error(E_COMPILE_ERROR, "Cannot use '%s' as namespace name", Z_STRVAL(name->u.constant)); } efree(lcname); @@ -7002,9 +7008,11 @@ void zend_do_use(znode *ns_name, znode *new_name, int is_global TSRMLS_DC) /* {{ lcname = zend_str_tolower_dup(Z_STRVAL_P(name), Z_STRLEN_P(name)); if (((Z_STRLEN_P(name) == sizeof("self")-1) && - !memcmp(lcname, "self", sizeof("self")-1)) || - ((Z_STRLEN_P(name) == sizeof("parent")-1) && - !memcmp(lcname, "parent", sizeof("parent")-1))) { + !memcmp(lcname, "self", sizeof("self")-1)) || + ((Z_STRLEN_P(name) == sizeof("parent")-1) && + !memcmp(lcname, "parent", sizeof("parent")-1)) || + ((Z_STRLEN_P(name) == sizeof("static")-1) && + !memcmp(lcname, "static", sizeof("static")-1))) { zend_error(E_COMPILE_ERROR, "Cannot use %s as %s because '%s' is a special class name", Z_STRVAL_P(ns), Z_STRVAL_P(name), Z_STRVAL_P(name)); } diff --git a/Zend/zend_highlight.c b/Zend/zend_highlight.c index c789cb719a01b..6f82b47c72995 100644 --- a/Zend/zend_highlight.c +++ b/Zend/zend_highlight.c @@ -25,6 +25,8 @@ #include "zend_highlight.h" #include "zend_ptr_stack.h" #include "zend_globals.h" +#include + ZEND_API void zend_html_putc(char c) { @@ -104,10 +106,9 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini break; case T_OPEN_TAG: case T_OPEN_TAG_WITH_ECHO: - next_color = syntax_highlighter_ini->highlight_default; - break; case T_CLOSE_TAG: next_color = syntax_highlighter_ini->highlight_default; + token.type = 0; break; case '"': case T_ENCAPSED_AND_WHITESPACE: @@ -120,6 +121,15 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini continue; break; default: + switch (token_type) { + COPIED_STRING_TOKEN_CASES + break; + + default: + if (token.type == IS_STRING) { + token.type = 0; + } + } if (token.type == 0) { next_color = syntax_highlighter_ini->highlight_keyword; } else { @@ -141,18 +151,7 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini zend_html_puts((char*)LANG_SCNG(yy_text), LANG_SCNG(yy_leng) TSRMLS_CC); if (token.type == IS_STRING) { - switch (token_type) { - case T_OPEN_TAG: - case T_OPEN_TAG_WITH_ECHO: - case T_CLOSE_TAG: - case T_WHITESPACE: - case T_COMMENT: - case T_DOC_COMMENT: - break; - default: - efree(token.value.str.val); - break; - } + efree(Z_STRVAL(token)); } token.type = 0; } @@ -202,16 +201,8 @@ ZEND_API void zend_strip(TSRMLS_D) if (token.type == IS_STRING) { switch (token_type) { - case T_OPEN_TAG: - case T_OPEN_TAG_WITH_ECHO: - case T_CLOSE_TAG: - case T_WHITESPACE: - case T_COMMENT: - case T_DOC_COMMENT: - break; - - default: - efree(token.value.str.val); + COPIED_STRING_TOKEN_CASES + efree(Z_STRVAL(token)); break; } } diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 403146e16486e..d12da33713fe3 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -224,9 +224,14 @@ top_statement_list: | /* empty */ ; +namespace_name_prefix: + T_STRING { $$ = $1; } + | namespace_name_prefix T_NS_SEPARATOR T_STRING { zend_do_build_namespace_name(&$$, &$1, &$3 TSRMLS_CC); } +; + namespace_name: T_STRING { $$ = $1; } - | namespace_name T_NS_SEPARATOR T_STRING { zend_do_build_namespace_name(&$$, &$1, &$3 TSRMLS_CC); } + | namespace_name_prefix T_NS_SEPARATOR identifier_or_inner_keyword { zend_do_build_namespace_name(&$$, &$1, &$3 TSRMLS_CC); } ; top_statement: @@ -234,8 +239,8 @@ top_statement: | function_declaration_statement { zend_verify_namespace(TSRMLS_C); zend_do_early_binding(TSRMLS_C); } | class_declaration_statement { zend_verify_namespace(TSRMLS_C); zend_do_early_binding(TSRMLS_C); } | T_HALT_COMPILER '(' ')' ';' { zend_do_halt_compiler_register(TSRMLS_C); YYACCEPT; } - | T_NAMESPACE namespace_name ';' { zend_do_begin_namespace(&$2, 0 TSRMLS_CC); } - | T_NAMESPACE namespace_name '{' { zend_do_begin_namespace(&$2, 1 TSRMLS_CC); } + | T_NAMESPACE namespace_name_prefix ';' { zend_do_begin_namespace(&$2, 0 TSRMLS_CC); } + | T_NAMESPACE namespace_name_prefix '{' { zend_do_begin_namespace(&$2, 1 TSRMLS_CC); } top_statement_list '}' { zend_do_end_namespace(TSRMLS_C); } | T_NAMESPACE '{' { zend_do_begin_namespace(NULL, 1 TSRMLS_CC); } top_statement_list '}' { zend_do_end_namespace(TSRMLS_C); } @@ -249,10 +254,10 @@ use_declarations: ; use_declaration: - namespace_name { zend_do_use(&$1, NULL, 0 TSRMLS_CC); } - | namespace_name T_AS T_STRING { zend_do_use(&$1, &$3, 0 TSRMLS_CC); } - | T_NS_SEPARATOR namespace_name { zend_do_use(&$2, NULL, 1 TSRMLS_CC); } - | T_NS_SEPARATOR namespace_name T_AS T_STRING { zend_do_use(&$2, &$4, 1 TSRMLS_CC); } + namespace_name { zend_do_use(&$1, NULL, 0 TSRMLS_CC); } + | namespace_name T_AS identifier_or_inner_keyword { zend_do_use(&$1, &$3, 0 TSRMLS_CC); } + | T_NS_SEPARATOR namespace_name { zend_do_use(&$2, NULL, 1 TSRMLS_CC); } + | T_NS_SEPARATOR namespace_name T_AS identifier_or_inner_keyword { zend_do_use(&$2, &$4, 1 TSRMLS_CC); } ; constant_declaration: @@ -276,7 +281,7 @@ inner_statement: statement: unticked_statement { DO_TICKS(); } - | T_STRING ':' { zend_do_label(&$1 TSRMLS_CC); } + | identifier_or_inner_keyword ':' { zend_do_label(&$1 TSRMLS_CC); } ; unticked_statement: @@ -323,19 +328,19 @@ unticked_statement: catch_statement { zend_do_bind_catch(&$1, &$6 TSRMLS_CC); } finally_statement { zend_do_end_finally(&$1, &$6, &$8 TSRMLS_CC); } | T_THROW expr ';' { zend_do_throw(&$2 TSRMLS_CC); } - | T_GOTO T_STRING ';' { zend_do_goto(&$2 TSRMLS_CC); } + | T_GOTO identifier_or_inner_keyword ';' { zend_do_goto(&$2 TSRMLS_CC); } ; catch_statement: - /* empty */ { $$.op_type = IS_UNUSED; } + /* empty */ { $$.op_type = IS_UNUSED; } | T_CATCH '(' { zend_initialize_try_catch_element(&$1 TSRMLS_CC); } - fully_qualified_class_name { zend_do_first_catch(&$2 TSRMLS_CC); } + class_name { zend_do_first_catch(&$2 TSRMLS_CC); } T_VARIABLE ')' { zend_do_begin_catch(&$1, &$4, &$6, &$2 TSRMLS_CC); } '{' inner_statement_list '}' { zend_do_end_catch(&$1 TSRMLS_CC); } additional_catches { zend_do_mark_last_catch(&$2, &$13 TSRMLS_CC); $$ = $1;} finally_statement: - /* empty */ { $$.op_type = IS_UNUSED; } + /* empty */ { $$.op_type = IS_UNUSED; } | T_FINALLY { zend_do_finally(&$1 TSRMLS_CC); } '{' inner_statement_list '}' { $$ = $1; } ; @@ -350,7 +355,7 @@ non_empty_additional_catches: ; additional_catch: - T_CATCH '(' fully_qualified_class_name { $$.u.op.opline_num = get_next_op_number(CG(active_op_array)); } T_VARIABLE ')' { zend_do_begin_catch(&$1, &$3, &$5, NULL TSRMLS_CC); } '{' inner_statement_list '}' { zend_do_end_catch(&$1 TSRMLS_CC); } + T_CATCH '(' class_name { $$.u.op.opline_num = get_next_op_number(CG(active_op_array)); } T_VARIABLE ')' { zend_do_begin_catch(&$1, &$3, &$5, NULL TSRMLS_CC); } '{' inner_statement_list '}' { zend_do_end_catch(&$1 TSRMLS_CC); } ; unset_variables: @@ -383,13 +388,13 @@ unticked_function_declaration_statement: ; unticked_class_declaration_statement: - class_entry_type T_STRING extends_from + class_entry_type identifier_or_inner_keyword extends_from { zend_do_begin_class_declaration(&$1, &$2, &$3 TSRMLS_CC); } implements_list '{' class_statement_list '}' { zend_do_end_class_declaration(&$1, &$3 TSRMLS_CC); } - | interface_entry T_STRING + | interface_entry identifier_or_inner_keyword { zend_do_begin_class_declaration(&$1, &$2, NULL TSRMLS_CC); } interface_extends_list '{' @@ -407,7 +412,7 @@ class_entry_type: extends_from: /* empty */ { $$.op_type = IS_UNUSED; } - | T_EXTENDS fully_qualified_class_name { zend_do_fetch_class(&$$, &$2 TSRMLS_CC); } + | T_EXTENDS class_name { zend_do_fetch_class(&$$, &$2 TSRMLS_CC); } ; interface_entry: @@ -425,8 +430,8 @@ implements_list: ; interface_list: - fully_qualified_class_name { zend_do_implements_interface(&$1 TSRMLS_CC); } - | interface_list ',' fully_qualified_class_name { zend_do_implements_interface(&$3 TSRMLS_CC); } + class_name { zend_do_implements_interface(&$1 TSRMLS_CC); } + | interface_list ',' class_name { zend_do_implements_interface(&$3 TSRMLS_CC); } ; foreach_optional_arg: @@ -459,8 +464,8 @@ declare_statement: declare_list: - T_STRING '=' static_scalar { zend_do_declare_stmt(&$1, &$3 TSRMLS_CC); } - | declare_list ',' T_STRING '=' static_scalar { zend_do_declare_stmt(&$3, &$5 TSRMLS_CC); } + identifier_or_keyword '=' static_scalar { zend_do_declare_stmt(&$1, &$3 TSRMLS_CC); } + | declare_list ',' identifier_or_keyword '=' static_scalar { zend_do_declare_stmt(&$3, &$5 TSRMLS_CC); } ; @@ -491,7 +496,6 @@ while_statement: ; - elseif_list: /* empty */ | elseif_list T_ELSEIF parenthesis_expr { zend_do_if_cond(&$3, &$2 TSRMLS_CC); } statement { zend_do_if_after_statement(&$2, 0 TSRMLS_CC); } @@ -536,9 +540,7 @@ non_empty_parameter_list: optional_class_type: /* empty */ { $$.op_type = IS_UNUSED; } - | 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; } + | class_name { if ((Z_STRLEN($1.u.constant) == 5 && !strncasecmp(Z_STRVAL($1.u.constant), "array", 5)) || (Z_STRLEN($1.u.constant) == 8 && !strncasecmp(Z_STRVAL($1.u.constant), "callable", 8))) { $$.op_type = IS_CONST; efree(Z_STRVAL($1.u.constant)); switch (Z_STRLEN($1.u.constant)) { case 5: Z_TYPE($$.u.constant) = IS_ARRAY; break; case 8: Z_TYPE($$.u.constant) = IS_CALLABLE; break; } } else { $$ = $1; } } ; @@ -590,7 +592,7 @@ class_statement: variable_modifiers { CG(access_type) = Z_LVAL($1.u.constant); } class_variable_declaration ';' | class_constant_declaration ';' | trait_use_statement - | method_modifiers function is_reference T_STRING { zend_do_begin_function_declaration(&$2, &$4, 1, $3.op_type, &$1 TSRMLS_CC); } + | method_modifiers function is_reference identifier_or_keyword { zend_do_begin_function_declaration(&$2, &$4, 1, $3.op_type, &$1 TSRMLS_CC); } '(' parameter_list ')' method_body { zend_do_abstract_method(&$4, &$1, &$9 TSRMLS_CC); zend_do_end_function_declaration(&$2 TSRMLS_CC); } ; @@ -600,8 +602,8 @@ trait_use_statement: ; trait_list: - fully_qualified_class_name { zend_do_use_trait(&$1 TSRMLS_CC); } - | trait_list ',' fully_qualified_class_name { zend_do_use_trait(&$3 TSRMLS_CC); } + class_name { zend_do_use_trait(&$1 TSRMLS_CC); } + | trait_list ',' class_name { zend_do_use_trait(&$3 TSRMLS_CC); } ; trait_adaptations: @@ -629,27 +631,39 @@ trait_precedence: ; trait_reference_list: - fully_qualified_class_name { zend_resolve_class_name(&$1 TSRMLS_CC); zend_init_list(&$$.u.op.ptr, Z_STRVAL($1.u.constant) TSRMLS_CC); } - | trait_reference_list ',' fully_qualified_class_name { zend_resolve_class_name(&$3 TSRMLS_CC); zend_add_to_list(&$1.u.op.ptr, Z_STRVAL($3.u.constant) TSRMLS_CC); $$ = $1; } + class_name { zend_resolve_class_name(&$1 TSRMLS_CC); zend_init_list(&$$.u.op.ptr, Z_STRVAL($1.u.constant) TSRMLS_CC); } + | trait_reference_list ',' class_name { zend_resolve_class_name(&$3 TSRMLS_CC); zend_add_to_list(&$1.u.op.ptr, Z_STRVAL($3.u.constant) TSRMLS_CC); $$ = $1; } ; trait_method_reference: - T_STRING { zend_prepare_reference(&$$, NULL, &$1 TSRMLS_CC); } + identifier_or_keyword { zend_prepare_reference(&$$, NULL, &$1 TSRMLS_CC); } | trait_method_reference_fully_qualified { $$ = $1; } ; trait_method_reference_fully_qualified: - fully_qualified_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_prepare_reference(&$$, &$1, &$3 TSRMLS_CC); } + class_name T_PAAMAYIM_NEKUDOTAYIM identifier_or_keyword { zend_prepare_reference(&$$, &$1, &$3 TSRMLS_CC); } ; trait_alias: - trait_method_reference T_AS trait_modifiers T_STRING { zend_add_trait_alias(&$1, &$3, &$4 TSRMLS_CC); } - | trait_method_reference T_AS member_modifier { zend_add_trait_alias(&$1, &$3, NULL TSRMLS_CC); } -; - -trait_modifiers: - /* empty */ { Z_LVAL($$.u.constant) = 0x0; } /* No change of methods visibility */ - | member_modifier { $$ = $1; } /* REM: Keep in mind, there are not only visibility modifiers */ + trait_method_reference T_AS member_modifier identifier_or_keyword { zend_add_trait_alias(&$1, &$3, &$4 TSRMLS_CC); } + | trait_method_reference T_AS identifier_or_keyword { + long flags = 0x0; + if (Z_STRLEN($3.u.constant) == 6 && !strncasecmp(Z_STRVAL($3.u.constant), "public", 6)) { + flags = ZEND_ACC_PUBLIC; + } else if (Z_STRLEN($3.u.constant) == 7 && !strncasecmp(Z_STRVAL($3.u.constant), "private", 7)) { + flags = ZEND_ACC_PRIVATE; + } else if (Z_STRLEN($3.u.constant) == 9 && !strncasecmp(Z_STRVAL($3.u.constant), "protected", 9)) { + flags = ZEND_ACC_PROTECTED; + } + if (flags) { + efree(Z_STRVAL($3.u.constant)); + Z_LVAL($3.u.constant) = flags; + zend_add_trait_alias(&$1, &$3, NULL TSRMLS_CC); + } else { + Z_LVAL($2.u.constant) = flags; + zend_add_trait_alias(&$1, &$2, &$3 TSRMLS_CC); + } + } ; method_body: @@ -689,8 +703,8 @@ class_variable_declaration: ; class_constant_declaration: - class_constant_declaration ',' T_STRING '=' static_scalar { zend_do_declare_class_constant(&$3, &$5 TSRMLS_CC); } - | T_CONST T_STRING '=' static_scalar { zend_do_declare_class_constant(&$2, &$4 TSRMLS_CC); } + class_constant_declaration ',' identifier_or_keyword '=' static_scalar { zend_do_declare_class_constant(&$3, &$5 TSRMLS_CC); } + | T_CONST identifier_or_keyword '=' static_scalar { zend_do_declare_class_constant(&$2, &$4 TSRMLS_CC); } ; echo_expr_list: @@ -868,21 +882,18 @@ function_call: function_call_parameter_list { zend_do_end_function_call(&$1, &$$, &$3, 0, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} ; -class_name: - T_STATIC { $$.op_type = IS_CONST; ZVAL_STRINGL(&$$.u.constant, "static", sizeof("static")-1, 1);} +base_class_name: + inner_keyword { ZVAL_STRINGL(&$$.u.constant, Z_STRVAL($1.u.constant), Z_STRLEN($1.u.constant), 1); } | namespace_name { $$ = $1; } - | T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.u.constant); zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); } - | T_NS_SEPARATOR namespace_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); $$ = $2; } ; -fully_qualified_class_name: - namespace_name { $$ = $1; } - | T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.u.constant); zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); } - | T_NS_SEPARATOR namespace_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); $$ = $2; } +class_name: + base_class_name { $$ = $1; } + | T_NAMESPACE T_NS_SEPARATOR base_class_name { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.u.constant); zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); } + | T_NS_SEPARATOR base_class_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); $$ = $2; } ; - class_name_reference: class_name { zend_do_fetch_class(&$$, &$1 TSRMLS_CC); } | dynamic_class_name_reference { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); zend_do_fetch_class(&$$, &$1 TSRMLS_CC); } @@ -944,8 +955,7 @@ common_scalar: static_scalar: /* compile-time evaluated scalars */ common_scalar { $$ = $1; } - | static_class_name_scalar { $$ = $1; } - | namespace_name { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_CT, 1 TSRMLS_CC); } + | namespace_name { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_CT, 1 TSRMLS_CC); } | T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.u.constant); zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); $3 = $$; zend_do_fetch_constant(&$$, NULL, &$3, ZEND_CT, 0 TSRMLS_CC); } | T_NS_SEPARATOR namespace_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); zend_do_fetch_constant(&$$, NULL, &$2, ZEND_CT, 0 TSRMLS_CC); } | '+' static_scalar { ZVAL_LONG(&$1.u.constant, 0); add_function(&$2.u.constant, &$1.u.constant, &$2.u.constant TSRMLS_CC); $$ = $2; } @@ -956,13 +966,14 @@ static_scalar: /* compile-time evaluated scalars */ | T_CLASS_C { $$ = $1; } ; + + static_class_constant: - class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_CT, 0 TSRMLS_CC); } + class_name T_PAAMAYIM_NEKUDOTAYIM identifier_or_keyword { if (Z_STRLEN($3.u.constant) == 5 && !strncasecmp("class", Z_STRVAL($3.u.constant), 5)) { efree(Z_STRVAL($3.u.constant)); zend_do_resolve_class_name(&$$, &$1, 1 TSRMLS_CC); } else { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_CT, 0 TSRMLS_CC); } } ; scalar: T_STRING_VARNAME { $$ = $1; } - | class_name_scalar { $$ = $1; } | class_constant { $$ = $1; } | namespace_name { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_RT, 1 TSRMLS_CC); } | T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.u.constant); zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); $3 = $$; zend_do_fetch_constant(&$$, NULL, &$3, ZEND_RT, 0 TSRMLS_CC); } @@ -1006,7 +1017,6 @@ r_variable: variable { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); $$ = $1; } ; - w_variable: variable { zend_do_end_variable_parse(&$1, BP_VAR_W, 0 TSRMLS_CC); $$ = $1; zend_check_writable_variable(&$1); } @@ -1077,7 +1087,6 @@ base_variable_with_function_calls: | function_call { zend_do_begin_variable_parse(TSRMLS_C); $$ = $1; $$.EA = ZEND_PARSED_FUNCTION_CALL; } ; - base_variable: reference_variable { $$ = $1; $$.EA = ZEND_PARSED_VARIABLE; } | simple_indirect_reference reference_variable { zend_do_indirect_references(&$$, &$1, &$2 TSRMLS_CC); $$.EA = ZEND_PARSED_VARIABLE; } @@ -1114,7 +1123,7 @@ object_dim_list: ; variable_name: - T_STRING { $$ = $1; } + identifier_or_keyword { $$ = $1; } | '{' expr '}' { $$ = $2; } ; @@ -1164,7 +1173,7 @@ encaps_list: encaps_var: T_VARIABLE { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&$$, &$1, 1 TSRMLS_CC); } | T_VARIABLE '[' { zend_do_begin_variable_parse(TSRMLS_C); } encaps_var_offset ']' { fetch_array_begin(&$$, &$1, &$4 TSRMLS_CC); } - | T_VARIABLE T_OBJECT_OPERATOR T_STRING { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&$2, &$1, 1 TSRMLS_CC); zend_do_fetch_property(&$$, &$2, &$3 TSRMLS_CC); } + | T_VARIABLE T_OBJECT_OPERATOR identifier_or_keyword { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&$2, &$1, 1 TSRMLS_CC); zend_do_fetch_property(&$$, &$2, &$3 TSRMLS_CC); } | T_DOLLAR_OPEN_CURLY_BRACES expr '}' { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&$$, &$2, 1 TSRMLS_CC); } | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' { zend_do_begin_variable_parse(TSRMLS_C); fetch_array_begin(&$$, &$2, &$4 TSRMLS_CC); } | T_CURLY_OPEN variable '}' { $$ = $2; } @@ -1172,7 +1181,7 @@ encaps_var: encaps_var_offset: - T_STRING { $$ = $1; } + identifier_or_keyword { $$ = $1; } | T_NUM_STRING { $$ = $1; } | T_VARIABLE { fetch_simple_variable(&$$, &$1, 1 TSRMLS_CC); } ; @@ -1200,16 +1209,88 @@ isset_variable: ; class_constant: - class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_RT, 0 TSRMLS_CC); } - | variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_RT, 0 TSRMLS_CC); } + class_name T_PAAMAYIM_NEKUDOTAYIM identifier_or_keyword { if (Z_STRLEN($3.u.constant) == 5 && !strncasecmp("class", Z_STRVAL($3.u.constant), 5)) { efree(Z_STRVAL($3.u.constant)); zend_do_resolve_class_name(&$$, &$1, 0 TSRMLS_CC); } else { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_RT, 0 TSRMLS_CC); } } + | variable_class_name T_PAAMAYIM_NEKUDOTAYIM identifier_or_keyword { if (Z_STRLEN($3.u.constant) == 5 && !strncasecmp("class", Z_STRVAL($3.u.constant), 5)) { efree(Z_STRVAL($3.u.constant)); zend_do_resolve_class_name(&$$, &$1, 0 TSRMLS_CC); } else { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_RT, 0 TSRMLS_CC); } } ; -static_class_name_scalar: - class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS { zend_do_resolve_class_name(&$$, &$1, 1 TSRMLS_CC); } -; - -class_name_scalar: - class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS { zend_do_resolve_class_name(&$$, &$1, 0 TSRMLS_CC); } +identifier_or_keyword: + T_STRING { $$ = $1; } + | keyword { ZVAL_STRINGL(&$$.u.constant, Z_STRVAL($1.u.constant), Z_STRLEN($1.u.constant), 1); } +; + +keyword: + inner_keyword { $$ = $1; } + | T_CATCH { $$ = $1; } + | T_FINALLY { $$ = $1; } + | T_ELSEIF { $$ = $1; } + | T_ENDIF { $$ = $1; } + | T_ELSE { $$ = $1; } + | T_ENDWHILE { $$ = $1; } + | T_ENDFOR { $$ = $1; } + | T_ENDFOREACH { $$ = $1; } + | T_ENDDECLARE { $$ = $1; } + | T_ENDSWITCH { $$ = $1; } + | T_CASE { $$ = $1; } + | T_DEFAULT { $$ = $1; } + | T_EXIT { $$ = $1; } +; + +identifier_or_inner_keyword: + T_STRING { $$ = $1; } + | inner_keyword { ZVAL_STRINGL(&$$.u.constant, Z_STRVAL($1.u.constant), Z_STRLEN($1.u.constant), 1); } +; + +inner_keyword: + T_FUNCTION { $$ = $1; } + | T_CONST { $$ = $1; } + | T_RETURN { $$ = $1; } + | T_YIELD { $$ = $1; } + | T_TRY { $$ = $1; } + | T_BREAK { $$ = $1; } + | T_CONTINUE { $$ = $1; } + | T_GOTO { $$ = $1; } + | T_ECHO { $$ = $1; } + | T_THROW { $$ = $1; } + | T_IF { $$ = $1; } + | T_DO { $$ = $1; } + | T_FOR { $$ = $1; } + | T_FOREACH { $$ = $1; } + | T_DECLARE { $$ = $1; } + | T_INSTANCEOF { $$ = $1; } + | T_AS { $$ = $1; } + | T_SWITCH { $$ = $1; } + | T_PRINT { $$ = $1; } + | T_CLASS { $$ = $1; } + | T_INTERFACE { $$ = $1; } + | T_WHILE { $$ = $1; } + | T_TRAIT { $$ = $1; } + | T_EXTENDS { $$ = $1; } + | T_IMPLEMENTS { $$ = $1; } + | T_NEW { $$ = $1; } + | T_CLONE { $$ = $1; } + | T_VAR { $$ = $1; } + | T_EVAL { $$ = $1; } + | T_INCLUDE { $$ = $1; } + | T_REQUIRE { $$ = $1; } + | T_NAMESPACE { $$ = $1; } + | T_USE { $$ = $1; } + | T_INSTEADOF { $$ = $1; } + | T_GLOBAL { $$ = $1; } + | T_ISSET { $$ = $1; } + | T_EMPTY { $$ = $1; } + | T_STATIC { $$ = $1; } + | T_ABSTRACT { $$ = $1; } + | T_FINAL { $$ = $1; } + | T_PRIVATE { $$ = $1; } + | T_PROTECTED { $$ = $1; } + | T_PUBLIC { $$ = $1; } + | T_UNSET { $$ = $1; } + | T_LIST { $$ = $1; } + | T_ARRAY { $$ = $1; } + | T_CALLABLE { $$ = $1; } + | T_LOGICAL_OR { $$ = $1; } + | T_LOGICAL_AND { $$ = $1; } + | T_LOGICAL_XOR { $$ = $1; } ; %% diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index d5768d3345569..bd65777a5be48 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -988,6 +988,9 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo } } +#define RETURN_STRING_TOKEN(token) \ + ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional (copying happens in zend_language_parser.y (section identifier_or_keyword)) */ \ + return token; int lex_scan(zval *zendlval TSRMLS_DC) { @@ -997,7 +1000,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yymore_restart: -#line 1001 "Zend/zend_language_scanner.c" +#line 1004 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1096,7 +1099,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy3: YYDEBUG(3, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1738 "Zend/zend_language_scanner.l" +#line 1741 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1156,7 +1159,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) HANDLE_NEWLINES(yytext, yyleng); return T_INLINE_HTML; } -#line 1160 "Zend/zend_language_scanner.c" +#line 1163 "Zend/zend_language_scanner.c" yy4: YYDEBUG(4, *YYCURSOR); yych = *++YYCURSOR; @@ -1174,7 +1177,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy6: YYDEBUG(6, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1728 "Zend/zend_language_scanner.l" +#line 1731 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1184,14 +1187,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1188 "Zend/zend_language_scanner.c" +#line 1191 "Zend/zend_language_scanner.c" yy7: YYDEBUG(7, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy43; YYDEBUG(8, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1709 "Zend/zend_language_scanner.l" +#line 1712 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1201,7 +1204,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1205 "Zend/zend_language_scanner.c" +#line 1208 "Zend/zend_language_scanner.c" yy9: YYDEBUG(9, *YYCURSOR); yych = *++YYCURSOR; @@ -1387,7 +1390,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1675 "Zend/zend_language_scanner.l" +#line 1678 "Zend/zend_language_scanner.l" { YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1)); @@ -1402,7 +1405,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1406 "Zend/zend_language_scanner.c" +#line 1409 "Zend/zend_language_scanner.c" yy39: YYDEBUG(39, *YYCURSOR); yych = *++YYCURSOR; @@ -1429,7 +1432,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1691 "Zend/zend_language_scanner.l" +#line 1694 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1439,19 +1442,19 @@ int lex_scan(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1443 "Zend/zend_language_scanner.c" +#line 1446 "Zend/zend_language_scanner.c" yy45: YYDEBUG(45, *YYCURSOR); ++YYCURSOR; YYDEBUG(46, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1702 "Zend/zend_language_scanner.l" +#line 1705 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG_WITH_ECHO; } -#line 1455 "Zend/zend_language_scanner.c" +#line 1458 "Zend/zend_language_scanner.c" yy47: YYDEBUG(47, *YYCURSOR); yych = *++YYCURSOR; @@ -1478,14 +1481,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1720 "Zend/zend_language_scanner.l" +#line 1723 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1489 "Zend/zend_language_scanner.c" +#line 1492 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; @@ -1556,7 +1559,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy56: YYDEBUG(56, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2183 "Zend/zend_language_scanner.l" +#line 2186 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1597,7 +1600,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 1601 "Zend/zend_language_scanner.c" +#line 1604 "Zend/zend_language_scanner.c" yy57: YYDEBUG(57, *YYCURSOR); yych = *++YYCURSOR; @@ -1608,12 +1611,12 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(59, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2127 "Zend/zend_language_scanner.l" +#line 2130 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '`'; } -#line 1617 "Zend/zend_language_scanner.c" +#line 1620 "Zend/zend_language_scanner.c" yy60: YYDEBUG(60, *YYCURSOR); yych = *++YYCURSOR; @@ -1623,14 +1626,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(62, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2114 "Zend/zend_language_scanner.l" +#line 2117 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 1634 "Zend/zend_language_scanner.c" +#line 1637 "Zend/zend_language_scanner.c" yy63: YYDEBUG(63, *YYCURSOR); yyaccept = 0; @@ -1646,24 +1649,24 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy65: YYDEBUG(65, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1820 "Zend/zend_language_scanner.l" +#line 1823 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1656 "Zend/zend_language_scanner.c" +#line 1659 "Zend/zend_language_scanner.c" yy66: YYDEBUG(66, *YYCURSOR); ++YYCURSOR; YYDEBUG(67, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1454 "Zend/zend_language_scanner.l" +#line 1457 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 1667 "Zend/zend_language_scanner.c" +#line 1670 "Zend/zend_language_scanner.c" yy68: YYDEBUG(68, *YYCURSOR); yych = *++YYCURSOR; @@ -1677,7 +1680,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(71, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1812 "Zend/zend_language_scanner.l" +#line 1815 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -1685,7 +1688,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1689 "Zend/zend_language_scanner.c" +#line 1692 "Zend/zend_language_scanner.c" yy72: YYDEBUG(72, *YYCURSOR); yych = *++YYCURSOR; @@ -1703,7 +1706,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(74, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1802 "Zend/zend_language_scanner.l" +#line 1805 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -1711,7 +1714,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1715 "Zend/zend_language_scanner.c" +#line 1718 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -1779,7 +1782,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy78: YYDEBUG(78, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2133 "Zend/zend_language_scanner.l" +#line 2136 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1828,7 +1831,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 1832 "Zend/zend_language_scanner.c" +#line 1835 "Zend/zend_language_scanner.c" yy79: YYDEBUG(79, *YYCURSOR); yych = *++YYCURSOR; @@ -1839,12 +1842,12 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2122 "Zend/zend_language_scanner.l" +#line 2125 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '"'; } -#line 1848 "Zend/zend_language_scanner.c" +#line 1851 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -1854,14 +1857,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2114 "Zend/zend_language_scanner.l" +#line 2117 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 1865 "Zend/zend_language_scanner.c" +#line 1868 "Zend/zend_language_scanner.c" yy85: YYDEBUG(85, *YYCURSOR); yyaccept = 0; @@ -1877,24 +1880,24 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy87: YYDEBUG(87, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1820 "Zend/zend_language_scanner.l" +#line 1823 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1887 "Zend/zend_language_scanner.c" +#line 1890 "Zend/zend_language_scanner.c" yy88: YYDEBUG(88, *YYCURSOR); ++YYCURSOR; YYDEBUG(89, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1454 "Zend/zend_language_scanner.l" +#line 1457 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 1898 "Zend/zend_language_scanner.c" +#line 1901 "Zend/zend_language_scanner.c" yy90: YYDEBUG(90, *YYCURSOR); yych = *++YYCURSOR; @@ -1908,7 +1911,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1812 "Zend/zend_language_scanner.l" +#line 1815 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -1916,7 +1919,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1920 "Zend/zend_language_scanner.c" +#line 1923 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); yych = *++YYCURSOR; @@ -1934,7 +1937,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(96, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1802 "Zend/zend_language_scanner.l" +#line 1805 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -1942,7 +1945,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1946 "Zend/zend_language_scanner.c" +#line 1949 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -1953,7 +1956,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(100, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2100 "Zend/zend_language_scanner.l" +#line 2103 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1966,7 +1969,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) BEGIN(ST_IN_SCRIPTING); return T_END_HEREDOC; } -#line 1970 "Zend/zend_language_scanner.c" +#line 1973 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -2028,7 +2031,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy104: YYDEBUG(104, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2225 "Zend/zend_language_scanner.l" +#line 2228 "Zend/zend_language_scanner.l" { int newline = 0; @@ -2101,7 +2104,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0 TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2105 "Zend/zend_language_scanner.c" +#line 2108 "Zend/zend_language_scanner.c" yy105: YYDEBUG(105, *YYCURSOR); yych = *++YYCURSOR; @@ -2116,14 +2119,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2114 "Zend/zend_language_scanner.l" +#line 2117 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 2127 "Zend/zend_language_scanner.c" +#line 2130 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 0; @@ -2139,24 +2142,24 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy111: YYDEBUG(111, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1820 "Zend/zend_language_scanner.l" +#line 1823 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2149 "Zend/zend_language_scanner.c" +#line 2152 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); ++YYCURSOR; YYDEBUG(113, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1454 "Zend/zend_language_scanner.l" +#line 1457 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2160 "Zend/zend_language_scanner.c" +#line 2163 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); yych = *++YYCURSOR; @@ -2170,7 +2173,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(117, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1812 "Zend/zend_language_scanner.l" +#line 1815 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2178,7 +2181,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2182 "Zend/zend_language_scanner.c" +#line 2185 "Zend/zend_language_scanner.c" yy118: YYDEBUG(118, *YYCURSOR); yych = *++YYCURSOR; @@ -2196,7 +2199,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1802 "Zend/zend_language_scanner.l" +#line 1805 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2204,7 +2207,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2208 "Zend/zend_language_scanner.c" +#line 2211 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2387,13 +2390,13 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy124: YYDEBUG(124, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1843 "Zend/zend_language_scanner.l" +#line 1846 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 2397 "Zend/zend_language_scanner.c" +#line 2400 "Zend/zend_language_scanner.c" yy125: YYDEBUG(125, *YYCURSOR); yych = *++YYCURSOR; @@ -2625,11 +2628,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy139: YYDEBUG(139, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1443 "Zend/zend_language_scanner.l" +#line 1446 "Zend/zend_language_scanner.l" { return yytext[0]; } -#line 2633 "Zend/zend_language_scanner.c" +#line 2636 "Zend/zend_language_scanner.c" yy140: YYDEBUG(140, *YYCURSOR); ++YYCURSOR; @@ -2638,13 +2641,13 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy141: YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1176 "Zend/zend_language_scanner.l" +#line 1179 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 2648 "Zend/zend_language_scanner.c" +#line 2651 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); yych = *++YYCURSOR; @@ -2655,11 +2658,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(144, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1203 "Zend/zend_language_scanner.l" +#line 1206 "Zend/zend_language_scanner.l" { return T_NS_SEPARATOR; } -#line 2663 "Zend/zend_language_scanner.c" +#line 2666 "Zend/zend_language_scanner.c" yy145: YYDEBUG(145, *YYCURSOR); yych = *++YYCURSOR; @@ -2887,18 +2890,18 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1448 "Zend/zend_language_scanner.l" +#line 1451 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return '{'; } -#line 2896 "Zend/zend_language_scanner.c" +#line 2899 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; YYDEBUG(171, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1460 "Zend/zend_language_scanner.l" +#line 1463 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -2906,7 +2909,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } return '}'; } -#line 2910 "Zend/zend_language_scanner.c" +#line 2913 "Zend/zend_language_scanner.c" yy172: YYDEBUG(172, *YYCURSOR); yyaccept = 2; @@ -2934,7 +2937,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy173: YYDEBUG(173, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1510 "Zend/zend_language_scanner.l" +#line 1513 "Zend/zend_language_scanner.l" { if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0); @@ -2955,7 +2958,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zendlval->type = IS_LONG; return T_LNUMBER; } -#line 2959 "Zend/zend_language_scanner.c" +#line 2962 "Zend/zend_language_scanner.c" yy174: YYDEBUG(174, *YYCURSOR); yyaccept = 2; @@ -2983,7 +2986,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy177: YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1850 "Zend/zend_language_scanner.l" +#line 1853 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -3017,14 +3020,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) return T_COMMENT; } -#line 3021 "Zend/zend_language_scanner.c" +#line 3024 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; yy179: YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1937 "Zend/zend_language_scanner.l" +#line 1940 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -3090,14 +3093,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) } return T_CONSTANT_ENCAPSED_STRING; } -#line 3094 "Zend/zend_language_scanner.c" +#line 3097 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; yy181: YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2004 "Zend/zend_language_scanner.l" +#line 2007 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3138,24 +3141,24 @@ int lex_scan(zval *zendlval TSRMLS_DC) BEGIN(ST_DOUBLE_QUOTES); return '"'; } -#line 3142 "Zend/zend_language_scanner.c" +#line 3145 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2094 "Zend/zend_language_scanner.l" +#line 2097 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); return '`'; } -#line 3153 "Zend/zend_language_scanner.c" +#line 3156 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2357 "Zend/zend_language_scanner.l" +#line 2360 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -3164,7 +3167,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3168 "Zend/zend_language_scanner.c" +#line 3171 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3191,12 +3194,12 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy190: YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1569 "Zend/zend_language_scanner.l" +#line 1572 "Zend/zend_language_scanner.l" { ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL)); return T_DNUMBER; } -#line 3200 "Zend/zend_language_scanner.c" +#line 3203 "Zend/zend_language_scanner.c" yy191: YYDEBUG(191, *YYCURSOR); yyaccept = 2; @@ -3288,7 +3291,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(202, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1486 "Zend/zend_language_scanner.l" +#line 1489 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3312,7 +3315,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) return T_DNUMBER; } } -#line 3316 "Zend/zend_language_scanner.c" +#line 3319 "Zend/zend_language_scanner.c" yy203: YYDEBUG(203, *YYCURSOR); ++YYCURSOR; @@ -3324,7 +3327,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1531 "Zend/zend_language_scanner.l" +#line 1534 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3348,7 +3351,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) return T_DNUMBER; } } -#line 3352 "Zend/zend_language_scanner.c" +#line 3355 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; @@ -3357,13 +3360,13 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy207: YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1918 "Zend/zend_language_scanner.l" +#line 1921 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ BEGIN(INITIAL); return T_CLOSE_TAG; /* implicit ';' at php-end tag */ } -#line 3367 "Zend/zend_language_scanner.c" +#line 3370 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); yych = *++YYCURSOR; @@ -3397,13 +3400,13 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy212: YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1820 "Zend/zend_language_scanner.l" +#line 1823 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 3407 "Zend/zend_language_scanner.c" +#line 3410 "Zend/zend_language_scanner.c" yy213: YYDEBUG(213, *YYCURSOR); yych = *++YYCURSOR; @@ -3417,11 +3420,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1431 "Zend/zend_language_scanner.l" +#line 1434 "Zend/zend_language_scanner.l" { - return T_LOGICAL_XOR; + RETURN_STRING_TOKEN(T_LOGICAL_XOR) } -#line 3425 "Zend/zend_language_scanner.c" +#line 3428 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3430,61 +3433,61 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1423 "Zend/zend_language_scanner.l" +#line 1426 "Zend/zend_language_scanner.l" { - return T_LOGICAL_OR; + RETURN_STRING_TOKEN(T_LOGICAL_OR) } -#line 3438 "Zend/zend_language_scanner.c" +#line 3441 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1411 "Zend/zend_language_scanner.l" +#line 1414 "Zend/zend_language_scanner.l" { return T_XOR_EQUAL; } -#line 3448 "Zend/zend_language_scanner.c" +#line 3451 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; YYDEBUG(221, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1415 "Zend/zend_language_scanner.l" +#line 1418 "Zend/zend_language_scanner.l" { return T_BOOLEAN_OR; } -#line 3458 "Zend/zend_language_scanner.c" +#line 3461 "Zend/zend_language_scanner.c" yy222: YYDEBUG(222, *YYCURSOR); ++YYCURSOR; YYDEBUG(223, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1407 "Zend/zend_language_scanner.l" +#line 1410 "Zend/zend_language_scanner.l" { return T_OR_EQUAL; } -#line 3468 "Zend/zend_language_scanner.c" +#line 3471 "Zend/zend_language_scanner.c" yy224: YYDEBUG(224, *YYCURSOR); ++YYCURSOR; YYDEBUG(225, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1419 "Zend/zend_language_scanner.l" +#line 1422 "Zend/zend_language_scanner.l" { - return T_BOOLEAN_AND; + RETURN_STRING_TOKEN(T_BOOLEAN_AND) } -#line 3478 "Zend/zend_language_scanner.c" +#line 3481 "Zend/zend_language_scanner.c" yy226: YYDEBUG(226, *YYCURSOR); ++YYCURSOR; YYDEBUG(227, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1403 "Zend/zend_language_scanner.l" +#line 1406 "Zend/zend_language_scanner.l" { return T_AND_EQUAL; } -#line 3488 "Zend/zend_language_scanner.c" +#line 3491 "Zend/zend_language_scanner.c" yy228: YYDEBUG(228, *YYCURSOR); ++YYCURSOR; @@ -3493,7 +3496,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy229: YYDEBUG(229, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1925 "Zend/zend_language_scanner.l" +#line 1928 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { BEGIN(INITIAL); @@ -3504,17 +3507,17 @@ int lex_scan(zval *zendlval TSRMLS_DC) return yytext[0]; } } -#line 3508 "Zend/zend_language_scanner.c" +#line 3511 "Zend/zend_language_scanner.c" yy230: YYDEBUG(230, *YYCURSOR); ++YYCURSOR; YYDEBUG(231, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1391 "Zend/zend_language_scanner.l" +#line 1394 "Zend/zend_language_scanner.l" { return T_MOD_EQUAL; } -#line 3518 "Zend/zend_language_scanner.c" +#line 3521 "Zend/zend_language_scanner.c" yy232: YYDEBUG(232, *YYCURSOR); yych = *++YYCURSOR; @@ -3545,11 +3548,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(237, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1387 "Zend/zend_language_scanner.l" +#line 1390 "Zend/zend_language_scanner.l" { return T_CONCAT_EQUAL; } -#line 3553 "Zend/zend_language_scanner.c" +#line 3556 "Zend/zend_language_scanner.c" yy238: YYDEBUG(238, *YYCURSOR); yyaccept = 4; @@ -3558,7 +3561,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy239: YYDEBUG(239, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1884 "Zend/zend_language_scanner.l" +#line 1887 "Zend/zend_language_scanner.l" { int doc_com; @@ -3592,7 +3595,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) return T_COMMENT; } -#line 3596 "Zend/zend_language_scanner.c" +#line 3599 "Zend/zend_language_scanner.c" yy240: YYDEBUG(240, *YYCURSOR); yych = *++YYCURSOR; @@ -3602,11 +3605,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(242, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1383 "Zend/zend_language_scanner.l" +#line 1386 "Zend/zend_language_scanner.l" { return T_DIV_EQUAL; } -#line 3610 "Zend/zend_language_scanner.c" +#line 3613 "Zend/zend_language_scanner.c" yy243: YYDEBUG(243, *YYCURSOR); yych = *++YYCURSOR; @@ -3629,42 +3632,42 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(247, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1379 "Zend/zend_language_scanner.l" +#line 1382 "Zend/zend_language_scanner.l" { return T_MUL_EQUAL; } -#line 3637 "Zend/zend_language_scanner.c" +#line 3640 "Zend/zend_language_scanner.c" yy248: YYDEBUG(248, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy252; YYDEBUG(249, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1439 "Zend/zend_language_scanner.l" +#line 1442 "Zend/zend_language_scanner.l" { return T_SR; } -#line 3648 "Zend/zend_language_scanner.c" +#line 3651 "Zend/zend_language_scanner.c" yy250: YYDEBUG(250, *YYCURSOR); ++YYCURSOR; YYDEBUG(251, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1367 "Zend/zend_language_scanner.l" +#line 1370 "Zend/zend_language_scanner.l" { return T_IS_GREATER_OR_EQUAL; } -#line 3658 "Zend/zend_language_scanner.c" +#line 3661 "Zend/zend_language_scanner.c" yy252: YYDEBUG(252, *YYCURSOR); ++YYCURSOR; YYDEBUG(253, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1399 "Zend/zend_language_scanner.l" +#line 1402 "Zend/zend_language_scanner.l" { return T_SR_EQUAL; } -#line 3668 "Zend/zend_language_scanner.c" +#line 3671 "Zend/zend_language_scanner.c" yy254: YYDEBUG(254, *YYCURSOR); yyaccept = 5; @@ -3675,11 +3678,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy255: YYDEBUG(255, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1435 "Zend/zend_language_scanner.l" +#line 1438 "Zend/zend_language_scanner.l" { return T_SL; } -#line 3683 "Zend/zend_language_scanner.c" +#line 3686 "Zend/zend_language_scanner.c" yy256: YYDEBUG(256, *YYCURSOR); yych = *++YYCURSOR; @@ -3691,22 +3694,22 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(258, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1363 "Zend/zend_language_scanner.l" +#line 1366 "Zend/zend_language_scanner.l" { return T_IS_SMALLER_OR_EQUAL; } -#line 3699 "Zend/zend_language_scanner.c" +#line 3702 "Zend/zend_language_scanner.c" yy259: YYDEBUG(259, *YYCURSOR); ++YYCURSOR; yy260: YYDEBUG(260, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1359 "Zend/zend_language_scanner.l" +#line 1362 "Zend/zend_language_scanner.l" { return T_IS_NOT_EQUAL; } -#line 3710 "Zend/zend_language_scanner.c" +#line 3713 "Zend/zend_language_scanner.c" yy261: YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; @@ -3757,11 +3760,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(269, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1395 "Zend/zend_language_scanner.l" +#line 1398 "Zend/zend_language_scanner.l" { return T_SL_EQUAL; } -#line 3765 "Zend/zend_language_scanner.c" +#line 3768 "Zend/zend_language_scanner.c" yy270: YYDEBUG(270, *YYCURSOR); ++YYCURSOR; @@ -3866,7 +3869,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy280: YYDEBUG(280, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2046 "Zend/zend_language_scanner.l" +#line 2049 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -3913,7 +3916,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) return T_START_HEREDOC; } -#line 3917 "Zend/zend_language_scanner.c" +#line 3920 "Zend/zend_language_scanner.c" yy281: YYDEBUG(281, *YYCURSOR); yych = *++YYCURSOR; @@ -3953,31 +3956,31 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(286, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1351 "Zend/zend_language_scanner.l" +#line 1354 "Zend/zend_language_scanner.l" { return T_IS_NOT_IDENTICAL; } -#line 3961 "Zend/zend_language_scanner.c" +#line 3964 "Zend/zend_language_scanner.c" yy287: YYDEBUG(287, *YYCURSOR); ++YYCURSOR; YYDEBUG(288, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1371 "Zend/zend_language_scanner.l" +#line 1374 "Zend/zend_language_scanner.l" { return T_PLUS_EQUAL; } -#line 3971 "Zend/zend_language_scanner.c" +#line 3974 "Zend/zend_language_scanner.c" yy289: YYDEBUG(289, *YYCURSOR); ++YYCURSOR; YYDEBUG(290, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1339 "Zend/zend_language_scanner.l" +#line 1342 "Zend/zend_language_scanner.l" { return T_INC; } -#line 3981 "Zend/zend_language_scanner.c" +#line 3984 "Zend/zend_language_scanner.c" yy291: YYDEBUG(291, *YYCURSOR); yych = *++YYCURSOR; @@ -3996,42 +3999,42 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(294, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1327 "Zend/zend_language_scanner.l" +#line 1330 "Zend/zend_language_scanner.l" { - return T_LIST; + RETURN_STRING_TOKEN(T_LIST) } -#line 4004 "Zend/zend_language_scanner.c" +#line 4007 "Zend/zend_language_scanner.c" yy295: YYDEBUG(295, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy299; YYDEBUG(296, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1355 "Zend/zend_language_scanner.l" +#line 1358 "Zend/zend_language_scanner.l" { return T_IS_EQUAL; } -#line 4015 "Zend/zend_language_scanner.c" +#line 4018 "Zend/zend_language_scanner.c" yy297: YYDEBUG(297, *YYCURSOR); ++YYCURSOR; YYDEBUG(298, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1323 "Zend/zend_language_scanner.l" +#line 1326 "Zend/zend_language_scanner.l" { return T_DOUBLE_ARROW; } -#line 4025 "Zend/zend_language_scanner.c" +#line 4028 "Zend/zend_language_scanner.c" yy299: YYDEBUG(299, *YYCURSOR); ++YYCURSOR; YYDEBUG(300, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1347 "Zend/zend_language_scanner.l" +#line 1350 "Zend/zend_language_scanner.l" { return T_IS_IDENTICAL; } -#line 4035 "Zend/zend_language_scanner.c" +#line 4038 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4161,7 +4164,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(320, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1665 "Zend/zend_language_scanner.l" +#line 1668 "Zend/zend_language_scanner.l" { if (CG(current_namespace)) { *zendlval = *CG(current_namespace); @@ -4171,7 +4174,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } return T_NS_C; } -#line 4175 "Zend/zend_language_scanner.c" +#line 4178 "Zend/zend_language_scanner.c" yy321: YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; @@ -4191,7 +4194,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(325, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1640 "Zend/zend_language_scanner.l" +#line 1643 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); const size_t filename_len = strlen(filename); @@ -4216,7 +4219,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ZVAL_STRING(zendlval, dirname, 0); return T_DIR; } -#line 4220 "Zend/zend_language_scanner.c" +#line 4223 "Zend/zend_language_scanner.c" yy326: YYDEBUG(326, *YYCURSOR); yych = *++YYCURSOR; @@ -4241,12 +4244,12 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(331, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1625 "Zend/zend_language_scanner.l" +#line 1628 "Zend/zend_language_scanner.l" { ZVAL_LONG(zendlval, CG(zend_lineno)); return T_LINE; } -#line 4250 "Zend/zend_language_scanner.c" +#line 4253 "Zend/zend_language_scanner.c" yy332: YYDEBUG(332, *YYCURSOR); yych = *++YYCURSOR; @@ -4281,7 +4284,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(339, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1612 "Zend/zend_language_scanner.l" +#line 1615 "Zend/zend_language_scanner.l" { const char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL; const char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL; @@ -4294,7 +4297,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_METHOD_C; } -#line 4298 "Zend/zend_language_scanner.c" +#line 4301 "Zend/zend_language_scanner.c" yy340: YYDEBUG(340, *YYCURSOR); yych = *++YYCURSOR; @@ -4345,7 +4348,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(350, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1602 "Zend/zend_language_scanner.l" +#line 1605 "Zend/zend_language_scanner.l" { zend_op_array *op_array = CG(active_op_array); if (op_array && op_array->function_name) { @@ -4355,7 +4358,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } return T_FUNC_C; } -#line 4359 "Zend/zend_language_scanner.c" +#line 4362 "Zend/zend_language_scanner.c" yy351: YYDEBUG(351, *YYCURSOR); yych = *++YYCURSOR; @@ -4375,7 +4378,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(355, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1630 "Zend/zend_language_scanner.l" +#line 1633 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); @@ -4385,7 +4388,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ZVAL_STRING(zendlval, filename, 1); return T_FILE; } -#line 4389 "Zend/zend_language_scanner.c" +#line 4392 "Zend/zend_language_scanner.c" yy356: YYDEBUG(356, *YYCURSOR); yych = *++YYCURSOR; @@ -4415,7 +4418,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(362, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1592 "Zend/zend_language_scanner.l" +#line 1595 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ce->name && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4425,7 +4428,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } return T_TRAIT_C; } -#line 4429 "Zend/zend_language_scanner.c" +#line 4432 "Zend/zend_language_scanner.c" yy363: YYDEBUG(363, *YYCURSOR); yych = *++YYCURSOR; @@ -4455,7 +4458,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(369, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1574 "Zend/zend_language_scanner.l" +#line 1577 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4473,7 +4476,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } return T_CLASS_C; } -#line 4477 "Zend/zend_language_scanner.c" +#line 4480 "Zend/zend_language_scanner.c" yy370: YYDEBUG(370, *YYCURSOR); yych = *++YYCURSOR; @@ -4535,11 +4538,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(382, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1291 "Zend/zend_language_scanner.l" +#line 1294 "Zend/zend_language_scanner.l" { return T_HALT_COMPILER; } -#line 4543 "Zend/zend_language_scanner.c" +#line 4546 "Zend/zend_language_scanner.c" yy383: YYDEBUG(383, *YYCURSOR); yych = *++YYCURSOR; @@ -4559,11 +4562,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(386, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1271 "Zend/zend_language_scanner.l" +#line 1274 "Zend/zend_language_scanner.l" { - return T_USE; + RETURN_STRING_TOKEN(T_USE) } -#line 4567 "Zend/zend_language_scanner.c" +#line 4570 "Zend/zend_language_scanner.c" yy387: YYDEBUG(387, *YYCURSOR); yych = *++YYCURSOR; @@ -4582,11 +4585,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(390, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1319 "Zend/zend_language_scanner.l" +#line 1322 "Zend/zend_language_scanner.l" { - return T_UNSET; + RETURN_STRING_TOKEN(T_UNSET) } -#line 4590 "Zend/zend_language_scanner.c" +#line 4593 "Zend/zend_language_scanner.c" yy391: YYDEBUG(391, *YYCURSOR); ++YYCURSOR; @@ -4758,11 +4761,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(408, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1219 "Zend/zend_language_scanner.l" +#line 1222 "Zend/zend_language_scanner.l" { return T_INT_CAST; } -#line 4766 "Zend/zend_language_scanner.c" +#line 4769 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -4806,11 +4809,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(417, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1223 "Zend/zend_language_scanner.l" +#line 1226 "Zend/zend_language_scanner.l" { return T_DOUBLE_CAST; } -#line 4814 "Zend/zend_language_scanner.c" +#line 4817 "Zend/zend_language_scanner.c" yy418: YYDEBUG(418, *YYCURSOR); yych = *++YYCURSOR; @@ -4880,11 +4883,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1227 "Zend/zend_language_scanner.l" +#line 1230 "Zend/zend_language_scanner.l" { return T_STRING_CAST; } -#line 4888 "Zend/zend_language_scanner.c" +#line 4891 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); yych = *++YYCURSOR; @@ -4917,11 +4920,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(438, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1231 "Zend/zend_language_scanner.l" +#line 1234 "Zend/zend_language_scanner.l" { return T_ARRAY_CAST; } -#line 4925 "Zend/zend_language_scanner.c" +#line 4928 "Zend/zend_language_scanner.c" yy439: YYDEBUG(439, *YYCURSOR); yych = *++YYCURSOR; @@ -4959,11 +4962,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(446, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1235 "Zend/zend_language_scanner.l" +#line 1238 "Zend/zend_language_scanner.l" { return T_OBJECT_CAST; } -#line 4967 "Zend/zend_language_scanner.c" +#line 4970 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); yych = *++YYCURSOR; @@ -5004,11 +5007,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(454, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1239 "Zend/zend_language_scanner.l" +#line 1242 "Zend/zend_language_scanner.l" { return T_BOOL_CAST; } -#line 5012 "Zend/zend_language_scanner.c" +#line 5015 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5068,11 +5071,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(466, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1243 "Zend/zend_language_scanner.l" +#line 1246 "Zend/zend_language_scanner.l" { return T_UNSET_CAST; } -#line 5076 "Zend/zend_language_scanner.c" +#line 5079 "Zend/zend_language_scanner.c" yy467: YYDEBUG(467, *YYCURSOR); yych = *++YYCURSOR; @@ -5086,11 +5089,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(469, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1215 "Zend/zend_language_scanner.l" +#line 1218 "Zend/zend_language_scanner.l" { - return T_VAR; + RETURN_STRING_TOKEN(T_VAR) } -#line 5094 "Zend/zend_language_scanner.c" +#line 5097 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; @@ -5110,11 +5113,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(473, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1207 "Zend/zend_language_scanner.l" +#line 1210 "Zend/zend_language_scanner.l" { - return T_NEW; + RETURN_STRING_TOKEN(T_NEW) } -#line 5118 "Zend/zend_language_scanner.c" +#line 5121 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5153,21 +5156,21 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(481, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1267 "Zend/zend_language_scanner.l" +#line 1270 "Zend/zend_language_scanner.l" { - return T_NAMESPACE; + RETURN_STRING_TOKEN(T_NAMESPACE) } -#line 5161 "Zend/zend_language_scanner.c" +#line 5164 "Zend/zend_language_scanner.c" yy482: YYDEBUG(482, *YYCURSOR); ++YYCURSOR; YYDEBUG(483, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1199 "Zend/zend_language_scanner.l" +#line 1202 "Zend/zend_language_scanner.l" { return T_PAAMAYIM_NEKUDOTAYIM; } -#line 5171 "Zend/zend_language_scanner.c" +#line 5174 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); ++YYCURSOR; @@ -5189,32 +5192,32 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(487, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1375 "Zend/zend_language_scanner.l" +#line 1378 "Zend/zend_language_scanner.l" { return T_MINUS_EQUAL; } -#line 5197 "Zend/zend_language_scanner.c" +#line 5200 "Zend/zend_language_scanner.c" yy488: YYDEBUG(488, *YYCURSOR); ++YYCURSOR; YYDEBUG(489, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1343 "Zend/zend_language_scanner.l" +#line 1346 "Zend/zend_language_scanner.l" { return T_DEC; } -#line 5207 "Zend/zend_language_scanner.c" +#line 5210 "Zend/zend_language_scanner.c" yy490: YYDEBUG(490, *YYCURSOR); ++YYCURSOR; YYDEBUG(491, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1171 "Zend/zend_language_scanner.l" +#line 1174 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); return T_OBJECT_OPERATOR; } -#line 5218 "Zend/zend_language_scanner.c" +#line 5221 "Zend/zend_language_scanner.c" yy492: YYDEBUG(492, *YYCURSOR); yych = *++YYCURSOR; @@ -5259,11 +5262,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(498, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1315 "Zend/zend_language_scanner.l" +#line 1318 "Zend/zend_language_scanner.l" { - return T_PUBLIC; + RETURN_STRING_TOKEN(T_PUBLIC) } -#line 5267 "Zend/zend_language_scanner.c" +#line 5270 "Zend/zend_language_scanner.c" yy499: YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; @@ -5318,11 +5321,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(507, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1311 "Zend/zend_language_scanner.l" +#line 1314 "Zend/zend_language_scanner.l" { - return T_PROTECTED; + RETURN_STRING_TOKEN(T_PROTECTED) } -#line 5326 "Zend/zend_language_scanner.c" +#line 5329 "Zend/zend_language_scanner.c" yy508: YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; @@ -5352,11 +5355,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(513, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1307 "Zend/zend_language_scanner.l" +#line 1310 "Zend/zend_language_scanner.l" { - return T_PRIVATE; + RETURN_STRING_TOKEN(T_PRIVATE) } -#line 5360 "Zend/zend_language_scanner.c" +#line 5363 "Zend/zend_language_scanner.c" yy514: YYDEBUG(514, *YYCURSOR); ++YYCURSOR; @@ -5365,11 +5368,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(515, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1147 "Zend/zend_language_scanner.l" +#line 1150 "Zend/zend_language_scanner.l" { - return T_PRINT; + RETURN_STRING_TOKEN(T_PRINT) } -#line 5373 "Zend/zend_language_scanner.c" +#line 5376 "Zend/zend_language_scanner.c" yy516: YYDEBUG(516, *YYCURSOR); yych = *++YYCURSOR; @@ -5394,11 +5397,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1139 "Zend/zend_language_scanner.l" +#line 1142 "Zend/zend_language_scanner.l" { - return T_GOTO; + RETURN_STRING_TOKEN(T_GOTO) } -#line 5402 "Zend/zend_language_scanner.c" +#line 5405 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5422,11 +5425,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(525, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1279 "Zend/zend_language_scanner.l" +#line 1282 "Zend/zend_language_scanner.l" { - return T_GLOBAL; + RETURN_STRING_TOKEN(T_GLOBAL) } -#line 5430 "Zend/zend_language_scanner.c" +#line 5433 "Zend/zend_language_scanner.c" yy526: YYDEBUG(526, *YYCURSOR); yych = *++YYCURSOR; @@ -5463,11 +5466,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(533, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1131 "Zend/zend_language_scanner.l" +#line 1134 "Zend/zend_language_scanner.l" { - return T_BREAK; + RETURN_STRING_TOKEN(T_BREAK) } -#line 5471 "Zend/zend_language_scanner.c" +#line 5474 "Zend/zend_language_scanner.c" yy534: YYDEBUG(534, *YYCURSOR); yych = *++YYCURSOR; @@ -5507,11 +5510,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(541, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1115 "Zend/zend_language_scanner.l" +#line 1118 "Zend/zend_language_scanner.l" { - return T_SWITCH; + RETURN_STRING_TOKEN(T_SWITCH) } -#line 5515 "Zend/zend_language_scanner.c" +#line 5518 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5535,11 +5538,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(546, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1295 "Zend/zend_language_scanner.l" +#line 1298 "Zend/zend_language_scanner.l" { - return T_STATIC; + RETURN_STRING_TOKEN(T_STATIC) } -#line 5543 "Zend/zend_language_scanner.c" +#line 5546 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5566,11 +5569,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(551, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1111 "Zend/zend_language_scanner.l" +#line 1114 "Zend/zend_language_scanner.l" { - return T_AS; + RETURN_STRING_TOKEN(T_AS) } -#line 5574 "Zend/zend_language_scanner.c" +#line 5577 "Zend/zend_language_scanner.c" yy552: YYDEBUG(552, *YYCURSOR); yych = *++YYCURSOR; @@ -5589,11 +5592,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(555, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1331 "Zend/zend_language_scanner.l" +#line 1334 "Zend/zend_language_scanner.l" { - return T_ARRAY; + RETURN_STRING_TOKEN(T_ARRAY) } -#line 5597 "Zend/zend_language_scanner.c" +#line 5600 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); ++YYCURSOR; @@ -5602,11 +5605,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(557, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1427 "Zend/zend_language_scanner.l" +#line 1430 "Zend/zend_language_scanner.l" { - return T_LOGICAL_AND; + RETURN_STRING_TOKEN(T_LOGICAL_AND) } -#line 5610 "Zend/zend_language_scanner.c" +#line 5613 "Zend/zend_language_scanner.c" yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; @@ -5640,11 +5643,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(564, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1299 "Zend/zend_language_scanner.l" +#line 1302 "Zend/zend_language_scanner.l" { - return T_ABSTRACT; + RETURN_STRING_TOKEN(T_ABSTRACT) } -#line 5648 "Zend/zend_language_scanner.c" +#line 5651 "Zend/zend_language_scanner.c" yy565: YYDEBUG(565, *YYCURSOR); yych = *++YYCURSOR; @@ -5668,11 +5671,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(569, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1071 "Zend/zend_language_scanner.l" +#line 1074 "Zend/zend_language_scanner.l" { - return T_WHILE; + RETURN_STRING_TOKEN(T_WHILE) } -#line 5676 "Zend/zend_language_scanner.c" +#line 5679 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); ++YYCURSOR; @@ -5681,11 +5684,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(571, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1055 "Zend/zend_language_scanner.l" +#line 1058 "Zend/zend_language_scanner.l" { - return T_IF; + RETURN_STRING_TOKEN(T_IF) } -#line 5689 "Zend/zend_language_scanner.c" +#line 5692 "Zend/zend_language_scanner.c" yy572: YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; @@ -5737,11 +5740,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(578, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1283 "Zend/zend_language_scanner.l" +#line 1286 "Zend/zend_language_scanner.l" { - return T_ISSET; + RETURN_STRING_TOKEN(T_ISSET) } -#line 5745 "Zend/zend_language_scanner.c" +#line 5748 "Zend/zend_language_scanner.c" yy579: YYDEBUG(579, *YYCURSOR); yych = *++YYCURSOR; @@ -5795,11 +5798,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy586: YYDEBUG(586, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1251 "Zend/zend_language_scanner.l" +#line 1254 "Zend/zend_language_scanner.l" { - return T_INCLUDE; + RETURN_STRING_TOKEN(T_INCLUDE) } -#line 5803 "Zend/zend_language_scanner.c" +#line 5806 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -5828,11 +5831,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(592, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1255 "Zend/zend_language_scanner.l" +#line 1258 "Zend/zend_language_scanner.l" { - return T_INCLUDE_ONCE; + RETURN_STRING_TOKEN(T_INCLUDE_ONCE) } -#line 5836 "Zend/zend_language_scanner.c" +#line 5839 "Zend/zend_language_scanner.c" yy593: YYDEBUG(593, *YYCURSOR); yych = *++YYCURSOR; @@ -5866,11 +5869,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(599, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1155 "Zend/zend_language_scanner.l" +#line 1158 "Zend/zend_language_scanner.l" { - return T_INTERFACE; + RETURN_STRING_TOKEN(T_INTERFACE) } -#line 5874 "Zend/zend_language_scanner.c" +#line 5877 "Zend/zend_language_scanner.c" yy600: YYDEBUG(600, *YYCURSOR); yych = *++YYCURSOR; @@ -5920,11 +5923,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(607, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1275 "Zend/zend_language_scanner.l" +#line 1278 "Zend/zend_language_scanner.l" { - return T_INSTEADOF; + RETURN_STRING_TOKEN(T_INSTEADOF) } -#line 5928 "Zend/zend_language_scanner.c" +#line 5931 "Zend/zend_language_scanner.c" yy608: YYDEBUG(608, *YYCURSOR); yych = *++YYCURSOR; @@ -5953,11 +5956,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(613, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1107 "Zend/zend_language_scanner.l" +#line 1110 "Zend/zend_language_scanner.l" { - return T_INSTANCEOF; + RETURN_STRING_TOKEN(T_INSTANCEOF) } -#line 5961 "Zend/zend_language_scanner.c" +#line 5964 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6001,11 +6004,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(622, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1167 "Zend/zend_language_scanner.l" +#line 1170 "Zend/zend_language_scanner.l" { - return T_IMPLEMENTS; + RETURN_STRING_TOKEN(T_IMPLEMENTS) } -#line 6009 "Zend/zend_language_scanner.c" +#line 6012 "Zend/zend_language_scanner.c" yy623: YYDEBUG(623, *YYCURSOR); yych = *++YYCURSOR; @@ -6033,11 +6036,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(626, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1039 "Zend/zend_language_scanner.l" +#line 1042 "Zend/zend_language_scanner.l" { - return T_TRY; + RETURN_STRING_TOKEN(T_TRY) } -#line 6041 "Zend/zend_language_scanner.c" +#line 6044 "Zend/zend_language_scanner.c" yy627: YYDEBUG(627, *YYCURSOR); yych = *++YYCURSOR; @@ -6056,11 +6059,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(630, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1159 "Zend/zend_language_scanner.l" +#line 1162 "Zend/zend_language_scanner.l" { - return T_TRAIT; + RETURN_STRING_TOKEN(T_TRAIT) } -#line 6064 "Zend/zend_language_scanner.c" +#line 6067 "Zend/zend_language_scanner.c" yy631: YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; @@ -6079,11 +6082,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(634, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1051 "Zend/zend_language_scanner.l" +#line 1054 "Zend/zend_language_scanner.l" { - return T_THROW; + RETURN_STRING_TOKEN(T_THROW) } -#line 6087 "Zend/zend_language_scanner.c" +#line 6090 "Zend/zend_language_scanner.c" yy635: YYDEBUG(635, *YYCURSOR); yych = *++YYCURSOR; @@ -6107,11 +6110,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(639, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1035 "Zend/zend_language_scanner.l" +#line 1038 "Zend/zend_language_scanner.l" { - return T_YIELD; + RETURN_STRING_TOKEN(T_YIELD) } -#line 6115 "Zend/zend_language_scanner.c" +#line 6118 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); yych = *++YYCURSOR; @@ -6172,11 +6175,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy647: YYDEBUG(647, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1259 "Zend/zend_language_scanner.l" +#line 1262 "Zend/zend_language_scanner.l" { - return T_REQUIRE; + RETURN_STRING_TOKEN(T_REQUIRE) } -#line 6180 "Zend/zend_language_scanner.c" +#line 6183 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6205,11 +6208,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(653, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1263 "Zend/zend_language_scanner.l" +#line 1266 "Zend/zend_language_scanner.l" { - return T_REQUIRE_ONCE; + RETURN_STRING_TOKEN(T_REQUIRE_ONCE) } -#line 6213 "Zend/zend_language_scanner.c" +#line 6216 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; @@ -6228,11 +6231,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(657, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1031 "Zend/zend_language_scanner.l" +#line 1034 "Zend/zend_language_scanner.l" { - return T_RETURN; + RETURN_STRING_TOKEN(T_RETURN) } -#line 6236 "Zend/zend_language_scanner.c" +#line 6239 "Zend/zend_language_scanner.c" yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; @@ -6322,11 +6325,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(668, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1135 "Zend/zend_language_scanner.l" +#line 1138 "Zend/zend_language_scanner.l" { - return T_CONTINUE; + RETURN_STRING_TOKEN(T_CONTINUE) } -#line 6330 "Zend/zend_language_scanner.c" +#line 6333 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); ++YYCURSOR; @@ -6335,11 +6338,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1027 "Zend/zend_language_scanner.l" +#line 1030 "Zend/zend_language_scanner.l" { - return T_CONST; + RETURN_STRING_TOKEN(T_CONST) } -#line 6343 "Zend/zend_language_scanner.c" +#line 6346 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6364,11 +6367,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1211 "Zend/zend_language_scanner.l" +#line 1214 "Zend/zend_language_scanner.l" { - return T_CLONE; + RETURN_STRING_TOKEN(T_CLONE) } -#line 6372 "Zend/zend_language_scanner.c" +#line 6375 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6382,11 +6385,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(678, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1151 "Zend/zend_language_scanner.l" +#line 1154 "Zend/zend_language_scanner.l" { - return T_CLASS; + RETURN_STRING_TOKEN(T_CLASS) } -#line 6390 "Zend/zend_language_scanner.c" +#line 6393 "Zend/zend_language_scanner.c" yy679: YYDEBUG(679, *YYCURSOR); yych = *++YYCURSOR; @@ -6432,11 +6435,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(687, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1335 "Zend/zend_language_scanner.l" +#line 1338 "Zend/zend_language_scanner.l" { - return T_CALLABLE; + RETURN_STRING_TOKEN(T_CALLABLE) } -#line 6440 "Zend/zend_language_scanner.c" +#line 6443 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); ++YYCURSOR; @@ -6445,11 +6448,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(689, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1123 "Zend/zend_language_scanner.l" +#line 1126 "Zend/zend_language_scanner.l" { - return T_CASE; + RETURN_STRING_TOKEN(T_CASE) } -#line 6453 "Zend/zend_language_scanner.c" +#line 6456 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); yych = *++YYCURSOR; @@ -6463,11 +6466,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(692, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1043 "Zend/zend_language_scanner.l" +#line 1046 "Zend/zend_language_scanner.l" { - return T_CATCH; + RETURN_STRING_TOKEN(T_CATCH) } -#line 6471 "Zend/zend_language_scanner.c" +#line 6474 "Zend/zend_language_scanner.c" yy693: YYDEBUG(693, *YYCURSOR); yych = *++YYCURSOR; @@ -6518,11 +6521,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(702, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1023 "Zend/zend_language_scanner.l" +#line 1026 "Zend/zend_language_scanner.l" { - return T_FUNCTION; + RETURN_STRING_TOKEN(T_FUNCTION) } -#line 6526 "Zend/zend_language_scanner.c" +#line 6529 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; @@ -6546,11 +6549,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy704: YYDEBUG(704, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1083 "Zend/zend_language_scanner.l" +#line 1086 "Zend/zend_language_scanner.l" { - return T_FOR; + RETURN_STRING_TOKEN(T_FOR) } -#line 6554 "Zend/zend_language_scanner.c" +#line 6557 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; @@ -6574,11 +6577,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(709, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1091 "Zend/zend_language_scanner.l" +#line 1094 "Zend/zend_language_scanner.l" { - return T_FOREACH; + RETURN_STRING_TOKEN(T_FOREACH) } -#line 6582 "Zend/zend_language_scanner.c" +#line 6585 "Zend/zend_language_scanner.c" yy710: YYDEBUG(710, *YYCURSOR); yych = *++YYCURSOR; @@ -6612,11 +6615,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy713: YYDEBUG(713, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1303 "Zend/zend_language_scanner.l" +#line 1306 "Zend/zend_language_scanner.l" { - return T_FINAL; + RETURN_STRING_TOKEN(T_FINAL) } -#line 6620 "Zend/zend_language_scanner.c" +#line 6623 "Zend/zend_language_scanner.c" yy714: YYDEBUG(714, *YYCURSOR); yych = *++YYCURSOR; @@ -6630,11 +6633,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(716, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1047 "Zend/zend_language_scanner.l" +#line 1050 "Zend/zend_language_scanner.l" { - return T_FINALLY; + RETURN_STRING_TOKEN(T_FINALLY) } -#line 6638 "Zend/zend_language_scanner.c" +#line 6641 "Zend/zend_language_scanner.c" yy717: YYDEBUG(717, *YYCURSOR); yych = *++YYCURSOR; @@ -6665,11 +6668,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(720, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1079 "Zend/zend_language_scanner.l" +#line 1082 "Zend/zend_language_scanner.l" { - return T_DO; + RETURN_STRING_TOKEN(T_DO) } -#line 6673 "Zend/zend_language_scanner.c" +#line 6676 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); ++YYCURSOR; @@ -6678,11 +6681,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(722, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1019 "Zend/zend_language_scanner.l" +#line 1022 "Zend/zend_language_scanner.l" { - return T_EXIT; + RETURN_STRING_TOKEN(T_EXIT) } -#line 6686 "Zend/zend_language_scanner.c" +#line 6689 "Zend/zend_language_scanner.c" yy723: YYDEBUG(723, *YYCURSOR); yych = *++YYCURSOR; @@ -6717,11 +6720,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(729, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1127 "Zend/zend_language_scanner.l" +#line 1130 "Zend/zend_language_scanner.l" { - return T_DEFAULT; + RETURN_STRING_TOKEN(T_DEFAULT) } -#line 6725 "Zend/zend_language_scanner.c" +#line 6728 "Zend/zend_language_scanner.c" yy730: YYDEBUG(730, *YYCURSOR); yych = *++YYCURSOR; @@ -6745,11 +6748,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(734, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1099 "Zend/zend_language_scanner.l" +#line 1102 "Zend/zend_language_scanner.l" { - return T_DECLARE; + RETURN_STRING_TOKEN(T_DECLARE) } -#line 6753 "Zend/zend_language_scanner.c" +#line 6756 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -6829,11 +6832,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(747, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1163 "Zend/zend_language_scanner.l" +#line 1166 "Zend/zend_language_scanner.l" { - return T_EXTENDS; + RETURN_STRING_TOKEN(T_EXTENDS) } -#line 6837 "Zend/zend_language_scanner.c" +#line 6840 "Zend/zend_language_scanner.c" yy748: YYDEBUG(748, *YYCURSOR); ++YYCURSOR; @@ -6842,11 +6845,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(749, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1015 "Zend/zend_language_scanner.l" +#line 1018 "Zend/zend_language_scanner.l" { - return T_EXIT; + RETURN_STRING_TOKEN(T_EXIT) } -#line 6850 "Zend/zend_language_scanner.c" +#line 6853 "Zend/zend_language_scanner.c" yy750: YYDEBUG(750, *YYCURSOR); yych = *++YYCURSOR; @@ -6860,11 +6863,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(752, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1247 "Zend/zend_language_scanner.l" +#line 1250 "Zend/zend_language_scanner.l" { - return T_EVAL; + RETURN_STRING_TOKEN(T_EVAL) } -#line 6868 "Zend/zend_language_scanner.c" +#line 6871 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -6934,11 +6937,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(763, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1075 "Zend/zend_language_scanner.l" +#line 1078 "Zend/zend_language_scanner.l" { - return T_ENDWHILE; + RETURN_STRING_TOKEN(T_ENDWHILE) } -#line 6942 "Zend/zend_language_scanner.c" +#line 6945 "Zend/zend_language_scanner.c" yy764: YYDEBUG(764, *YYCURSOR); yych = *++YYCURSOR; @@ -6967,11 +6970,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1119 "Zend/zend_language_scanner.l" +#line 1122 "Zend/zend_language_scanner.l" { - return T_ENDSWITCH; + RETURN_STRING_TOKEN(T_ENDSWITCH) } -#line 6975 "Zend/zend_language_scanner.c" +#line 6978 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -6980,11 +6983,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(771, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1063 "Zend/zend_language_scanner.l" +#line 1066 "Zend/zend_language_scanner.l" { - return T_ENDIF; + RETURN_STRING_TOKEN(T_ENDIF) } -#line 6988 "Zend/zend_language_scanner.c" +#line 6991 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); yych = *++YYCURSOR; @@ -7013,11 +7016,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy774: YYDEBUG(774, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1087 "Zend/zend_language_scanner.l" +#line 1090 "Zend/zend_language_scanner.l" { - return T_ENDFOR; + RETURN_STRING_TOKEN(T_ENDFOR) } -#line 7021 "Zend/zend_language_scanner.c" +#line 7024 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); yych = *++YYCURSOR; @@ -7041,11 +7044,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(779, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1095 "Zend/zend_language_scanner.l" +#line 1098 "Zend/zend_language_scanner.l" { - return T_ENDFOREACH; + RETURN_STRING_TOKEN(T_ENDFOREACH) } -#line 7049 "Zend/zend_language_scanner.c" +#line 7052 "Zend/zend_language_scanner.c" yy780: YYDEBUG(780, *YYCURSOR); yych = *++YYCURSOR; @@ -7079,11 +7082,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(786, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1103 "Zend/zend_language_scanner.l" +#line 1106 "Zend/zend_language_scanner.l" { - return T_ENDDECLARE; + RETURN_STRING_TOKEN(T_ENDDECLARE) } -#line 7087 "Zend/zend_language_scanner.c" +#line 7090 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); yych = *++YYCURSOR; @@ -7102,11 +7105,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(790, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1287 "Zend/zend_language_scanner.l" +#line 1290 "Zend/zend_language_scanner.l" { - return T_EMPTY; + RETURN_STRING_TOKEN(T_EMPTY) } -#line 7110 "Zend/zend_language_scanner.c" +#line 7113 "Zend/zend_language_scanner.c" yy791: YYDEBUG(791, *YYCURSOR); yych = *++YYCURSOR; @@ -7135,11 +7138,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy793: YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1067 "Zend/zend_language_scanner.l" +#line 1070 "Zend/zend_language_scanner.l" { - return T_ELSE; + RETURN_STRING_TOKEN(T_ELSE) } -#line 7143 "Zend/zend_language_scanner.c" +#line 7146 "Zend/zend_language_scanner.c" yy794: YYDEBUG(794, *YYCURSOR); yych = *++YYCURSOR; @@ -7153,11 +7156,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(796, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1059 "Zend/zend_language_scanner.l" +#line 1062 "Zend/zend_language_scanner.l" { - return T_ELSEIF; + RETURN_STRING_TOKEN(T_ELSEIF) } -#line 7161 "Zend/zend_language_scanner.c" +#line 7164 "Zend/zend_language_scanner.c" yy797: YYDEBUG(797, *YYCURSOR); yych = *++YYCURSOR; @@ -7171,11 +7174,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1143 "Zend/zend_language_scanner.l" +#line 1146 "Zend/zend_language_scanner.l" { - return T_ECHO; + RETURN_STRING_TOKEN(T_ECHO) } -#line 7179 "Zend/zend_language_scanner.c" +#line 7182 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7248,13 +7251,13 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1176 "Zend/zend_language_scanner.l" +#line 1179 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 7258 "Zend/zend_language_scanner.c" +#line 7261 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7262,13 +7265,13 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy805: YYDEBUG(805, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1193 "Zend/zend_language_scanner.l" +#line 1196 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); goto restart; } -#line 7272 "Zend/zend_language_scanner.c" +#line 7275 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); ++YYCURSOR; @@ -7277,14 +7280,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy807: YYDEBUG(807, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1186 "Zend/zend_language_scanner.l" +#line 1189 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 7288 "Zend/zend_language_scanner.c" +#line 7291 "Zend/zend_language_scanner.c" yy808: YYDEBUG(808, *YYCURSOR); yych = *++YYCURSOR; @@ -7305,11 +7308,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(812, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1182 "Zend/zend_language_scanner.l" +#line 1185 "Zend/zend_language_scanner.l" { return T_OBJECT_OPERATOR; } -#line 7313 "Zend/zend_language_scanner.c" +#line 7316 "Zend/zend_language_scanner.c" yy813: YYDEBUG(813, *YYCURSOR); ++YYCURSOR; @@ -7394,14 +7397,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy818: YYDEBUG(818, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1479 "Zend/zend_language_scanner.l" +#line 1482 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); goto restart; } -#line 7405 "Zend/zend_language_scanner.c" +#line 7408 "Zend/zend_language_scanner.c" yy819: YYDEBUG(819, *YYCURSOR); yych = *++YYCURSOR; @@ -7426,7 +7429,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(824, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1469 "Zend/zend_language_scanner.l" +#line 1472 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); zend_copy_value(zendlval, yytext, yyleng); @@ -7435,7 +7438,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_STRING_VARNAME; } -#line 7439 "Zend/zend_language_scanner.c" +#line 7442 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7446,7 +7449,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(828, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2299 "Zend/zend_language_scanner.l" +#line 2302 "Zend/zend_language_scanner.l" { int newline = 0; @@ -7503,7 +7506,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) HANDLE_NEWLINES(yytext, yyleng - newline); return T_ENCAPSED_AND_WHITESPACE; } -#line 7507 "Zend/zend_language_scanner.c" +#line 7510 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7610,7 +7613,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy832: YYDEBUG(832, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1555 "Zend/zend_language_scanner.l" +#line 1558 "Zend/zend_language_scanner.l" { /* Offset could be treated as a long */ if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) { ZVAL_LONG(zendlval, strtol(yytext, NULL, 10)); @@ -7619,7 +7622,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } return T_NUM_STRING; } -#line 7623 "Zend/zend_language_scanner.c" +#line 7626 "Zend/zend_language_scanner.c" yy833: YYDEBUG(833, *YYCURSOR); yych = *++YYCURSOR; @@ -7639,23 +7642,23 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy835: YYDEBUG(835, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1831 "Zend/zend_language_scanner.l" +#line 1834 "Zend/zend_language_scanner.l" { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -#line 7648 "Zend/zend_language_scanner.c" +#line 7651 "Zend/zend_language_scanner.c" yy836: YYDEBUG(836, *YYCURSOR); ++YYCURSOR; YYDEBUG(837, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1826 "Zend/zend_language_scanner.l" +#line 1829 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); return ']'; } -#line 7659 "Zend/zend_language_scanner.c" +#line 7662 "Zend/zend_language_scanner.c" yy838: YYDEBUG(838, *YYCURSOR); yych = *++YYCURSOR; @@ -7665,14 +7668,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(840, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1836 "Zend/zend_language_scanner.l" +#line 1839 "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 7676 "Zend/zend_language_scanner.c" +#line 7679 "Zend/zend_language_scanner.c" yy841: YYDEBUG(841, *YYCURSOR); ++YYCURSOR; @@ -7681,19 +7684,19 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy842: YYDEBUG(842, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1843 "Zend/zend_language_scanner.l" +#line 1846 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 7691 "Zend/zend_language_scanner.c" +#line 7694 "Zend/zend_language_scanner.c" yy843: YYDEBUG(843, *YYCURSOR); ++YYCURSOR; YYDEBUG(844, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2357 "Zend/zend_language_scanner.l" +#line 2360 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -7702,7 +7705,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7706 "Zend/zend_language_scanner.c" +#line 7709 "Zend/zend_language_scanner.c" yy845: YYDEBUG(845, *YYCURSOR); ++YYCURSOR; @@ -7738,13 +7741,13 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy849: YYDEBUG(849, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1820 "Zend/zend_language_scanner.l" +#line 1823 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 7748 "Zend/zend_language_scanner.c" +#line 7751 "Zend/zend_language_scanner.c" yy850: YYDEBUG(850, *YYCURSOR); ++YYCURSOR; @@ -7784,12 +7787,12 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy857: YYDEBUG(857, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1564 "Zend/zend_language_scanner.l" +#line 1567 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng, 1); return T_NUM_STRING; } -#line 7793 "Zend/zend_language_scanner.c" +#line 7796 "Zend/zend_language_scanner.c" yy858: YYDEBUG(858, *YYCURSOR); ++YYCURSOR; @@ -7812,6 +7815,6 @@ int lex_scan(zval *zendlval TSRMLS_DC) goto yy857; } } -#line 2366 "Zend/zend_language_scanner.l" +#line 2369 "Zend/zend_language_scanner.l" } diff --git a/Zend/zend_language_scanner.h b/Zend/zend_language_scanner.h index 2e5914f1b20a0..47c652f29a955 100644 --- a/Zend/zend_language_scanner.h +++ b/Zend/zend_language_scanner.h @@ -66,6 +66,22 @@ ZEND_API int zend_multibyte_set_filter(const zend_encoding *onetime_encoding TSR END_EXTERN_C() +#define COPIED_STRING_TOKEN_CASES \ + case T_STRING: \ + case T_STRING_VARNAME: \ + case T_VARIABLE: \ + case T_ENCAPSED_AND_WHITESPACE: \ + case T_CONSTANT_ENCAPSED_STRING: \ + case T_INLINE_HTML: \ + case T_CLASS_C: \ + case T_TRAIT_C: \ + case T_FUNC_C: \ + case T_METHOD_C: \ + case T_LINE: \ + case T_FILE: \ + case T_DIR: \ + case T_NS_C: + #endif /* diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index f9c421fe8805a..ffb884a9b3270 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -986,6 +986,9 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo } } +#define RETURN_STRING_TOKEN(token) \ + ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional (copying happens in zend_language_parser.y (section identifier_or_keyword)) */ \ + return token; int lex_scan(zval *zendlval TSRMLS_DC) { @@ -1013,159 +1016,159 @@ NEWLINE ("\r"|"\n"|"\r\n") "exit" { - return T_EXIT; + RETURN_STRING_TOKEN(T_EXIT) } "die" { - return T_EXIT; + RETURN_STRING_TOKEN(T_EXIT) } "function" { - return T_FUNCTION; + RETURN_STRING_TOKEN(T_FUNCTION) } "const" { - return T_CONST; + RETURN_STRING_TOKEN(T_CONST) } "return" { - return T_RETURN; + RETURN_STRING_TOKEN(T_RETURN) } "yield" { - return T_YIELD; + RETURN_STRING_TOKEN(T_YIELD) } "try" { - return T_TRY; + RETURN_STRING_TOKEN(T_TRY) } "catch" { - return T_CATCH; + RETURN_STRING_TOKEN(T_CATCH) } "finally" { - return T_FINALLY; + RETURN_STRING_TOKEN(T_FINALLY) } "throw" { - return T_THROW; + RETURN_STRING_TOKEN(T_THROW) } "if" { - return T_IF; + RETURN_STRING_TOKEN(T_IF) } "elseif" { - return T_ELSEIF; + RETURN_STRING_TOKEN(T_ELSEIF) } "endif" { - return T_ENDIF; + RETURN_STRING_TOKEN(T_ENDIF) } "else" { - return T_ELSE; + RETURN_STRING_TOKEN(T_ELSE) } "while" { - return T_WHILE; + RETURN_STRING_TOKEN(T_WHILE) } "endwhile" { - return T_ENDWHILE; + RETURN_STRING_TOKEN(T_ENDWHILE) } "do" { - return T_DO; + RETURN_STRING_TOKEN(T_DO) } "for" { - return T_FOR; + RETURN_STRING_TOKEN(T_FOR) } "endfor" { - return T_ENDFOR; + RETURN_STRING_TOKEN(T_ENDFOR) } "foreach" { - return T_FOREACH; + RETURN_STRING_TOKEN(T_FOREACH) } "endforeach" { - return T_ENDFOREACH; + RETURN_STRING_TOKEN(T_ENDFOREACH) } "declare" { - return T_DECLARE; + RETURN_STRING_TOKEN(T_DECLARE) } "enddeclare" { - return T_ENDDECLARE; + RETURN_STRING_TOKEN(T_ENDDECLARE) } "instanceof" { - return T_INSTANCEOF; + RETURN_STRING_TOKEN(T_INSTANCEOF) } "as" { - return T_AS; + RETURN_STRING_TOKEN(T_AS) } "switch" { - return T_SWITCH; + RETURN_STRING_TOKEN(T_SWITCH) } "endswitch" { - return T_ENDSWITCH; + RETURN_STRING_TOKEN(T_ENDSWITCH) } "case" { - return T_CASE; + RETURN_STRING_TOKEN(T_CASE) } "default" { - return T_DEFAULT; + RETURN_STRING_TOKEN(T_DEFAULT) } "break" { - return T_BREAK; + RETURN_STRING_TOKEN(T_BREAK) } "continue" { - return T_CONTINUE; + RETURN_STRING_TOKEN(T_CONTINUE) } "goto" { - return T_GOTO; + RETURN_STRING_TOKEN(T_GOTO) } "echo" { - return T_ECHO; + RETURN_STRING_TOKEN(T_ECHO) } "print" { - return T_PRINT; + RETURN_STRING_TOKEN(T_PRINT) } "class" { - return T_CLASS; + RETURN_STRING_TOKEN(T_CLASS) } "interface" { - return T_INTERFACE; + RETURN_STRING_TOKEN(T_INTERFACE) } "trait" { - return T_TRAIT; + RETURN_STRING_TOKEN(T_TRAIT) } "extends" { - return T_EXTENDS; + RETURN_STRING_TOKEN(T_EXTENDS) } "implements" { - return T_IMPLEMENTS; + RETURN_STRING_TOKEN(T_IMPLEMENTS) } "->" { @@ -1205,15 +1208,15 @@ NEWLINE ("\r"|"\n"|"\r\n") } "new" { - return T_NEW; + RETURN_STRING_TOKEN(T_NEW) } "clone" { - return T_CLONE; + RETURN_STRING_TOKEN(T_CLONE) } "var" { - return T_VAR; + RETURN_STRING_TOKEN(T_VAR) } "("{TABS_AND_SPACES}("int"|"integer"){TABS_AND_SPACES}")" { @@ -1245,47 +1248,47 @@ NEWLINE ("\r"|"\n"|"\r\n") } "eval" { - return T_EVAL; + RETURN_STRING_TOKEN(T_EVAL) } "include" { - return T_INCLUDE; + RETURN_STRING_TOKEN(T_INCLUDE) } "include_once" { - return T_INCLUDE_ONCE; + RETURN_STRING_TOKEN(T_INCLUDE_ONCE) } "require" { - return T_REQUIRE; + RETURN_STRING_TOKEN(T_REQUIRE) } "require_once" { - return T_REQUIRE_ONCE; + RETURN_STRING_TOKEN(T_REQUIRE_ONCE) } "namespace" { - return T_NAMESPACE; + RETURN_STRING_TOKEN(T_NAMESPACE) } "use" { - return T_USE; + RETURN_STRING_TOKEN(T_USE) } "insteadof" { - return T_INSTEADOF; + RETURN_STRING_TOKEN(T_INSTEADOF) } "global" { - return T_GLOBAL; + RETURN_STRING_TOKEN(T_GLOBAL) } "isset" { - return T_ISSET; + RETURN_STRING_TOKEN(T_ISSET) } "empty" { - return T_EMPTY; + RETURN_STRING_TOKEN(T_EMPTY) } "__halt_compiler" { @@ -1293,31 +1296,31 @@ NEWLINE ("\r"|"\n"|"\r\n") } "static" { - return T_STATIC; + RETURN_STRING_TOKEN(T_STATIC) } "abstract" { - return T_ABSTRACT; + RETURN_STRING_TOKEN(T_ABSTRACT) } "final" { - return T_FINAL; + RETURN_STRING_TOKEN(T_FINAL) } "private" { - return T_PRIVATE; + RETURN_STRING_TOKEN(T_PRIVATE) } "protected" { - return T_PROTECTED; + RETURN_STRING_TOKEN(T_PROTECTED) } "public" { - return T_PUBLIC; + RETURN_STRING_TOKEN(T_PUBLIC) } "unset" { - return T_UNSET; + RETURN_STRING_TOKEN(T_UNSET) } "=>" { @@ -1325,15 +1328,15 @@ NEWLINE ("\r"|"\n"|"\r\n") } "list" { - return T_LIST; + RETURN_STRING_TOKEN(T_LIST) } "array" { - return T_ARRAY; + RETURN_STRING_TOKEN(T_ARRAY) } "callable" { - return T_CALLABLE; + RETURN_STRING_TOKEN(T_CALLABLE) } "++" { @@ -1417,19 +1420,19 @@ NEWLINE ("\r"|"\n"|"\r\n") } "&&" { - return T_BOOLEAN_AND; + RETURN_STRING_TOKEN(T_BOOLEAN_AND) } "OR" { - return T_LOGICAL_OR; + RETURN_STRING_TOKEN(T_LOGICAL_OR) } "AND" { - return T_LOGICAL_AND; + RETURN_STRING_TOKEN(T_LOGICAL_AND) } "XOR" { - return T_LOGICAL_XOR; + RETURN_STRING_TOKEN(T_LOGICAL_XOR) } "<<" { diff --git a/ext/tokenizer/tokenizer.c b/ext/tokenizer/tokenizer.c index ee96e2eaa11e1..602884d156b67 100644 --- a/ext/tokenizer/tokenizer.c +++ b/ext/tokenizer/tokenizer.c @@ -115,16 +115,13 @@ static void tokenize(zval *return_value TSRMLS_DC) ZVAL_NULL(&token); while ((token_type = lex_scan(&token TSRMLS_CC))) { destroy = 1; + if (token_type == T_CLOSE_TAG && zendtext[zendleng - 1] != '>') { + CG(zend_lineno)++; + } switch (token_type) { - case T_CLOSE_TAG: - if (zendtext[zendleng - 1] != '>') { - CG(zend_lineno)++; - } - case T_OPEN_TAG: - case T_OPEN_TAG_WITH_ECHO: - case T_WHITESPACE: - case T_COMMENT: - case T_DOC_COMMENT: + COPIED_STRING_TOKEN_CASES + break; + default: destroy = 0; break; } diff --git a/tests/basic/bug51709_1.phpt b/tests/basic/bug51709_1.phpt index 3f2d544e54d5c..93d5774ed7ad1 100644 --- a/tests/basic/bug51709_1.phpt +++ b/tests/basic/bug51709_1.phpt @@ -1,16 +1,16 @@ --TEST-- -Bug #51709 (Can't use keywords as method names) +Bug #51709 (Use keywords as method or class names) --FILE-- -===DONE=== - --EXPECTF-- -Parse error: syntax error, unexpected %s, expecting %s in %sbug51709_1.php on line %d +OK diff --git a/tests/basic/bug51709_2.phpt b/tests/basic/bug51709_2.phpt index bb1f91cc4c7e2..6112c416bf02c 100644 --- a/tests/basic/bug51709_2.phpt +++ b/tests/basic/bug51709_2.phpt @@ -1,16 +1,16 @@ --TEST-- -Bug #51709 (Can't use keywords as method names) +Bug #51709 (Use keywords as method or class names) --FILE-- -===DONE=== - --EXPECTF-- -Parse error: syntax error, unexpected %s, expecting %s in %sbug51709_2.php on line %d +OK diff --git a/tests/lang/bug21820.phpt b/tests/lang/bug21820.phpt index cbf466eea7fc2..68a1856cbfb57 100644 --- a/tests/lang/bug21820.phpt +++ b/tests/lang/bug21820.phpt @@ -10,4 +10,4 @@ echo "$arr['foo']"; ?> --EXPECTF-- -Parse error: %s error, %s(T_STRING)%s(T_VARIABLE)%s(T_NUM_STRING)%sin %sbug21820.php on line %d +Parse error: %s error, %s(T_ENCAPSED_AND_WHITESPACE)%sin %sbug21820.php on line %d From 6c341814eede5e33ff939c2a015158c390d45f28 Mon Sep 17 00:00:00 2001 From: bwoebi Date: Fri, 4 Oct 2013 18:56:28 +0200 Subject: [PATCH 2/9] Moved keyword handling from parser to lexer Actually, having it in parser, also caused tokenizer and highlighter to return the keyword tokens instead of a T_STRING token which might confuse parsers (and lead this way to a BC break) Also this way we do not need to maintain a fixed list in parser which needs to be updated on every addition/modification of keywords Furthermore it allows more control over tokens before they are passed to parser (for future features...) --- Zend/tests/bug43343.phpt | 8 +- Zend/tests/identifier_or_keyword.phpt | 7 +- Zend/zend_compile.c | 7 +- Zend/zend_compile.h | 12 + Zend/zend_globals.h | 14 +- Zend/zend_highlight.c | 33 +- Zend/zend_language_parser.y | 164 +--- Zend/zend_language_scanner.c | 1035 ++++++++++++++++--------- Zend/zend_language_scanner.h | 43 +- Zend/zend_language_scanner.l | 347 ++++++++- 10 files changed, 1138 insertions(+), 532 deletions(-) diff --git a/Zend/tests/bug43343.phpt b/Zend/tests/bug43343.phpt index 3cf19fdc0cf43..9c1705e8eb81a 100644 --- a/Zend/tests/bug43343.phpt +++ b/Zend/tests/bug43343.phpt @@ -2,12 +2,12 @@ Bug #43343 (Variable class name) --FILE-- --EXPECTF-- -object(namespace)#1 (0) { +object(if)#1 (0) { } diff --git a/Zend/tests/identifier_or_keyword.phpt b/Zend/tests/identifier_or_keyword.phpt index 5469cea37ac36..6042d6b0c942c 100644 --- a/Zend/tests/identifier_or_keyword.phpt +++ b/Zend/tests/identifier_or_keyword.phpt @@ -16,6 +16,9 @@ class yield { public static function default () { } + + public function namespace () { + } } yield::default(); @@ -30,6 +33,8 @@ switch (return::finally) { echo "goto T_TRY failed"; try: +(new yield)->namespace(); + interface global {} class abstract extends namespace\yield implements \global { @@ -42,7 +47,7 @@ if (new abstract(["array_arg"], function () {})) { // Test if it doesn't throw a parse error. fatal error is normal. // inner_keyword - interface function extends const, break, continue, goto, echo, throw, if, do, for, foreach, declare, instanceof, as, switch, print, class, interface, while, trait, extends, implements, new, clone, var, eval, include, require, namespace, use, insteadof, isset, empty, abstract, final, private, protected, public, unset, list, array, callable, or, and, xor {} + interface function extends const, break, continue, goto, echo, throw, if, do, for, foreach, declare, instanceof, as, switch, print, class, interface, while, trait, extends, implements, new, clone, var, eval, include, require, use, insteadof, isset, empty, abstract, final, private, protected, public, unset, list, array, callable, or, and, xor {} // keyword $obj->elseif->endif->else->endwhile->endfor->endforeach->enddeclare->endswitch->case->exit; diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 5fc8ea9f14fa1..26535787d86fd 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -201,6 +201,11 @@ void zend_init_compiler_data_structures(TSRMLS_D) /* {{{ */ zend_stack_init(&CG(context_stack)); CG(encoding_declared) = 0; + CG(tokenbufptr) = -1; + CG(tokenbuffer) = emalloc(sizeof(token_buf) * ((CG(tokenbufsize) = ZEND_INIT_TOKEN_BUF_SIZE) + 1)); + CG(tokenbuffer)++->token = 0; + CG(tokenbuf_in_class) = -1; + CG(tokenbuf_fn_decl) = -1; } /* }}} */ @@ -236,6 +241,7 @@ void shutdown_compiler(TSRMLS_D) /* {{{ */ zend_hash_destroy(&CG(filenames_table)); zend_llist_destroy(&CG(open_files)); zend_stack_destroy(&CG(context_stack)); + efree(--CG(tokenbuffer)); } /* }}} */ @@ -6739,7 +6745,6 @@ int zendlex(znode *zendlval TSRMLS_DC) /* {{{ */ } again: - Z_TYPE(zendlval->u.constant) = IS_LONG; retval = lex_scan(&zendlval->u.constant TSRMLS_CC); switch (retval) { case T_COMMENT: diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 61d11427a1e49..91c0bedcb47f0 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -65,6 +65,18 @@ typedef struct _zend_compiler_context { HashTable *labels; } zend_compiler_context; +typedef struct _token_buf { + zval zv; + int token; + unsigned char *text; + unsigned int len; + unsigned char *start; + unsigned char *end; + char *doc_comment; + zend_uint doc_comment_len; + uint lineno; +} token_buf; + typedef struct _zend_literal { zval constant; zend_ulong hash_value; diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h index b9a5b39914a6c..7a9e0b8fb49e9 100644 --- a/Zend/zend_globals.h +++ b/Zend/zend_globals.h @@ -68,7 +68,6 @@ typedef struct _zend_declarables { typedef struct _zend_vm_stack *zend_vm_stack; typedef struct _zend_ini_entry zend_ini_entry; - struct _zend_compiler_globals { zend_stack bp_stack; zend_stack switch_cond_stack; @@ -155,6 +154,13 @@ struct _zend_compiler_globals { zval ***static_members_table; int last_static_member; #endif + + token_buf *tokenbuffer; + int tokenbufptr; + int tokenbufsize; + int tokenbuf_in_class; + int tokenbuf_fn_decl; + zend_uchar tokenbuf_mode; }; @@ -293,7 +299,7 @@ struct _zend_php_scanner_globals { int yy_state; zend_stack state_stack; zend_ptr_stack heredoc_label_stack; - + /* original (unfiltered) script */ unsigned char *script_org; size_t script_org_size; @@ -306,6 +312,10 @@ struct _zend_php_scanner_globals { zend_encoding_filter input_filter; zend_encoding_filter output_filter; const zend_encoding *script_encoding; + + /* doc comments */ + char *doc_comment; + zend_uint doc_comment_len; }; #endif /* ZEND_GLOBALS_H */ diff --git a/Zend/zend_highlight.c b/Zend/zend_highlight.c index 6f82b47c72995..bfa904a1e3905 100644 --- a/Zend/zend_highlight.c +++ b/Zend/zend_highlight.c @@ -108,7 +108,7 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini case T_OPEN_TAG_WITH_ECHO: case T_CLOSE_TAG: next_color = syntax_highlighter_ini->highlight_default; - token.type = 0; + Z_TYPE(token) = 0; break; case '"': case T_ENCAPSED_AND_WHITESPACE: @@ -117,20 +117,11 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini break; case T_WHITESPACE: zend_html_puts((char*)LANG_SCNG(yy_text), LANG_SCNG(yy_leng) TSRMLS_CC); /* no color needed */ - token.type = 0; + Z_TYPE(token) = 0; continue; break; default: - switch (token_type) { - COPIED_STRING_TOKEN_CASES - break; - - default: - if (token.type == IS_STRING) { - token.type = 0; - } - } - if (token.type == 0) { + if (Z_TYPE(token) == 0) { next_color = syntax_highlighter_ini->highlight_keyword; } else { next_color = syntax_highlighter_ini->highlight_default; @@ -150,10 +141,15 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini zend_html_puts((char*)LANG_SCNG(yy_text), LANG_SCNG(yy_leng) TSRMLS_CC); - if (token.type == IS_STRING) { - efree(Z_STRVAL(token)); + if (Z_TYPE(token) == IS_STRING) { + switch (token_type) { + PARSER_IGNORED_TOKEN_CASES + break; + default: + efree(Z_STRVAL(token)); + } } - token.type = 0; + Z_TYPE(token) = 0; } if (last_color != syntax_highlighter_ini->highlight_html) { @@ -182,7 +178,7 @@ ZEND_API void zend_strip(TSRMLS_D) case T_DOC_COMMENT: token.type = 0; continue; - + case T_END_HEREDOC: zend_write((char*)LANG_SCNG(yy_text), LANG_SCNG(yy_leng)); /* read the following character, either newline or ; */ @@ -201,9 +197,10 @@ ZEND_API void zend_strip(TSRMLS_D) if (token.type == IS_STRING) { switch (token_type) { - COPIED_STRING_TOKEN_CASES - efree(Z_STRVAL(token)); + PARSER_IGNORED_TOKEN_CASES break; + default: + efree(Z_STRVAL(token)); } } prev_space = token.type = 0; diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index d12da33713fe3..00e772fc26ef6 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -224,14 +224,9 @@ top_statement_list: | /* empty */ ; -namespace_name_prefix: - T_STRING { $$ = $1; } - | namespace_name_prefix T_NS_SEPARATOR T_STRING { zend_do_build_namespace_name(&$$, &$1, &$3 TSRMLS_CC); } -; - namespace_name: T_STRING { $$ = $1; } - | namespace_name_prefix T_NS_SEPARATOR identifier_or_inner_keyword { zend_do_build_namespace_name(&$$, &$1, &$3 TSRMLS_CC); } + | namespace_name T_NS_SEPARATOR T_STRING { zend_do_build_namespace_name(&$$, &$1, &$3 TSRMLS_CC); } ; top_statement: @@ -239,8 +234,8 @@ top_statement: | function_declaration_statement { zend_verify_namespace(TSRMLS_C); zend_do_early_binding(TSRMLS_C); } | class_declaration_statement { zend_verify_namespace(TSRMLS_C); zend_do_early_binding(TSRMLS_C); } | T_HALT_COMPILER '(' ')' ';' { zend_do_halt_compiler_register(TSRMLS_C); YYACCEPT; } - | T_NAMESPACE namespace_name_prefix ';' { zend_do_begin_namespace(&$2, 0 TSRMLS_CC); } - | T_NAMESPACE namespace_name_prefix '{' { zend_do_begin_namespace(&$2, 1 TSRMLS_CC); } + | T_NAMESPACE namespace_name ';' { zend_do_begin_namespace(&$2, 0 TSRMLS_CC); } + | T_NAMESPACE namespace_name '{' { zend_do_begin_namespace(&$2, 1 TSRMLS_CC); } top_statement_list '}' { zend_do_end_namespace(TSRMLS_C); } | T_NAMESPACE '{' { zend_do_begin_namespace(NULL, 1 TSRMLS_CC); } top_statement_list '}' { zend_do_end_namespace(TSRMLS_C); } @@ -255,9 +250,9 @@ use_declarations: use_declaration: namespace_name { zend_do_use(&$1, NULL, 0 TSRMLS_CC); } - | namespace_name T_AS identifier_or_inner_keyword { zend_do_use(&$1, &$3, 0 TSRMLS_CC); } + | namespace_name T_AS T_STRING { zend_do_use(&$1, &$3, 0 TSRMLS_CC); } | T_NS_SEPARATOR namespace_name { zend_do_use(&$2, NULL, 1 TSRMLS_CC); } - | T_NS_SEPARATOR namespace_name T_AS identifier_or_inner_keyword { zend_do_use(&$2, &$4, 1 TSRMLS_CC); } + | T_NS_SEPARATOR namespace_name T_AS T_STRING { zend_do_use(&$2, &$4, 1 TSRMLS_CC); } ; constant_declaration: @@ -281,7 +276,7 @@ inner_statement: statement: unticked_statement { DO_TICKS(); } - | identifier_or_inner_keyword ':' { zend_do_label(&$1 TSRMLS_CC); } + | T_STRING ':' { zend_do_label(&$1 TSRMLS_CC); } ; unticked_statement: @@ -328,7 +323,7 @@ unticked_statement: catch_statement { zend_do_bind_catch(&$1, &$6 TSRMLS_CC); } finally_statement { zend_do_end_finally(&$1, &$6, &$8 TSRMLS_CC); } | T_THROW expr ';' { zend_do_throw(&$2 TSRMLS_CC); } - | T_GOTO identifier_or_inner_keyword ';' { zend_do_goto(&$2 TSRMLS_CC); } + | T_GOTO T_STRING ';' { zend_do_goto(&$2 TSRMLS_CC); } ; catch_statement: @@ -388,13 +383,13 @@ unticked_function_declaration_statement: ; unticked_class_declaration_statement: - class_entry_type identifier_or_inner_keyword extends_from + class_entry_type T_STRING extends_from { zend_do_begin_class_declaration(&$1, &$2, &$3 TSRMLS_CC); } implements_list '{' class_statement_list '}' { zend_do_end_class_declaration(&$1, &$3 TSRMLS_CC); } - | interface_entry identifier_or_inner_keyword + | interface_entry T_STRING { zend_do_begin_class_declaration(&$1, &$2, NULL TSRMLS_CC); } interface_extends_list '{' @@ -464,8 +459,8 @@ declare_statement: declare_list: - identifier_or_keyword '=' static_scalar { zend_do_declare_stmt(&$1, &$3 TSRMLS_CC); } - | declare_list ',' identifier_or_keyword '=' static_scalar { zend_do_declare_stmt(&$3, &$5 TSRMLS_CC); } + T_STRING '=' static_scalar { zend_do_declare_stmt(&$1, &$3 TSRMLS_CC); } + | declare_list ',' T_STRING '=' static_scalar { zend_do_declare_stmt(&$3, &$5 TSRMLS_CC); } ; @@ -592,7 +587,7 @@ class_statement: variable_modifiers { CG(access_type) = Z_LVAL($1.u.constant); } class_variable_declaration ';' | class_constant_declaration ';' | trait_use_statement - | method_modifiers function is_reference identifier_or_keyword { zend_do_begin_function_declaration(&$2, &$4, 1, $3.op_type, &$1 TSRMLS_CC); } + | method_modifiers function is_reference T_STRING { zend_do_begin_function_declaration(&$2, &$4, 1, $3.op_type, &$1 TSRMLS_CC); } '(' parameter_list ')' method_body { zend_do_abstract_method(&$4, &$1, &$9 TSRMLS_CC); zend_do_end_function_declaration(&$2 TSRMLS_CC); } ; @@ -636,34 +631,22 @@ trait_reference_list: ; trait_method_reference: - identifier_or_keyword { zend_prepare_reference(&$$, NULL, &$1 TSRMLS_CC); } + T_STRING { zend_prepare_reference(&$$, NULL, &$1 TSRMLS_CC); } | trait_method_reference_fully_qualified { $$ = $1; } ; trait_method_reference_fully_qualified: - class_name T_PAAMAYIM_NEKUDOTAYIM identifier_or_keyword { zend_prepare_reference(&$$, &$1, &$3 TSRMLS_CC); } + class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_prepare_reference(&$$, &$1, &$3 TSRMLS_CC); } ; trait_alias: - trait_method_reference T_AS member_modifier identifier_or_keyword { zend_add_trait_alias(&$1, &$3, &$4 TSRMLS_CC); } - | trait_method_reference T_AS identifier_or_keyword { - long flags = 0x0; - if (Z_STRLEN($3.u.constant) == 6 && !strncasecmp(Z_STRVAL($3.u.constant), "public", 6)) { - flags = ZEND_ACC_PUBLIC; - } else if (Z_STRLEN($3.u.constant) == 7 && !strncasecmp(Z_STRVAL($3.u.constant), "private", 7)) { - flags = ZEND_ACC_PRIVATE; - } else if (Z_STRLEN($3.u.constant) == 9 && !strncasecmp(Z_STRVAL($3.u.constant), "protected", 9)) { - flags = ZEND_ACC_PROTECTED; - } - if (flags) { - efree(Z_STRVAL($3.u.constant)); - Z_LVAL($3.u.constant) = flags; - zend_add_trait_alias(&$1, &$3, NULL TSRMLS_CC); - } else { - Z_LVAL($2.u.constant) = flags; - zend_add_trait_alias(&$1, &$2, &$3 TSRMLS_CC); - } - } + trait_method_reference T_AS trait_modifiers T_STRING { zend_add_trait_alias(&$1, &$3, &$4 TSRMLS_CC); } + | trait_method_reference T_AS member_modifier { zend_add_trait_alias(&$1, &$3, NULL TSRMLS_CC); } +; + +trait_modifiers: + /* empty */ { Z_LVAL($$.u.constant) = 0x0; } /* No change of methods visibility */ + | member_modifier { $$ = $1; } /* REM: Keep in mind, there are not only visibility modifiers */ ; method_body: @@ -703,8 +686,8 @@ class_variable_declaration: ; class_constant_declaration: - class_constant_declaration ',' identifier_or_keyword '=' static_scalar { zend_do_declare_class_constant(&$3, &$5 TSRMLS_CC); } - | T_CONST identifier_or_keyword '=' static_scalar { zend_do_declare_class_constant(&$2, &$4 TSRMLS_CC); } + class_constant_declaration ',' T_STRING '=' static_scalar { zend_do_declare_class_constant(&$3, &$5 TSRMLS_CC); } + | T_CONST T_STRING '=' static_scalar { zend_do_declare_class_constant(&$2, &$4 TSRMLS_CC); } ; echo_expr_list: @@ -883,8 +866,7 @@ function_call: ; base_class_name: - inner_keyword { ZVAL_STRINGL(&$$.u.constant, Z_STRVAL($1.u.constant), Z_STRLEN($1.u.constant), 1); } - | namespace_name { $$ = $1; } + namespace_name { $$ = $1; } ; class_name: @@ -955,6 +937,7 @@ common_scalar: static_scalar: /* compile-time evaluated scalars */ common_scalar { $$ = $1; } + | static_class_name_scalar { $$ = $1; } | namespace_name { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_CT, 1 TSRMLS_CC); } | T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.u.constant); zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); $3 = $$; zend_do_fetch_constant(&$$, NULL, &$3, ZEND_CT, 0 TSRMLS_CC); } | T_NS_SEPARATOR namespace_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); zend_do_fetch_constant(&$$, NULL, &$2, ZEND_CT, 0 TSRMLS_CC); } @@ -969,11 +952,12 @@ static_scalar: /* compile-time evaluated scalars */ static_class_constant: - class_name T_PAAMAYIM_NEKUDOTAYIM identifier_or_keyword { if (Z_STRLEN($3.u.constant) == 5 && !strncasecmp("class", Z_STRVAL($3.u.constant), 5)) { efree(Z_STRVAL($3.u.constant)); zend_do_resolve_class_name(&$$, &$1, 1 TSRMLS_CC); } else { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_CT, 0 TSRMLS_CC); } } + class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { if (Z_STRLEN($3.u.constant) == 5 && !strncasecmp("class", Z_STRVAL($3.u.constant), 5)) { efree(Z_STRVAL($3.u.constant)); zend_do_resolve_class_name(&$$, &$1, 1 TSRMLS_CC); } else { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_CT, 0 TSRMLS_CC); } } ; scalar: T_STRING_VARNAME { $$ = $1; } + | class_name_scalar { $$ = $1; } | class_constant { $$ = $1; } | namespace_name { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_RT, 1 TSRMLS_CC); } | T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.u.constant); zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); $3 = $$; zend_do_fetch_constant(&$$, NULL, &$3, ZEND_RT, 0 TSRMLS_CC); } @@ -1123,7 +1107,7 @@ object_dim_list: ; variable_name: - identifier_or_keyword { $$ = $1; } + T_STRING { $$ = $1; } | '{' expr '}' { $$ = $2; } ; @@ -1173,7 +1157,7 @@ encaps_list: encaps_var: T_VARIABLE { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&$$, &$1, 1 TSRMLS_CC); } | T_VARIABLE '[' { zend_do_begin_variable_parse(TSRMLS_C); } encaps_var_offset ']' { fetch_array_begin(&$$, &$1, &$4 TSRMLS_CC); } - | T_VARIABLE T_OBJECT_OPERATOR identifier_or_keyword { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&$2, &$1, 1 TSRMLS_CC); zend_do_fetch_property(&$$, &$2, &$3 TSRMLS_CC); } + | T_VARIABLE T_OBJECT_OPERATOR T_STRING { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&$2, &$1, 1 TSRMLS_CC); zend_do_fetch_property(&$$, &$2, &$3 TSRMLS_CC); } | T_DOLLAR_OPEN_CURLY_BRACES expr '}' { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&$$, &$2, 1 TSRMLS_CC); } | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' { zend_do_begin_variable_parse(TSRMLS_C); fetch_array_begin(&$$, &$2, &$4 TSRMLS_CC); } | T_CURLY_OPEN variable '}' { $$ = $2; } @@ -1181,7 +1165,7 @@ encaps_var: encaps_var_offset: - identifier_or_keyword { $$ = $1; } + T_STRING { $$ = $1; } | T_NUM_STRING { $$ = $1; } | T_VARIABLE { fetch_simple_variable(&$$, &$1, 1 TSRMLS_CC); } ; @@ -1209,88 +1193,16 @@ isset_variable: ; class_constant: - class_name T_PAAMAYIM_NEKUDOTAYIM identifier_or_keyword { if (Z_STRLEN($3.u.constant) == 5 && !strncasecmp("class", Z_STRVAL($3.u.constant), 5)) { efree(Z_STRVAL($3.u.constant)); zend_do_resolve_class_name(&$$, &$1, 0 TSRMLS_CC); } else { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_RT, 0 TSRMLS_CC); } } - | variable_class_name T_PAAMAYIM_NEKUDOTAYIM identifier_or_keyword { if (Z_STRLEN($3.u.constant) == 5 && !strncasecmp("class", Z_STRVAL($3.u.constant), 5)) { efree(Z_STRVAL($3.u.constant)); zend_do_resolve_class_name(&$$, &$1, 0 TSRMLS_CC); } else { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_RT, 0 TSRMLS_CC); } } + class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_RT, 0 TSRMLS_CC); } + | variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_RT, 0 TSRMLS_CC); } ; -identifier_or_keyword: - T_STRING { $$ = $1; } - | keyword { ZVAL_STRINGL(&$$.u.constant, Z_STRVAL($1.u.constant), Z_STRLEN($1.u.constant), 1); } -; - -keyword: - inner_keyword { $$ = $1; } - | T_CATCH { $$ = $1; } - | T_FINALLY { $$ = $1; } - | T_ELSEIF { $$ = $1; } - | T_ENDIF { $$ = $1; } - | T_ELSE { $$ = $1; } - | T_ENDWHILE { $$ = $1; } - | T_ENDFOR { $$ = $1; } - | T_ENDFOREACH { $$ = $1; } - | T_ENDDECLARE { $$ = $1; } - | T_ENDSWITCH { $$ = $1; } - | T_CASE { $$ = $1; } - | T_DEFAULT { $$ = $1; } - | T_EXIT { $$ = $1; } -; - -identifier_or_inner_keyword: - T_STRING { $$ = $1; } - | inner_keyword { ZVAL_STRINGL(&$$.u.constant, Z_STRVAL($1.u.constant), Z_STRLEN($1.u.constant), 1); } -; - -inner_keyword: - T_FUNCTION { $$ = $1; } - | T_CONST { $$ = $1; } - | T_RETURN { $$ = $1; } - | T_YIELD { $$ = $1; } - | T_TRY { $$ = $1; } - | T_BREAK { $$ = $1; } - | T_CONTINUE { $$ = $1; } - | T_GOTO { $$ = $1; } - | T_ECHO { $$ = $1; } - | T_THROW { $$ = $1; } - | T_IF { $$ = $1; } - | T_DO { $$ = $1; } - | T_FOR { $$ = $1; } - | T_FOREACH { $$ = $1; } - | T_DECLARE { $$ = $1; } - | T_INSTANCEOF { $$ = $1; } - | T_AS { $$ = $1; } - | T_SWITCH { $$ = $1; } - | T_PRINT { $$ = $1; } - | T_CLASS { $$ = $1; } - | T_INTERFACE { $$ = $1; } - | T_WHILE { $$ = $1; } - | T_TRAIT { $$ = $1; } - | T_EXTENDS { $$ = $1; } - | T_IMPLEMENTS { $$ = $1; } - | T_NEW { $$ = $1; } - | T_CLONE { $$ = $1; } - | T_VAR { $$ = $1; } - | T_EVAL { $$ = $1; } - | T_INCLUDE { $$ = $1; } - | T_REQUIRE { $$ = $1; } - | T_NAMESPACE { $$ = $1; } - | T_USE { $$ = $1; } - | T_INSTEADOF { $$ = $1; } - | T_GLOBAL { $$ = $1; } - | T_ISSET { $$ = $1; } - | T_EMPTY { $$ = $1; } - | T_STATIC { $$ = $1; } - | T_ABSTRACT { $$ = $1; } - | T_FINAL { $$ = $1; } - | T_PRIVATE { $$ = $1; } - | T_PROTECTED { $$ = $1; } - | T_PUBLIC { $$ = $1; } - | T_UNSET { $$ = $1; } - | T_LIST { $$ = $1; } - | T_ARRAY { $$ = $1; } - | T_CALLABLE { $$ = $1; } - | T_LOGICAL_OR { $$ = $1; } - | T_LOGICAL_AND { $$ = $1; } - | T_LOGICAL_XOR { $$ = $1; } +static_class_name_scalar: + class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS { zend_do_resolve_class_name(&$$, &$1, 1 TSRMLS_CC); } +; + +class_name_scalar: + class_name T_PAAMAYIM_NEKUDOTAYIM T_CLASS { zend_do_resolve_class_name(&$$, &$1, 0 TSRMLS_CC); } ; %% diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index bd65777a5be48..2a7ec4b7e5b3a 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -114,9 +114,9 @@ do { \ } \ } -/* To save initial string length after scanning to first variable, CG(doc_comment_len) can be reused */ -#define SET_DOUBLE_QUOTES_SCANNED_LENGTH(len) CG(doc_comment_len) = (len) -#define GET_DOUBLE_QUOTES_SCANNED_LENGTH() CG(doc_comment_len) +/* To save initial string length after scanning to first variable, SCNG(doc_comment_len) can be reused */ +#define SET_DOUBLE_QUOTES_SCANNED_LENGTH(len) SCNG(doc_comment_len) = (len) +#define GET_DOUBLE_QUOTES_SCANNED_LENGTH() SCNG(doc_comment_len) #define IS_LABEL_START(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || (c) == '_' || (c) >= 0x7F) @@ -988,11 +988,338 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo } } +int lex_scan_ex(zval *zendlval TSRMLS_DC); + +#define LEX_BUF_ADD_EX \ + CG(tokenbuffer)[++CG(tokenbufptr)].zv = *zendlval; \ + CG(tokenbuffer)[CG(tokenbufptr)].token = retval; \ + CG(tokenbuffer)[CG(tokenbufptr)].text = SCNG(yy_text); \ + CG(tokenbuffer)[CG(tokenbufptr)].len = SCNG(yy_leng); \ + CG(tokenbuffer)[CG(tokenbufptr)].start = SCNG(yy_cursor); \ + CG(tokenbuffer)[CG(tokenbufptr)].end = SCNG(yy_limit); \ + if (retval == T_DOC_COMMENT) { \ + CG(tokenbuffer)[CG(tokenbufptr)].doc_comment = SCNG(doc_comment); \ + CG(tokenbuffer)[CG(tokenbufptr)].doc_comment_len = SCNG(doc_comment_len); \ + } \ + CG(tokenbuffer)[CG(tokenbufptr)].lineno = CG(zend_lineno); + +#define LEX_BUF_ADD \ + LEX_BUF_ADD_EX \ + goto again; + +static zend_always_inline int lex_get_real_buf_offset(const int relpos) { + int effective_pos = CG(tokenbufptr) - relpos + 1; + int i = CG(tokenbufptr) + 1; + while (--i >= effective_pos) { + switch(CG(tokenbuffer)[i].token) { + PARSER_IGNORED_TOKEN_CASES + --effective_pos; + } + } + return effective_pos >= 0?effective_pos:-1; +} + +#define LEX_REL_BUF(relpos) \ + (CG(tokenbuffer)[lex_get_real_buf_offset(relpos)]) + +static zend_always_inline int lex_is_real_string_token(int token) { + switch (token) { + PARSER_IGNORED_TOKEN_CASES + COPIED_STRING_TOKEN_CASES + return 1; + } + return token < 256; +} + +#define LEX_IS_CUR_ALPH_TOKEN() \ + (Z_TYPE_P(zendlval) == 255 && !lex_is_real_string_token(retval)) + +#define LEX_IS_REL_ALPH_TOKEN(relpos) \ + (Z_TYPE(LEX_REL_BUF(relpos).zv) == 255 && !lex_is_real_string_token(LEX_REL_BUF(relpos).token)) + +#define LEX_CONVERT_STRING(token, zval, text, len) \ + token = T_STRING; \ + Z_STRLEN(zval) = len; \ + Z_STRVAL(zval) = estrndup(text, len); \ + Z_TYPE(zval) = IS_STRING; + +#define LEX_CONVERT_CUR_STRING() LEX_CONVERT_STRING(retval, *zendlval, yytext, yyleng) + +#define LEX_CONVERT_REL_STRING(relpos) LEX_CONVERT_STRING(LEX_REL_BUF(relpos).token, LEX_REL_BUF(relpos).zv, (char *)LEX_REL_BUF(relpos).text, LEX_REL_BUF(relpos).len) + +#define LEX_PREPARE_RETURN_FROM_BUF \ + *zendlval = CG(tokenbuffer)[CG(tokenbufptr)].zv; \ + if (Z_TYPE_P(zendlval) == 255) { \ + Z_TYPE_P(zendlval) = 0; \ + } \ + retval = CG(tokenbuffer)[CG(tokenbufptr)].token; \ + if (retval == '}' || retval == T_DOC_COMMENT) { \ + RESET_DOC_COMMENT(); \ + } \ + SCNG(yy_text) = CG(tokenbuffer)[CG(tokenbufptr)].text; \ + SCNG(yy_leng) = CG(tokenbuffer)[CG(tokenbufptr)].len; \ + SCNG(yy_cursor) = CG(tokenbuffer)[CG(tokenbufptr)].start; \ + SCNG(yy_limit) = CG(tokenbuffer)[CG(tokenbufptr)].end; \ + if (retval == T_DOC_COMMENT) { \ + CG(doc_comment) = CG(tokenbuffer)[CG(tokenbufptr)].doc_comment; \ + CG(doc_comment_len) = CG(tokenbuffer)[CG(tokenbufptr)].doc_comment_len; \ + } \ + CG(zend_lineno) = CG(tokenbuffer)[CG(tokenbufptr)++].lineno; + +/* This function checks the cases where a token needs to be converted to some other token to simplify parsing */ +/* Also it shouldn't be done in parser, because it actually breaks applications relying on token_get_all output */ +/* Doing it in parser also would make highlight_string() etc. look ugly when tokens are used as other tokens */ +/* The real lexing step is done in lex_scan_ex */ +int lex_scan(zval *zendlval) { + int retval; + + if (CG(tokenbufptr) != -1) { + if (CG(tokenbuffer)[CG(tokenbufptr)].token != -1) { + LEX_PREPARE_RETURN_FROM_BUF + return retval; + } + CG(tokenbufptr) = -1; + } + +again: + Z_TYPE_P(zendlval) = 0; + retval = lex_scan_ex(zendlval); + + switch (retval) { + COPIED_STRING_TOKEN_CASES + goto leave; + } + if (retval) { + if (CG(tokenbufptr) >= CG(tokenbufsize) - 4) { + CG(tokenbuffer) = erealloc(--CG(tokenbuffer), sizeof(token_buf) * ((CG(tokenbufsize) *= 2) + 1)); + CG(tokenbuffer)++; + } + + if (CG(tokenbufptr) != -1) { + switch (retval) { + PARSER_IGNORED_TOKEN_CASES + LEX_BUF_ADD + } + + /* class access */ + /* class name */ + if (retval == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_REL_ALPH_TOKEN(1)) { + LEX_CONVERT_REL_STRING(1); + } + /* class const / method name */ + if (LEX_REL_BUF(1).token == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_CUR_ALPH_TOKEN()) { + /* ::class is reserved */ + if (retval == T_CLASS) { + goto leave; + } + LEX_CONVERT_CUR_STRING(); + } + + /* classes */ + if (CG(tokenbuf_in_class) != -1 && LEX_IS_CUR_ALPH_TOKEN()) { + /* class name */ + switch (LEX_REL_BUF(1).token) { + case T_CLASS: + case T_INTERFACE: + case T_TRAIT: + if (retval != T_NAMESPACE) { + LEX_CONVERT_CUR_STRING(); + } + } + if (CG(tokenbuf_in_class) == 0 && retval != T_NAMESPACE && ((retval != T_IMPLEMENTS && retval != T_EXTENDS) || LEX_REL_BUF(1).token == ',' || LEX_REL_BUF(1).token == T_IMPLEMENTS) && LEX_IS_CUR_ALPH_TOKEN()) { + LEX_CONVERT_CUR_STRING(); + } + /* method names */ + if ((LEX_REL_BUF(1).token == T_FUNCTION || (LEX_REL_BUF(1).token == '&' && LEX_REL_BUF(2).token == T_FUNCTION)) && LEX_IS_CUR_ALPH_TOKEN()) { + LEX_CONVERT_CUR_STRING(); + } + /* constant names */ + if (LEX_REL_BUF(1).token == T_CONST && LEX_IS_CUR_ALPH_TOKEN()) { + LEX_CONVERT_CUR_STRING(); + } + /* trait use aliasing */ + if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE) { + if (retval == ';' && LEX_IS_REL_ALPH_TOKEN(1)) { + switch (LEX_REL_BUF(1).token) { + case T_PUBLIC: + case T_PROTECTED: + case T_PRIVATE: + break; + default: + LEX_BUF_ADD + } + } + if (LEX_REL_BUF(1).token == T_INSTEADOF && LEX_IS_CUR_ALPH_TOKEN()) { + LEX_BUF_ADD + } + } + } + + /* class name typehints */ + if (CG(tokenbuf_fn_decl) == 0 && (LEX_REL_BUF(1).token == '(' || LEX_REL_BUF(1).token == ',') && retval != T_NAMESPACE && LEX_IS_CUR_ALPH_TOKEN()) { + LEX_CONVERT_CUR_STRING(); + } + + /* goto & labels */ + if ((retval == ':' || (retval == ';' && LEX_REL_BUF(2).token == T_GOTO)) && LEX_IS_REL_ALPH_TOKEN(1)) { + /* disallow replacing of alternative syntax and default (in switch) */ + switch (LEX_REL_BUF(1).token) { + case T_DEFAULT: + case T_ELSE: + break; + default: + LEX_CONVERT_REL_STRING(1); + } + } + if (LEX_REL_BUF(1).token == T_GOTO && LEX_IS_CUR_ALPH_TOKEN() && retval != T_DEFAULT) { + LEX_CONVERT_CUR_STRING(); + } + + /* namespaces */ + /* Disallow T_NAMESPACE because of namespace\string syntax */ + switch (LEX_REL_BUF(1).token) { + case T_USE: + if (CG(tokenbuf_in_class) != -1) { + break; + } + case T_NEW: + case T_NS_SEPARATOR: + case T_NAMESPACE: + if (retval != T_NAMESPACE && LEX_IS_CUR_ALPH_TOKEN()) { + LEX_CONVERT_CUR_STRING(); + } + } + if (retval == T_NS_SEPARATOR) { + switch (LEX_REL_BUF(1).token) { + case T_NAMESPACE: + break; + case T_NEW: + if (LEX_REL_BUF(2).token == T_THROW || LEX_REL_BUF(2).token == T_RETURN || LEX_REL_BUF(2).token == ',') { + break; + } + case T_USE: + case T_ECHO: + if (LEX_REL_BUF(2).token < 256 && LEX_REL_BUF(2).token != ',') { + break; + } + case T_IMPLEMENTS: + if (LEX_REL_BUF(1).token == T_IMPLEMENTS && LEX_REL_BUF(2).token != T_IMPLEMENTS && LEX_REL_BUF(2).token != T_EXTENDS && LEX_REL_BUF(2).token != ',') { + break; + } + case T_EXTENDS: + if (LEX_REL_BUF(1).token == T_EXTENDS && LEX_REL_BUF(2).token != T_EXTENDS && LEX_REL_BUF(2).token != ',') { + break; + } + default: + if (LEX_IS_REL_ALPH_TOKEN(1)) { + LEX_CONVERT_REL_STRING(1); + } + } + } + /* handling of multiple comma separated T_USE */ + if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE && LEX_IS_CUR_ALPH_TOKEN() && LEX_REL_BUF(1).token == ',') { + LEX_CONVERT_CUR_STRING(); + } + + /* Handling of T_HALT_COMPILER; might cause memory leaks if not handled */ + if (LEX_REL_BUF(1).token == T_HALT_COMPILER && retval == '(') { + LEX_BUF_ADD + } else if (LEX_REL_BUF(2).token == T_HALT_COMPILER && LEX_REL_BUF(1).token == '('&& retval == ')') { + LEX_BUF_ADD + } + } + + switch (retval) { + case '{': + if (CG(tokenbuf_in_class) != -1) { + ++CG(tokenbuf_in_class); + } + break; + case '}': + if (CG(tokenbuf_in_class) != -1 && --CG(tokenbuf_in_class) == 0) { + CG(tokenbuf_in_class) = -1; + } + break; + case T_CLASS: + case T_INTERFACE: + case T_TRAIT: + if (CG(tokenbuf_in_class) == -1) { + CG(tokenbuf_in_class) = 0; + } + break; + case ';': + if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE) { + CG(tokenbuf_mode) = LEX_NO_TOKEN_MODE; + } + break; + case T_FUNCTION: + if (CG(tokenbuf_mode) == LEX_NO_TOKEN_MODE) { + CG(tokenbuf_mode) = LEX_FUNC_NAMING_TOKEN_MODE; + } + break; + case '(': + if (CG(tokenbuf_mode) == LEX_FUNC_NAMING_TOKEN_MODE) { + CG(tokenbuf_mode) = LEX_NO_TOKEN_MODE; + CG(tokenbuf_fn_decl) = 0; + } else if (CG(tokenbuf_fn_decl) != -1) { + ++CG(tokenbuf_fn_decl); + } + break; + case ')': + if (CG(tokenbuf_fn_decl) != -1) { + --CG(tokenbuf_fn_decl); + } + break; + case T_USE: + if (CG(tokenbuf_mode) == LEX_NO_TOKEN_MODE) { + CG(tokenbuf_mode) = LEX_USE_TOKEN_MODE; + } + break; + } + + if (LEX_IS_CUR_ALPH_TOKEN()) { + LEX_BUF_ADD + } else { + switch (retval) { + case ';': + if (LEX_REL_BUF(3).token == T_HALT_COMPILER && LEX_REL_BUF(2).token == '(') { + break; + } + case '&': + case ',': + case '(': + case T_PAAMAYIM_NEKUDOTAYIM: + case T_NS_SEPARATOR: + LEX_BUF_ADD + } + } + } + +leave: + + if (CG(tokenbufptr) != -1) { + LEX_BUF_ADD_EX + CG(tokenbuffer)[CG(tokenbufptr) + 1].token = -1; + CG(tokenbufptr) = 0; + LEX_PREPARE_RETURN_FROM_BUF + } else if (retval == '}' || retval == T_DOC_COMMENT) { + RESET_DOC_COMMENT(); + if (retval == T_DOC_COMMENT) { + CG(doc_comment) = SCNG(doc_comment); + CG(doc_comment_len) = SCNG(doc_comment_len); + } + } + + return retval; +} + +/* Mark token as eventual T_STRING */ #define RETURN_STRING_TOKEN(token) \ - ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional (copying happens in zend_language_parser.y (section identifier_or_keyword)) */ \ + Z_TYPE_P(zendlval) = 255; /* mark keyword ready for eventual conversion to T_STRING in lex_scan function */ \ return token; -int lex_scan(zval *zendlval TSRMLS_DC) +/* "Real" lexer (see comments above to function lex_scan) */ +int lex_scan_ex(zval *zendlval TSRMLS_DC) { restart: SCNG(yy_text) = YYCURSOR; @@ -1000,7 +1327,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yymore_restart: -#line 1004 "Zend/zend_language_scanner.c" +#line 1331 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1099,7 +1426,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy3: YYDEBUG(3, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1741 "Zend/zend_language_scanner.l" +#line 2067 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1159,7 +1486,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) HANDLE_NEWLINES(yytext, yyleng); return T_INLINE_HTML; } -#line 1163 "Zend/zend_language_scanner.c" +#line 1490 "Zend/zend_language_scanner.c" yy4: YYDEBUG(4, *YYCURSOR); yych = *++YYCURSOR; @@ -1177,7 +1504,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy6: YYDEBUG(6, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1731 "Zend/zend_language_scanner.l" +#line 2057 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1187,14 +1514,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1191 "Zend/zend_language_scanner.c" +#line 1518 "Zend/zend_language_scanner.c" yy7: YYDEBUG(7, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy43; YYDEBUG(8, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1712 "Zend/zend_language_scanner.l" +#line 2038 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1204,7 +1531,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1208 "Zend/zend_language_scanner.c" +#line 1535 "Zend/zend_language_scanner.c" yy9: YYDEBUG(9, *YYCURSOR); yych = *++YYCURSOR; @@ -1390,7 +1717,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1678 "Zend/zend_language_scanner.l" +#line 2004 "Zend/zend_language_scanner.l" { YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1)); @@ -1405,7 +1732,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1409 "Zend/zend_language_scanner.c" +#line 1736 "Zend/zend_language_scanner.c" yy39: YYDEBUG(39, *YYCURSOR); yych = *++YYCURSOR; @@ -1432,7 +1759,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1694 "Zend/zend_language_scanner.l" +#line 2020 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1442,19 +1769,19 @@ int lex_scan(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1446 "Zend/zend_language_scanner.c" +#line 1773 "Zend/zend_language_scanner.c" yy45: YYDEBUG(45, *YYCURSOR); ++YYCURSOR; YYDEBUG(46, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1705 "Zend/zend_language_scanner.l" +#line 2031 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG_WITH_ECHO; } -#line 1458 "Zend/zend_language_scanner.c" +#line 1785 "Zend/zend_language_scanner.c" yy47: YYDEBUG(47, *YYCURSOR); yych = *++YYCURSOR; @@ -1481,14 +1808,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1723 "Zend/zend_language_scanner.l" +#line 2049 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1492 "Zend/zend_language_scanner.c" +#line 1819 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; @@ -1559,7 +1886,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy56: YYDEBUG(56, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2186 "Zend/zend_language_scanner.l" +#line 2511 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1600,7 +1927,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 1604 "Zend/zend_language_scanner.c" +#line 1931 "Zend/zend_language_scanner.c" yy57: YYDEBUG(57, *YYCURSOR); yych = *++YYCURSOR; @@ -1611,12 +1938,12 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(59, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2130 "Zend/zend_language_scanner.l" +#line 2455 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '`'; } -#line 1620 "Zend/zend_language_scanner.c" +#line 1947 "Zend/zend_language_scanner.c" yy60: YYDEBUG(60, *YYCURSOR); yych = *++YYCURSOR; @@ -1626,14 +1953,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(62, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2117 "Zend/zend_language_scanner.l" +#line 2442 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 1637 "Zend/zend_language_scanner.c" +#line 1964 "Zend/zend_language_scanner.c" yy63: YYDEBUG(63, *YYCURSOR); yyaccept = 0; @@ -1649,24 +1976,24 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy65: YYDEBUG(65, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1823 "Zend/zend_language_scanner.l" +#line 2149 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1659 "Zend/zend_language_scanner.c" +#line 1986 "Zend/zend_language_scanner.c" yy66: YYDEBUG(66, *YYCURSOR); ++YYCURSOR; YYDEBUG(67, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1457 "Zend/zend_language_scanner.l" +#line 1784 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 1670 "Zend/zend_language_scanner.c" +#line 1997 "Zend/zend_language_scanner.c" yy68: YYDEBUG(68, *YYCURSOR); yych = *++YYCURSOR; @@ -1680,7 +2007,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(71, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1815 "Zend/zend_language_scanner.l" +#line 2141 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -1688,7 +2015,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1692 "Zend/zend_language_scanner.c" +#line 2019 "Zend/zend_language_scanner.c" yy72: YYDEBUG(72, *YYCURSOR); yych = *++YYCURSOR; @@ -1706,7 +2033,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(74, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1805 "Zend/zend_language_scanner.l" +#line 2131 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -1714,7 +2041,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1718 "Zend/zend_language_scanner.c" +#line 2045 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -1782,7 +2109,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy78: YYDEBUG(78, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2136 "Zend/zend_language_scanner.l" +#line 2461 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1831,7 +2158,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 1835 "Zend/zend_language_scanner.c" +#line 2162 "Zend/zend_language_scanner.c" yy79: YYDEBUG(79, *YYCURSOR); yych = *++YYCURSOR; @@ -1842,12 +2169,12 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2125 "Zend/zend_language_scanner.l" +#line 2450 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '"'; } -#line 1851 "Zend/zend_language_scanner.c" +#line 2178 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -1857,14 +2184,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2117 "Zend/zend_language_scanner.l" +#line 2442 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 1868 "Zend/zend_language_scanner.c" +#line 2195 "Zend/zend_language_scanner.c" yy85: YYDEBUG(85, *YYCURSOR); yyaccept = 0; @@ -1880,24 +2207,24 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy87: YYDEBUG(87, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1823 "Zend/zend_language_scanner.l" +#line 2149 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1890 "Zend/zend_language_scanner.c" +#line 2217 "Zend/zend_language_scanner.c" yy88: YYDEBUG(88, *YYCURSOR); ++YYCURSOR; YYDEBUG(89, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1457 "Zend/zend_language_scanner.l" +#line 1784 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 1901 "Zend/zend_language_scanner.c" +#line 2228 "Zend/zend_language_scanner.c" yy90: YYDEBUG(90, *YYCURSOR); yych = *++YYCURSOR; @@ -1911,7 +2238,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1815 "Zend/zend_language_scanner.l" +#line 2141 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -1919,7 +2246,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1923 "Zend/zend_language_scanner.c" +#line 2250 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); yych = *++YYCURSOR; @@ -1937,7 +2264,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(96, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1805 "Zend/zend_language_scanner.l" +#line 2131 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -1945,7 +2272,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1949 "Zend/zend_language_scanner.c" +#line 2276 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -1956,7 +2283,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(100, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2103 "Zend/zend_language_scanner.l" +#line 2428 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1969,7 +2296,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) BEGIN(ST_IN_SCRIPTING); return T_END_HEREDOC; } -#line 1973 "Zend/zend_language_scanner.c" +#line 2300 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -2031,7 +2358,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy104: YYDEBUG(104, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2228 "Zend/zend_language_scanner.l" +#line 2553 "Zend/zend_language_scanner.l" { int newline = 0; @@ -2104,7 +2431,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0 TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2108 "Zend/zend_language_scanner.c" +#line 2435 "Zend/zend_language_scanner.c" yy105: YYDEBUG(105, *YYCURSOR); yych = *++YYCURSOR; @@ -2119,14 +2446,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2117 "Zend/zend_language_scanner.l" +#line 2442 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 2130 "Zend/zend_language_scanner.c" +#line 2457 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 0; @@ -2142,24 +2469,24 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy111: YYDEBUG(111, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1823 "Zend/zend_language_scanner.l" +#line 2149 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2152 "Zend/zend_language_scanner.c" +#line 2479 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); ++YYCURSOR; YYDEBUG(113, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1457 "Zend/zend_language_scanner.l" +#line 1784 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2163 "Zend/zend_language_scanner.c" +#line 2490 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); yych = *++YYCURSOR; @@ -2173,7 +2500,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(117, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1815 "Zend/zend_language_scanner.l" +#line 2141 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2181,7 +2508,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2185 "Zend/zend_language_scanner.c" +#line 2512 "Zend/zend_language_scanner.c" yy118: YYDEBUG(118, *YYCURSOR); yych = *++YYCURSOR; @@ -2199,7 +2526,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1805 "Zend/zend_language_scanner.l" +#line 2131 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2207,7 +2534,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2211 "Zend/zend_language_scanner.c" +#line 2538 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2390,13 +2717,13 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy124: YYDEBUG(124, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1846 "Zend/zend_language_scanner.l" +#line 2172 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 2400 "Zend/zend_language_scanner.c" +#line 2727 "Zend/zend_language_scanner.c" yy125: YYDEBUG(125, *YYCURSOR); yych = *++YYCURSOR; @@ -2628,11 +2955,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy139: YYDEBUG(139, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1446 "Zend/zend_language_scanner.l" +#line 1773 "Zend/zend_language_scanner.l" { return yytext[0]; } -#line 2636 "Zend/zend_language_scanner.c" +#line 2963 "Zend/zend_language_scanner.c" yy140: YYDEBUG(140, *YYCURSOR); ++YYCURSOR; @@ -2641,13 +2968,13 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy141: YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1179 "Zend/zend_language_scanner.l" +#line 1506 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 2651 "Zend/zend_language_scanner.c" +#line 2978 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); yych = *++YYCURSOR; @@ -2658,11 +2985,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(144, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1206 "Zend/zend_language_scanner.l" +#line 1533 "Zend/zend_language_scanner.l" { return T_NS_SEPARATOR; } -#line 2666 "Zend/zend_language_scanner.c" +#line 2993 "Zend/zend_language_scanner.c" yy145: YYDEBUG(145, *YYCURSOR); yych = *++YYCURSOR; @@ -2890,26 +3217,25 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1451 "Zend/zend_language_scanner.l" +#line 1778 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return '{'; } -#line 2899 "Zend/zend_language_scanner.c" +#line 3226 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; YYDEBUG(171, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1463 "Zend/zend_language_scanner.l" +#line 1790 "Zend/zend_language_scanner.l" { - RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { yy_pop_state(TSRMLS_C); } return '}'; } -#line 2913 "Zend/zend_language_scanner.c" +#line 3239 "Zend/zend_language_scanner.c" yy172: YYDEBUG(172, *YYCURSOR); yyaccept = 2; @@ -2937,7 +3263,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy173: YYDEBUG(173, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1513 "Zend/zend_language_scanner.l" +#line 1839 "Zend/zend_language_scanner.l" { if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0); @@ -2958,7 +3284,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zendlval->type = IS_LONG; return T_LNUMBER; } -#line 2962 "Zend/zend_language_scanner.c" +#line 3288 "Zend/zend_language_scanner.c" yy174: YYDEBUG(174, *YYCURSOR); yyaccept = 2; @@ -2986,7 +3312,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy177: YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1853 "Zend/zend_language_scanner.l" +#line 2179 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -3020,14 +3346,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) return T_COMMENT; } -#line 3024 "Zend/zend_language_scanner.c" +#line 3350 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; yy179: YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1940 "Zend/zend_language_scanner.l" +#line 2265 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -3093,14 +3419,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) } return T_CONSTANT_ENCAPSED_STRING; } -#line 3097 "Zend/zend_language_scanner.c" +#line 3423 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; yy181: YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2007 "Zend/zend_language_scanner.l" +#line 2332 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3141,24 +3467,24 @@ int lex_scan(zval *zendlval TSRMLS_DC) BEGIN(ST_DOUBLE_QUOTES); return '"'; } -#line 3145 "Zend/zend_language_scanner.c" +#line 3471 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2097 "Zend/zend_language_scanner.l" +#line 2422 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); return '`'; } -#line 3156 "Zend/zend_language_scanner.c" +#line 3482 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2360 "Zend/zend_language_scanner.l" +#line 2685 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -3167,7 +3493,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3171 "Zend/zend_language_scanner.c" +#line 3497 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3194,12 +3520,12 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy190: YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1572 "Zend/zend_language_scanner.l" +#line 1898 "Zend/zend_language_scanner.l" { ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL)); return T_DNUMBER; } -#line 3203 "Zend/zend_language_scanner.c" +#line 3529 "Zend/zend_language_scanner.c" yy191: YYDEBUG(191, *YYCURSOR); yyaccept = 2; @@ -3291,7 +3617,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(202, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1489 "Zend/zend_language_scanner.l" +#line 1815 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3315,7 +3641,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) return T_DNUMBER; } } -#line 3319 "Zend/zend_language_scanner.c" +#line 3645 "Zend/zend_language_scanner.c" yy203: YYDEBUG(203, *YYCURSOR); ++YYCURSOR; @@ -3327,7 +3653,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1534 "Zend/zend_language_scanner.l" +#line 1860 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3351,7 +3677,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) return T_DNUMBER; } } -#line 3355 "Zend/zend_language_scanner.c" +#line 3681 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; @@ -3360,13 +3686,13 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy207: YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1921 "Zend/zend_language_scanner.l" +#line 2246 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ BEGIN(INITIAL); return T_CLOSE_TAG; /* implicit ';' at php-end tag */ } -#line 3370 "Zend/zend_language_scanner.c" +#line 3696 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); yych = *++YYCURSOR; @@ -3400,13 +3726,13 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy212: YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1823 "Zend/zend_language_scanner.l" +#line 2149 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 3410 "Zend/zend_language_scanner.c" +#line 3736 "Zend/zend_language_scanner.c" yy213: YYDEBUG(213, *YYCURSOR); yych = *++YYCURSOR; @@ -3420,11 +3746,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1434 "Zend/zend_language_scanner.l" +#line 1761 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_XOR) } -#line 3428 "Zend/zend_language_scanner.c" +#line 3754 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3433,61 +3759,61 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1426 "Zend/zend_language_scanner.l" +#line 1753 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_OR) } -#line 3441 "Zend/zend_language_scanner.c" +#line 3767 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1414 "Zend/zend_language_scanner.l" +#line 1741 "Zend/zend_language_scanner.l" { return T_XOR_EQUAL; } -#line 3451 "Zend/zend_language_scanner.c" +#line 3777 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; YYDEBUG(221, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1418 "Zend/zend_language_scanner.l" +#line 1745 "Zend/zend_language_scanner.l" { return T_BOOLEAN_OR; } -#line 3461 "Zend/zend_language_scanner.c" +#line 3787 "Zend/zend_language_scanner.c" yy222: YYDEBUG(222, *YYCURSOR); ++YYCURSOR; YYDEBUG(223, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1410 "Zend/zend_language_scanner.l" +#line 1737 "Zend/zend_language_scanner.l" { return T_OR_EQUAL; } -#line 3471 "Zend/zend_language_scanner.c" +#line 3797 "Zend/zend_language_scanner.c" yy224: YYDEBUG(224, *YYCURSOR); ++YYCURSOR; YYDEBUG(225, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1422 "Zend/zend_language_scanner.l" +#line 1749 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_BOOLEAN_AND) } -#line 3481 "Zend/zend_language_scanner.c" +#line 3807 "Zend/zend_language_scanner.c" yy226: YYDEBUG(226, *YYCURSOR); ++YYCURSOR; YYDEBUG(227, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1406 "Zend/zend_language_scanner.l" +#line 1733 "Zend/zend_language_scanner.l" { return T_AND_EQUAL; } -#line 3491 "Zend/zend_language_scanner.c" +#line 3817 "Zend/zend_language_scanner.c" yy228: YYDEBUG(228, *YYCURSOR); ++YYCURSOR; @@ -3496,7 +3822,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy229: YYDEBUG(229, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1928 "Zend/zend_language_scanner.l" +#line 2253 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { BEGIN(INITIAL); @@ -3507,17 +3833,17 @@ int lex_scan(zval *zendlval TSRMLS_DC) return yytext[0]; } } -#line 3511 "Zend/zend_language_scanner.c" +#line 3837 "Zend/zend_language_scanner.c" yy230: YYDEBUG(230, *YYCURSOR); ++YYCURSOR; YYDEBUG(231, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1394 "Zend/zend_language_scanner.l" +#line 1721 "Zend/zend_language_scanner.l" { return T_MOD_EQUAL; } -#line 3521 "Zend/zend_language_scanner.c" +#line 3847 "Zend/zend_language_scanner.c" yy232: YYDEBUG(232, *YYCURSOR); yych = *++YYCURSOR; @@ -3548,11 +3874,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(237, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1390 "Zend/zend_language_scanner.l" +#line 1717 "Zend/zend_language_scanner.l" { return T_CONCAT_EQUAL; } -#line 3556 "Zend/zend_language_scanner.c" +#line 3882 "Zend/zend_language_scanner.c" yy238: YYDEBUG(238, *YYCURSOR); yyaccept = 4; @@ -3561,13 +3887,12 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy239: YYDEBUG(239, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1887 "Zend/zend_language_scanner.l" +#line 2213 "Zend/zend_language_scanner.l" { int doc_com; if (yyleng > 2) { doc_com = 1; - RESET_DOC_COMMENT(); } else { doc_com = 0; } @@ -3588,14 +3913,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) HANDLE_NEWLINES(yytext, yyleng); if (doc_com) { - CG(doc_comment) = estrndup(yytext, yyleng); - CG(doc_comment_len) = yyleng; + SCNG(doc_comment) = estrndup(yytext, yyleng); + SCNG(doc_comment_len) = yyleng; return T_DOC_COMMENT; } return T_COMMENT; } -#line 3599 "Zend/zend_language_scanner.c" +#line 3924 "Zend/zend_language_scanner.c" yy240: YYDEBUG(240, *YYCURSOR); yych = *++YYCURSOR; @@ -3605,11 +3930,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(242, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1386 "Zend/zend_language_scanner.l" +#line 1713 "Zend/zend_language_scanner.l" { return T_DIV_EQUAL; } -#line 3613 "Zend/zend_language_scanner.c" +#line 3938 "Zend/zend_language_scanner.c" yy243: YYDEBUG(243, *YYCURSOR); yych = *++YYCURSOR; @@ -3632,42 +3957,42 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(247, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1382 "Zend/zend_language_scanner.l" +#line 1709 "Zend/zend_language_scanner.l" { return T_MUL_EQUAL; } -#line 3640 "Zend/zend_language_scanner.c" +#line 3965 "Zend/zend_language_scanner.c" yy248: YYDEBUG(248, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy252; YYDEBUG(249, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1442 "Zend/zend_language_scanner.l" +#line 1769 "Zend/zend_language_scanner.l" { return T_SR; } -#line 3651 "Zend/zend_language_scanner.c" +#line 3976 "Zend/zend_language_scanner.c" yy250: YYDEBUG(250, *YYCURSOR); ++YYCURSOR; YYDEBUG(251, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1370 "Zend/zend_language_scanner.l" +#line 1697 "Zend/zend_language_scanner.l" { return T_IS_GREATER_OR_EQUAL; } -#line 3661 "Zend/zend_language_scanner.c" +#line 3986 "Zend/zend_language_scanner.c" yy252: YYDEBUG(252, *YYCURSOR); ++YYCURSOR; YYDEBUG(253, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1402 "Zend/zend_language_scanner.l" +#line 1729 "Zend/zend_language_scanner.l" { return T_SR_EQUAL; } -#line 3671 "Zend/zend_language_scanner.c" +#line 3996 "Zend/zend_language_scanner.c" yy254: YYDEBUG(254, *YYCURSOR); yyaccept = 5; @@ -3678,11 +4003,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy255: YYDEBUG(255, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1438 "Zend/zend_language_scanner.l" +#line 1765 "Zend/zend_language_scanner.l" { return T_SL; } -#line 3686 "Zend/zend_language_scanner.c" +#line 4011 "Zend/zend_language_scanner.c" yy256: YYDEBUG(256, *YYCURSOR); yych = *++YYCURSOR; @@ -3694,22 +4019,22 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(258, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1366 "Zend/zend_language_scanner.l" +#line 1693 "Zend/zend_language_scanner.l" { return T_IS_SMALLER_OR_EQUAL; } -#line 3702 "Zend/zend_language_scanner.c" +#line 4027 "Zend/zend_language_scanner.c" yy259: YYDEBUG(259, *YYCURSOR); ++YYCURSOR; yy260: YYDEBUG(260, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1362 "Zend/zend_language_scanner.l" +#line 1689 "Zend/zend_language_scanner.l" { return T_IS_NOT_EQUAL; } -#line 3713 "Zend/zend_language_scanner.c" +#line 4038 "Zend/zend_language_scanner.c" yy261: YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; @@ -3760,11 +4085,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(269, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1398 "Zend/zend_language_scanner.l" +#line 1725 "Zend/zend_language_scanner.l" { return T_SL_EQUAL; } -#line 3768 "Zend/zend_language_scanner.c" +#line 4093 "Zend/zend_language_scanner.c" yy270: YYDEBUG(270, *YYCURSOR); ++YYCURSOR; @@ -3869,7 +4194,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy280: YYDEBUG(280, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2049 "Zend/zend_language_scanner.l" +#line 2374 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -3916,7 +4241,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) return T_START_HEREDOC; } -#line 3920 "Zend/zend_language_scanner.c" +#line 4245 "Zend/zend_language_scanner.c" yy281: YYDEBUG(281, *YYCURSOR); yych = *++YYCURSOR; @@ -3956,31 +4281,31 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(286, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1354 "Zend/zend_language_scanner.l" +#line 1681 "Zend/zend_language_scanner.l" { return T_IS_NOT_IDENTICAL; } -#line 3964 "Zend/zend_language_scanner.c" +#line 4289 "Zend/zend_language_scanner.c" yy287: YYDEBUG(287, *YYCURSOR); ++YYCURSOR; YYDEBUG(288, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1374 "Zend/zend_language_scanner.l" +#line 1701 "Zend/zend_language_scanner.l" { return T_PLUS_EQUAL; } -#line 3974 "Zend/zend_language_scanner.c" +#line 4299 "Zend/zend_language_scanner.c" yy289: YYDEBUG(289, *YYCURSOR); ++YYCURSOR; YYDEBUG(290, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1342 "Zend/zend_language_scanner.l" +#line 1669 "Zend/zend_language_scanner.l" { return T_INC; } -#line 3984 "Zend/zend_language_scanner.c" +#line 4309 "Zend/zend_language_scanner.c" yy291: YYDEBUG(291, *YYCURSOR); yych = *++YYCURSOR; @@ -3999,42 +4324,42 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(294, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1330 "Zend/zend_language_scanner.l" +#line 1657 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LIST) } -#line 4007 "Zend/zend_language_scanner.c" +#line 4332 "Zend/zend_language_scanner.c" yy295: YYDEBUG(295, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy299; YYDEBUG(296, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1358 "Zend/zend_language_scanner.l" +#line 1685 "Zend/zend_language_scanner.l" { return T_IS_EQUAL; } -#line 4018 "Zend/zend_language_scanner.c" +#line 4343 "Zend/zend_language_scanner.c" yy297: YYDEBUG(297, *YYCURSOR); ++YYCURSOR; YYDEBUG(298, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1326 "Zend/zend_language_scanner.l" +#line 1653 "Zend/zend_language_scanner.l" { return T_DOUBLE_ARROW; } -#line 4028 "Zend/zend_language_scanner.c" +#line 4353 "Zend/zend_language_scanner.c" yy299: YYDEBUG(299, *YYCURSOR); ++YYCURSOR; YYDEBUG(300, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1350 "Zend/zend_language_scanner.l" +#line 1677 "Zend/zend_language_scanner.l" { return T_IS_IDENTICAL; } -#line 4038 "Zend/zend_language_scanner.c" +#line 4363 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4164,7 +4489,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(320, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1668 "Zend/zend_language_scanner.l" +#line 1994 "Zend/zend_language_scanner.l" { if (CG(current_namespace)) { *zendlval = *CG(current_namespace); @@ -4174,7 +4499,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } return T_NS_C; } -#line 4178 "Zend/zend_language_scanner.c" +#line 4503 "Zend/zend_language_scanner.c" yy321: YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; @@ -4194,7 +4519,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(325, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1643 "Zend/zend_language_scanner.l" +#line 1969 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); const size_t filename_len = strlen(filename); @@ -4219,7 +4544,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ZVAL_STRING(zendlval, dirname, 0); return T_DIR; } -#line 4223 "Zend/zend_language_scanner.c" +#line 4548 "Zend/zend_language_scanner.c" yy326: YYDEBUG(326, *YYCURSOR); yych = *++YYCURSOR; @@ -4244,12 +4569,12 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(331, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1628 "Zend/zend_language_scanner.l" +#line 1954 "Zend/zend_language_scanner.l" { ZVAL_LONG(zendlval, CG(zend_lineno)); return T_LINE; } -#line 4253 "Zend/zend_language_scanner.c" +#line 4578 "Zend/zend_language_scanner.c" yy332: YYDEBUG(332, *YYCURSOR); yych = *++YYCURSOR; @@ -4284,7 +4609,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(339, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1615 "Zend/zend_language_scanner.l" +#line 1941 "Zend/zend_language_scanner.l" { const char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL; const char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL; @@ -4297,7 +4622,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_METHOD_C; } -#line 4301 "Zend/zend_language_scanner.c" +#line 4626 "Zend/zend_language_scanner.c" yy340: YYDEBUG(340, *YYCURSOR); yych = *++YYCURSOR; @@ -4348,7 +4673,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(350, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1605 "Zend/zend_language_scanner.l" +#line 1931 "Zend/zend_language_scanner.l" { zend_op_array *op_array = CG(active_op_array); if (op_array && op_array->function_name) { @@ -4358,7 +4683,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } return T_FUNC_C; } -#line 4362 "Zend/zend_language_scanner.c" +#line 4687 "Zend/zend_language_scanner.c" yy351: YYDEBUG(351, *YYCURSOR); yych = *++YYCURSOR; @@ -4378,7 +4703,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(355, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1633 "Zend/zend_language_scanner.l" +#line 1959 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); @@ -4388,7 +4713,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ZVAL_STRING(zendlval, filename, 1); return T_FILE; } -#line 4392 "Zend/zend_language_scanner.c" +#line 4717 "Zend/zend_language_scanner.c" yy356: YYDEBUG(356, *YYCURSOR); yych = *++YYCURSOR; @@ -4418,7 +4743,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(362, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1595 "Zend/zend_language_scanner.l" +#line 1921 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ce->name && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4428,7 +4753,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } return T_TRAIT_C; } -#line 4432 "Zend/zend_language_scanner.c" +#line 4757 "Zend/zend_language_scanner.c" yy363: YYDEBUG(363, *YYCURSOR); yych = *++YYCURSOR; @@ -4458,7 +4783,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(369, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1577 "Zend/zend_language_scanner.l" +#line 1903 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4476,7 +4801,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } return T_CLASS_C; } -#line 4480 "Zend/zend_language_scanner.c" +#line 4805 "Zend/zend_language_scanner.c" yy370: YYDEBUG(370, *YYCURSOR); yych = *++YYCURSOR; @@ -4538,11 +4863,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(382, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1294 "Zend/zend_language_scanner.l" +#line 1621 "Zend/zend_language_scanner.l" { - return T_HALT_COMPILER; + RETURN_STRING_TOKEN(T_HALT_COMPILER) } -#line 4546 "Zend/zend_language_scanner.c" +#line 4871 "Zend/zend_language_scanner.c" yy383: YYDEBUG(383, *YYCURSOR); yych = *++YYCURSOR; @@ -4562,11 +4887,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(386, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1274 "Zend/zend_language_scanner.l" +#line 1601 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_USE) } -#line 4570 "Zend/zend_language_scanner.c" +#line 4895 "Zend/zend_language_scanner.c" yy387: YYDEBUG(387, *YYCURSOR); yych = *++YYCURSOR; @@ -4585,11 +4910,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(390, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1322 "Zend/zend_language_scanner.l" +#line 1649 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_UNSET) } -#line 4593 "Zend/zend_language_scanner.c" +#line 4918 "Zend/zend_language_scanner.c" yy391: YYDEBUG(391, *YYCURSOR); ++YYCURSOR; @@ -4761,11 +5086,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(408, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1222 "Zend/zend_language_scanner.l" +#line 1549 "Zend/zend_language_scanner.l" { return T_INT_CAST; } -#line 4769 "Zend/zend_language_scanner.c" +#line 5094 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -4809,11 +5134,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(417, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1226 "Zend/zend_language_scanner.l" +#line 1553 "Zend/zend_language_scanner.l" { return T_DOUBLE_CAST; } -#line 4817 "Zend/zend_language_scanner.c" +#line 5142 "Zend/zend_language_scanner.c" yy418: YYDEBUG(418, *YYCURSOR); yych = *++YYCURSOR; @@ -4883,11 +5208,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1230 "Zend/zend_language_scanner.l" +#line 1557 "Zend/zend_language_scanner.l" { return T_STRING_CAST; } -#line 4891 "Zend/zend_language_scanner.c" +#line 5216 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); yych = *++YYCURSOR; @@ -4920,11 +5245,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(438, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1234 "Zend/zend_language_scanner.l" +#line 1561 "Zend/zend_language_scanner.l" { return T_ARRAY_CAST; } -#line 4928 "Zend/zend_language_scanner.c" +#line 5253 "Zend/zend_language_scanner.c" yy439: YYDEBUG(439, *YYCURSOR); yych = *++YYCURSOR; @@ -4962,11 +5287,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(446, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1238 "Zend/zend_language_scanner.l" +#line 1565 "Zend/zend_language_scanner.l" { return T_OBJECT_CAST; } -#line 4970 "Zend/zend_language_scanner.c" +#line 5295 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); yych = *++YYCURSOR; @@ -5007,11 +5332,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(454, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1242 "Zend/zend_language_scanner.l" +#line 1569 "Zend/zend_language_scanner.l" { return T_BOOL_CAST; } -#line 5015 "Zend/zend_language_scanner.c" +#line 5340 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5071,11 +5396,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(466, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1246 "Zend/zend_language_scanner.l" +#line 1573 "Zend/zend_language_scanner.l" { return T_UNSET_CAST; } -#line 5079 "Zend/zend_language_scanner.c" +#line 5404 "Zend/zend_language_scanner.c" yy467: YYDEBUG(467, *YYCURSOR); yych = *++YYCURSOR; @@ -5089,11 +5414,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(469, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1218 "Zend/zend_language_scanner.l" +#line 1545 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_VAR) } -#line 5097 "Zend/zend_language_scanner.c" +#line 5422 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; @@ -5113,11 +5438,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(473, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1210 "Zend/zend_language_scanner.l" +#line 1537 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_NEW) } -#line 5121 "Zend/zend_language_scanner.c" +#line 5446 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5156,21 +5481,21 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(481, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1270 "Zend/zend_language_scanner.l" +#line 1597 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_NAMESPACE) } -#line 5164 "Zend/zend_language_scanner.c" +#line 5489 "Zend/zend_language_scanner.c" yy482: YYDEBUG(482, *YYCURSOR); ++YYCURSOR; YYDEBUG(483, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1202 "Zend/zend_language_scanner.l" +#line 1529 "Zend/zend_language_scanner.l" { return T_PAAMAYIM_NEKUDOTAYIM; } -#line 5174 "Zend/zend_language_scanner.c" +#line 5499 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); ++YYCURSOR; @@ -5192,32 +5517,32 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(487, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1378 "Zend/zend_language_scanner.l" +#line 1705 "Zend/zend_language_scanner.l" { return T_MINUS_EQUAL; } -#line 5200 "Zend/zend_language_scanner.c" +#line 5525 "Zend/zend_language_scanner.c" yy488: YYDEBUG(488, *YYCURSOR); ++YYCURSOR; YYDEBUG(489, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1346 "Zend/zend_language_scanner.l" +#line 1673 "Zend/zend_language_scanner.l" { return T_DEC; } -#line 5210 "Zend/zend_language_scanner.c" +#line 5535 "Zend/zend_language_scanner.c" yy490: YYDEBUG(490, *YYCURSOR); ++YYCURSOR; YYDEBUG(491, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1174 "Zend/zend_language_scanner.l" +#line 1501 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); return T_OBJECT_OPERATOR; } -#line 5221 "Zend/zend_language_scanner.c" +#line 5546 "Zend/zend_language_scanner.c" yy492: YYDEBUG(492, *YYCURSOR); yych = *++YYCURSOR; @@ -5262,11 +5587,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(498, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1318 "Zend/zend_language_scanner.l" +#line 1645 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PUBLIC) } -#line 5270 "Zend/zend_language_scanner.c" +#line 5595 "Zend/zend_language_scanner.c" yy499: YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; @@ -5321,11 +5646,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(507, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1314 "Zend/zend_language_scanner.l" +#line 1641 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PROTECTED) } -#line 5329 "Zend/zend_language_scanner.c" +#line 5654 "Zend/zend_language_scanner.c" yy508: YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; @@ -5355,11 +5680,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(513, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1310 "Zend/zend_language_scanner.l" +#line 1637 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PRIVATE) } -#line 5363 "Zend/zend_language_scanner.c" +#line 5688 "Zend/zend_language_scanner.c" yy514: YYDEBUG(514, *YYCURSOR); ++YYCURSOR; @@ -5368,11 +5693,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(515, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1150 "Zend/zend_language_scanner.l" +#line 1477 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PRINT) } -#line 5376 "Zend/zend_language_scanner.c" +#line 5701 "Zend/zend_language_scanner.c" yy516: YYDEBUG(516, *YYCURSOR); yych = *++YYCURSOR; @@ -5397,11 +5722,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1142 "Zend/zend_language_scanner.l" +#line 1469 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_GOTO) } -#line 5405 "Zend/zend_language_scanner.c" +#line 5730 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5425,11 +5750,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(525, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1282 "Zend/zend_language_scanner.l" +#line 1609 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_GLOBAL) } -#line 5433 "Zend/zend_language_scanner.c" +#line 5758 "Zend/zend_language_scanner.c" yy526: YYDEBUG(526, *YYCURSOR); yych = *++YYCURSOR; @@ -5466,11 +5791,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(533, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1134 "Zend/zend_language_scanner.l" +#line 1461 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_BREAK) } -#line 5474 "Zend/zend_language_scanner.c" +#line 5799 "Zend/zend_language_scanner.c" yy534: YYDEBUG(534, *YYCURSOR); yych = *++YYCURSOR; @@ -5510,11 +5835,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(541, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1118 "Zend/zend_language_scanner.l" +#line 1445 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_SWITCH) } -#line 5518 "Zend/zend_language_scanner.c" +#line 5843 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5538,11 +5863,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(546, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1298 "Zend/zend_language_scanner.l" +#line 1625 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_STATIC) } -#line 5546 "Zend/zend_language_scanner.c" +#line 5871 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5569,11 +5894,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(551, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1114 "Zend/zend_language_scanner.l" +#line 1441 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_AS) } -#line 5577 "Zend/zend_language_scanner.c" +#line 5902 "Zend/zend_language_scanner.c" yy552: YYDEBUG(552, *YYCURSOR); yych = *++YYCURSOR; @@ -5592,11 +5917,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(555, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1334 "Zend/zend_language_scanner.l" +#line 1661 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ARRAY) } -#line 5600 "Zend/zend_language_scanner.c" +#line 5925 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); ++YYCURSOR; @@ -5605,11 +5930,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(557, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1430 "Zend/zend_language_scanner.l" +#line 1757 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_AND) } -#line 5613 "Zend/zend_language_scanner.c" +#line 5938 "Zend/zend_language_scanner.c" yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; @@ -5643,11 +5968,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(564, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1302 "Zend/zend_language_scanner.l" +#line 1629 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ABSTRACT) } -#line 5651 "Zend/zend_language_scanner.c" +#line 5976 "Zend/zend_language_scanner.c" yy565: YYDEBUG(565, *YYCURSOR); yych = *++YYCURSOR; @@ -5671,11 +5996,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(569, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1074 "Zend/zend_language_scanner.l" +#line 1401 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_WHILE) } -#line 5679 "Zend/zend_language_scanner.c" +#line 6004 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); ++YYCURSOR; @@ -5684,11 +6009,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(571, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1058 "Zend/zend_language_scanner.l" +#line 1385 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_IF) } -#line 5692 "Zend/zend_language_scanner.c" +#line 6017 "Zend/zend_language_scanner.c" yy572: YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; @@ -5740,11 +6065,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(578, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1286 "Zend/zend_language_scanner.l" +#line 1613 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ISSET) } -#line 5748 "Zend/zend_language_scanner.c" +#line 6073 "Zend/zend_language_scanner.c" yy579: YYDEBUG(579, *YYCURSOR); yych = *++YYCURSOR; @@ -5798,11 +6123,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy586: YYDEBUG(586, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1254 "Zend/zend_language_scanner.l" +#line 1581 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INCLUDE) } -#line 5806 "Zend/zend_language_scanner.c" +#line 6131 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -5831,11 +6156,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(592, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1258 "Zend/zend_language_scanner.l" +#line 1585 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INCLUDE_ONCE) } -#line 5839 "Zend/zend_language_scanner.c" +#line 6164 "Zend/zend_language_scanner.c" yy593: YYDEBUG(593, *YYCURSOR); yych = *++YYCURSOR; @@ -5869,11 +6194,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(599, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1158 "Zend/zend_language_scanner.l" +#line 1485 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INTERFACE) } -#line 5877 "Zend/zend_language_scanner.c" +#line 6202 "Zend/zend_language_scanner.c" yy600: YYDEBUG(600, *YYCURSOR); yych = *++YYCURSOR; @@ -5923,11 +6248,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(607, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1278 "Zend/zend_language_scanner.l" +#line 1605 "Zend/zend_language_scanner.l" { - RETURN_STRING_TOKEN(T_INSTEADOF) + RETURN_STRING_TOKEN(T_INSTEADOF) } -#line 5931 "Zend/zend_language_scanner.c" +#line 6256 "Zend/zend_language_scanner.c" yy608: YYDEBUG(608, *YYCURSOR); yych = *++YYCURSOR; @@ -5956,11 +6281,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(613, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1110 "Zend/zend_language_scanner.l" +#line 1437 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INSTANCEOF) } -#line 5964 "Zend/zend_language_scanner.c" +#line 6289 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6004,11 +6329,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(622, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1170 "Zend/zend_language_scanner.l" +#line 1497 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_IMPLEMENTS) } -#line 6012 "Zend/zend_language_scanner.c" +#line 6337 "Zend/zend_language_scanner.c" yy623: YYDEBUG(623, *YYCURSOR); yych = *++YYCURSOR; @@ -6036,11 +6361,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(626, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1042 "Zend/zend_language_scanner.l" +#line 1369 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_TRY) } -#line 6044 "Zend/zend_language_scanner.c" +#line 6369 "Zend/zend_language_scanner.c" yy627: YYDEBUG(627, *YYCURSOR); yych = *++YYCURSOR; @@ -6059,11 +6384,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(630, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1162 "Zend/zend_language_scanner.l" +#line 1489 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_TRAIT) } -#line 6067 "Zend/zend_language_scanner.c" +#line 6392 "Zend/zend_language_scanner.c" yy631: YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; @@ -6082,11 +6407,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(634, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1054 "Zend/zend_language_scanner.l" +#line 1381 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_THROW) } -#line 6090 "Zend/zend_language_scanner.c" +#line 6415 "Zend/zend_language_scanner.c" yy635: YYDEBUG(635, *YYCURSOR); yych = *++YYCURSOR; @@ -6110,11 +6435,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(639, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1038 "Zend/zend_language_scanner.l" +#line 1365 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_YIELD) } -#line 6118 "Zend/zend_language_scanner.c" +#line 6443 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); yych = *++YYCURSOR; @@ -6175,11 +6500,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy647: YYDEBUG(647, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1262 "Zend/zend_language_scanner.l" +#line 1589 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_REQUIRE) } -#line 6183 "Zend/zend_language_scanner.c" +#line 6508 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6208,11 +6533,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(653, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1266 "Zend/zend_language_scanner.l" +#line 1593 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_REQUIRE_ONCE) } -#line 6216 "Zend/zend_language_scanner.c" +#line 6541 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; @@ -6231,11 +6556,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(657, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1034 "Zend/zend_language_scanner.l" +#line 1361 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_RETURN) } -#line 6239 "Zend/zend_language_scanner.c" +#line 6564 "Zend/zend_language_scanner.c" yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; @@ -6325,11 +6650,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(668, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1138 "Zend/zend_language_scanner.l" +#line 1465 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CONTINUE) } -#line 6333 "Zend/zend_language_scanner.c" +#line 6658 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); ++YYCURSOR; @@ -6338,11 +6663,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1030 "Zend/zend_language_scanner.l" +#line 1357 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CONST) } -#line 6346 "Zend/zend_language_scanner.c" +#line 6671 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6367,11 +6692,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1214 "Zend/zend_language_scanner.l" +#line 1541 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CLONE) } -#line 6375 "Zend/zend_language_scanner.c" +#line 6700 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6385,11 +6710,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(678, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1154 "Zend/zend_language_scanner.l" +#line 1481 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CLASS) } -#line 6393 "Zend/zend_language_scanner.c" +#line 6718 "Zend/zend_language_scanner.c" yy679: YYDEBUG(679, *YYCURSOR); yych = *++YYCURSOR; @@ -6435,11 +6760,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(687, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1338 "Zend/zend_language_scanner.l" +#line 1665 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CALLABLE) } -#line 6443 "Zend/zend_language_scanner.c" +#line 6768 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); ++YYCURSOR; @@ -6448,11 +6773,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(689, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1126 "Zend/zend_language_scanner.l" +#line 1453 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CASE) } -#line 6456 "Zend/zend_language_scanner.c" +#line 6781 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); yych = *++YYCURSOR; @@ -6466,11 +6791,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(692, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1046 "Zend/zend_language_scanner.l" +#line 1373 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CATCH) } -#line 6474 "Zend/zend_language_scanner.c" +#line 6799 "Zend/zend_language_scanner.c" yy693: YYDEBUG(693, *YYCURSOR); yych = *++YYCURSOR; @@ -6521,11 +6846,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(702, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1026 "Zend/zend_language_scanner.l" +#line 1353 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FUNCTION) } -#line 6529 "Zend/zend_language_scanner.c" +#line 6854 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; @@ -6549,11 +6874,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy704: YYDEBUG(704, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1086 "Zend/zend_language_scanner.l" +#line 1413 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FOR) } -#line 6557 "Zend/zend_language_scanner.c" +#line 6882 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; @@ -6577,11 +6902,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(709, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1094 "Zend/zend_language_scanner.l" +#line 1421 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FOREACH) } -#line 6585 "Zend/zend_language_scanner.c" +#line 6910 "Zend/zend_language_scanner.c" yy710: YYDEBUG(710, *YYCURSOR); yych = *++YYCURSOR; @@ -6615,11 +6940,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy713: YYDEBUG(713, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1306 "Zend/zend_language_scanner.l" +#line 1633 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FINAL) } -#line 6623 "Zend/zend_language_scanner.c" +#line 6948 "Zend/zend_language_scanner.c" yy714: YYDEBUG(714, *YYCURSOR); yych = *++YYCURSOR; @@ -6633,11 +6958,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(716, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1050 "Zend/zend_language_scanner.l" +#line 1377 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FINALLY) } -#line 6641 "Zend/zend_language_scanner.c" +#line 6966 "Zend/zend_language_scanner.c" yy717: YYDEBUG(717, *YYCURSOR); yych = *++YYCURSOR; @@ -6668,11 +6993,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(720, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1082 "Zend/zend_language_scanner.l" +#line 1409 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DO) } -#line 6676 "Zend/zend_language_scanner.c" +#line 7001 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); ++YYCURSOR; @@ -6681,11 +7006,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(722, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1022 "Zend/zend_language_scanner.l" +#line 1349 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXIT) } -#line 6689 "Zend/zend_language_scanner.c" +#line 7014 "Zend/zend_language_scanner.c" yy723: YYDEBUG(723, *YYCURSOR); yych = *++YYCURSOR; @@ -6720,11 +7045,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(729, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1130 "Zend/zend_language_scanner.l" +#line 1457 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DEFAULT) } -#line 6728 "Zend/zend_language_scanner.c" +#line 7053 "Zend/zend_language_scanner.c" yy730: YYDEBUG(730, *YYCURSOR); yych = *++YYCURSOR; @@ -6748,11 +7073,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(734, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1102 "Zend/zend_language_scanner.l" +#line 1429 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DECLARE) } -#line 6756 "Zend/zend_language_scanner.c" +#line 7081 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -6832,11 +7157,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(747, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1166 "Zend/zend_language_scanner.l" +#line 1493 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXTENDS) } -#line 6840 "Zend/zend_language_scanner.c" +#line 7165 "Zend/zend_language_scanner.c" yy748: YYDEBUG(748, *YYCURSOR); ++YYCURSOR; @@ -6845,11 +7170,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(749, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1018 "Zend/zend_language_scanner.l" +#line 1345 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXIT) } -#line 6853 "Zend/zend_language_scanner.c" +#line 7178 "Zend/zend_language_scanner.c" yy750: YYDEBUG(750, *YYCURSOR); yych = *++YYCURSOR; @@ -6863,11 +7188,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(752, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1250 "Zend/zend_language_scanner.l" +#line 1577 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EVAL) } -#line 6871 "Zend/zend_language_scanner.c" +#line 7196 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -6937,11 +7262,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(763, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1078 "Zend/zend_language_scanner.l" +#line 1405 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDWHILE) } -#line 6945 "Zend/zend_language_scanner.c" +#line 7270 "Zend/zend_language_scanner.c" yy764: YYDEBUG(764, *YYCURSOR); yych = *++YYCURSOR; @@ -6970,11 +7295,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1122 "Zend/zend_language_scanner.l" +#line 1449 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDSWITCH) } -#line 6978 "Zend/zend_language_scanner.c" +#line 7303 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -6983,11 +7308,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(771, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1066 "Zend/zend_language_scanner.l" +#line 1393 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDIF) } -#line 6991 "Zend/zend_language_scanner.c" +#line 7316 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); yych = *++YYCURSOR; @@ -7016,11 +7341,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy774: YYDEBUG(774, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1090 "Zend/zend_language_scanner.l" +#line 1417 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDFOR) } -#line 7024 "Zend/zend_language_scanner.c" +#line 7349 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); yych = *++YYCURSOR; @@ -7044,11 +7369,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(779, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1098 "Zend/zend_language_scanner.l" +#line 1425 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDFOREACH) } -#line 7052 "Zend/zend_language_scanner.c" +#line 7377 "Zend/zend_language_scanner.c" yy780: YYDEBUG(780, *YYCURSOR); yych = *++YYCURSOR; @@ -7082,11 +7407,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(786, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1106 "Zend/zend_language_scanner.l" +#line 1433 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDDECLARE) } -#line 7090 "Zend/zend_language_scanner.c" +#line 7415 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); yych = *++YYCURSOR; @@ -7105,11 +7430,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(790, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1290 "Zend/zend_language_scanner.l" +#line 1617 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EMPTY) } -#line 7113 "Zend/zend_language_scanner.c" +#line 7438 "Zend/zend_language_scanner.c" yy791: YYDEBUG(791, *YYCURSOR); yych = *++YYCURSOR; @@ -7138,11 +7463,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy793: YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1070 "Zend/zend_language_scanner.l" +#line 1397 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ELSE) } -#line 7146 "Zend/zend_language_scanner.c" +#line 7471 "Zend/zend_language_scanner.c" yy794: YYDEBUG(794, *YYCURSOR); yych = *++YYCURSOR; @@ -7156,11 +7481,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(796, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1062 "Zend/zend_language_scanner.l" +#line 1389 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ELSEIF) } -#line 7164 "Zend/zend_language_scanner.c" +#line 7489 "Zend/zend_language_scanner.c" yy797: YYDEBUG(797, *YYCURSOR); yych = *++YYCURSOR; @@ -7174,11 +7499,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) } YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1146 "Zend/zend_language_scanner.l" +#line 1473 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ECHO) } -#line 7182 "Zend/zend_language_scanner.c" +#line 7507 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7251,13 +7576,13 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1179 "Zend/zend_language_scanner.l" +#line 1506 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 7261 "Zend/zend_language_scanner.c" +#line 7586 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7265,13 +7590,13 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy805: YYDEBUG(805, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1196 "Zend/zend_language_scanner.l" +#line 1523 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); goto restart; } -#line 7275 "Zend/zend_language_scanner.c" +#line 7600 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); ++YYCURSOR; @@ -7280,14 +7605,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy807: YYDEBUG(807, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1189 "Zend/zend_language_scanner.l" +#line 1516 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 7291 "Zend/zend_language_scanner.c" +#line 7616 "Zend/zend_language_scanner.c" yy808: YYDEBUG(808, *YYCURSOR); yych = *++YYCURSOR; @@ -7308,11 +7633,11 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(812, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1185 "Zend/zend_language_scanner.l" +#line 1512 "Zend/zend_language_scanner.l" { return T_OBJECT_OPERATOR; } -#line 7316 "Zend/zend_language_scanner.c" +#line 7641 "Zend/zend_language_scanner.c" yy813: YYDEBUG(813, *YYCURSOR); ++YYCURSOR; @@ -7397,14 +7722,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy818: YYDEBUG(818, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1482 "Zend/zend_language_scanner.l" +#line 1808 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); goto restart; } -#line 7408 "Zend/zend_language_scanner.c" +#line 7733 "Zend/zend_language_scanner.c" yy819: YYDEBUG(819, *YYCURSOR); yych = *++YYCURSOR; @@ -7429,7 +7754,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(824, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1472 "Zend/zend_language_scanner.l" +#line 1798 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); zend_copy_value(zendlval, yytext, yyleng); @@ -7438,7 +7763,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_STRING_VARNAME; } -#line 7442 "Zend/zend_language_scanner.c" +#line 7767 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7449,7 +7774,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(828, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2302 "Zend/zend_language_scanner.l" +#line 2627 "Zend/zend_language_scanner.l" { int newline = 0; @@ -7506,7 +7831,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) HANDLE_NEWLINES(yytext, yyleng - newline); return T_ENCAPSED_AND_WHITESPACE; } -#line 7510 "Zend/zend_language_scanner.c" +#line 7835 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7613,7 +7938,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy832: YYDEBUG(832, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1558 "Zend/zend_language_scanner.l" +#line 1884 "Zend/zend_language_scanner.l" { /* Offset could be treated as a long */ if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) { ZVAL_LONG(zendlval, strtol(yytext, NULL, 10)); @@ -7622,7 +7947,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) } return T_NUM_STRING; } -#line 7626 "Zend/zend_language_scanner.c" +#line 7951 "Zend/zend_language_scanner.c" yy833: YYDEBUG(833, *YYCURSOR); yych = *++YYCURSOR; @@ -7642,23 +7967,23 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy835: YYDEBUG(835, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1834 "Zend/zend_language_scanner.l" +#line 2160 "Zend/zend_language_scanner.l" { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -#line 7651 "Zend/zend_language_scanner.c" +#line 7976 "Zend/zend_language_scanner.c" yy836: YYDEBUG(836, *YYCURSOR); ++YYCURSOR; YYDEBUG(837, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1829 "Zend/zend_language_scanner.l" +#line 2155 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); return ']'; } -#line 7662 "Zend/zend_language_scanner.c" +#line 7987 "Zend/zend_language_scanner.c" yy838: YYDEBUG(838, *YYCURSOR); yych = *++YYCURSOR; @@ -7668,14 +7993,14 @@ int lex_scan(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(840, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1839 "Zend/zend_language_scanner.l" +#line 2165 "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 7679 "Zend/zend_language_scanner.c" +#line 8004 "Zend/zend_language_scanner.c" yy841: YYDEBUG(841, *YYCURSOR); ++YYCURSOR; @@ -7684,19 +8009,19 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy842: YYDEBUG(842, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1846 "Zend/zend_language_scanner.l" +#line 2172 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 7694 "Zend/zend_language_scanner.c" +#line 8019 "Zend/zend_language_scanner.c" yy843: YYDEBUG(843, *YYCURSOR); ++YYCURSOR; YYDEBUG(844, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2360 "Zend/zend_language_scanner.l" +#line 2685 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -7705,7 +8030,7 @@ int lex_scan(zval *zendlval TSRMLS_DC) zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7709 "Zend/zend_language_scanner.c" +#line 8034 "Zend/zend_language_scanner.c" yy845: YYDEBUG(845, *YYCURSOR); ++YYCURSOR; @@ -7741,13 +8066,13 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy849: YYDEBUG(849, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1823 "Zend/zend_language_scanner.l" +#line 2149 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 7751 "Zend/zend_language_scanner.c" +#line 8076 "Zend/zend_language_scanner.c" yy850: YYDEBUG(850, *YYCURSOR); ++YYCURSOR; @@ -7787,12 +8112,12 @@ int lex_scan(zval *zendlval TSRMLS_DC) yy857: YYDEBUG(857, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1567 "Zend/zend_language_scanner.l" +#line 1893 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng, 1); return T_NUM_STRING; } -#line 7796 "Zend/zend_language_scanner.c" +#line 8121 "Zend/zend_language_scanner.c" yy858: YYDEBUG(858, *YYCURSOR); ++YYCURSOR; @@ -7815,6 +8140,6 @@ int lex_scan(zval *zendlval TSRMLS_DC) goto yy857; } } -#line 2369 "Zend/zend_language_scanner.l" +#line 2694 "Zend/zend_language_scanner.l" } diff --git a/Zend/zend_language_scanner.h b/Zend/zend_language_scanner.h index 47c652f29a955..783da79c05b6f 100644 --- a/Zend/zend_language_scanner.h +++ b/Zend/zend_language_scanner.h @@ -66,21 +66,36 @@ ZEND_API int zend_multibyte_set_filter(const zend_encoding *onetime_encoding TSR END_EXTERN_C() +/* maximal lookahead token buffer array size */ +#define ZEND_INIT_TOKEN_BUF_SIZE 8 + +#define LEX_NO_TOKEN_MODE 0 +#define LEX_USE_TOKEN_MODE 1 +#define LEX_FUNC_NAMING_TOKEN_MODE 2 + +#define PARSER_IGNORED_TOKEN_CASES \ + case T_COMMENT: \ + case T_DOC_COMMENT: \ + case T_OPEN_TAG: \ + case T_WHITESPACE: \ + case T_CLOSE_TAG: \ + case T_OPEN_TAG_WITH_ECHO: + #define COPIED_STRING_TOKEN_CASES \ - case T_STRING: \ - case T_STRING_VARNAME: \ - case T_VARIABLE: \ - case T_ENCAPSED_AND_WHITESPACE: \ - case T_CONSTANT_ENCAPSED_STRING: \ - case T_INLINE_HTML: \ - case T_CLASS_C: \ - case T_TRAIT_C: \ - case T_FUNC_C: \ - case T_METHOD_C: \ - case T_LINE: \ - case T_FILE: \ - case T_DIR: \ - case T_NS_C: + case T_STRING: \ + case T_STRING_VARNAME: \ + case T_VARIABLE: \ + case T_ENCAPSED_AND_WHITESPACE: \ + case T_CONSTANT_ENCAPSED_STRING: \ + case T_INLINE_HTML: \ + case T_CLASS_C: \ + case T_TRAIT_C: \ + case T_FUNC_C: \ + case T_METHOD_C: \ + case T_LINE: \ + case T_FILE: \ + case T_DIR: \ + case T_NS_C: #endif diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index ffb884a9b3270..1847e7694d8aa 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -112,9 +112,9 @@ do { \ } \ } -/* To save initial string length after scanning to first variable, CG(doc_comment_len) can be reused */ -#define SET_DOUBLE_QUOTES_SCANNED_LENGTH(len) CG(doc_comment_len) = (len) -#define GET_DOUBLE_QUOTES_SCANNED_LENGTH() CG(doc_comment_len) +/* To save initial string length after scanning to first variable, SCNG(doc_comment_len) can be reused */ +#define SET_DOUBLE_QUOTES_SCANNED_LENGTH(len) SCNG(doc_comment_len) = (len) +#define GET_DOUBLE_QUOTES_SCANNED_LENGTH() SCNG(doc_comment_len) #define IS_LABEL_START(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || (c) == '_' || (c) >= 0x7F) @@ -986,11 +986,338 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo } } +int lex_scan_ex(zval *zendlval TSRMLS_DC); + +#define LEX_BUF_ADD_EX \ + CG(tokenbuffer)[++CG(tokenbufptr)].zv = *zendlval; \ + CG(tokenbuffer)[CG(tokenbufptr)].token = retval; \ + CG(tokenbuffer)[CG(tokenbufptr)].text = SCNG(yy_text); \ + CG(tokenbuffer)[CG(tokenbufptr)].len = SCNG(yy_leng); \ + CG(tokenbuffer)[CG(tokenbufptr)].start = SCNG(yy_cursor); \ + CG(tokenbuffer)[CG(tokenbufptr)].end = SCNG(yy_limit); \ + if (retval == T_DOC_COMMENT) { \ + CG(tokenbuffer)[CG(tokenbufptr)].doc_comment = SCNG(doc_comment); \ + CG(tokenbuffer)[CG(tokenbufptr)].doc_comment_len = SCNG(doc_comment_len); \ + } \ + CG(tokenbuffer)[CG(tokenbufptr)].lineno = CG(zend_lineno); + +#define LEX_BUF_ADD \ + LEX_BUF_ADD_EX \ + goto again; + +static zend_always_inline int lex_get_real_buf_offset(const int relpos) { + int effective_pos = CG(tokenbufptr) - relpos + 1; + int i = CG(tokenbufptr) + 1; + while (--i >= effective_pos) { + switch(CG(tokenbuffer)[i].token) { + PARSER_IGNORED_TOKEN_CASES + --effective_pos; + } + } + return effective_pos >= 0?effective_pos:-1; +} + +#define LEX_REL_BUF(relpos) \ + (CG(tokenbuffer)[lex_get_real_buf_offset(relpos)]) + +static zend_always_inline int lex_is_real_string_token(int token) { + switch (token) { + PARSER_IGNORED_TOKEN_CASES + COPIED_STRING_TOKEN_CASES + return 1; + } + return token < 256; +} + +#define LEX_IS_CUR_ALPH_TOKEN() \ + (Z_TYPE_P(zendlval) == 255 && !lex_is_real_string_token(retval)) + +#define LEX_IS_REL_ALPH_TOKEN(relpos) \ + (Z_TYPE(LEX_REL_BUF(relpos).zv) == 255 && !lex_is_real_string_token(LEX_REL_BUF(relpos).token)) + +#define LEX_CONVERT_STRING(token, zval, text, len) \ + token = T_STRING; \ + Z_STRLEN(zval) = len; \ + Z_STRVAL(zval) = estrndup(text, len); \ + Z_TYPE(zval) = IS_STRING; + +#define LEX_CONVERT_CUR_STRING() LEX_CONVERT_STRING(retval, *zendlval, yytext, yyleng) + +#define LEX_CONVERT_REL_STRING(relpos) LEX_CONVERT_STRING(LEX_REL_BUF(relpos).token, LEX_REL_BUF(relpos).zv, (char *)LEX_REL_BUF(relpos).text, LEX_REL_BUF(relpos).len) + +#define LEX_PREPARE_RETURN_FROM_BUF \ + *zendlval = CG(tokenbuffer)[CG(tokenbufptr)].zv; \ + if (Z_TYPE_P(zendlval) == 255) { \ + Z_TYPE_P(zendlval) = 0; \ + } \ + retval = CG(tokenbuffer)[CG(tokenbufptr)].token; \ + if (retval == '}' || retval == T_DOC_COMMENT) { \ + RESET_DOC_COMMENT(); \ + } \ + SCNG(yy_text) = CG(tokenbuffer)[CG(tokenbufptr)].text; \ + SCNG(yy_leng) = CG(tokenbuffer)[CG(tokenbufptr)].len; \ + SCNG(yy_cursor) = CG(tokenbuffer)[CG(tokenbufptr)].start; \ + SCNG(yy_limit) = CG(tokenbuffer)[CG(tokenbufptr)].end; \ + if (retval == T_DOC_COMMENT) { \ + CG(doc_comment) = CG(tokenbuffer)[CG(tokenbufptr)].doc_comment; \ + CG(doc_comment_len) = CG(tokenbuffer)[CG(tokenbufptr)].doc_comment_len; \ + } \ + CG(zend_lineno) = CG(tokenbuffer)[CG(tokenbufptr)++].lineno; + +/* This function checks the cases where a token needs to be converted to some other token to simplify parsing */ +/* Also it shouldn't be done in parser, because it actually breaks applications relying on token_get_all output */ +/* Doing it in parser also would make highlight_string() etc. look ugly when tokens are used as other tokens */ +/* The real lexing step is done in lex_scan_ex */ +int lex_scan(zval *zendlval) { + int retval; + + if (CG(tokenbufptr) != -1) { + if (CG(tokenbuffer)[CG(tokenbufptr)].token != -1) { + LEX_PREPARE_RETURN_FROM_BUF + return retval; + } + CG(tokenbufptr) = -1; + } + +again: + Z_TYPE_P(zendlval) = 0; + retval = lex_scan_ex(zendlval); + + switch (retval) { + COPIED_STRING_TOKEN_CASES + goto leave; + } + if (retval) { + if (CG(tokenbufptr) >= CG(tokenbufsize) - 4) { + CG(tokenbuffer) = erealloc(--CG(tokenbuffer), sizeof(token_buf) * ((CG(tokenbufsize) *= 2) + 1)); + CG(tokenbuffer)++; + } + + if (CG(tokenbufptr) != -1) { + switch (retval) { + PARSER_IGNORED_TOKEN_CASES + LEX_BUF_ADD + } + + /* class access */ + /* class name */ + if (retval == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_REL_ALPH_TOKEN(1)) { + LEX_CONVERT_REL_STRING(1); + } + /* class const / method name */ + if (LEX_REL_BUF(1).token == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_CUR_ALPH_TOKEN()) { + /* ::class is reserved */ + if (retval == T_CLASS) { + goto leave; + } + LEX_CONVERT_CUR_STRING(); + } + + /* classes */ + if (CG(tokenbuf_in_class) != -1 && LEX_IS_CUR_ALPH_TOKEN()) { + /* class name */ + switch (LEX_REL_BUF(1).token) { + case T_CLASS: + case T_INTERFACE: + case T_TRAIT: + if (retval != T_NAMESPACE) { + LEX_CONVERT_CUR_STRING(); + } + } + if (CG(tokenbuf_in_class) == 0 && retval != T_NAMESPACE && ((retval != T_IMPLEMENTS && retval != T_EXTENDS) || LEX_REL_BUF(1).token == ',' || LEX_REL_BUF(1).token == T_IMPLEMENTS) && LEX_IS_CUR_ALPH_TOKEN()) { + LEX_CONVERT_CUR_STRING(); + } + /* method names */ + if ((LEX_REL_BUF(1).token == T_FUNCTION || (LEX_REL_BUF(1).token == '&' && LEX_REL_BUF(2).token == T_FUNCTION)) && LEX_IS_CUR_ALPH_TOKEN()) { + LEX_CONVERT_CUR_STRING(); + } + /* constant names */ + if (LEX_REL_BUF(1).token == T_CONST && LEX_IS_CUR_ALPH_TOKEN()) { + LEX_CONVERT_CUR_STRING(); + } + /* trait use aliasing */ + if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE) { + if (retval == ';' && LEX_IS_REL_ALPH_TOKEN(1)) { + switch (LEX_REL_BUF(1).token) { + case T_PUBLIC: + case T_PROTECTED: + case T_PRIVATE: + break; + default: + LEX_BUF_ADD + } + } + if (LEX_REL_BUF(1).token == T_INSTEADOF && LEX_IS_CUR_ALPH_TOKEN()) { + LEX_BUF_ADD + } + } + } + + /* class name typehints */ + if (CG(tokenbuf_fn_decl) == 0 && (LEX_REL_BUF(1).token == '(' || LEX_REL_BUF(1).token == ',') && retval != T_NAMESPACE && LEX_IS_CUR_ALPH_TOKEN()) { + LEX_CONVERT_CUR_STRING(); + } + + /* goto & labels */ + if ((retval == ':' || (retval == ';' && LEX_REL_BUF(2).token == T_GOTO)) && LEX_IS_REL_ALPH_TOKEN(1)) { + /* disallow replacing of alternative syntax and default (in switch) */ + switch (LEX_REL_BUF(1).token) { + case T_DEFAULT: + case T_ELSE: + break; + default: + LEX_CONVERT_REL_STRING(1); + } + } + if (LEX_REL_BUF(1).token == T_GOTO && LEX_IS_CUR_ALPH_TOKEN() && retval != T_DEFAULT) { + LEX_CONVERT_CUR_STRING(); + } + + /* namespaces */ + /* Disallow T_NAMESPACE because of namespace\string syntax */ + switch (LEX_REL_BUF(1).token) { + case T_USE: + if (CG(tokenbuf_in_class) != -1) { + break; + } + case T_NEW: + case T_NS_SEPARATOR: + case T_NAMESPACE: + if (retval != T_NAMESPACE && LEX_IS_CUR_ALPH_TOKEN()) { + LEX_CONVERT_CUR_STRING(); + } + } + if (retval == T_NS_SEPARATOR) { + switch (LEX_REL_BUF(1).token) { + case T_NAMESPACE: + break; + case T_NEW: + if (LEX_REL_BUF(2).token == T_THROW || LEX_REL_BUF(2).token == T_RETURN || LEX_REL_BUF(2).token == ',') { + break; + } + case T_USE: + case T_ECHO: + if (LEX_REL_BUF(2).token < 256 && LEX_REL_BUF(2).token != ',') { + break; + } + case T_IMPLEMENTS: + if (LEX_REL_BUF(1).token == T_IMPLEMENTS && LEX_REL_BUF(2).token != T_IMPLEMENTS && LEX_REL_BUF(2).token != T_EXTENDS && LEX_REL_BUF(2).token != ',') { + break; + } + case T_EXTENDS: + if (LEX_REL_BUF(1).token == T_EXTENDS && LEX_REL_BUF(2).token != T_EXTENDS && LEX_REL_BUF(2).token != ',') { + break; + } + default: + if (LEX_IS_REL_ALPH_TOKEN(1)) { + LEX_CONVERT_REL_STRING(1); + } + } + } + /* handling of multiple comma separated T_USE */ + if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE && LEX_IS_CUR_ALPH_TOKEN() && LEX_REL_BUF(1).token == ',') { + LEX_CONVERT_CUR_STRING(); + } + + /* Handling of T_HALT_COMPILER; might cause memory leaks if not handled */ + if (LEX_REL_BUF(1).token == T_HALT_COMPILER && retval == '(') { + LEX_BUF_ADD + } else if (LEX_REL_BUF(2).token == T_HALT_COMPILER && LEX_REL_BUF(1).token == '('&& retval == ')') { + LEX_BUF_ADD + } + } + + switch (retval) { + case '{': + if (CG(tokenbuf_in_class) != -1) { + ++CG(tokenbuf_in_class); + } + break; + case '}': + if (CG(tokenbuf_in_class) != -1 && --CG(tokenbuf_in_class) == 0) { + CG(tokenbuf_in_class) = -1; + } + break; + case T_CLASS: + case T_INTERFACE: + case T_TRAIT: + if (CG(tokenbuf_in_class) == -1) { + CG(tokenbuf_in_class) = 0; + } + break; + case ';': + if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE) { + CG(tokenbuf_mode) = LEX_NO_TOKEN_MODE; + } + break; + case T_FUNCTION: + if (CG(tokenbuf_mode) == LEX_NO_TOKEN_MODE) { + CG(tokenbuf_mode) = LEX_FUNC_NAMING_TOKEN_MODE; + } + break; + case '(': + if (CG(tokenbuf_mode) == LEX_FUNC_NAMING_TOKEN_MODE) { + CG(tokenbuf_mode) = LEX_NO_TOKEN_MODE; + CG(tokenbuf_fn_decl) = 0; + } else if (CG(tokenbuf_fn_decl) != -1) { + ++CG(tokenbuf_fn_decl); + } + break; + case ')': + if (CG(tokenbuf_fn_decl) != -1) { + --CG(tokenbuf_fn_decl); + } + break; + case T_USE: + if (CG(tokenbuf_mode) == LEX_NO_TOKEN_MODE) { + CG(tokenbuf_mode) = LEX_USE_TOKEN_MODE; + } + break; + } + + if (LEX_IS_CUR_ALPH_TOKEN()) { + LEX_BUF_ADD + } else { + switch (retval) { + case ';': + if (LEX_REL_BUF(3).token == T_HALT_COMPILER && LEX_REL_BUF(2).token == '(') { + break; + } + case '&': + case ',': + case '(': + case T_PAAMAYIM_NEKUDOTAYIM: + case T_NS_SEPARATOR: + LEX_BUF_ADD + } + } + } + +leave: + + if (CG(tokenbufptr) != -1) { + LEX_BUF_ADD_EX + CG(tokenbuffer)[CG(tokenbufptr) + 1].token = -1; + CG(tokenbufptr) = 0; + LEX_PREPARE_RETURN_FROM_BUF + } else if (retval == '}' || retval == T_DOC_COMMENT) { + RESET_DOC_COMMENT(); + if (retval == T_DOC_COMMENT) { + CG(doc_comment) = SCNG(doc_comment); + CG(doc_comment_len) = SCNG(doc_comment_len); + } + } + + return retval; +} + +/* Mark token as eventual T_STRING */ #define RETURN_STRING_TOKEN(token) \ - ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional (copying happens in zend_language_parser.y (section identifier_or_keyword)) */ \ + Z_TYPE_P(zendlval) = 255; /* mark keyword ready for eventual conversion to T_STRING in lex_scan function */ \ return token; -int lex_scan(zval *zendlval TSRMLS_DC) +/* "Real" lexer (see comments above to function lex_scan) */ +int lex_scan_ex(zval *zendlval TSRMLS_DC) { restart: SCNG(yy_text) = YYCURSOR; @@ -1276,7 +1603,7 @@ NEWLINE ("\r"|"\n"|"\r\n") } "insteadof" { - RETURN_STRING_TOKEN(T_INSTEADOF) + RETURN_STRING_TOKEN(T_INSTEADOF) } "global" { @@ -1292,7 +1619,7 @@ NEWLINE ("\r"|"\n"|"\r\n") } "__halt_compiler" { - return T_HALT_COMPILER; + RETURN_STRING_TOKEN(T_HALT_COMPILER) } "static" { @@ -1461,7 +1788,6 @@ NEWLINE ("\r"|"\n"|"\r\n") "}" { - RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { yy_pop_state(TSRMLS_C); } @@ -1889,7 +2215,6 @@ inline_html: if (yyleng > 2) { doc_com = 1; - RESET_DOC_COMMENT(); } else { doc_com = 0; } @@ -1910,8 +2235,8 @@ inline_html: HANDLE_NEWLINES(yytext, yyleng); if (doc_com) { - CG(doc_comment) = estrndup(yytext, yyleng); - CG(doc_comment_len) = yyleng; + SCNG(doc_comment) = estrndup(yytext, yyleng); + SCNG(doc_comment_len) = yyleng; return T_DOC_COMMENT; } From 5af2f2a995126cd546de0729b45e48da42933922 Mon Sep 17 00:00:00 2001 From: bwoebi Date: Fri, 4 Oct 2013 23:06:47 +0200 Subject: [PATCH 3/9] optimized --- Zend/zend_language_scanner.c | 698 ++++++++++++++++++----------------- Zend/zend_language_scanner.l | 10 +- 2 files changed, 356 insertions(+), 352 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 2a7ec4b7e5b3a..f2ffc39e3a437 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1020,7 +1020,7 @@ static zend_always_inline int lex_get_real_buf_offset(const int relpos) { } #define LEX_REL_BUF(relpos) \ - (CG(tokenbuffer)[lex_get_real_buf_offset(relpos)]) + (CG(tokenbuffer)[relpos==1?(one!=-1?one:lex_get_real_buf_offset(1)):(relpos==2?(two!=-1?two:lex_get_real_buf_offset(2)):lex_get_real_buf_offset(relpos))]) static zend_always_inline int lex_is_real_string_token(int token) { switch (token) { @@ -1071,7 +1071,7 @@ static zend_always_inline int lex_is_real_string_token(int token) { /* Doing it in parser also would make highlight_string() etc. look ugly when tokens are used as other tokens */ /* The real lexing step is done in lex_scan_ex */ int lex_scan(zval *zendlval) { - int retval; + int retval, one, two; if (CG(tokenbufptr) != -1) { if (CG(tokenbuffer)[CG(tokenbufptr)].token != -1) { @@ -1090,6 +1090,8 @@ int lex_scan(zval *zendlval) { goto leave; } if (retval) { + one = two = -1; + if (CG(tokenbufptr) >= CG(tokenbufsize) - 4) { CG(tokenbuffer) = erealloc(--CG(tokenbuffer), sizeof(token_buf) * ((CG(tokenbufsize) *= 2) + 1)); CG(tokenbuffer)++; @@ -1224,7 +1226,7 @@ int lex_scan(zval *zendlval) { /* Handling of T_HALT_COMPILER; might cause memory leaks if not handled */ if (LEX_REL_BUF(1).token == T_HALT_COMPILER && retval == '(') { LEX_BUF_ADD - } else if (LEX_REL_BUF(2).token == T_HALT_COMPILER && LEX_REL_BUF(1).token == '('&& retval == ')') { + } else if (LEX_REL_BUF(2).token == T_HALT_COMPILER && LEX_REL_BUF(1).token == '(' && retval == ')') { LEX_BUF_ADD } } @@ -1282,7 +1284,7 @@ int lex_scan(zval *zendlval) { } else { switch (retval) { case ';': - if (LEX_REL_BUF(3).token == T_HALT_COMPILER && LEX_REL_BUF(2).token == '(') { + if (LEX_REL_BUF(2).token == '(' && LEX_REL_BUF(3).token == T_HALT_COMPILER) { break; } case '&': @@ -1327,7 +1329,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yymore_restart: -#line 1331 "Zend/zend_language_scanner.c" +#line 1333 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1426,7 +1428,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy3: YYDEBUG(3, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2067 "Zend/zend_language_scanner.l" +#line 2069 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1486,7 +1488,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) HANDLE_NEWLINES(yytext, yyleng); return T_INLINE_HTML; } -#line 1490 "Zend/zend_language_scanner.c" +#line 1492 "Zend/zend_language_scanner.c" yy4: YYDEBUG(4, *YYCURSOR); yych = *++YYCURSOR; @@ -1504,7 +1506,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy6: YYDEBUG(6, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2057 "Zend/zend_language_scanner.l" +#line 2059 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1514,14 +1516,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1518 "Zend/zend_language_scanner.c" +#line 1520 "Zend/zend_language_scanner.c" yy7: YYDEBUG(7, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy43; YYDEBUG(8, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2038 "Zend/zend_language_scanner.l" +#line 2040 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1531,7 +1533,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1535 "Zend/zend_language_scanner.c" +#line 1537 "Zend/zend_language_scanner.c" yy9: YYDEBUG(9, *YYCURSOR); yych = *++YYCURSOR; @@ -1717,7 +1719,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2004 "Zend/zend_language_scanner.l" +#line 2006 "Zend/zend_language_scanner.l" { YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1)); @@ -1732,7 +1734,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1736 "Zend/zend_language_scanner.c" +#line 1738 "Zend/zend_language_scanner.c" yy39: YYDEBUG(39, *YYCURSOR); yych = *++YYCURSOR; @@ -1759,7 +1761,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2020 "Zend/zend_language_scanner.l" +#line 2022 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1769,19 +1771,19 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1773 "Zend/zend_language_scanner.c" +#line 1775 "Zend/zend_language_scanner.c" yy45: YYDEBUG(45, *YYCURSOR); ++YYCURSOR; YYDEBUG(46, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2031 "Zend/zend_language_scanner.l" +#line 2033 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG_WITH_ECHO; } -#line 1785 "Zend/zend_language_scanner.c" +#line 1787 "Zend/zend_language_scanner.c" yy47: YYDEBUG(47, *YYCURSOR); yych = *++YYCURSOR; @@ -1808,14 +1810,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2049 "Zend/zend_language_scanner.l" +#line 2051 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1819 "Zend/zend_language_scanner.c" +#line 1821 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; @@ -1886,7 +1888,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy56: YYDEBUG(56, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2511 "Zend/zend_language_scanner.l" +#line 2513 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1927,7 +1929,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 1931 "Zend/zend_language_scanner.c" +#line 1933 "Zend/zend_language_scanner.c" yy57: YYDEBUG(57, *YYCURSOR); yych = *++YYCURSOR; @@ -1938,12 +1940,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(59, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2455 "Zend/zend_language_scanner.l" +#line 2457 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '`'; } -#line 1947 "Zend/zend_language_scanner.c" +#line 1949 "Zend/zend_language_scanner.c" yy60: YYDEBUG(60, *YYCURSOR); yych = *++YYCURSOR; @@ -1953,14 +1955,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(62, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2442 "Zend/zend_language_scanner.l" +#line 2444 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 1964 "Zend/zend_language_scanner.c" +#line 1966 "Zend/zend_language_scanner.c" yy63: YYDEBUG(63, *YYCURSOR); yyaccept = 0; @@ -1976,24 +1978,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy65: YYDEBUG(65, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2149 "Zend/zend_language_scanner.l" +#line 2151 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1986 "Zend/zend_language_scanner.c" +#line 1988 "Zend/zend_language_scanner.c" yy66: YYDEBUG(66, *YYCURSOR); ++YYCURSOR; YYDEBUG(67, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1784 "Zend/zend_language_scanner.l" +#line 1786 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 1997 "Zend/zend_language_scanner.c" +#line 1999 "Zend/zend_language_scanner.c" yy68: YYDEBUG(68, *YYCURSOR); yych = *++YYCURSOR; @@ -2007,7 +2009,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(71, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2141 "Zend/zend_language_scanner.l" +#line 2143 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2015,7 +2017,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2019 "Zend/zend_language_scanner.c" +#line 2021 "Zend/zend_language_scanner.c" yy72: YYDEBUG(72, *YYCURSOR); yych = *++YYCURSOR; @@ -2033,7 +2035,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(74, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2131 "Zend/zend_language_scanner.l" +#line 2133 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2041,7 +2043,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2045 "Zend/zend_language_scanner.c" +#line 2047 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -2109,7 +2111,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy78: YYDEBUG(78, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2461 "Zend/zend_language_scanner.l" +#line 2463 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -2158,7 +2160,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2162 "Zend/zend_language_scanner.c" +#line 2164 "Zend/zend_language_scanner.c" yy79: YYDEBUG(79, *YYCURSOR); yych = *++YYCURSOR; @@ -2169,12 +2171,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2450 "Zend/zend_language_scanner.l" +#line 2452 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '"'; } -#line 2178 "Zend/zend_language_scanner.c" +#line 2180 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2184,14 +2186,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2442 "Zend/zend_language_scanner.l" +#line 2444 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 2195 "Zend/zend_language_scanner.c" +#line 2197 "Zend/zend_language_scanner.c" yy85: YYDEBUG(85, *YYCURSOR); yyaccept = 0; @@ -2207,24 +2209,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy87: YYDEBUG(87, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2149 "Zend/zend_language_scanner.l" +#line 2151 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2217 "Zend/zend_language_scanner.c" +#line 2219 "Zend/zend_language_scanner.c" yy88: YYDEBUG(88, *YYCURSOR); ++YYCURSOR; YYDEBUG(89, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1784 "Zend/zend_language_scanner.l" +#line 1786 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2228 "Zend/zend_language_scanner.c" +#line 2230 "Zend/zend_language_scanner.c" yy90: YYDEBUG(90, *YYCURSOR); yych = *++YYCURSOR; @@ -2238,7 +2240,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2141 "Zend/zend_language_scanner.l" +#line 2143 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2246,7 +2248,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2250 "Zend/zend_language_scanner.c" +#line 2252 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); yych = *++YYCURSOR; @@ -2264,7 +2266,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(96, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2131 "Zend/zend_language_scanner.l" +#line 2133 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2272,7 +2274,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2276 "Zend/zend_language_scanner.c" +#line 2278 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -2283,7 +2285,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(100, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2428 "Zend/zend_language_scanner.l" +#line 2430 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -2296,7 +2298,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) BEGIN(ST_IN_SCRIPTING); return T_END_HEREDOC; } -#line 2300 "Zend/zend_language_scanner.c" +#line 2302 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -2358,7 +2360,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy104: YYDEBUG(104, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2553 "Zend/zend_language_scanner.l" +#line 2555 "Zend/zend_language_scanner.l" { int newline = 0; @@ -2431,7 +2433,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0 TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2435 "Zend/zend_language_scanner.c" +#line 2437 "Zend/zend_language_scanner.c" yy105: YYDEBUG(105, *YYCURSOR); yych = *++YYCURSOR; @@ -2446,14 +2448,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2442 "Zend/zend_language_scanner.l" +#line 2444 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 2457 "Zend/zend_language_scanner.c" +#line 2459 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 0; @@ -2469,24 +2471,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy111: YYDEBUG(111, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2149 "Zend/zend_language_scanner.l" +#line 2151 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2479 "Zend/zend_language_scanner.c" +#line 2481 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); ++YYCURSOR; YYDEBUG(113, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1784 "Zend/zend_language_scanner.l" +#line 1786 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2490 "Zend/zend_language_scanner.c" +#line 2492 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); yych = *++YYCURSOR; @@ -2500,7 +2502,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(117, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2141 "Zend/zend_language_scanner.l" +#line 2143 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2508,7 +2510,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2512 "Zend/zend_language_scanner.c" +#line 2514 "Zend/zend_language_scanner.c" yy118: YYDEBUG(118, *YYCURSOR); yych = *++YYCURSOR; @@ -2526,7 +2528,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2131 "Zend/zend_language_scanner.l" +#line 2133 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2534,7 +2536,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2538 "Zend/zend_language_scanner.c" +#line 2540 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2717,13 +2719,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy124: YYDEBUG(124, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2172 "Zend/zend_language_scanner.l" +#line 2174 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 2727 "Zend/zend_language_scanner.c" +#line 2729 "Zend/zend_language_scanner.c" yy125: YYDEBUG(125, *YYCURSOR); yych = *++YYCURSOR; @@ -2955,11 +2957,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy139: YYDEBUG(139, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1773 "Zend/zend_language_scanner.l" +#line 1775 "Zend/zend_language_scanner.l" { return yytext[0]; } -#line 2963 "Zend/zend_language_scanner.c" +#line 2965 "Zend/zend_language_scanner.c" yy140: YYDEBUG(140, *YYCURSOR); ++YYCURSOR; @@ -2968,13 +2970,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy141: YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1506 "Zend/zend_language_scanner.l" +#line 1508 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 2978 "Zend/zend_language_scanner.c" +#line 2980 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); yych = *++YYCURSOR; @@ -2985,11 +2987,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(144, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1533 "Zend/zend_language_scanner.l" +#line 1535 "Zend/zend_language_scanner.l" { return T_NS_SEPARATOR; } -#line 2993 "Zend/zend_language_scanner.c" +#line 2995 "Zend/zend_language_scanner.c" yy145: YYDEBUG(145, *YYCURSOR); yych = *++YYCURSOR; @@ -3217,25 +3219,25 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1778 "Zend/zend_language_scanner.l" +#line 1780 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return '{'; } -#line 3226 "Zend/zend_language_scanner.c" +#line 3228 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; YYDEBUG(171, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1790 "Zend/zend_language_scanner.l" +#line 1792 "Zend/zend_language_scanner.l" { if (!zend_stack_is_empty(&SCNG(state_stack))) { yy_pop_state(TSRMLS_C); } return '}'; } -#line 3239 "Zend/zend_language_scanner.c" +#line 3241 "Zend/zend_language_scanner.c" yy172: YYDEBUG(172, *YYCURSOR); yyaccept = 2; @@ -3263,7 +3265,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy173: YYDEBUG(173, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1839 "Zend/zend_language_scanner.l" +#line 1841 "Zend/zend_language_scanner.l" { if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0); @@ -3284,7 +3286,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_LONG; return T_LNUMBER; } -#line 3288 "Zend/zend_language_scanner.c" +#line 3290 "Zend/zend_language_scanner.c" yy174: YYDEBUG(174, *YYCURSOR); yyaccept = 2; @@ -3312,7 +3314,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy177: YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2179 "Zend/zend_language_scanner.l" +#line 2181 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -3346,14 +3348,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_COMMENT; } -#line 3350 "Zend/zend_language_scanner.c" +#line 3352 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; yy179: YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2265 "Zend/zend_language_scanner.l" +#line 2267 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -3419,14 +3421,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_CONSTANT_ENCAPSED_STRING; } -#line 3423 "Zend/zend_language_scanner.c" +#line 3425 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; yy181: YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2332 "Zend/zend_language_scanner.l" +#line 2334 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3467,24 +3469,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) BEGIN(ST_DOUBLE_QUOTES); return '"'; } -#line 3471 "Zend/zend_language_scanner.c" +#line 3473 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2422 "Zend/zend_language_scanner.l" +#line 2424 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); return '`'; } -#line 3482 "Zend/zend_language_scanner.c" +#line 3484 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2685 "Zend/zend_language_scanner.l" +#line 2687 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -3493,7 +3495,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3497 "Zend/zend_language_scanner.c" +#line 3499 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3520,12 +3522,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy190: YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1898 "Zend/zend_language_scanner.l" +#line 1900 "Zend/zend_language_scanner.l" { ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL)); return T_DNUMBER; } -#line 3529 "Zend/zend_language_scanner.c" +#line 3531 "Zend/zend_language_scanner.c" yy191: YYDEBUG(191, *YYCURSOR); yyaccept = 2; @@ -3617,7 +3619,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(202, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1815 "Zend/zend_language_scanner.l" +#line 1817 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3641,7 +3643,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_DNUMBER; } } -#line 3645 "Zend/zend_language_scanner.c" +#line 3647 "Zend/zend_language_scanner.c" yy203: YYDEBUG(203, *YYCURSOR); ++YYCURSOR; @@ -3653,7 +3655,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1860 "Zend/zend_language_scanner.l" +#line 1862 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3677,7 +3679,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_DNUMBER; } } -#line 3681 "Zend/zend_language_scanner.c" +#line 3683 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; @@ -3686,13 +3688,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy207: YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2246 "Zend/zend_language_scanner.l" +#line 2248 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ BEGIN(INITIAL); return T_CLOSE_TAG; /* implicit ';' at php-end tag */ } -#line 3696 "Zend/zend_language_scanner.c" +#line 3698 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); yych = *++YYCURSOR; @@ -3726,13 +3728,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy212: YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2149 "Zend/zend_language_scanner.l" +#line 2151 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 3736 "Zend/zend_language_scanner.c" +#line 3738 "Zend/zend_language_scanner.c" yy213: YYDEBUG(213, *YYCURSOR); yych = *++YYCURSOR; @@ -3746,11 +3748,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1761 "Zend/zend_language_scanner.l" +#line 1763 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_XOR) } -#line 3754 "Zend/zend_language_scanner.c" +#line 3756 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3759,61 +3761,61 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1753 "Zend/zend_language_scanner.l" +#line 1755 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_OR) } -#line 3767 "Zend/zend_language_scanner.c" +#line 3769 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1741 "Zend/zend_language_scanner.l" +#line 1743 "Zend/zend_language_scanner.l" { return T_XOR_EQUAL; } -#line 3777 "Zend/zend_language_scanner.c" +#line 3779 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; YYDEBUG(221, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1745 "Zend/zend_language_scanner.l" +#line 1747 "Zend/zend_language_scanner.l" { return T_BOOLEAN_OR; } -#line 3787 "Zend/zend_language_scanner.c" +#line 3789 "Zend/zend_language_scanner.c" yy222: YYDEBUG(222, *YYCURSOR); ++YYCURSOR; YYDEBUG(223, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1737 "Zend/zend_language_scanner.l" +#line 1739 "Zend/zend_language_scanner.l" { return T_OR_EQUAL; } -#line 3797 "Zend/zend_language_scanner.c" +#line 3799 "Zend/zend_language_scanner.c" yy224: YYDEBUG(224, *YYCURSOR); ++YYCURSOR; YYDEBUG(225, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1749 "Zend/zend_language_scanner.l" +#line 1751 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_BOOLEAN_AND) } -#line 3807 "Zend/zend_language_scanner.c" +#line 3809 "Zend/zend_language_scanner.c" yy226: YYDEBUG(226, *YYCURSOR); ++YYCURSOR; YYDEBUG(227, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1733 "Zend/zend_language_scanner.l" +#line 1735 "Zend/zend_language_scanner.l" { return T_AND_EQUAL; } -#line 3817 "Zend/zend_language_scanner.c" +#line 3819 "Zend/zend_language_scanner.c" yy228: YYDEBUG(228, *YYCURSOR); ++YYCURSOR; @@ -3822,7 +3824,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy229: YYDEBUG(229, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2253 "Zend/zend_language_scanner.l" +#line 2255 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { BEGIN(INITIAL); @@ -3833,17 +3835,17 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return yytext[0]; } } -#line 3837 "Zend/zend_language_scanner.c" +#line 3839 "Zend/zend_language_scanner.c" yy230: YYDEBUG(230, *YYCURSOR); ++YYCURSOR; YYDEBUG(231, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1721 "Zend/zend_language_scanner.l" +#line 1723 "Zend/zend_language_scanner.l" { return T_MOD_EQUAL; } -#line 3847 "Zend/zend_language_scanner.c" +#line 3849 "Zend/zend_language_scanner.c" yy232: YYDEBUG(232, *YYCURSOR); yych = *++YYCURSOR; @@ -3874,11 +3876,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(237, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1717 "Zend/zend_language_scanner.l" +#line 1719 "Zend/zend_language_scanner.l" { return T_CONCAT_EQUAL; } -#line 3882 "Zend/zend_language_scanner.c" +#line 3884 "Zend/zend_language_scanner.c" yy238: YYDEBUG(238, *YYCURSOR); yyaccept = 4; @@ -3887,7 +3889,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy239: YYDEBUG(239, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2213 "Zend/zend_language_scanner.l" +#line 2215 "Zend/zend_language_scanner.l" { int doc_com; @@ -3920,7 +3922,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_COMMENT; } -#line 3924 "Zend/zend_language_scanner.c" +#line 3926 "Zend/zend_language_scanner.c" yy240: YYDEBUG(240, *YYCURSOR); yych = *++YYCURSOR; @@ -3930,11 +3932,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(242, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1713 "Zend/zend_language_scanner.l" +#line 1715 "Zend/zend_language_scanner.l" { return T_DIV_EQUAL; } -#line 3938 "Zend/zend_language_scanner.c" +#line 3940 "Zend/zend_language_scanner.c" yy243: YYDEBUG(243, *YYCURSOR); yych = *++YYCURSOR; @@ -3957,42 +3959,42 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(247, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1709 "Zend/zend_language_scanner.l" +#line 1711 "Zend/zend_language_scanner.l" { return T_MUL_EQUAL; } -#line 3965 "Zend/zend_language_scanner.c" +#line 3967 "Zend/zend_language_scanner.c" yy248: YYDEBUG(248, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy252; YYDEBUG(249, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1769 "Zend/zend_language_scanner.l" +#line 1771 "Zend/zend_language_scanner.l" { return T_SR; } -#line 3976 "Zend/zend_language_scanner.c" +#line 3978 "Zend/zend_language_scanner.c" yy250: YYDEBUG(250, *YYCURSOR); ++YYCURSOR; YYDEBUG(251, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1697 "Zend/zend_language_scanner.l" +#line 1699 "Zend/zend_language_scanner.l" { return T_IS_GREATER_OR_EQUAL; } -#line 3986 "Zend/zend_language_scanner.c" +#line 3988 "Zend/zend_language_scanner.c" yy252: YYDEBUG(252, *YYCURSOR); ++YYCURSOR; YYDEBUG(253, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1729 "Zend/zend_language_scanner.l" +#line 1731 "Zend/zend_language_scanner.l" { return T_SR_EQUAL; } -#line 3996 "Zend/zend_language_scanner.c" +#line 3998 "Zend/zend_language_scanner.c" yy254: YYDEBUG(254, *YYCURSOR); yyaccept = 5; @@ -4003,11 +4005,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy255: YYDEBUG(255, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1765 "Zend/zend_language_scanner.l" +#line 1767 "Zend/zend_language_scanner.l" { return T_SL; } -#line 4011 "Zend/zend_language_scanner.c" +#line 4013 "Zend/zend_language_scanner.c" yy256: YYDEBUG(256, *YYCURSOR); yych = *++YYCURSOR; @@ -4019,22 +4021,22 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(258, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1693 "Zend/zend_language_scanner.l" +#line 1695 "Zend/zend_language_scanner.l" { return T_IS_SMALLER_OR_EQUAL; } -#line 4027 "Zend/zend_language_scanner.c" +#line 4029 "Zend/zend_language_scanner.c" yy259: YYDEBUG(259, *YYCURSOR); ++YYCURSOR; yy260: YYDEBUG(260, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1689 "Zend/zend_language_scanner.l" +#line 1691 "Zend/zend_language_scanner.l" { return T_IS_NOT_EQUAL; } -#line 4038 "Zend/zend_language_scanner.c" +#line 4040 "Zend/zend_language_scanner.c" yy261: YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; @@ -4085,11 +4087,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(269, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1725 "Zend/zend_language_scanner.l" +#line 1727 "Zend/zend_language_scanner.l" { return T_SL_EQUAL; } -#line 4093 "Zend/zend_language_scanner.c" +#line 4095 "Zend/zend_language_scanner.c" yy270: YYDEBUG(270, *YYCURSOR); ++YYCURSOR; @@ -4194,7 +4196,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy280: YYDEBUG(280, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2374 "Zend/zend_language_scanner.l" +#line 2376 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -4241,7 +4243,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_START_HEREDOC; } -#line 4245 "Zend/zend_language_scanner.c" +#line 4247 "Zend/zend_language_scanner.c" yy281: YYDEBUG(281, *YYCURSOR); yych = *++YYCURSOR; @@ -4281,31 +4283,31 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(286, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1681 "Zend/zend_language_scanner.l" +#line 1683 "Zend/zend_language_scanner.l" { return T_IS_NOT_IDENTICAL; } -#line 4289 "Zend/zend_language_scanner.c" +#line 4291 "Zend/zend_language_scanner.c" yy287: YYDEBUG(287, *YYCURSOR); ++YYCURSOR; YYDEBUG(288, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1701 "Zend/zend_language_scanner.l" +#line 1703 "Zend/zend_language_scanner.l" { return T_PLUS_EQUAL; } -#line 4299 "Zend/zend_language_scanner.c" +#line 4301 "Zend/zend_language_scanner.c" yy289: YYDEBUG(289, *YYCURSOR); ++YYCURSOR; YYDEBUG(290, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1669 "Zend/zend_language_scanner.l" +#line 1671 "Zend/zend_language_scanner.l" { return T_INC; } -#line 4309 "Zend/zend_language_scanner.c" +#line 4311 "Zend/zend_language_scanner.c" yy291: YYDEBUG(291, *YYCURSOR); yych = *++YYCURSOR; @@ -4324,42 +4326,42 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(294, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1657 "Zend/zend_language_scanner.l" +#line 1659 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LIST) } -#line 4332 "Zend/zend_language_scanner.c" +#line 4334 "Zend/zend_language_scanner.c" yy295: YYDEBUG(295, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy299; YYDEBUG(296, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1685 "Zend/zend_language_scanner.l" +#line 1687 "Zend/zend_language_scanner.l" { return T_IS_EQUAL; } -#line 4343 "Zend/zend_language_scanner.c" +#line 4345 "Zend/zend_language_scanner.c" yy297: YYDEBUG(297, *YYCURSOR); ++YYCURSOR; YYDEBUG(298, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1653 "Zend/zend_language_scanner.l" +#line 1655 "Zend/zend_language_scanner.l" { return T_DOUBLE_ARROW; } -#line 4353 "Zend/zend_language_scanner.c" +#line 4355 "Zend/zend_language_scanner.c" yy299: YYDEBUG(299, *YYCURSOR); ++YYCURSOR; YYDEBUG(300, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1677 "Zend/zend_language_scanner.l" +#line 1679 "Zend/zend_language_scanner.l" { return T_IS_IDENTICAL; } -#line 4363 "Zend/zend_language_scanner.c" +#line 4365 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4489,7 +4491,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(320, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1994 "Zend/zend_language_scanner.l" +#line 1996 "Zend/zend_language_scanner.l" { if (CG(current_namespace)) { *zendlval = *CG(current_namespace); @@ -4499,7 +4501,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_NS_C; } -#line 4503 "Zend/zend_language_scanner.c" +#line 4505 "Zend/zend_language_scanner.c" yy321: YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; @@ -4519,7 +4521,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(325, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1969 "Zend/zend_language_scanner.l" +#line 1971 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); const size_t filename_len = strlen(filename); @@ -4544,7 +4546,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ZVAL_STRING(zendlval, dirname, 0); return T_DIR; } -#line 4548 "Zend/zend_language_scanner.c" +#line 4550 "Zend/zend_language_scanner.c" yy326: YYDEBUG(326, *YYCURSOR); yych = *++YYCURSOR; @@ -4569,12 +4571,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(331, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1954 "Zend/zend_language_scanner.l" +#line 1956 "Zend/zend_language_scanner.l" { ZVAL_LONG(zendlval, CG(zend_lineno)); return T_LINE; } -#line 4578 "Zend/zend_language_scanner.c" +#line 4580 "Zend/zend_language_scanner.c" yy332: YYDEBUG(332, *YYCURSOR); yych = *++YYCURSOR; @@ -4609,7 +4611,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(339, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1941 "Zend/zend_language_scanner.l" +#line 1943 "Zend/zend_language_scanner.l" { const char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL; const char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL; @@ -4622,7 +4624,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_METHOD_C; } -#line 4626 "Zend/zend_language_scanner.c" +#line 4628 "Zend/zend_language_scanner.c" yy340: YYDEBUG(340, *YYCURSOR); yych = *++YYCURSOR; @@ -4673,7 +4675,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(350, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1931 "Zend/zend_language_scanner.l" +#line 1933 "Zend/zend_language_scanner.l" { zend_op_array *op_array = CG(active_op_array); if (op_array && op_array->function_name) { @@ -4683,7 +4685,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_FUNC_C; } -#line 4687 "Zend/zend_language_scanner.c" +#line 4689 "Zend/zend_language_scanner.c" yy351: YYDEBUG(351, *YYCURSOR); yych = *++YYCURSOR; @@ -4703,7 +4705,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(355, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1959 "Zend/zend_language_scanner.l" +#line 1961 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); @@ -4713,7 +4715,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ZVAL_STRING(zendlval, filename, 1); return T_FILE; } -#line 4717 "Zend/zend_language_scanner.c" +#line 4719 "Zend/zend_language_scanner.c" yy356: YYDEBUG(356, *YYCURSOR); yych = *++YYCURSOR; @@ -4743,7 +4745,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(362, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1921 "Zend/zend_language_scanner.l" +#line 1923 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ce->name && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4753,7 +4755,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_TRAIT_C; } -#line 4757 "Zend/zend_language_scanner.c" +#line 4759 "Zend/zend_language_scanner.c" yy363: YYDEBUG(363, *YYCURSOR); yych = *++YYCURSOR; @@ -4783,7 +4785,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(369, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1903 "Zend/zend_language_scanner.l" +#line 1905 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4801,7 +4803,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_CLASS_C; } -#line 4805 "Zend/zend_language_scanner.c" +#line 4807 "Zend/zend_language_scanner.c" yy370: YYDEBUG(370, *YYCURSOR); yych = *++YYCURSOR; @@ -4863,11 +4865,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(382, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1621 "Zend/zend_language_scanner.l" +#line 1623 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_HALT_COMPILER) } -#line 4871 "Zend/zend_language_scanner.c" +#line 4873 "Zend/zend_language_scanner.c" yy383: YYDEBUG(383, *YYCURSOR); yych = *++YYCURSOR; @@ -4887,11 +4889,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(386, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1601 "Zend/zend_language_scanner.l" +#line 1603 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_USE) } -#line 4895 "Zend/zend_language_scanner.c" +#line 4897 "Zend/zend_language_scanner.c" yy387: YYDEBUG(387, *YYCURSOR); yych = *++YYCURSOR; @@ -4910,11 +4912,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(390, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1649 "Zend/zend_language_scanner.l" +#line 1651 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_UNSET) } -#line 4918 "Zend/zend_language_scanner.c" +#line 4920 "Zend/zend_language_scanner.c" yy391: YYDEBUG(391, *YYCURSOR); ++YYCURSOR; @@ -5086,11 +5088,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(408, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1549 "Zend/zend_language_scanner.l" +#line 1551 "Zend/zend_language_scanner.l" { return T_INT_CAST; } -#line 5094 "Zend/zend_language_scanner.c" +#line 5096 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -5134,11 +5136,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(417, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1553 "Zend/zend_language_scanner.l" +#line 1555 "Zend/zend_language_scanner.l" { return T_DOUBLE_CAST; } -#line 5142 "Zend/zend_language_scanner.c" +#line 5144 "Zend/zend_language_scanner.c" yy418: YYDEBUG(418, *YYCURSOR); yych = *++YYCURSOR; @@ -5208,11 +5210,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1557 "Zend/zend_language_scanner.l" +#line 1559 "Zend/zend_language_scanner.l" { return T_STRING_CAST; } -#line 5216 "Zend/zend_language_scanner.c" +#line 5218 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); yych = *++YYCURSOR; @@ -5245,11 +5247,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(438, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1561 "Zend/zend_language_scanner.l" +#line 1563 "Zend/zend_language_scanner.l" { return T_ARRAY_CAST; } -#line 5253 "Zend/zend_language_scanner.c" +#line 5255 "Zend/zend_language_scanner.c" yy439: YYDEBUG(439, *YYCURSOR); yych = *++YYCURSOR; @@ -5287,11 +5289,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(446, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1565 "Zend/zend_language_scanner.l" +#line 1567 "Zend/zend_language_scanner.l" { return T_OBJECT_CAST; } -#line 5295 "Zend/zend_language_scanner.c" +#line 5297 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); yych = *++YYCURSOR; @@ -5332,11 +5334,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(454, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1569 "Zend/zend_language_scanner.l" +#line 1571 "Zend/zend_language_scanner.l" { return T_BOOL_CAST; } -#line 5340 "Zend/zend_language_scanner.c" +#line 5342 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5396,11 +5398,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(466, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1573 "Zend/zend_language_scanner.l" +#line 1575 "Zend/zend_language_scanner.l" { return T_UNSET_CAST; } -#line 5404 "Zend/zend_language_scanner.c" +#line 5406 "Zend/zend_language_scanner.c" yy467: YYDEBUG(467, *YYCURSOR); yych = *++YYCURSOR; @@ -5414,11 +5416,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(469, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1545 "Zend/zend_language_scanner.l" +#line 1547 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_VAR) } -#line 5422 "Zend/zend_language_scanner.c" +#line 5424 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; @@ -5438,11 +5440,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(473, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1537 "Zend/zend_language_scanner.l" +#line 1539 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_NEW) } -#line 5446 "Zend/zend_language_scanner.c" +#line 5448 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5481,21 +5483,21 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(481, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1597 "Zend/zend_language_scanner.l" +#line 1599 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_NAMESPACE) } -#line 5489 "Zend/zend_language_scanner.c" +#line 5491 "Zend/zend_language_scanner.c" yy482: YYDEBUG(482, *YYCURSOR); ++YYCURSOR; YYDEBUG(483, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1529 "Zend/zend_language_scanner.l" +#line 1531 "Zend/zend_language_scanner.l" { return T_PAAMAYIM_NEKUDOTAYIM; } -#line 5499 "Zend/zend_language_scanner.c" +#line 5501 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); ++YYCURSOR; @@ -5517,32 +5519,32 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(487, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1705 "Zend/zend_language_scanner.l" +#line 1707 "Zend/zend_language_scanner.l" { return T_MINUS_EQUAL; } -#line 5525 "Zend/zend_language_scanner.c" +#line 5527 "Zend/zend_language_scanner.c" yy488: YYDEBUG(488, *YYCURSOR); ++YYCURSOR; YYDEBUG(489, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1673 "Zend/zend_language_scanner.l" +#line 1675 "Zend/zend_language_scanner.l" { return T_DEC; } -#line 5535 "Zend/zend_language_scanner.c" +#line 5537 "Zend/zend_language_scanner.c" yy490: YYDEBUG(490, *YYCURSOR); ++YYCURSOR; YYDEBUG(491, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1501 "Zend/zend_language_scanner.l" +#line 1503 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); return T_OBJECT_OPERATOR; } -#line 5546 "Zend/zend_language_scanner.c" +#line 5548 "Zend/zend_language_scanner.c" yy492: YYDEBUG(492, *YYCURSOR); yych = *++YYCURSOR; @@ -5587,11 +5589,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(498, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1645 "Zend/zend_language_scanner.l" +#line 1647 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PUBLIC) } -#line 5595 "Zend/zend_language_scanner.c" +#line 5597 "Zend/zend_language_scanner.c" yy499: YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; @@ -5646,11 +5648,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(507, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1641 "Zend/zend_language_scanner.l" +#line 1643 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PROTECTED) } -#line 5654 "Zend/zend_language_scanner.c" +#line 5656 "Zend/zend_language_scanner.c" yy508: YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; @@ -5680,11 +5682,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(513, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1637 "Zend/zend_language_scanner.l" +#line 1639 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PRIVATE) } -#line 5688 "Zend/zend_language_scanner.c" +#line 5690 "Zend/zend_language_scanner.c" yy514: YYDEBUG(514, *YYCURSOR); ++YYCURSOR; @@ -5693,11 +5695,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(515, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1477 "Zend/zend_language_scanner.l" +#line 1479 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PRINT) } -#line 5701 "Zend/zend_language_scanner.c" +#line 5703 "Zend/zend_language_scanner.c" yy516: YYDEBUG(516, *YYCURSOR); yych = *++YYCURSOR; @@ -5722,11 +5724,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1469 "Zend/zend_language_scanner.l" +#line 1471 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_GOTO) } -#line 5730 "Zend/zend_language_scanner.c" +#line 5732 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5750,11 +5752,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(525, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1609 "Zend/zend_language_scanner.l" +#line 1611 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_GLOBAL) } -#line 5758 "Zend/zend_language_scanner.c" +#line 5760 "Zend/zend_language_scanner.c" yy526: YYDEBUG(526, *YYCURSOR); yych = *++YYCURSOR; @@ -5791,11 +5793,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(533, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1461 "Zend/zend_language_scanner.l" +#line 1463 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_BREAK) } -#line 5799 "Zend/zend_language_scanner.c" +#line 5801 "Zend/zend_language_scanner.c" yy534: YYDEBUG(534, *YYCURSOR); yych = *++YYCURSOR; @@ -5835,11 +5837,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(541, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1445 "Zend/zend_language_scanner.l" +#line 1447 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_SWITCH) } -#line 5843 "Zend/zend_language_scanner.c" +#line 5845 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5863,11 +5865,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(546, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1625 "Zend/zend_language_scanner.l" +#line 1627 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_STATIC) } -#line 5871 "Zend/zend_language_scanner.c" +#line 5873 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5894,11 +5896,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(551, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1441 "Zend/zend_language_scanner.l" +#line 1443 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_AS) } -#line 5902 "Zend/zend_language_scanner.c" +#line 5904 "Zend/zend_language_scanner.c" yy552: YYDEBUG(552, *YYCURSOR); yych = *++YYCURSOR; @@ -5917,11 +5919,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(555, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1661 "Zend/zend_language_scanner.l" +#line 1663 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ARRAY) } -#line 5925 "Zend/zend_language_scanner.c" +#line 5927 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); ++YYCURSOR; @@ -5930,11 +5932,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(557, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1757 "Zend/zend_language_scanner.l" +#line 1759 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_AND) } -#line 5938 "Zend/zend_language_scanner.c" +#line 5940 "Zend/zend_language_scanner.c" yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; @@ -5968,11 +5970,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(564, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1629 "Zend/zend_language_scanner.l" +#line 1631 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ABSTRACT) } -#line 5976 "Zend/zend_language_scanner.c" +#line 5978 "Zend/zend_language_scanner.c" yy565: YYDEBUG(565, *YYCURSOR); yych = *++YYCURSOR; @@ -5996,11 +5998,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(569, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1401 "Zend/zend_language_scanner.l" +#line 1403 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_WHILE) } -#line 6004 "Zend/zend_language_scanner.c" +#line 6006 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); ++YYCURSOR; @@ -6009,11 +6011,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(571, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1385 "Zend/zend_language_scanner.l" +#line 1387 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_IF) } -#line 6017 "Zend/zend_language_scanner.c" +#line 6019 "Zend/zend_language_scanner.c" yy572: YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; @@ -6065,11 +6067,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(578, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1613 "Zend/zend_language_scanner.l" +#line 1615 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ISSET) } -#line 6073 "Zend/zend_language_scanner.c" +#line 6075 "Zend/zend_language_scanner.c" yy579: YYDEBUG(579, *YYCURSOR); yych = *++YYCURSOR; @@ -6123,11 +6125,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy586: YYDEBUG(586, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1581 "Zend/zend_language_scanner.l" +#line 1583 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INCLUDE) } -#line 6131 "Zend/zend_language_scanner.c" +#line 6133 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -6156,11 +6158,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(592, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1585 "Zend/zend_language_scanner.l" +#line 1587 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INCLUDE_ONCE) } -#line 6164 "Zend/zend_language_scanner.c" +#line 6166 "Zend/zend_language_scanner.c" yy593: YYDEBUG(593, *YYCURSOR); yych = *++YYCURSOR; @@ -6194,11 +6196,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(599, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1485 "Zend/zend_language_scanner.l" +#line 1487 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INTERFACE) } -#line 6202 "Zend/zend_language_scanner.c" +#line 6204 "Zend/zend_language_scanner.c" yy600: YYDEBUG(600, *YYCURSOR); yych = *++YYCURSOR; @@ -6248,11 +6250,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(607, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1605 "Zend/zend_language_scanner.l" +#line 1607 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INSTEADOF) } -#line 6256 "Zend/zend_language_scanner.c" +#line 6258 "Zend/zend_language_scanner.c" yy608: YYDEBUG(608, *YYCURSOR); yych = *++YYCURSOR; @@ -6281,11 +6283,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(613, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1437 "Zend/zend_language_scanner.l" +#line 1439 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INSTANCEOF) } -#line 6289 "Zend/zend_language_scanner.c" +#line 6291 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6329,11 +6331,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(622, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1497 "Zend/zend_language_scanner.l" +#line 1499 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_IMPLEMENTS) } -#line 6337 "Zend/zend_language_scanner.c" +#line 6339 "Zend/zend_language_scanner.c" yy623: YYDEBUG(623, *YYCURSOR); yych = *++YYCURSOR; @@ -6361,11 +6363,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(626, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1369 "Zend/zend_language_scanner.l" +#line 1371 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_TRY) } -#line 6369 "Zend/zend_language_scanner.c" +#line 6371 "Zend/zend_language_scanner.c" yy627: YYDEBUG(627, *YYCURSOR); yych = *++YYCURSOR; @@ -6384,11 +6386,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(630, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1489 "Zend/zend_language_scanner.l" +#line 1491 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_TRAIT) } -#line 6392 "Zend/zend_language_scanner.c" +#line 6394 "Zend/zend_language_scanner.c" yy631: YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; @@ -6407,11 +6409,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(634, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1381 "Zend/zend_language_scanner.l" +#line 1383 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_THROW) } -#line 6415 "Zend/zend_language_scanner.c" +#line 6417 "Zend/zend_language_scanner.c" yy635: YYDEBUG(635, *YYCURSOR); yych = *++YYCURSOR; @@ -6435,11 +6437,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(639, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1365 "Zend/zend_language_scanner.l" +#line 1367 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_YIELD) } -#line 6443 "Zend/zend_language_scanner.c" +#line 6445 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); yych = *++YYCURSOR; @@ -6500,11 +6502,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy647: YYDEBUG(647, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1589 "Zend/zend_language_scanner.l" +#line 1591 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_REQUIRE) } -#line 6508 "Zend/zend_language_scanner.c" +#line 6510 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6533,11 +6535,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(653, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1593 "Zend/zend_language_scanner.l" +#line 1595 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_REQUIRE_ONCE) } -#line 6541 "Zend/zend_language_scanner.c" +#line 6543 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; @@ -6556,11 +6558,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(657, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1361 "Zend/zend_language_scanner.l" +#line 1363 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_RETURN) } -#line 6564 "Zend/zend_language_scanner.c" +#line 6566 "Zend/zend_language_scanner.c" yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; @@ -6650,11 +6652,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(668, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1465 "Zend/zend_language_scanner.l" +#line 1467 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CONTINUE) } -#line 6658 "Zend/zend_language_scanner.c" +#line 6660 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); ++YYCURSOR; @@ -6663,11 +6665,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1357 "Zend/zend_language_scanner.l" +#line 1359 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CONST) } -#line 6671 "Zend/zend_language_scanner.c" +#line 6673 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6692,11 +6694,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1541 "Zend/zend_language_scanner.l" +#line 1543 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CLONE) } -#line 6700 "Zend/zend_language_scanner.c" +#line 6702 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6710,11 +6712,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(678, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1481 "Zend/zend_language_scanner.l" +#line 1483 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CLASS) } -#line 6718 "Zend/zend_language_scanner.c" +#line 6720 "Zend/zend_language_scanner.c" yy679: YYDEBUG(679, *YYCURSOR); yych = *++YYCURSOR; @@ -6760,11 +6762,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(687, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1665 "Zend/zend_language_scanner.l" +#line 1667 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CALLABLE) } -#line 6768 "Zend/zend_language_scanner.c" +#line 6770 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); ++YYCURSOR; @@ -6773,11 +6775,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(689, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1453 "Zend/zend_language_scanner.l" +#line 1455 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CASE) } -#line 6781 "Zend/zend_language_scanner.c" +#line 6783 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); yych = *++YYCURSOR; @@ -6791,11 +6793,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(692, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1373 "Zend/zend_language_scanner.l" +#line 1375 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CATCH) } -#line 6799 "Zend/zend_language_scanner.c" +#line 6801 "Zend/zend_language_scanner.c" yy693: YYDEBUG(693, *YYCURSOR); yych = *++YYCURSOR; @@ -6846,11 +6848,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(702, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1353 "Zend/zend_language_scanner.l" +#line 1355 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FUNCTION) } -#line 6854 "Zend/zend_language_scanner.c" +#line 6856 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; @@ -6874,11 +6876,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy704: YYDEBUG(704, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1413 "Zend/zend_language_scanner.l" +#line 1415 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FOR) } -#line 6882 "Zend/zend_language_scanner.c" +#line 6884 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; @@ -6902,11 +6904,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(709, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1421 "Zend/zend_language_scanner.l" +#line 1423 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FOREACH) } -#line 6910 "Zend/zend_language_scanner.c" +#line 6912 "Zend/zend_language_scanner.c" yy710: YYDEBUG(710, *YYCURSOR); yych = *++YYCURSOR; @@ -6940,11 +6942,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy713: YYDEBUG(713, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1633 "Zend/zend_language_scanner.l" +#line 1635 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FINAL) } -#line 6948 "Zend/zend_language_scanner.c" +#line 6950 "Zend/zend_language_scanner.c" yy714: YYDEBUG(714, *YYCURSOR); yych = *++YYCURSOR; @@ -6958,11 +6960,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(716, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1377 "Zend/zend_language_scanner.l" +#line 1379 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FINALLY) } -#line 6966 "Zend/zend_language_scanner.c" +#line 6968 "Zend/zend_language_scanner.c" yy717: YYDEBUG(717, *YYCURSOR); yych = *++YYCURSOR; @@ -6993,11 +6995,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(720, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1409 "Zend/zend_language_scanner.l" +#line 1411 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DO) } -#line 7001 "Zend/zend_language_scanner.c" +#line 7003 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); ++YYCURSOR; @@ -7006,11 +7008,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(722, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1349 "Zend/zend_language_scanner.l" +#line 1351 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXIT) } -#line 7014 "Zend/zend_language_scanner.c" +#line 7016 "Zend/zend_language_scanner.c" yy723: YYDEBUG(723, *YYCURSOR); yych = *++YYCURSOR; @@ -7045,11 +7047,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(729, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1457 "Zend/zend_language_scanner.l" +#line 1459 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DEFAULT) } -#line 7053 "Zend/zend_language_scanner.c" +#line 7055 "Zend/zend_language_scanner.c" yy730: YYDEBUG(730, *YYCURSOR); yych = *++YYCURSOR; @@ -7073,11 +7075,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(734, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1429 "Zend/zend_language_scanner.l" +#line 1431 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DECLARE) } -#line 7081 "Zend/zend_language_scanner.c" +#line 7083 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -7157,11 +7159,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(747, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1493 "Zend/zend_language_scanner.l" +#line 1495 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXTENDS) } -#line 7165 "Zend/zend_language_scanner.c" +#line 7167 "Zend/zend_language_scanner.c" yy748: YYDEBUG(748, *YYCURSOR); ++YYCURSOR; @@ -7170,11 +7172,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(749, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1345 "Zend/zend_language_scanner.l" +#line 1347 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXIT) } -#line 7178 "Zend/zend_language_scanner.c" +#line 7180 "Zend/zend_language_scanner.c" yy750: YYDEBUG(750, *YYCURSOR); yych = *++YYCURSOR; @@ -7188,11 +7190,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(752, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1577 "Zend/zend_language_scanner.l" +#line 1579 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EVAL) } -#line 7196 "Zend/zend_language_scanner.c" +#line 7198 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7262,11 +7264,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(763, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1405 "Zend/zend_language_scanner.l" +#line 1407 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDWHILE) } -#line 7270 "Zend/zend_language_scanner.c" +#line 7272 "Zend/zend_language_scanner.c" yy764: YYDEBUG(764, *YYCURSOR); yych = *++YYCURSOR; @@ -7295,11 +7297,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1449 "Zend/zend_language_scanner.l" +#line 1451 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDSWITCH) } -#line 7303 "Zend/zend_language_scanner.c" +#line 7305 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7308,11 +7310,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(771, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1393 "Zend/zend_language_scanner.l" +#line 1395 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDIF) } -#line 7316 "Zend/zend_language_scanner.c" +#line 7318 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); yych = *++YYCURSOR; @@ -7341,11 +7343,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy774: YYDEBUG(774, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1417 "Zend/zend_language_scanner.l" +#line 1419 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDFOR) } -#line 7349 "Zend/zend_language_scanner.c" +#line 7351 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); yych = *++YYCURSOR; @@ -7369,11 +7371,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(779, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1425 "Zend/zend_language_scanner.l" +#line 1427 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDFOREACH) } -#line 7377 "Zend/zend_language_scanner.c" +#line 7379 "Zend/zend_language_scanner.c" yy780: YYDEBUG(780, *YYCURSOR); yych = *++YYCURSOR; @@ -7407,11 +7409,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(786, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1433 "Zend/zend_language_scanner.l" +#line 1435 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDDECLARE) } -#line 7415 "Zend/zend_language_scanner.c" +#line 7417 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); yych = *++YYCURSOR; @@ -7430,11 +7432,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(790, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1617 "Zend/zend_language_scanner.l" +#line 1619 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EMPTY) } -#line 7438 "Zend/zend_language_scanner.c" +#line 7440 "Zend/zend_language_scanner.c" yy791: YYDEBUG(791, *YYCURSOR); yych = *++YYCURSOR; @@ -7463,11 +7465,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy793: YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1397 "Zend/zend_language_scanner.l" +#line 1399 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ELSE) } -#line 7471 "Zend/zend_language_scanner.c" +#line 7473 "Zend/zend_language_scanner.c" yy794: YYDEBUG(794, *YYCURSOR); yych = *++YYCURSOR; @@ -7481,11 +7483,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(796, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1389 "Zend/zend_language_scanner.l" +#line 1391 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ELSEIF) } -#line 7489 "Zend/zend_language_scanner.c" +#line 7491 "Zend/zend_language_scanner.c" yy797: YYDEBUG(797, *YYCURSOR); yych = *++YYCURSOR; @@ -7499,11 +7501,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1473 "Zend/zend_language_scanner.l" +#line 1475 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ECHO) } -#line 7507 "Zend/zend_language_scanner.c" +#line 7509 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7576,13 +7578,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1506 "Zend/zend_language_scanner.l" +#line 1508 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 7586 "Zend/zend_language_scanner.c" +#line 7588 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7590,13 +7592,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy805: YYDEBUG(805, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1523 "Zend/zend_language_scanner.l" +#line 1525 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); goto restart; } -#line 7600 "Zend/zend_language_scanner.c" +#line 7602 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); ++YYCURSOR; @@ -7605,14 +7607,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy807: YYDEBUG(807, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1516 "Zend/zend_language_scanner.l" +#line 1518 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 7616 "Zend/zend_language_scanner.c" +#line 7618 "Zend/zend_language_scanner.c" yy808: YYDEBUG(808, *YYCURSOR); yych = *++YYCURSOR; @@ -7633,11 +7635,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(812, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1512 "Zend/zend_language_scanner.l" +#line 1514 "Zend/zend_language_scanner.l" { return T_OBJECT_OPERATOR; } -#line 7641 "Zend/zend_language_scanner.c" +#line 7643 "Zend/zend_language_scanner.c" yy813: YYDEBUG(813, *YYCURSOR); ++YYCURSOR; @@ -7722,14 +7724,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy818: YYDEBUG(818, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1808 "Zend/zend_language_scanner.l" +#line 1810 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); goto restart; } -#line 7733 "Zend/zend_language_scanner.c" +#line 7735 "Zend/zend_language_scanner.c" yy819: YYDEBUG(819, *YYCURSOR); yych = *++YYCURSOR; @@ -7754,7 +7756,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(824, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1798 "Zend/zend_language_scanner.l" +#line 1800 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); zend_copy_value(zendlval, yytext, yyleng); @@ -7763,7 +7765,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_STRING_VARNAME; } -#line 7767 "Zend/zend_language_scanner.c" +#line 7769 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7774,7 +7776,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(828, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2627 "Zend/zend_language_scanner.l" +#line 2629 "Zend/zend_language_scanner.l" { int newline = 0; @@ -7831,7 +7833,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) HANDLE_NEWLINES(yytext, yyleng - newline); return T_ENCAPSED_AND_WHITESPACE; } -#line 7835 "Zend/zend_language_scanner.c" +#line 7837 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7938,7 +7940,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy832: YYDEBUG(832, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1884 "Zend/zend_language_scanner.l" +#line 1886 "Zend/zend_language_scanner.l" { /* Offset could be treated as a long */ if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) { ZVAL_LONG(zendlval, strtol(yytext, NULL, 10)); @@ -7947,7 +7949,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_NUM_STRING; } -#line 7951 "Zend/zend_language_scanner.c" +#line 7953 "Zend/zend_language_scanner.c" yy833: YYDEBUG(833, *YYCURSOR); yych = *++YYCURSOR; @@ -7967,23 +7969,23 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy835: YYDEBUG(835, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2160 "Zend/zend_language_scanner.l" +#line 2162 "Zend/zend_language_scanner.l" { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -#line 7976 "Zend/zend_language_scanner.c" +#line 7978 "Zend/zend_language_scanner.c" yy836: YYDEBUG(836, *YYCURSOR); ++YYCURSOR; YYDEBUG(837, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2155 "Zend/zend_language_scanner.l" +#line 2157 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); return ']'; } -#line 7987 "Zend/zend_language_scanner.c" +#line 7989 "Zend/zend_language_scanner.c" yy838: YYDEBUG(838, *YYCURSOR); yych = *++YYCURSOR; @@ -7993,14 +7995,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(840, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2165 "Zend/zend_language_scanner.l" +#line 2167 "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 8004 "Zend/zend_language_scanner.c" +#line 8006 "Zend/zend_language_scanner.c" yy841: YYDEBUG(841, *YYCURSOR); ++YYCURSOR; @@ -8009,19 +8011,19 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy842: YYDEBUG(842, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2172 "Zend/zend_language_scanner.l" +#line 2174 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 8019 "Zend/zend_language_scanner.c" +#line 8021 "Zend/zend_language_scanner.c" yy843: YYDEBUG(843, *YYCURSOR); ++YYCURSOR; YYDEBUG(844, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2685 "Zend/zend_language_scanner.l" +#line 2687 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -8030,7 +8032,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 8034 "Zend/zend_language_scanner.c" +#line 8036 "Zend/zend_language_scanner.c" yy845: YYDEBUG(845, *YYCURSOR); ++YYCURSOR; @@ -8066,13 +8068,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy849: YYDEBUG(849, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2149 "Zend/zend_language_scanner.l" +#line 2151 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 8076 "Zend/zend_language_scanner.c" +#line 8078 "Zend/zend_language_scanner.c" yy850: YYDEBUG(850, *YYCURSOR); ++YYCURSOR; @@ -8112,12 +8114,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy857: YYDEBUG(857, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1893 "Zend/zend_language_scanner.l" +#line 1895 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng, 1); return T_NUM_STRING; } -#line 8121 "Zend/zend_language_scanner.c" +#line 8123 "Zend/zend_language_scanner.c" yy858: YYDEBUG(858, *YYCURSOR); ++YYCURSOR; @@ -8140,6 +8142,6 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto yy857; } } -#line 2694 "Zend/zend_language_scanner.l" +#line 2696 "Zend/zend_language_scanner.l" } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 1847e7694d8aa..59407c4d41777 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1018,7 +1018,7 @@ static zend_always_inline int lex_get_real_buf_offset(const int relpos) { } #define LEX_REL_BUF(relpos) \ - (CG(tokenbuffer)[lex_get_real_buf_offset(relpos)]) + (CG(tokenbuffer)[relpos==1?(one!=-1?one:lex_get_real_buf_offset(1)):(relpos==2?(two!=-1?two:lex_get_real_buf_offset(2)):lex_get_real_buf_offset(relpos))]) static zend_always_inline int lex_is_real_string_token(int token) { switch (token) { @@ -1069,7 +1069,7 @@ static zend_always_inline int lex_is_real_string_token(int token) { /* Doing it in parser also would make highlight_string() etc. look ugly when tokens are used as other tokens */ /* The real lexing step is done in lex_scan_ex */ int lex_scan(zval *zendlval) { - int retval; + int retval, one, two; if (CG(tokenbufptr) != -1) { if (CG(tokenbuffer)[CG(tokenbufptr)].token != -1) { @@ -1088,6 +1088,8 @@ again: goto leave; } if (retval) { + one = two = -1; + if (CG(tokenbufptr) >= CG(tokenbufsize) - 4) { CG(tokenbuffer) = erealloc(--CG(tokenbuffer), sizeof(token_buf) * ((CG(tokenbufsize) *= 2) + 1)); CG(tokenbuffer)++; @@ -1222,7 +1224,7 @@ again: /* Handling of T_HALT_COMPILER; might cause memory leaks if not handled */ if (LEX_REL_BUF(1).token == T_HALT_COMPILER && retval == '(') { LEX_BUF_ADD - } else if (LEX_REL_BUF(2).token == T_HALT_COMPILER && LEX_REL_BUF(1).token == '('&& retval == ')') { + } else if (LEX_REL_BUF(2).token == T_HALT_COMPILER && LEX_REL_BUF(1).token == '(' && retval == ')') { LEX_BUF_ADD } } @@ -1280,7 +1282,7 @@ again: } else { switch (retval) { case ';': - if (LEX_REL_BUF(3).token == T_HALT_COMPILER && LEX_REL_BUF(2).token == '(') { + if (LEX_REL_BUF(2).token == '(' && LEX_REL_BUF(3).token == T_HALT_COMPILER) { break; } case '&': From 370d424cd7fa5f97696036ca053d25f5703dc3c4 Mon Sep 17 00:00:00 2001 From: bwoebi Date: Sat, 5 Oct 2013 15:12:25 +0200 Subject: [PATCH 4/9] Optimized (cached calls to lex_get_real_buf_offset) --- Zend/zend_language_scanner.c | 778 ++++++++++++++++++----------------- Zend/zend_language_scanner.l | 90 ++-- 2 files changed, 454 insertions(+), 414 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index f2ffc39e3a437..47593fabcccee 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -123,6 +123,10 @@ do { \ #define ZEND_IS_OCT(c) ((c)>='0' && (c)<='7') #define ZEND_IS_HEX(c) (((c)>='0' && (c)<='9') || ((c)>='a' && (c)<='f') || ((c)>='A' && (c)<='F')) +static zend_bool lex_is_real_string_token_table[512]; + +static zend_always_inline zend_bool lex_is_real_string_token(int token); + BEGIN_EXTERN_C() static size_t encoding_filter_script_to_internal(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length TSRMLS_DC) @@ -179,6 +183,10 @@ static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC) void startup_scanner(TSRMLS_D) { + int i; + for (i = -1; ++i < 512;) { + lex_is_real_string_token_table[i] = lex_is_real_string_token(i); + } CG(parse_error) = 0; CG(doc_comment) = NULL; CG(doc_comment_len) = 0; @@ -1005,6 +1013,8 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC); #define LEX_BUF_ADD \ LEX_BUF_ADD_EX \ + buf_two = buf_one; \ + buf_one = CG(tokenbuffer) + CG(tokenbufptr); \ goto again; static zend_always_inline int lex_get_real_buf_offset(const int relpos) { @@ -1020,9 +1030,9 @@ static zend_always_inline int lex_get_real_buf_offset(const int relpos) { } #define LEX_REL_BUF(relpos) \ - (CG(tokenbuffer)[relpos==1?(one!=-1?one:lex_get_real_buf_offset(1)):(relpos==2?(two!=-1?two:lex_get_real_buf_offset(2)):lex_get_real_buf_offset(relpos))]) + (CG(tokenbuffer)[lex_get_real_buf_offset(relpos)]) -static zend_always_inline int lex_is_real_string_token(int token) { +static zend_always_inline zend_bool lex_is_real_string_token(int token) { switch (token) { PARSER_IGNORED_TOKEN_CASES COPIED_STRING_TOKEN_CASES @@ -1032,10 +1042,13 @@ static zend_always_inline int lex_is_real_string_token(int token) { } #define LEX_IS_CUR_ALPH_TOKEN() \ - (Z_TYPE_P(zendlval) == 255 && !lex_is_real_string_token(retval)) + (Z_TYPE_P(zendlval) == 255 && !lex_is_real_string_token_table[retval]) #define LEX_IS_REL_ALPH_TOKEN(relpos) \ - (Z_TYPE(LEX_REL_BUF(relpos).zv) == 255 && !lex_is_real_string_token(LEX_REL_BUF(relpos).token)) + (Z_TYPE(LEX_REL_BUF(relpos).zv) == 255 && !lex_is_real_string_token_table[LEX_REL_BUF(relpos).token]) + +#define LEX_IS_BUF_ALPH_TOKEN(buf) \ + (Z_TYPE((buf).zv) == 255 && !lex_is_real_string_token_table[(buf).token]) #define LEX_CONVERT_STRING(token, zval, text, len) \ token = T_STRING; \ @@ -1047,6 +1060,8 @@ static zend_always_inline int lex_is_real_string_token(int token) { #define LEX_CONVERT_REL_STRING(relpos) LEX_CONVERT_STRING(LEX_REL_BUF(relpos).token, LEX_REL_BUF(relpos).zv, (char *)LEX_REL_BUF(relpos).text, LEX_REL_BUF(relpos).len) +#define LEX_CONVERT_BUF_STRING(buf) LEX_CONVERT_STRING((buf).token, (buf).zv, (char *)(buf).text, (buf).len) + #define LEX_PREPARE_RETURN_FROM_BUF \ *zendlval = CG(tokenbuffer)[CG(tokenbufptr)].zv; \ if (Z_TYPE_P(zendlval) == 255) { \ @@ -1071,7 +1086,8 @@ static zend_always_inline int lex_is_real_string_token(int token) { /* Doing it in parser also would make highlight_string() etc. look ugly when tokens are used as other tokens */ /* The real lexing step is done in lex_scan_ex */ int lex_scan(zval *zendlval) { - int retval, one, two; + int retval; + token_buf *buf_one, *buf_two; if (CG(tokenbufptr) != -1) { if (CG(tokenbuffer)[CG(tokenbufptr)].token != -1) { @@ -1081,6 +1097,9 @@ int lex_scan(zval *zendlval) { CG(tokenbufptr) = -1; } + buf_one = CG(tokenbuffer) - 1; + buf_two = buf_one; + again: Z_TYPE_P(zendlval) = 0; retval = lex_scan_ex(zendlval); @@ -1090,26 +1109,27 @@ int lex_scan(zval *zendlval) { goto leave; } if (retval) { - one = two = -1; - if (CG(tokenbufptr) >= CG(tokenbufsize) - 4) { CG(tokenbuffer) = erealloc(--CG(tokenbuffer), sizeof(token_buf) * ((CG(tokenbufsize) *= 2) + 1)); CG(tokenbuffer)++; + buf_one = CG(tokenbuffer) + lex_get_real_buf_offset(1); + buf_two = CG(tokenbuffer) + lex_get_real_buf_offset(2); } if (CG(tokenbufptr) != -1) { switch (retval) { PARSER_IGNORED_TOKEN_CASES - LEX_BUF_ADD + LEX_BUF_ADD_EX + goto again; } /* class access */ /* class name */ - if (retval == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_REL_ALPH_TOKEN(1)) { - LEX_CONVERT_REL_STRING(1); + if (retval == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_BUF_ALPH_TOKEN(*buf_one)) { + LEX_CONVERT_BUF_STRING(*buf_one); } /* class const / method name */ - if (LEX_REL_BUF(1).token == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_CUR_ALPH_TOKEN()) { + if (buf_one->token == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_CUR_ALPH_TOKEN()) { /* ::class is reserved */ if (retval == T_CLASS) { goto leave; @@ -1120,7 +1140,7 @@ int lex_scan(zval *zendlval) { /* classes */ if (CG(tokenbuf_in_class) != -1 && LEX_IS_CUR_ALPH_TOKEN()) { /* class name */ - switch (LEX_REL_BUF(1).token) { + switch (buf_one->token) { case T_CLASS: case T_INTERFACE: case T_TRAIT: @@ -1128,21 +1148,21 @@ int lex_scan(zval *zendlval) { LEX_CONVERT_CUR_STRING(); } } - if (CG(tokenbuf_in_class) == 0 && retval != T_NAMESPACE && ((retval != T_IMPLEMENTS && retval != T_EXTENDS) || LEX_REL_BUF(1).token == ',' || LEX_REL_BUF(1).token == T_IMPLEMENTS) && LEX_IS_CUR_ALPH_TOKEN()) { + if (CG(tokenbuf_in_class) == 0 && retval != T_NAMESPACE && ((retval != T_IMPLEMENTS && retval != T_EXTENDS) || buf_one->token == ',' || buf_one->token == T_IMPLEMENTS) && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* method names */ - if ((LEX_REL_BUF(1).token == T_FUNCTION || (LEX_REL_BUF(1).token == '&' && LEX_REL_BUF(2).token == T_FUNCTION)) && LEX_IS_CUR_ALPH_TOKEN()) { + if ((buf_one->token == T_FUNCTION || (buf_one->token == '&' && buf_two->token == T_FUNCTION)) && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* constant names */ - if (LEX_REL_BUF(1).token == T_CONST && LEX_IS_CUR_ALPH_TOKEN()) { + if (buf_one->token == T_CONST && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* trait use aliasing */ if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE) { - if (retval == ';' && LEX_IS_REL_ALPH_TOKEN(1)) { - switch (LEX_REL_BUF(1).token) { + if (retval == ';' && LEX_IS_BUF_ALPH_TOKEN(*buf_one)) { + switch (buf_one->token) { case T_PUBLIC: case T_PROTECTED: case T_PRIVATE: @@ -1151,35 +1171,35 @@ int lex_scan(zval *zendlval) { LEX_BUF_ADD } } - if (LEX_REL_BUF(1).token == T_INSTEADOF && LEX_IS_CUR_ALPH_TOKEN()) { + if (buf_one->token == T_INSTEADOF && LEX_IS_CUR_ALPH_TOKEN()) { LEX_BUF_ADD } } } /* class name typehints */ - if (CG(tokenbuf_fn_decl) == 0 && (LEX_REL_BUF(1).token == '(' || LEX_REL_BUF(1).token == ',') && retval != T_NAMESPACE && LEX_IS_CUR_ALPH_TOKEN()) { + if (CG(tokenbuf_fn_decl) == 0 && (buf_one->token == '(' || buf_one->token == ',') && retval != T_NAMESPACE && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* goto & labels */ - if ((retval == ':' || (retval == ';' && LEX_REL_BUF(2).token == T_GOTO)) && LEX_IS_REL_ALPH_TOKEN(1)) { + if ((retval == ':' || (retval == ';' && buf_two->token == T_GOTO)) && LEX_IS_BUF_ALPH_TOKEN(*buf_one)) { /* disallow replacing of alternative syntax and default (in switch) */ - switch (LEX_REL_BUF(1).token) { + switch (buf_one->token) { case T_DEFAULT: case T_ELSE: break; default: - LEX_CONVERT_REL_STRING(1); + LEX_CONVERT_BUF_STRING(*buf_one); } } - if (LEX_REL_BUF(1).token == T_GOTO && LEX_IS_CUR_ALPH_TOKEN() && retval != T_DEFAULT) { + if (buf_one->token == T_GOTO && LEX_IS_CUR_ALPH_TOKEN() && retval != T_DEFAULT) { LEX_CONVERT_CUR_STRING(); } /* namespaces */ /* Disallow T_NAMESPACE because of namespace\string syntax */ - switch (LEX_REL_BUF(1).token) { + switch (buf_one->token) { case T_USE: if (CG(tokenbuf_in_class) != -1) { break; @@ -1192,41 +1212,41 @@ int lex_scan(zval *zendlval) { } } if (retval == T_NS_SEPARATOR) { - switch (LEX_REL_BUF(1).token) { + switch (buf_one->token) { case T_NAMESPACE: break; case T_NEW: - if (LEX_REL_BUF(2).token == T_THROW || LEX_REL_BUF(2).token == T_RETURN || LEX_REL_BUF(2).token == ',') { + if (buf_two->token == T_THROW || buf_two->token == T_RETURN || buf_two->token == ',') { break; } case T_USE: case T_ECHO: - if (LEX_REL_BUF(2).token < 256 && LEX_REL_BUF(2).token != ',') { + if (buf_two->token < 256 && buf_two->token != ',') { break; } case T_IMPLEMENTS: - if (LEX_REL_BUF(1).token == T_IMPLEMENTS && LEX_REL_BUF(2).token != T_IMPLEMENTS && LEX_REL_BUF(2).token != T_EXTENDS && LEX_REL_BUF(2).token != ',') { + if (buf_one->token == T_IMPLEMENTS && buf_two->token != T_IMPLEMENTS && buf_two->token != T_EXTENDS && buf_two->token != ',') { break; } case T_EXTENDS: - if (LEX_REL_BUF(1).token == T_EXTENDS && LEX_REL_BUF(2).token != T_EXTENDS && LEX_REL_BUF(2).token != ',') { + if (buf_one->token == T_EXTENDS && buf_two->token != T_EXTENDS && buf_two->token != ',') { break; } default: - if (LEX_IS_REL_ALPH_TOKEN(1)) { - LEX_CONVERT_REL_STRING(1); + if (LEX_IS_BUF_ALPH_TOKEN(*buf_one)) { + LEX_CONVERT_BUF_STRING(*buf_one); } } } /* handling of multiple comma separated T_USE */ - if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE && LEX_IS_CUR_ALPH_TOKEN() && LEX_REL_BUF(1).token == ',') { + if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE && LEX_IS_CUR_ALPH_TOKEN() && buf_one->token == ',') { LEX_CONVERT_CUR_STRING(); } /* Handling of T_HALT_COMPILER; might cause memory leaks if not handled */ - if (LEX_REL_BUF(1).token == T_HALT_COMPILER && retval == '(') { + if (buf_one->token == T_HALT_COMPILER && retval == '(') { LEX_BUF_ADD - } else if (LEX_REL_BUF(2).token == T_HALT_COMPILER && LEX_REL_BUF(1).token == '(' && retval == ')') { + } else if (buf_two->token == T_HALT_COMPILER && buf_one->token == '(' && retval == ')') { LEX_BUF_ADD } } @@ -1284,7 +1304,7 @@ int lex_scan(zval *zendlval) { } else { switch (retval) { case ';': - if (LEX_REL_BUF(2).token == '(' && LEX_REL_BUF(3).token == T_HALT_COMPILER) { + if (buf_two->token == '(' && LEX_REL_BUF(3).token == T_HALT_COMPILER) { break; } case '&': @@ -1329,7 +1349,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yymore_restart: -#line 1333 "Zend/zend_language_scanner.c" +#line 1353 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1428,7 +1448,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy3: YYDEBUG(3, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2069 "Zend/zend_language_scanner.l" +#line 2089 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1488,7 +1508,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) HANDLE_NEWLINES(yytext, yyleng); return T_INLINE_HTML; } -#line 1492 "Zend/zend_language_scanner.c" +#line 1512 "Zend/zend_language_scanner.c" yy4: YYDEBUG(4, *YYCURSOR); yych = *++YYCURSOR; @@ -1506,7 +1526,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy6: YYDEBUG(6, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2059 "Zend/zend_language_scanner.l" +#line 2079 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1516,14 +1536,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1520 "Zend/zend_language_scanner.c" +#line 1540 "Zend/zend_language_scanner.c" yy7: YYDEBUG(7, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy43; YYDEBUG(8, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2040 "Zend/zend_language_scanner.l" +#line 2060 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1533,7 +1553,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1537 "Zend/zend_language_scanner.c" +#line 1557 "Zend/zend_language_scanner.c" yy9: YYDEBUG(9, *YYCURSOR); yych = *++YYCURSOR; @@ -1719,7 +1739,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2006 "Zend/zend_language_scanner.l" +#line 2026 "Zend/zend_language_scanner.l" { YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1)); @@ -1734,7 +1754,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1738 "Zend/zend_language_scanner.c" +#line 1758 "Zend/zend_language_scanner.c" yy39: YYDEBUG(39, *YYCURSOR); yych = *++YYCURSOR; @@ -1761,7 +1781,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2022 "Zend/zend_language_scanner.l" +#line 2042 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1771,19 +1791,19 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1775 "Zend/zend_language_scanner.c" +#line 1795 "Zend/zend_language_scanner.c" yy45: YYDEBUG(45, *YYCURSOR); ++YYCURSOR; YYDEBUG(46, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2033 "Zend/zend_language_scanner.l" +#line 2053 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG_WITH_ECHO; } -#line 1787 "Zend/zend_language_scanner.c" +#line 1807 "Zend/zend_language_scanner.c" yy47: YYDEBUG(47, *YYCURSOR); yych = *++YYCURSOR; @@ -1810,14 +1830,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2051 "Zend/zend_language_scanner.l" +#line 2071 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1821 "Zend/zend_language_scanner.c" +#line 1841 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; @@ -1888,7 +1908,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy56: YYDEBUG(56, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2513 "Zend/zend_language_scanner.l" +#line 2533 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1929,7 +1949,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 1933 "Zend/zend_language_scanner.c" +#line 1953 "Zend/zend_language_scanner.c" yy57: YYDEBUG(57, *YYCURSOR); yych = *++YYCURSOR; @@ -1940,12 +1960,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(59, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2457 "Zend/zend_language_scanner.l" +#line 2477 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '`'; } -#line 1949 "Zend/zend_language_scanner.c" +#line 1969 "Zend/zend_language_scanner.c" yy60: YYDEBUG(60, *YYCURSOR); yych = *++YYCURSOR; @@ -1955,14 +1975,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(62, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2444 "Zend/zend_language_scanner.l" +#line 2464 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 1966 "Zend/zend_language_scanner.c" +#line 1986 "Zend/zend_language_scanner.c" yy63: YYDEBUG(63, *YYCURSOR); yyaccept = 0; @@ -1978,24 +1998,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy65: YYDEBUG(65, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2151 "Zend/zend_language_scanner.l" +#line 2171 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 1988 "Zend/zend_language_scanner.c" +#line 2008 "Zend/zend_language_scanner.c" yy66: YYDEBUG(66, *YYCURSOR); ++YYCURSOR; YYDEBUG(67, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1786 "Zend/zend_language_scanner.l" +#line 1806 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 1999 "Zend/zend_language_scanner.c" +#line 2019 "Zend/zend_language_scanner.c" yy68: YYDEBUG(68, *YYCURSOR); yych = *++YYCURSOR; @@ -2009,7 +2029,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(71, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2143 "Zend/zend_language_scanner.l" +#line 2163 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2017,7 +2037,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2021 "Zend/zend_language_scanner.c" +#line 2041 "Zend/zend_language_scanner.c" yy72: YYDEBUG(72, *YYCURSOR); yych = *++YYCURSOR; @@ -2035,7 +2055,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(74, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2133 "Zend/zend_language_scanner.l" +#line 2153 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2043,7 +2063,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2047 "Zend/zend_language_scanner.c" +#line 2067 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -2111,7 +2131,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy78: YYDEBUG(78, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2463 "Zend/zend_language_scanner.l" +#line 2483 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -2160,7 +2180,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2164 "Zend/zend_language_scanner.c" +#line 2184 "Zend/zend_language_scanner.c" yy79: YYDEBUG(79, *YYCURSOR); yych = *++YYCURSOR; @@ -2171,12 +2191,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2452 "Zend/zend_language_scanner.l" +#line 2472 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '"'; } -#line 2180 "Zend/zend_language_scanner.c" +#line 2200 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2186,14 +2206,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2444 "Zend/zend_language_scanner.l" +#line 2464 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 2197 "Zend/zend_language_scanner.c" +#line 2217 "Zend/zend_language_scanner.c" yy85: YYDEBUG(85, *YYCURSOR); yyaccept = 0; @@ -2209,24 +2229,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy87: YYDEBUG(87, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2151 "Zend/zend_language_scanner.l" +#line 2171 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2219 "Zend/zend_language_scanner.c" +#line 2239 "Zend/zend_language_scanner.c" yy88: YYDEBUG(88, *YYCURSOR); ++YYCURSOR; YYDEBUG(89, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1786 "Zend/zend_language_scanner.l" +#line 1806 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2230 "Zend/zend_language_scanner.c" +#line 2250 "Zend/zend_language_scanner.c" yy90: YYDEBUG(90, *YYCURSOR); yych = *++YYCURSOR; @@ -2240,7 +2260,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2143 "Zend/zend_language_scanner.l" +#line 2163 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2248,7 +2268,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2252 "Zend/zend_language_scanner.c" +#line 2272 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); yych = *++YYCURSOR; @@ -2266,7 +2286,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(96, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2133 "Zend/zend_language_scanner.l" +#line 2153 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2274,7 +2294,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2278 "Zend/zend_language_scanner.c" +#line 2298 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -2285,7 +2305,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(100, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2430 "Zend/zend_language_scanner.l" +#line 2450 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -2298,7 +2318,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) BEGIN(ST_IN_SCRIPTING); return T_END_HEREDOC; } -#line 2302 "Zend/zend_language_scanner.c" +#line 2322 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -2360,7 +2380,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy104: YYDEBUG(104, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2555 "Zend/zend_language_scanner.l" +#line 2575 "Zend/zend_language_scanner.l" { int newline = 0; @@ -2433,7 +2453,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0 TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2437 "Zend/zend_language_scanner.c" +#line 2457 "Zend/zend_language_scanner.c" yy105: YYDEBUG(105, *YYCURSOR); yych = *++YYCURSOR; @@ -2448,14 +2468,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2444 "Zend/zend_language_scanner.l" +#line 2464 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 2459 "Zend/zend_language_scanner.c" +#line 2479 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 0; @@ -2471,24 +2491,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy111: YYDEBUG(111, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2151 "Zend/zend_language_scanner.l" +#line 2171 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2481 "Zend/zend_language_scanner.c" +#line 2501 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); ++YYCURSOR; YYDEBUG(113, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1786 "Zend/zend_language_scanner.l" +#line 1806 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2492 "Zend/zend_language_scanner.c" +#line 2512 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); yych = *++YYCURSOR; @@ -2502,7 +2522,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(117, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2143 "Zend/zend_language_scanner.l" +#line 2163 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2510,7 +2530,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2514 "Zend/zend_language_scanner.c" +#line 2534 "Zend/zend_language_scanner.c" yy118: YYDEBUG(118, *YYCURSOR); yych = *++YYCURSOR; @@ -2528,7 +2548,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2133 "Zend/zend_language_scanner.l" +#line 2153 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2536,7 +2556,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2540 "Zend/zend_language_scanner.c" +#line 2560 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2719,13 +2739,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy124: YYDEBUG(124, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2174 "Zend/zend_language_scanner.l" +#line 2194 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 2729 "Zend/zend_language_scanner.c" +#line 2749 "Zend/zend_language_scanner.c" yy125: YYDEBUG(125, *YYCURSOR); yych = *++YYCURSOR; @@ -2957,11 +2977,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy139: YYDEBUG(139, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1775 "Zend/zend_language_scanner.l" +#line 1795 "Zend/zend_language_scanner.l" { return yytext[0]; } -#line 2965 "Zend/zend_language_scanner.c" +#line 2985 "Zend/zend_language_scanner.c" yy140: YYDEBUG(140, *YYCURSOR); ++YYCURSOR; @@ -2970,13 +2990,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy141: YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1508 "Zend/zend_language_scanner.l" +#line 1528 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 2980 "Zend/zend_language_scanner.c" +#line 3000 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); yych = *++YYCURSOR; @@ -2987,11 +3007,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(144, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1535 "Zend/zend_language_scanner.l" +#line 1555 "Zend/zend_language_scanner.l" { return T_NS_SEPARATOR; } -#line 2995 "Zend/zend_language_scanner.c" +#line 3015 "Zend/zend_language_scanner.c" yy145: YYDEBUG(145, *YYCURSOR); yych = *++YYCURSOR; @@ -3219,25 +3239,25 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1780 "Zend/zend_language_scanner.l" +#line 1800 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return '{'; } -#line 3228 "Zend/zend_language_scanner.c" +#line 3248 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; YYDEBUG(171, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1792 "Zend/zend_language_scanner.l" +#line 1812 "Zend/zend_language_scanner.l" { if (!zend_stack_is_empty(&SCNG(state_stack))) { yy_pop_state(TSRMLS_C); } return '}'; } -#line 3241 "Zend/zend_language_scanner.c" +#line 3261 "Zend/zend_language_scanner.c" yy172: YYDEBUG(172, *YYCURSOR); yyaccept = 2; @@ -3265,7 +3285,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy173: YYDEBUG(173, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1841 "Zend/zend_language_scanner.l" +#line 1861 "Zend/zend_language_scanner.l" { if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0); @@ -3286,7 +3306,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_LONG; return T_LNUMBER; } -#line 3290 "Zend/zend_language_scanner.c" +#line 3310 "Zend/zend_language_scanner.c" yy174: YYDEBUG(174, *YYCURSOR); yyaccept = 2; @@ -3314,7 +3334,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy177: YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2181 "Zend/zend_language_scanner.l" +#line 2201 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -3348,14 +3368,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_COMMENT; } -#line 3352 "Zend/zend_language_scanner.c" +#line 3372 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; yy179: YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2267 "Zend/zend_language_scanner.l" +#line 2287 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -3421,14 +3441,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_CONSTANT_ENCAPSED_STRING; } -#line 3425 "Zend/zend_language_scanner.c" +#line 3445 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; yy181: YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2334 "Zend/zend_language_scanner.l" +#line 2354 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3469,24 +3489,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) BEGIN(ST_DOUBLE_QUOTES); return '"'; } -#line 3473 "Zend/zend_language_scanner.c" +#line 3493 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2424 "Zend/zend_language_scanner.l" +#line 2444 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); return '`'; } -#line 3484 "Zend/zend_language_scanner.c" +#line 3504 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2687 "Zend/zend_language_scanner.l" +#line 2707 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -3495,7 +3515,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3499 "Zend/zend_language_scanner.c" +#line 3519 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3522,12 +3542,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy190: YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1900 "Zend/zend_language_scanner.l" +#line 1920 "Zend/zend_language_scanner.l" { ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL)); return T_DNUMBER; } -#line 3531 "Zend/zend_language_scanner.c" +#line 3551 "Zend/zend_language_scanner.c" yy191: YYDEBUG(191, *YYCURSOR); yyaccept = 2; @@ -3619,7 +3639,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(202, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1817 "Zend/zend_language_scanner.l" +#line 1837 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3643,7 +3663,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_DNUMBER; } } -#line 3647 "Zend/zend_language_scanner.c" +#line 3667 "Zend/zend_language_scanner.c" yy203: YYDEBUG(203, *YYCURSOR); ++YYCURSOR; @@ -3655,7 +3675,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1862 "Zend/zend_language_scanner.l" +#line 1882 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3679,7 +3699,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_DNUMBER; } } -#line 3683 "Zend/zend_language_scanner.c" +#line 3703 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; @@ -3688,13 +3708,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy207: YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2248 "Zend/zend_language_scanner.l" +#line 2268 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ BEGIN(INITIAL); return T_CLOSE_TAG; /* implicit ';' at php-end tag */ } -#line 3698 "Zend/zend_language_scanner.c" +#line 3718 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); yych = *++YYCURSOR; @@ -3728,13 +3748,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy212: YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2151 "Zend/zend_language_scanner.l" +#line 2171 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 3738 "Zend/zend_language_scanner.c" +#line 3758 "Zend/zend_language_scanner.c" yy213: YYDEBUG(213, *YYCURSOR); yych = *++YYCURSOR; @@ -3748,11 +3768,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1763 "Zend/zend_language_scanner.l" +#line 1783 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_XOR) } -#line 3756 "Zend/zend_language_scanner.c" +#line 3776 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3761,61 +3781,61 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1755 "Zend/zend_language_scanner.l" +#line 1775 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_OR) } -#line 3769 "Zend/zend_language_scanner.c" +#line 3789 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1743 "Zend/zend_language_scanner.l" +#line 1763 "Zend/zend_language_scanner.l" { return T_XOR_EQUAL; } -#line 3779 "Zend/zend_language_scanner.c" +#line 3799 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; YYDEBUG(221, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1747 "Zend/zend_language_scanner.l" +#line 1767 "Zend/zend_language_scanner.l" { return T_BOOLEAN_OR; } -#line 3789 "Zend/zend_language_scanner.c" +#line 3809 "Zend/zend_language_scanner.c" yy222: YYDEBUG(222, *YYCURSOR); ++YYCURSOR; YYDEBUG(223, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1739 "Zend/zend_language_scanner.l" +#line 1759 "Zend/zend_language_scanner.l" { return T_OR_EQUAL; } -#line 3799 "Zend/zend_language_scanner.c" +#line 3819 "Zend/zend_language_scanner.c" yy224: YYDEBUG(224, *YYCURSOR); ++YYCURSOR; YYDEBUG(225, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1751 "Zend/zend_language_scanner.l" +#line 1771 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_BOOLEAN_AND) } -#line 3809 "Zend/zend_language_scanner.c" +#line 3829 "Zend/zend_language_scanner.c" yy226: YYDEBUG(226, *YYCURSOR); ++YYCURSOR; YYDEBUG(227, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1735 "Zend/zend_language_scanner.l" +#line 1755 "Zend/zend_language_scanner.l" { return T_AND_EQUAL; } -#line 3819 "Zend/zend_language_scanner.c" +#line 3839 "Zend/zend_language_scanner.c" yy228: YYDEBUG(228, *YYCURSOR); ++YYCURSOR; @@ -3824,7 +3844,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy229: YYDEBUG(229, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2255 "Zend/zend_language_scanner.l" +#line 2275 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { BEGIN(INITIAL); @@ -3835,17 +3855,17 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return yytext[0]; } } -#line 3839 "Zend/zend_language_scanner.c" +#line 3859 "Zend/zend_language_scanner.c" yy230: YYDEBUG(230, *YYCURSOR); ++YYCURSOR; YYDEBUG(231, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1723 "Zend/zend_language_scanner.l" +#line 1743 "Zend/zend_language_scanner.l" { return T_MOD_EQUAL; } -#line 3849 "Zend/zend_language_scanner.c" +#line 3869 "Zend/zend_language_scanner.c" yy232: YYDEBUG(232, *YYCURSOR); yych = *++YYCURSOR; @@ -3876,11 +3896,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(237, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1719 "Zend/zend_language_scanner.l" +#line 1739 "Zend/zend_language_scanner.l" { return T_CONCAT_EQUAL; } -#line 3884 "Zend/zend_language_scanner.c" +#line 3904 "Zend/zend_language_scanner.c" yy238: YYDEBUG(238, *YYCURSOR); yyaccept = 4; @@ -3889,7 +3909,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy239: YYDEBUG(239, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2215 "Zend/zend_language_scanner.l" +#line 2235 "Zend/zend_language_scanner.l" { int doc_com; @@ -3922,7 +3942,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_COMMENT; } -#line 3926 "Zend/zend_language_scanner.c" +#line 3946 "Zend/zend_language_scanner.c" yy240: YYDEBUG(240, *YYCURSOR); yych = *++YYCURSOR; @@ -3932,11 +3952,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(242, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1715 "Zend/zend_language_scanner.l" +#line 1735 "Zend/zend_language_scanner.l" { return T_DIV_EQUAL; } -#line 3940 "Zend/zend_language_scanner.c" +#line 3960 "Zend/zend_language_scanner.c" yy243: YYDEBUG(243, *YYCURSOR); yych = *++YYCURSOR; @@ -3959,42 +3979,42 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(247, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1711 "Zend/zend_language_scanner.l" +#line 1731 "Zend/zend_language_scanner.l" { return T_MUL_EQUAL; } -#line 3967 "Zend/zend_language_scanner.c" +#line 3987 "Zend/zend_language_scanner.c" yy248: YYDEBUG(248, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy252; YYDEBUG(249, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1771 "Zend/zend_language_scanner.l" +#line 1791 "Zend/zend_language_scanner.l" { return T_SR; } -#line 3978 "Zend/zend_language_scanner.c" +#line 3998 "Zend/zend_language_scanner.c" yy250: YYDEBUG(250, *YYCURSOR); ++YYCURSOR; YYDEBUG(251, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1699 "Zend/zend_language_scanner.l" +#line 1719 "Zend/zend_language_scanner.l" { return T_IS_GREATER_OR_EQUAL; } -#line 3988 "Zend/zend_language_scanner.c" +#line 4008 "Zend/zend_language_scanner.c" yy252: YYDEBUG(252, *YYCURSOR); ++YYCURSOR; YYDEBUG(253, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1731 "Zend/zend_language_scanner.l" +#line 1751 "Zend/zend_language_scanner.l" { return T_SR_EQUAL; } -#line 3998 "Zend/zend_language_scanner.c" +#line 4018 "Zend/zend_language_scanner.c" yy254: YYDEBUG(254, *YYCURSOR); yyaccept = 5; @@ -4005,11 +4025,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy255: YYDEBUG(255, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1767 "Zend/zend_language_scanner.l" +#line 1787 "Zend/zend_language_scanner.l" { return T_SL; } -#line 4013 "Zend/zend_language_scanner.c" +#line 4033 "Zend/zend_language_scanner.c" yy256: YYDEBUG(256, *YYCURSOR); yych = *++YYCURSOR; @@ -4021,22 +4041,22 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(258, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1695 "Zend/zend_language_scanner.l" +#line 1715 "Zend/zend_language_scanner.l" { return T_IS_SMALLER_OR_EQUAL; } -#line 4029 "Zend/zend_language_scanner.c" +#line 4049 "Zend/zend_language_scanner.c" yy259: YYDEBUG(259, *YYCURSOR); ++YYCURSOR; yy260: YYDEBUG(260, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1691 "Zend/zend_language_scanner.l" +#line 1711 "Zend/zend_language_scanner.l" { return T_IS_NOT_EQUAL; } -#line 4040 "Zend/zend_language_scanner.c" +#line 4060 "Zend/zend_language_scanner.c" yy261: YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; @@ -4087,11 +4107,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(269, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1727 "Zend/zend_language_scanner.l" +#line 1747 "Zend/zend_language_scanner.l" { return T_SL_EQUAL; } -#line 4095 "Zend/zend_language_scanner.c" +#line 4115 "Zend/zend_language_scanner.c" yy270: YYDEBUG(270, *YYCURSOR); ++YYCURSOR; @@ -4196,7 +4216,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy280: YYDEBUG(280, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2376 "Zend/zend_language_scanner.l" +#line 2396 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -4243,7 +4263,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_START_HEREDOC; } -#line 4247 "Zend/zend_language_scanner.c" +#line 4267 "Zend/zend_language_scanner.c" yy281: YYDEBUG(281, *YYCURSOR); yych = *++YYCURSOR; @@ -4283,31 +4303,31 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(286, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1683 "Zend/zend_language_scanner.l" +#line 1703 "Zend/zend_language_scanner.l" { return T_IS_NOT_IDENTICAL; } -#line 4291 "Zend/zend_language_scanner.c" +#line 4311 "Zend/zend_language_scanner.c" yy287: YYDEBUG(287, *YYCURSOR); ++YYCURSOR; YYDEBUG(288, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1703 "Zend/zend_language_scanner.l" +#line 1723 "Zend/zend_language_scanner.l" { return T_PLUS_EQUAL; } -#line 4301 "Zend/zend_language_scanner.c" +#line 4321 "Zend/zend_language_scanner.c" yy289: YYDEBUG(289, *YYCURSOR); ++YYCURSOR; YYDEBUG(290, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1671 "Zend/zend_language_scanner.l" +#line 1691 "Zend/zend_language_scanner.l" { return T_INC; } -#line 4311 "Zend/zend_language_scanner.c" +#line 4331 "Zend/zend_language_scanner.c" yy291: YYDEBUG(291, *YYCURSOR); yych = *++YYCURSOR; @@ -4326,42 +4346,42 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(294, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1659 "Zend/zend_language_scanner.l" +#line 1679 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LIST) } -#line 4334 "Zend/zend_language_scanner.c" +#line 4354 "Zend/zend_language_scanner.c" yy295: YYDEBUG(295, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy299; YYDEBUG(296, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1687 "Zend/zend_language_scanner.l" +#line 1707 "Zend/zend_language_scanner.l" { return T_IS_EQUAL; } -#line 4345 "Zend/zend_language_scanner.c" +#line 4365 "Zend/zend_language_scanner.c" yy297: YYDEBUG(297, *YYCURSOR); ++YYCURSOR; YYDEBUG(298, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1655 "Zend/zend_language_scanner.l" +#line 1675 "Zend/zend_language_scanner.l" { return T_DOUBLE_ARROW; } -#line 4355 "Zend/zend_language_scanner.c" +#line 4375 "Zend/zend_language_scanner.c" yy299: YYDEBUG(299, *YYCURSOR); ++YYCURSOR; YYDEBUG(300, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1679 "Zend/zend_language_scanner.l" +#line 1699 "Zend/zend_language_scanner.l" { return T_IS_IDENTICAL; } -#line 4365 "Zend/zend_language_scanner.c" +#line 4385 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4491,7 +4511,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(320, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1996 "Zend/zend_language_scanner.l" +#line 2016 "Zend/zend_language_scanner.l" { if (CG(current_namespace)) { *zendlval = *CG(current_namespace); @@ -4501,7 +4521,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_NS_C; } -#line 4505 "Zend/zend_language_scanner.c" +#line 4525 "Zend/zend_language_scanner.c" yy321: YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; @@ -4521,7 +4541,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(325, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1971 "Zend/zend_language_scanner.l" +#line 1991 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); const size_t filename_len = strlen(filename); @@ -4546,7 +4566,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ZVAL_STRING(zendlval, dirname, 0); return T_DIR; } -#line 4550 "Zend/zend_language_scanner.c" +#line 4570 "Zend/zend_language_scanner.c" yy326: YYDEBUG(326, *YYCURSOR); yych = *++YYCURSOR; @@ -4571,12 +4591,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(331, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1956 "Zend/zend_language_scanner.l" +#line 1976 "Zend/zend_language_scanner.l" { ZVAL_LONG(zendlval, CG(zend_lineno)); return T_LINE; } -#line 4580 "Zend/zend_language_scanner.c" +#line 4600 "Zend/zend_language_scanner.c" yy332: YYDEBUG(332, *YYCURSOR); yych = *++YYCURSOR; @@ -4611,7 +4631,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(339, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1943 "Zend/zend_language_scanner.l" +#line 1963 "Zend/zend_language_scanner.l" { const char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL; const char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL; @@ -4624,7 +4644,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_METHOD_C; } -#line 4628 "Zend/zend_language_scanner.c" +#line 4648 "Zend/zend_language_scanner.c" yy340: YYDEBUG(340, *YYCURSOR); yych = *++YYCURSOR; @@ -4675,7 +4695,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(350, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1933 "Zend/zend_language_scanner.l" +#line 1953 "Zend/zend_language_scanner.l" { zend_op_array *op_array = CG(active_op_array); if (op_array && op_array->function_name) { @@ -4685,7 +4705,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_FUNC_C; } -#line 4689 "Zend/zend_language_scanner.c" +#line 4709 "Zend/zend_language_scanner.c" yy351: YYDEBUG(351, *YYCURSOR); yych = *++YYCURSOR; @@ -4705,7 +4725,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(355, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1961 "Zend/zend_language_scanner.l" +#line 1981 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); @@ -4715,7 +4735,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ZVAL_STRING(zendlval, filename, 1); return T_FILE; } -#line 4719 "Zend/zend_language_scanner.c" +#line 4739 "Zend/zend_language_scanner.c" yy356: YYDEBUG(356, *YYCURSOR); yych = *++YYCURSOR; @@ -4745,7 +4765,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(362, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1923 "Zend/zend_language_scanner.l" +#line 1943 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ce->name && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4755,7 +4775,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_TRAIT_C; } -#line 4759 "Zend/zend_language_scanner.c" +#line 4779 "Zend/zend_language_scanner.c" yy363: YYDEBUG(363, *YYCURSOR); yych = *++YYCURSOR; @@ -4785,7 +4805,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(369, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1905 "Zend/zend_language_scanner.l" +#line 1925 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4803,7 +4823,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_CLASS_C; } -#line 4807 "Zend/zend_language_scanner.c" +#line 4827 "Zend/zend_language_scanner.c" yy370: YYDEBUG(370, *YYCURSOR); yych = *++YYCURSOR; @@ -4865,11 +4885,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(382, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1623 "Zend/zend_language_scanner.l" +#line 1643 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_HALT_COMPILER) } -#line 4873 "Zend/zend_language_scanner.c" +#line 4893 "Zend/zend_language_scanner.c" yy383: YYDEBUG(383, *YYCURSOR); yych = *++YYCURSOR; @@ -4889,11 +4909,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(386, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1603 "Zend/zend_language_scanner.l" +#line 1623 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_USE) } -#line 4897 "Zend/zend_language_scanner.c" +#line 4917 "Zend/zend_language_scanner.c" yy387: YYDEBUG(387, *YYCURSOR); yych = *++YYCURSOR; @@ -4912,11 +4932,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(390, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1651 "Zend/zend_language_scanner.l" +#line 1671 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_UNSET) } -#line 4920 "Zend/zend_language_scanner.c" +#line 4940 "Zend/zend_language_scanner.c" yy391: YYDEBUG(391, *YYCURSOR); ++YYCURSOR; @@ -5088,11 +5108,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(408, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1551 "Zend/zend_language_scanner.l" +#line 1571 "Zend/zend_language_scanner.l" { return T_INT_CAST; } -#line 5096 "Zend/zend_language_scanner.c" +#line 5116 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -5136,11 +5156,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(417, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1555 "Zend/zend_language_scanner.l" +#line 1575 "Zend/zend_language_scanner.l" { return T_DOUBLE_CAST; } -#line 5144 "Zend/zend_language_scanner.c" +#line 5164 "Zend/zend_language_scanner.c" yy418: YYDEBUG(418, *YYCURSOR); yych = *++YYCURSOR; @@ -5210,11 +5230,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1559 "Zend/zend_language_scanner.l" +#line 1579 "Zend/zend_language_scanner.l" { return T_STRING_CAST; } -#line 5218 "Zend/zend_language_scanner.c" +#line 5238 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); yych = *++YYCURSOR; @@ -5247,11 +5267,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(438, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1563 "Zend/zend_language_scanner.l" +#line 1583 "Zend/zend_language_scanner.l" { return T_ARRAY_CAST; } -#line 5255 "Zend/zend_language_scanner.c" +#line 5275 "Zend/zend_language_scanner.c" yy439: YYDEBUG(439, *YYCURSOR); yych = *++YYCURSOR; @@ -5289,11 +5309,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(446, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1567 "Zend/zend_language_scanner.l" +#line 1587 "Zend/zend_language_scanner.l" { return T_OBJECT_CAST; } -#line 5297 "Zend/zend_language_scanner.c" +#line 5317 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); yych = *++YYCURSOR; @@ -5334,11 +5354,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(454, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1571 "Zend/zend_language_scanner.l" +#line 1591 "Zend/zend_language_scanner.l" { return T_BOOL_CAST; } -#line 5342 "Zend/zend_language_scanner.c" +#line 5362 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5398,11 +5418,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(466, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1575 "Zend/zend_language_scanner.l" +#line 1595 "Zend/zend_language_scanner.l" { return T_UNSET_CAST; } -#line 5406 "Zend/zend_language_scanner.c" +#line 5426 "Zend/zend_language_scanner.c" yy467: YYDEBUG(467, *YYCURSOR); yych = *++YYCURSOR; @@ -5416,11 +5436,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(469, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1547 "Zend/zend_language_scanner.l" +#line 1567 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_VAR) } -#line 5424 "Zend/zend_language_scanner.c" +#line 5444 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; @@ -5440,11 +5460,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(473, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1539 "Zend/zend_language_scanner.l" +#line 1559 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_NEW) } -#line 5448 "Zend/zend_language_scanner.c" +#line 5468 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5483,21 +5503,21 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(481, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1599 "Zend/zend_language_scanner.l" +#line 1619 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_NAMESPACE) } -#line 5491 "Zend/zend_language_scanner.c" +#line 5511 "Zend/zend_language_scanner.c" yy482: YYDEBUG(482, *YYCURSOR); ++YYCURSOR; YYDEBUG(483, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1531 "Zend/zend_language_scanner.l" +#line 1551 "Zend/zend_language_scanner.l" { return T_PAAMAYIM_NEKUDOTAYIM; } -#line 5501 "Zend/zend_language_scanner.c" +#line 5521 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); ++YYCURSOR; @@ -5519,32 +5539,32 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(487, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1707 "Zend/zend_language_scanner.l" +#line 1727 "Zend/zend_language_scanner.l" { return T_MINUS_EQUAL; } -#line 5527 "Zend/zend_language_scanner.c" +#line 5547 "Zend/zend_language_scanner.c" yy488: YYDEBUG(488, *YYCURSOR); ++YYCURSOR; YYDEBUG(489, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1675 "Zend/zend_language_scanner.l" +#line 1695 "Zend/zend_language_scanner.l" { return T_DEC; } -#line 5537 "Zend/zend_language_scanner.c" +#line 5557 "Zend/zend_language_scanner.c" yy490: YYDEBUG(490, *YYCURSOR); ++YYCURSOR; YYDEBUG(491, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1503 "Zend/zend_language_scanner.l" +#line 1523 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); return T_OBJECT_OPERATOR; } -#line 5548 "Zend/zend_language_scanner.c" +#line 5568 "Zend/zend_language_scanner.c" yy492: YYDEBUG(492, *YYCURSOR); yych = *++YYCURSOR; @@ -5589,11 +5609,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(498, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1647 "Zend/zend_language_scanner.l" +#line 1667 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PUBLIC) } -#line 5597 "Zend/zend_language_scanner.c" +#line 5617 "Zend/zend_language_scanner.c" yy499: YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; @@ -5648,11 +5668,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(507, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1643 "Zend/zend_language_scanner.l" +#line 1663 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PROTECTED) } -#line 5656 "Zend/zend_language_scanner.c" +#line 5676 "Zend/zend_language_scanner.c" yy508: YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; @@ -5682,11 +5702,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(513, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1639 "Zend/zend_language_scanner.l" +#line 1659 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PRIVATE) } -#line 5690 "Zend/zend_language_scanner.c" +#line 5710 "Zend/zend_language_scanner.c" yy514: YYDEBUG(514, *YYCURSOR); ++YYCURSOR; @@ -5695,11 +5715,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(515, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1479 "Zend/zend_language_scanner.l" +#line 1499 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PRINT) } -#line 5703 "Zend/zend_language_scanner.c" +#line 5723 "Zend/zend_language_scanner.c" yy516: YYDEBUG(516, *YYCURSOR); yych = *++YYCURSOR; @@ -5724,11 +5744,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1471 "Zend/zend_language_scanner.l" +#line 1491 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_GOTO) } -#line 5732 "Zend/zend_language_scanner.c" +#line 5752 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5752,11 +5772,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(525, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1611 "Zend/zend_language_scanner.l" +#line 1631 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_GLOBAL) } -#line 5760 "Zend/zend_language_scanner.c" +#line 5780 "Zend/zend_language_scanner.c" yy526: YYDEBUG(526, *YYCURSOR); yych = *++YYCURSOR; @@ -5793,11 +5813,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(533, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1463 "Zend/zend_language_scanner.l" +#line 1483 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_BREAK) } -#line 5801 "Zend/zend_language_scanner.c" +#line 5821 "Zend/zend_language_scanner.c" yy534: YYDEBUG(534, *YYCURSOR); yych = *++YYCURSOR; @@ -5837,11 +5857,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(541, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1447 "Zend/zend_language_scanner.l" +#line 1467 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_SWITCH) } -#line 5845 "Zend/zend_language_scanner.c" +#line 5865 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5865,11 +5885,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(546, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1627 "Zend/zend_language_scanner.l" +#line 1647 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_STATIC) } -#line 5873 "Zend/zend_language_scanner.c" +#line 5893 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5896,11 +5916,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(551, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1443 "Zend/zend_language_scanner.l" +#line 1463 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_AS) } -#line 5904 "Zend/zend_language_scanner.c" +#line 5924 "Zend/zend_language_scanner.c" yy552: YYDEBUG(552, *YYCURSOR); yych = *++YYCURSOR; @@ -5919,11 +5939,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(555, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1663 "Zend/zend_language_scanner.l" +#line 1683 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ARRAY) } -#line 5927 "Zend/zend_language_scanner.c" +#line 5947 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); ++YYCURSOR; @@ -5932,11 +5952,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(557, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1759 "Zend/zend_language_scanner.l" +#line 1779 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_AND) } -#line 5940 "Zend/zend_language_scanner.c" +#line 5960 "Zend/zend_language_scanner.c" yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; @@ -5970,11 +5990,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(564, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1631 "Zend/zend_language_scanner.l" +#line 1651 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ABSTRACT) } -#line 5978 "Zend/zend_language_scanner.c" +#line 5998 "Zend/zend_language_scanner.c" yy565: YYDEBUG(565, *YYCURSOR); yych = *++YYCURSOR; @@ -5998,11 +6018,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(569, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1403 "Zend/zend_language_scanner.l" +#line 1423 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_WHILE) } -#line 6006 "Zend/zend_language_scanner.c" +#line 6026 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); ++YYCURSOR; @@ -6011,11 +6031,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(571, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1387 "Zend/zend_language_scanner.l" +#line 1407 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_IF) } -#line 6019 "Zend/zend_language_scanner.c" +#line 6039 "Zend/zend_language_scanner.c" yy572: YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; @@ -6067,11 +6087,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(578, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1615 "Zend/zend_language_scanner.l" +#line 1635 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ISSET) } -#line 6075 "Zend/zend_language_scanner.c" +#line 6095 "Zend/zend_language_scanner.c" yy579: YYDEBUG(579, *YYCURSOR); yych = *++YYCURSOR; @@ -6125,11 +6145,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy586: YYDEBUG(586, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1583 "Zend/zend_language_scanner.l" +#line 1603 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INCLUDE) } -#line 6133 "Zend/zend_language_scanner.c" +#line 6153 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -6158,11 +6178,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(592, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1587 "Zend/zend_language_scanner.l" +#line 1607 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INCLUDE_ONCE) } -#line 6166 "Zend/zend_language_scanner.c" +#line 6186 "Zend/zend_language_scanner.c" yy593: YYDEBUG(593, *YYCURSOR); yych = *++YYCURSOR; @@ -6196,11 +6216,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(599, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1487 "Zend/zend_language_scanner.l" +#line 1507 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INTERFACE) } -#line 6204 "Zend/zend_language_scanner.c" +#line 6224 "Zend/zend_language_scanner.c" yy600: YYDEBUG(600, *YYCURSOR); yych = *++YYCURSOR; @@ -6250,11 +6270,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(607, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1607 "Zend/zend_language_scanner.l" +#line 1627 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INSTEADOF) } -#line 6258 "Zend/zend_language_scanner.c" +#line 6278 "Zend/zend_language_scanner.c" yy608: YYDEBUG(608, *YYCURSOR); yych = *++YYCURSOR; @@ -6283,11 +6303,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(613, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1439 "Zend/zend_language_scanner.l" +#line 1459 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INSTANCEOF) } -#line 6291 "Zend/zend_language_scanner.c" +#line 6311 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6331,11 +6351,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(622, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1499 "Zend/zend_language_scanner.l" +#line 1519 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_IMPLEMENTS) } -#line 6339 "Zend/zend_language_scanner.c" +#line 6359 "Zend/zend_language_scanner.c" yy623: YYDEBUG(623, *YYCURSOR); yych = *++YYCURSOR; @@ -6363,11 +6383,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(626, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1371 "Zend/zend_language_scanner.l" +#line 1391 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_TRY) } -#line 6371 "Zend/zend_language_scanner.c" +#line 6391 "Zend/zend_language_scanner.c" yy627: YYDEBUG(627, *YYCURSOR); yych = *++YYCURSOR; @@ -6386,11 +6406,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(630, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1491 "Zend/zend_language_scanner.l" +#line 1511 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_TRAIT) } -#line 6394 "Zend/zend_language_scanner.c" +#line 6414 "Zend/zend_language_scanner.c" yy631: YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; @@ -6409,11 +6429,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(634, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1383 "Zend/zend_language_scanner.l" +#line 1403 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_THROW) } -#line 6417 "Zend/zend_language_scanner.c" +#line 6437 "Zend/zend_language_scanner.c" yy635: YYDEBUG(635, *YYCURSOR); yych = *++YYCURSOR; @@ -6437,11 +6457,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(639, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1367 "Zend/zend_language_scanner.l" +#line 1387 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_YIELD) } -#line 6445 "Zend/zend_language_scanner.c" +#line 6465 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); yych = *++YYCURSOR; @@ -6502,11 +6522,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy647: YYDEBUG(647, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1591 "Zend/zend_language_scanner.l" +#line 1611 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_REQUIRE) } -#line 6510 "Zend/zend_language_scanner.c" +#line 6530 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6535,11 +6555,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(653, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1595 "Zend/zend_language_scanner.l" +#line 1615 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_REQUIRE_ONCE) } -#line 6543 "Zend/zend_language_scanner.c" +#line 6563 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; @@ -6558,11 +6578,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(657, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1363 "Zend/zend_language_scanner.l" +#line 1383 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_RETURN) } -#line 6566 "Zend/zend_language_scanner.c" +#line 6586 "Zend/zend_language_scanner.c" yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; @@ -6652,11 +6672,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(668, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1467 "Zend/zend_language_scanner.l" +#line 1487 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CONTINUE) } -#line 6660 "Zend/zend_language_scanner.c" +#line 6680 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); ++YYCURSOR; @@ -6665,11 +6685,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1359 "Zend/zend_language_scanner.l" +#line 1379 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CONST) } -#line 6673 "Zend/zend_language_scanner.c" +#line 6693 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6694,11 +6714,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1543 "Zend/zend_language_scanner.l" +#line 1563 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CLONE) } -#line 6702 "Zend/zend_language_scanner.c" +#line 6722 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6712,11 +6732,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(678, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1483 "Zend/zend_language_scanner.l" +#line 1503 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CLASS) } -#line 6720 "Zend/zend_language_scanner.c" +#line 6740 "Zend/zend_language_scanner.c" yy679: YYDEBUG(679, *YYCURSOR); yych = *++YYCURSOR; @@ -6762,11 +6782,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(687, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1667 "Zend/zend_language_scanner.l" +#line 1687 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CALLABLE) } -#line 6770 "Zend/zend_language_scanner.c" +#line 6790 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); ++YYCURSOR; @@ -6775,11 +6795,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(689, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1455 "Zend/zend_language_scanner.l" +#line 1475 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CASE) } -#line 6783 "Zend/zend_language_scanner.c" +#line 6803 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); yych = *++YYCURSOR; @@ -6793,11 +6813,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(692, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1375 "Zend/zend_language_scanner.l" +#line 1395 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CATCH) } -#line 6801 "Zend/zend_language_scanner.c" +#line 6821 "Zend/zend_language_scanner.c" yy693: YYDEBUG(693, *YYCURSOR); yych = *++YYCURSOR; @@ -6848,11 +6868,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(702, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1355 "Zend/zend_language_scanner.l" +#line 1375 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FUNCTION) } -#line 6856 "Zend/zend_language_scanner.c" +#line 6876 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; @@ -6876,11 +6896,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy704: YYDEBUG(704, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1415 "Zend/zend_language_scanner.l" +#line 1435 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FOR) } -#line 6884 "Zend/zend_language_scanner.c" +#line 6904 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; @@ -6904,11 +6924,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(709, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1423 "Zend/zend_language_scanner.l" +#line 1443 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FOREACH) } -#line 6912 "Zend/zend_language_scanner.c" +#line 6932 "Zend/zend_language_scanner.c" yy710: YYDEBUG(710, *YYCURSOR); yych = *++YYCURSOR; @@ -6942,11 +6962,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy713: YYDEBUG(713, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1635 "Zend/zend_language_scanner.l" +#line 1655 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FINAL) } -#line 6950 "Zend/zend_language_scanner.c" +#line 6970 "Zend/zend_language_scanner.c" yy714: YYDEBUG(714, *YYCURSOR); yych = *++YYCURSOR; @@ -6960,11 +6980,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(716, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1379 "Zend/zend_language_scanner.l" +#line 1399 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FINALLY) } -#line 6968 "Zend/zend_language_scanner.c" +#line 6988 "Zend/zend_language_scanner.c" yy717: YYDEBUG(717, *YYCURSOR); yych = *++YYCURSOR; @@ -6995,11 +7015,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(720, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1411 "Zend/zend_language_scanner.l" +#line 1431 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DO) } -#line 7003 "Zend/zend_language_scanner.c" +#line 7023 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); ++YYCURSOR; @@ -7008,11 +7028,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(722, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1351 "Zend/zend_language_scanner.l" +#line 1371 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXIT) } -#line 7016 "Zend/zend_language_scanner.c" +#line 7036 "Zend/zend_language_scanner.c" yy723: YYDEBUG(723, *YYCURSOR); yych = *++YYCURSOR; @@ -7047,11 +7067,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(729, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1459 "Zend/zend_language_scanner.l" +#line 1479 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DEFAULT) } -#line 7055 "Zend/zend_language_scanner.c" +#line 7075 "Zend/zend_language_scanner.c" yy730: YYDEBUG(730, *YYCURSOR); yych = *++YYCURSOR; @@ -7075,11 +7095,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(734, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1431 "Zend/zend_language_scanner.l" +#line 1451 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DECLARE) } -#line 7083 "Zend/zend_language_scanner.c" +#line 7103 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -7159,11 +7179,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(747, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1495 "Zend/zend_language_scanner.l" +#line 1515 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXTENDS) } -#line 7167 "Zend/zend_language_scanner.c" +#line 7187 "Zend/zend_language_scanner.c" yy748: YYDEBUG(748, *YYCURSOR); ++YYCURSOR; @@ -7172,11 +7192,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(749, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1347 "Zend/zend_language_scanner.l" +#line 1367 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXIT) } -#line 7180 "Zend/zend_language_scanner.c" +#line 7200 "Zend/zend_language_scanner.c" yy750: YYDEBUG(750, *YYCURSOR); yych = *++YYCURSOR; @@ -7190,11 +7210,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(752, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1579 "Zend/zend_language_scanner.l" +#line 1599 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EVAL) } -#line 7198 "Zend/zend_language_scanner.c" +#line 7218 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7264,11 +7284,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(763, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1407 "Zend/zend_language_scanner.l" +#line 1427 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDWHILE) } -#line 7272 "Zend/zend_language_scanner.c" +#line 7292 "Zend/zend_language_scanner.c" yy764: YYDEBUG(764, *YYCURSOR); yych = *++YYCURSOR; @@ -7297,11 +7317,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1451 "Zend/zend_language_scanner.l" +#line 1471 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDSWITCH) } -#line 7305 "Zend/zend_language_scanner.c" +#line 7325 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7310,11 +7330,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(771, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1395 "Zend/zend_language_scanner.l" +#line 1415 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDIF) } -#line 7318 "Zend/zend_language_scanner.c" +#line 7338 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); yych = *++YYCURSOR; @@ -7343,11 +7363,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy774: YYDEBUG(774, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1419 "Zend/zend_language_scanner.l" +#line 1439 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDFOR) } -#line 7351 "Zend/zend_language_scanner.c" +#line 7371 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); yych = *++YYCURSOR; @@ -7371,11 +7391,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(779, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1427 "Zend/zend_language_scanner.l" +#line 1447 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDFOREACH) } -#line 7379 "Zend/zend_language_scanner.c" +#line 7399 "Zend/zend_language_scanner.c" yy780: YYDEBUG(780, *YYCURSOR); yych = *++YYCURSOR; @@ -7409,11 +7429,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(786, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1435 "Zend/zend_language_scanner.l" +#line 1455 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDDECLARE) } -#line 7417 "Zend/zend_language_scanner.c" +#line 7437 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); yych = *++YYCURSOR; @@ -7432,11 +7452,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(790, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1619 "Zend/zend_language_scanner.l" +#line 1639 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EMPTY) } -#line 7440 "Zend/zend_language_scanner.c" +#line 7460 "Zend/zend_language_scanner.c" yy791: YYDEBUG(791, *YYCURSOR); yych = *++YYCURSOR; @@ -7465,11 +7485,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy793: YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1399 "Zend/zend_language_scanner.l" +#line 1419 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ELSE) } -#line 7473 "Zend/zend_language_scanner.c" +#line 7493 "Zend/zend_language_scanner.c" yy794: YYDEBUG(794, *YYCURSOR); yych = *++YYCURSOR; @@ -7483,11 +7503,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(796, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1391 "Zend/zend_language_scanner.l" +#line 1411 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ELSEIF) } -#line 7491 "Zend/zend_language_scanner.c" +#line 7511 "Zend/zend_language_scanner.c" yy797: YYDEBUG(797, *YYCURSOR); yych = *++YYCURSOR; @@ -7501,11 +7521,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1475 "Zend/zend_language_scanner.l" +#line 1495 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ECHO) } -#line 7509 "Zend/zend_language_scanner.c" +#line 7529 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7578,13 +7598,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1508 "Zend/zend_language_scanner.l" +#line 1528 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 7588 "Zend/zend_language_scanner.c" +#line 7608 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7592,13 +7612,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy805: YYDEBUG(805, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1525 "Zend/zend_language_scanner.l" +#line 1545 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); goto restart; } -#line 7602 "Zend/zend_language_scanner.c" +#line 7622 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); ++YYCURSOR; @@ -7607,14 +7627,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy807: YYDEBUG(807, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1518 "Zend/zend_language_scanner.l" +#line 1538 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 7618 "Zend/zend_language_scanner.c" +#line 7638 "Zend/zend_language_scanner.c" yy808: YYDEBUG(808, *YYCURSOR); yych = *++YYCURSOR; @@ -7635,11 +7655,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(812, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1514 "Zend/zend_language_scanner.l" +#line 1534 "Zend/zend_language_scanner.l" { return T_OBJECT_OPERATOR; } -#line 7643 "Zend/zend_language_scanner.c" +#line 7663 "Zend/zend_language_scanner.c" yy813: YYDEBUG(813, *YYCURSOR); ++YYCURSOR; @@ -7724,14 +7744,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy818: YYDEBUG(818, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1810 "Zend/zend_language_scanner.l" +#line 1830 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); goto restart; } -#line 7735 "Zend/zend_language_scanner.c" +#line 7755 "Zend/zend_language_scanner.c" yy819: YYDEBUG(819, *YYCURSOR); yych = *++YYCURSOR; @@ -7756,7 +7776,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(824, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1800 "Zend/zend_language_scanner.l" +#line 1820 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); zend_copy_value(zendlval, yytext, yyleng); @@ -7765,7 +7785,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_STRING_VARNAME; } -#line 7769 "Zend/zend_language_scanner.c" +#line 7789 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7776,7 +7796,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(828, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2629 "Zend/zend_language_scanner.l" +#line 2649 "Zend/zend_language_scanner.l" { int newline = 0; @@ -7833,7 +7853,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) HANDLE_NEWLINES(yytext, yyleng - newline); return T_ENCAPSED_AND_WHITESPACE; } -#line 7837 "Zend/zend_language_scanner.c" +#line 7857 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7940,7 +7960,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy832: YYDEBUG(832, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1886 "Zend/zend_language_scanner.l" +#line 1906 "Zend/zend_language_scanner.l" { /* Offset could be treated as a long */ if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) { ZVAL_LONG(zendlval, strtol(yytext, NULL, 10)); @@ -7949,7 +7969,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_NUM_STRING; } -#line 7953 "Zend/zend_language_scanner.c" +#line 7973 "Zend/zend_language_scanner.c" yy833: YYDEBUG(833, *YYCURSOR); yych = *++YYCURSOR; @@ -7969,23 +7989,23 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy835: YYDEBUG(835, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2162 "Zend/zend_language_scanner.l" +#line 2182 "Zend/zend_language_scanner.l" { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -#line 7978 "Zend/zend_language_scanner.c" +#line 7998 "Zend/zend_language_scanner.c" yy836: YYDEBUG(836, *YYCURSOR); ++YYCURSOR; YYDEBUG(837, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2157 "Zend/zend_language_scanner.l" +#line 2177 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); return ']'; } -#line 7989 "Zend/zend_language_scanner.c" +#line 8009 "Zend/zend_language_scanner.c" yy838: YYDEBUG(838, *YYCURSOR); yych = *++YYCURSOR; @@ -7995,14 +8015,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(840, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2167 "Zend/zend_language_scanner.l" +#line 2187 "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 8006 "Zend/zend_language_scanner.c" +#line 8026 "Zend/zend_language_scanner.c" yy841: YYDEBUG(841, *YYCURSOR); ++YYCURSOR; @@ -8011,19 +8031,19 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy842: YYDEBUG(842, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2174 "Zend/zend_language_scanner.l" +#line 2194 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 8021 "Zend/zend_language_scanner.c" +#line 8041 "Zend/zend_language_scanner.c" yy843: YYDEBUG(843, *YYCURSOR); ++YYCURSOR; YYDEBUG(844, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2687 "Zend/zend_language_scanner.l" +#line 2707 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -8032,7 +8052,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 8036 "Zend/zend_language_scanner.c" +#line 8056 "Zend/zend_language_scanner.c" yy845: YYDEBUG(845, *YYCURSOR); ++YYCURSOR; @@ -8068,13 +8088,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy849: YYDEBUG(849, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2151 "Zend/zend_language_scanner.l" +#line 2171 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 8078 "Zend/zend_language_scanner.c" +#line 8098 "Zend/zend_language_scanner.c" yy850: YYDEBUG(850, *YYCURSOR); ++YYCURSOR; @@ -8114,12 +8134,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy857: YYDEBUG(857, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1895 "Zend/zend_language_scanner.l" +#line 1915 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng, 1); return T_NUM_STRING; } -#line 8123 "Zend/zend_language_scanner.c" +#line 8143 "Zend/zend_language_scanner.c" yy858: YYDEBUG(858, *YYCURSOR); ++YYCURSOR; @@ -8142,6 +8162,6 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto yy857; } } -#line 2696 "Zend/zend_language_scanner.l" +#line 2716 "Zend/zend_language_scanner.l" } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 59407c4d41777..007968c90fe22 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -121,6 +121,10 @@ do { \ #define ZEND_IS_OCT(c) ((c)>='0' && (c)<='7') #define ZEND_IS_HEX(c) (((c)>='0' && (c)<='9') || ((c)>='a' && (c)<='f') || ((c)>='A' && (c)<='F')) +static zend_bool lex_is_real_string_token_table[512]; + +static zend_always_inline zend_bool lex_is_real_string_token(int token); + BEGIN_EXTERN_C() static size_t encoding_filter_script_to_internal(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length TSRMLS_DC) @@ -177,6 +181,10 @@ static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC) void startup_scanner(TSRMLS_D) { + int i; + for (i = -1; ++i < 512;) { + lex_is_real_string_token_table[i] = lex_is_real_string_token(i); + } CG(parse_error) = 0; CG(doc_comment) = NULL; CG(doc_comment_len) = 0; @@ -1003,6 +1011,8 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC); #define LEX_BUF_ADD \ LEX_BUF_ADD_EX \ + buf_two = buf_one; \ + buf_one = CG(tokenbuffer) + CG(tokenbufptr); \ goto again; static zend_always_inline int lex_get_real_buf_offset(const int relpos) { @@ -1018,9 +1028,9 @@ static zend_always_inline int lex_get_real_buf_offset(const int relpos) { } #define LEX_REL_BUF(relpos) \ - (CG(tokenbuffer)[relpos==1?(one!=-1?one:lex_get_real_buf_offset(1)):(relpos==2?(two!=-1?two:lex_get_real_buf_offset(2)):lex_get_real_buf_offset(relpos))]) + (CG(tokenbuffer)[lex_get_real_buf_offset(relpos)]) -static zend_always_inline int lex_is_real_string_token(int token) { +static zend_always_inline zend_bool lex_is_real_string_token(int token) { switch (token) { PARSER_IGNORED_TOKEN_CASES COPIED_STRING_TOKEN_CASES @@ -1030,10 +1040,13 @@ static zend_always_inline int lex_is_real_string_token(int token) { } #define LEX_IS_CUR_ALPH_TOKEN() \ - (Z_TYPE_P(zendlval) == 255 && !lex_is_real_string_token(retval)) + (Z_TYPE_P(zendlval) == 255 && !lex_is_real_string_token_table[retval]) #define LEX_IS_REL_ALPH_TOKEN(relpos) \ - (Z_TYPE(LEX_REL_BUF(relpos).zv) == 255 && !lex_is_real_string_token(LEX_REL_BUF(relpos).token)) + (Z_TYPE(LEX_REL_BUF(relpos).zv) == 255 && !lex_is_real_string_token_table[LEX_REL_BUF(relpos).token]) + +#define LEX_IS_BUF_ALPH_TOKEN(buf) \ + (Z_TYPE((buf).zv) == 255 && !lex_is_real_string_token_table[(buf).token]) #define LEX_CONVERT_STRING(token, zval, text, len) \ token = T_STRING; \ @@ -1045,6 +1058,8 @@ static zend_always_inline int lex_is_real_string_token(int token) { #define LEX_CONVERT_REL_STRING(relpos) LEX_CONVERT_STRING(LEX_REL_BUF(relpos).token, LEX_REL_BUF(relpos).zv, (char *)LEX_REL_BUF(relpos).text, LEX_REL_BUF(relpos).len) +#define LEX_CONVERT_BUF_STRING(buf) LEX_CONVERT_STRING((buf).token, (buf).zv, (char *)(buf).text, (buf).len) + #define LEX_PREPARE_RETURN_FROM_BUF \ *zendlval = CG(tokenbuffer)[CG(tokenbufptr)].zv; \ if (Z_TYPE_P(zendlval) == 255) { \ @@ -1069,7 +1084,8 @@ static zend_always_inline int lex_is_real_string_token(int token) { /* Doing it in parser also would make highlight_string() etc. look ugly when tokens are used as other tokens */ /* The real lexing step is done in lex_scan_ex */ int lex_scan(zval *zendlval) { - int retval, one, two; + int retval; + token_buf *buf_one, *buf_two; if (CG(tokenbufptr) != -1) { if (CG(tokenbuffer)[CG(tokenbufptr)].token != -1) { @@ -1079,6 +1095,9 @@ int lex_scan(zval *zendlval) { CG(tokenbufptr) = -1; } + buf_one = CG(tokenbuffer) - 1; + buf_two = buf_one; + again: Z_TYPE_P(zendlval) = 0; retval = lex_scan_ex(zendlval); @@ -1088,26 +1107,27 @@ again: goto leave; } if (retval) { - one = two = -1; - if (CG(tokenbufptr) >= CG(tokenbufsize) - 4) { CG(tokenbuffer) = erealloc(--CG(tokenbuffer), sizeof(token_buf) * ((CG(tokenbufsize) *= 2) + 1)); CG(tokenbuffer)++; + buf_one = CG(tokenbuffer) + lex_get_real_buf_offset(1); + buf_two = CG(tokenbuffer) + lex_get_real_buf_offset(2); } if (CG(tokenbufptr) != -1) { switch (retval) { PARSER_IGNORED_TOKEN_CASES - LEX_BUF_ADD + LEX_BUF_ADD_EX + goto again; } /* class access */ /* class name */ - if (retval == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_REL_ALPH_TOKEN(1)) { - LEX_CONVERT_REL_STRING(1); + if (retval == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_BUF_ALPH_TOKEN(*buf_one)) { + LEX_CONVERT_BUF_STRING(*buf_one); } /* class const / method name */ - if (LEX_REL_BUF(1).token == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_CUR_ALPH_TOKEN()) { + if (buf_one->token == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_CUR_ALPH_TOKEN()) { /* ::class is reserved */ if (retval == T_CLASS) { goto leave; @@ -1118,7 +1138,7 @@ again: /* classes */ if (CG(tokenbuf_in_class) != -1 && LEX_IS_CUR_ALPH_TOKEN()) { /* class name */ - switch (LEX_REL_BUF(1).token) { + switch (buf_one->token) { case T_CLASS: case T_INTERFACE: case T_TRAIT: @@ -1126,21 +1146,21 @@ again: LEX_CONVERT_CUR_STRING(); } } - if (CG(tokenbuf_in_class) == 0 && retval != T_NAMESPACE && ((retval != T_IMPLEMENTS && retval != T_EXTENDS) || LEX_REL_BUF(1).token == ',' || LEX_REL_BUF(1).token == T_IMPLEMENTS) && LEX_IS_CUR_ALPH_TOKEN()) { + if (CG(tokenbuf_in_class) == 0 && retval != T_NAMESPACE && ((retval != T_IMPLEMENTS && retval != T_EXTENDS) || buf_one->token == ',' || buf_one->token == T_IMPLEMENTS) && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* method names */ - if ((LEX_REL_BUF(1).token == T_FUNCTION || (LEX_REL_BUF(1).token == '&' && LEX_REL_BUF(2).token == T_FUNCTION)) && LEX_IS_CUR_ALPH_TOKEN()) { + if ((buf_one->token == T_FUNCTION || (buf_one->token == '&' && buf_two->token == T_FUNCTION)) && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* constant names */ - if (LEX_REL_BUF(1).token == T_CONST && LEX_IS_CUR_ALPH_TOKEN()) { + if (buf_one->token == T_CONST && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* trait use aliasing */ if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE) { - if (retval == ';' && LEX_IS_REL_ALPH_TOKEN(1)) { - switch (LEX_REL_BUF(1).token) { + if (retval == ';' && LEX_IS_BUF_ALPH_TOKEN(*buf_one)) { + switch (buf_one->token) { case T_PUBLIC: case T_PROTECTED: case T_PRIVATE: @@ -1149,35 +1169,35 @@ again: LEX_BUF_ADD } } - if (LEX_REL_BUF(1).token == T_INSTEADOF && LEX_IS_CUR_ALPH_TOKEN()) { + if (buf_one->token == T_INSTEADOF && LEX_IS_CUR_ALPH_TOKEN()) { LEX_BUF_ADD } } } /* class name typehints */ - if (CG(tokenbuf_fn_decl) == 0 && (LEX_REL_BUF(1).token == '(' || LEX_REL_BUF(1).token == ',') && retval != T_NAMESPACE && LEX_IS_CUR_ALPH_TOKEN()) { + if (CG(tokenbuf_fn_decl) == 0 && (buf_one->token == '(' || buf_one->token == ',') && retval != T_NAMESPACE && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* goto & labels */ - if ((retval == ':' || (retval == ';' && LEX_REL_BUF(2).token == T_GOTO)) && LEX_IS_REL_ALPH_TOKEN(1)) { + if ((retval == ':' || (retval == ';' && buf_two->token == T_GOTO)) && LEX_IS_BUF_ALPH_TOKEN(*buf_one)) { /* disallow replacing of alternative syntax and default (in switch) */ - switch (LEX_REL_BUF(1).token) { + switch (buf_one->token) { case T_DEFAULT: case T_ELSE: break; default: - LEX_CONVERT_REL_STRING(1); + LEX_CONVERT_BUF_STRING(*buf_one); } } - if (LEX_REL_BUF(1).token == T_GOTO && LEX_IS_CUR_ALPH_TOKEN() && retval != T_DEFAULT) { + if (buf_one->token == T_GOTO && LEX_IS_CUR_ALPH_TOKEN() && retval != T_DEFAULT) { LEX_CONVERT_CUR_STRING(); } /* namespaces */ /* Disallow T_NAMESPACE because of namespace\string syntax */ - switch (LEX_REL_BUF(1).token) { + switch (buf_one->token) { case T_USE: if (CG(tokenbuf_in_class) != -1) { break; @@ -1190,41 +1210,41 @@ again: } } if (retval == T_NS_SEPARATOR) { - switch (LEX_REL_BUF(1).token) { + switch (buf_one->token) { case T_NAMESPACE: break; case T_NEW: - if (LEX_REL_BUF(2).token == T_THROW || LEX_REL_BUF(2).token == T_RETURN || LEX_REL_BUF(2).token == ',') { + if (buf_two->token == T_THROW || buf_two->token == T_RETURN || buf_two->token == ',') { break; } case T_USE: case T_ECHO: - if (LEX_REL_BUF(2).token < 256 && LEX_REL_BUF(2).token != ',') { + if (buf_two->token < 256 && buf_two->token != ',') { break; } case T_IMPLEMENTS: - if (LEX_REL_BUF(1).token == T_IMPLEMENTS && LEX_REL_BUF(2).token != T_IMPLEMENTS && LEX_REL_BUF(2).token != T_EXTENDS && LEX_REL_BUF(2).token != ',') { + if (buf_one->token == T_IMPLEMENTS && buf_two->token != T_IMPLEMENTS && buf_two->token != T_EXTENDS && buf_two->token != ',') { break; } case T_EXTENDS: - if (LEX_REL_BUF(1).token == T_EXTENDS && LEX_REL_BUF(2).token != T_EXTENDS && LEX_REL_BUF(2).token != ',') { + if (buf_one->token == T_EXTENDS && buf_two->token != T_EXTENDS && buf_two->token != ',') { break; } default: - if (LEX_IS_REL_ALPH_TOKEN(1)) { - LEX_CONVERT_REL_STRING(1); + if (LEX_IS_BUF_ALPH_TOKEN(*buf_one)) { + LEX_CONVERT_BUF_STRING(*buf_one); } } } /* handling of multiple comma separated T_USE */ - if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE && LEX_IS_CUR_ALPH_TOKEN() && LEX_REL_BUF(1).token == ',') { + if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE && LEX_IS_CUR_ALPH_TOKEN() && buf_one->token == ',') { LEX_CONVERT_CUR_STRING(); } /* Handling of T_HALT_COMPILER; might cause memory leaks if not handled */ - if (LEX_REL_BUF(1).token == T_HALT_COMPILER && retval == '(') { + if (buf_one->token == T_HALT_COMPILER && retval == '(') { LEX_BUF_ADD - } else if (LEX_REL_BUF(2).token == T_HALT_COMPILER && LEX_REL_BUF(1).token == '(' && retval == ')') { + } else if (buf_two->token == T_HALT_COMPILER && buf_one->token == '(' && retval == ')') { LEX_BUF_ADD } } @@ -1282,7 +1302,7 @@ again: } else { switch (retval) { case ';': - if (LEX_REL_BUF(2).token == '(' && LEX_REL_BUF(3).token == T_HALT_COMPILER) { + if (buf_two->token == '(' && LEX_REL_BUF(3).token == T_HALT_COMPILER) { break; } case '&': From c7696ded45b12266cf33fd6f6ff62066933fd0a4 Mon Sep 17 00:00:00 2001 From: bwoebi Date: Wed, 9 Oct 2013 19:10:43 +0200 Subject: [PATCH 5/9] Optimized Stored some values in variables (which are then stored during function execution in registers) instead of refetching them everytime --- Zend/zend_language_scanner.c | 799 ++++++++++++++++++----------------- Zend/zend_language_scanner.l | 111 ++--- 2 files changed, 464 insertions(+), 446 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 47593fabcccee..3d05d11be6831 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -999,22 +999,25 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo int lex_scan_ex(zval *zendlval TSRMLS_DC); #define LEX_BUF_ADD_EX \ - CG(tokenbuffer)[++CG(tokenbufptr)].zv = *zendlval; \ - CG(tokenbuffer)[CG(tokenbufptr)].token = retval; \ - CG(tokenbuffer)[CG(tokenbufptr)].text = SCNG(yy_text); \ - CG(tokenbuffer)[CG(tokenbufptr)].len = SCNG(yy_leng); \ - CG(tokenbuffer)[CG(tokenbufptr)].start = SCNG(yy_cursor); \ - CG(tokenbuffer)[CG(tokenbufptr)].end = SCNG(yy_limit); \ + buf_tmp = CG(tokenbuffer) + (++CG(tokenbufptr)); \ + buf_tmp->zv = *zendlval; \ + buf_tmp->token = retval; \ + buf_tmp->text = SCNG(yy_text); \ + buf_tmp->len = SCNG(yy_leng); \ + buf_tmp->start = SCNG(yy_cursor); \ + buf_tmp->end = SCNG(yy_limit); \ if (retval == T_DOC_COMMENT) { \ - CG(tokenbuffer)[CG(tokenbufptr)].doc_comment = SCNG(doc_comment); \ - CG(tokenbuffer)[CG(tokenbufptr)].doc_comment_len = SCNG(doc_comment_len); \ + buf_tmp->doc_comment = SCNG(doc_comment); \ + buf_tmp->doc_comment_len = SCNG(doc_comment_len); \ } \ - CG(tokenbuffer)[CG(tokenbufptr)].lineno = CG(zend_lineno); + buf_tmp->lineno = CG(zend_lineno); #define LEX_BUF_ADD \ - LEX_BUF_ADD_EX \ buf_two = buf_one; \ - buf_one = CG(tokenbuffer) + CG(tokenbufptr); \ + buf_two_token = buf_one_token; \ + LEX_BUF_ADD_EX \ + buf_one = buf_tmp; \ + buf_one_token = retval; \ goto again; static zend_always_inline int lex_get_real_buf_offset(const int relpos) { @@ -1048,7 +1051,7 @@ static zend_always_inline zend_bool lex_is_real_string_token(int token) { (Z_TYPE(LEX_REL_BUF(relpos).zv) == 255 && !lex_is_real_string_token_table[LEX_REL_BUF(relpos).token]) #define LEX_IS_BUF_ALPH_TOKEN(buf) \ - (Z_TYPE((buf).zv) == 255 && !lex_is_real_string_token_table[(buf).token]) + (Z_TYPE(buf->zv) == 255 && !lex_is_real_string_token_table[buf##_token]) #define LEX_CONVERT_STRING(token, zval, text, len) \ token = T_STRING; \ @@ -1056,30 +1059,31 @@ static zend_always_inline zend_bool lex_is_real_string_token(int token) { Z_STRVAL(zval) = estrndup(text, len); \ Z_TYPE(zval) = IS_STRING; -#define LEX_CONVERT_CUR_STRING() LEX_CONVERT_STRING(retval, *zendlval, yytext, yyleng) +#define LEX_CONVERT_CUR_STRING() LEX_CONVERT_STRING(retval, *zendlval, yytext, yyleng) goto leave; #define LEX_CONVERT_REL_STRING(relpos) LEX_CONVERT_STRING(LEX_REL_BUF(relpos).token, LEX_REL_BUF(relpos).zv, (char *)LEX_REL_BUF(relpos).text, LEX_REL_BUF(relpos).len) -#define LEX_CONVERT_BUF_STRING(buf) LEX_CONVERT_STRING((buf).token, (buf).zv, (char *)(buf).text, (buf).len) +#define LEX_CONVERT_BUF_STRING(buf) LEX_CONVERT_STRING(buf##_token, buf->zv, (char *)buf->text, buf->len) buf->token = buf##_token; #define LEX_PREPARE_RETURN_FROM_BUF \ - *zendlval = CG(tokenbuffer)[CG(tokenbufptr)].zv; \ + buf_tmp = CG(tokenbuffer) + CG(tokenbufptr)++; \ + *zendlval = buf_tmp->zv; \ if (Z_TYPE_P(zendlval) == 255) { \ Z_TYPE_P(zendlval) = 0; \ } \ - retval = CG(tokenbuffer)[CG(tokenbufptr)].token; \ + retval = buf_tmp->token; \ if (retval == '}' || retval == T_DOC_COMMENT) { \ RESET_DOC_COMMENT(); \ } \ - SCNG(yy_text) = CG(tokenbuffer)[CG(tokenbufptr)].text; \ - SCNG(yy_leng) = CG(tokenbuffer)[CG(tokenbufptr)].len; \ - SCNG(yy_cursor) = CG(tokenbuffer)[CG(tokenbufptr)].start; \ - SCNG(yy_limit) = CG(tokenbuffer)[CG(tokenbufptr)].end; \ + SCNG(yy_text) = buf_tmp->text; \ + SCNG(yy_leng) = buf_tmp->len; \ + SCNG(yy_cursor) = buf_tmp->start; \ + SCNG(yy_limit) = buf_tmp->end; \ if (retval == T_DOC_COMMENT) { \ - CG(doc_comment) = CG(tokenbuffer)[CG(tokenbufptr)].doc_comment; \ - CG(doc_comment_len) = CG(tokenbuffer)[CG(tokenbufptr)].doc_comment_len; \ + CG(doc_comment) = buf_tmp->doc_comment; \ + CG(doc_comment_len) = buf_tmp->doc_comment_len; \ } \ - CG(zend_lineno) = CG(tokenbuffer)[CG(tokenbufptr)++].lineno; + CG(zend_lineno) = buf_tmp->lineno; /* This function checks the cases where a token needs to be converted to some other token to simplify parsing */ /* Also it shouldn't be done in parser, because it actually breaks applications relying on token_get_all output */ @@ -1087,7 +1091,8 @@ static zend_always_inline zend_bool lex_is_real_string_token(int token) { /* The real lexing step is done in lex_scan_ex */ int lex_scan(zval *zendlval) { int retval; - token_buf *buf_one, *buf_two; + token_buf *buf_one, *buf_two, *buf_tmp; + int buf_one_token, buf_two_token; if (CG(tokenbufptr) != -1) { if (CG(tokenbuffer)[CG(tokenbufptr)].token != -1) { @@ -1098,7 +1103,9 @@ int lex_scan(zval *zendlval) { } buf_one = CG(tokenbuffer) - 1; + buf_one_token = buf_one->token; buf_two = buf_one; + buf_two_token = buf_one_token; again: Z_TYPE_P(zendlval) = 0; @@ -1113,7 +1120,9 @@ int lex_scan(zval *zendlval) { CG(tokenbuffer) = erealloc(--CG(tokenbuffer), sizeof(token_buf) * ((CG(tokenbufsize) *= 2) + 1)); CG(tokenbuffer)++; buf_one = CG(tokenbuffer) + lex_get_real_buf_offset(1); + buf_one_token = buf_one->token; buf_two = CG(tokenbuffer) + lex_get_real_buf_offset(2); + buf_two_token = buf_two->token; } if (CG(tokenbufptr) != -1) { @@ -1125,11 +1134,11 @@ int lex_scan(zval *zendlval) { /* class access */ /* class name */ - if (retval == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_BUF_ALPH_TOKEN(*buf_one)) { - LEX_CONVERT_BUF_STRING(*buf_one); + if (retval == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_BUF_ALPH_TOKEN(buf_one)) { + LEX_CONVERT_BUF_STRING(buf_one); } /* class const / method name */ - if (buf_one->token == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_CUR_ALPH_TOKEN()) { + if (buf_one_token == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_CUR_ALPH_TOKEN()) { /* ::class is reserved */ if (retval == T_CLASS) { goto leave; @@ -1140,7 +1149,7 @@ int lex_scan(zval *zendlval) { /* classes */ if (CG(tokenbuf_in_class) != -1 && LEX_IS_CUR_ALPH_TOKEN()) { /* class name */ - switch (buf_one->token) { + switch (buf_one_token) { case T_CLASS: case T_INTERFACE: case T_TRAIT: @@ -1148,21 +1157,21 @@ int lex_scan(zval *zendlval) { LEX_CONVERT_CUR_STRING(); } } - if (CG(tokenbuf_in_class) == 0 && retval != T_NAMESPACE && ((retval != T_IMPLEMENTS && retval != T_EXTENDS) || buf_one->token == ',' || buf_one->token == T_IMPLEMENTS) && LEX_IS_CUR_ALPH_TOKEN()) { + if (CG(tokenbuf_in_class) == 0 && retval != T_NAMESPACE && ((retval != T_IMPLEMENTS && retval != T_EXTENDS) || buf_one_token == ',' || buf_one_token == T_IMPLEMENTS) && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* method names */ - if ((buf_one->token == T_FUNCTION || (buf_one->token == '&' && buf_two->token == T_FUNCTION)) && LEX_IS_CUR_ALPH_TOKEN()) { + if ((buf_one_token == T_FUNCTION || (buf_one_token == '&' && buf_two_token == T_FUNCTION)) && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* constant names */ - if (buf_one->token == T_CONST && LEX_IS_CUR_ALPH_TOKEN()) { + if (buf_one_token == T_CONST && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* trait use aliasing */ if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE) { - if (retval == ';' && LEX_IS_BUF_ALPH_TOKEN(*buf_one)) { - switch (buf_one->token) { + if (retval == ';' && LEX_IS_BUF_ALPH_TOKEN(buf_one)) { + switch (buf_one_token) { case T_PUBLIC: case T_PROTECTED: case T_PRIVATE: @@ -1171,35 +1180,35 @@ int lex_scan(zval *zendlval) { LEX_BUF_ADD } } - if (buf_one->token == T_INSTEADOF && LEX_IS_CUR_ALPH_TOKEN()) { + if (buf_one_token == T_INSTEADOF && LEX_IS_CUR_ALPH_TOKEN()) { LEX_BUF_ADD } } } /* class name typehints */ - if (CG(tokenbuf_fn_decl) == 0 && (buf_one->token == '(' || buf_one->token == ',') && retval != T_NAMESPACE && LEX_IS_CUR_ALPH_TOKEN()) { + if (CG(tokenbuf_fn_decl) == 0 && (buf_one_token == '(' || buf_one_token == ',') && retval != T_NAMESPACE && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* goto & labels */ - if ((retval == ':' || (retval == ';' && buf_two->token == T_GOTO)) && LEX_IS_BUF_ALPH_TOKEN(*buf_one)) { + if ((retval == ':' || (retval == ';' && buf_two_token == T_GOTO)) && LEX_IS_BUF_ALPH_TOKEN(buf_one)) { /* disallow replacing of alternative syntax and default (in switch) */ - switch (buf_one->token) { + switch (buf_one_token) { case T_DEFAULT: case T_ELSE: break; default: - LEX_CONVERT_BUF_STRING(*buf_one); + LEX_CONVERT_BUF_STRING(buf_one); } } - if (buf_one->token == T_GOTO && LEX_IS_CUR_ALPH_TOKEN() && retval != T_DEFAULT) { + if (buf_one_token == T_GOTO && LEX_IS_CUR_ALPH_TOKEN() && retval != T_DEFAULT) { LEX_CONVERT_CUR_STRING(); } /* namespaces */ /* Disallow T_NAMESPACE because of namespace\string syntax */ - switch (buf_one->token) { + switch (buf_one_token) { case T_USE: if (CG(tokenbuf_in_class) != -1) { break; @@ -1212,41 +1221,41 @@ int lex_scan(zval *zendlval) { } } if (retval == T_NS_SEPARATOR) { - switch (buf_one->token) { + switch (buf_one_token) { case T_NAMESPACE: break; case T_NEW: - if (buf_two->token == T_THROW || buf_two->token == T_RETURN || buf_two->token == ',') { + if (buf_two_token == T_THROW || buf_two_token == T_RETURN || buf_two_token == ',') { break; } case T_USE: case T_ECHO: - if (buf_two->token < 256 && buf_two->token != ',') { + if (buf_two_token < 256 && buf_two_token != ',') { break; } case T_IMPLEMENTS: - if (buf_one->token == T_IMPLEMENTS && buf_two->token != T_IMPLEMENTS && buf_two->token != T_EXTENDS && buf_two->token != ',') { + if (buf_one_token == T_IMPLEMENTS && buf_two_token != T_IMPLEMENTS && buf_two_token != T_EXTENDS && buf_two_token != ',') { break; } case T_EXTENDS: - if (buf_one->token == T_EXTENDS && buf_two->token != T_EXTENDS && buf_two->token != ',') { + if (buf_one_token == T_EXTENDS && buf_two_token != T_EXTENDS && buf_two_token != ',') { break; } default: - if (LEX_IS_BUF_ALPH_TOKEN(*buf_one)) { - LEX_CONVERT_BUF_STRING(*buf_one); + if (LEX_IS_BUF_ALPH_TOKEN(buf_one)) { + LEX_CONVERT_BUF_STRING(buf_one); } } } /* handling of multiple comma separated T_USE */ - if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE && LEX_IS_CUR_ALPH_TOKEN() && buf_one->token == ',') { + if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE && LEX_IS_CUR_ALPH_TOKEN() && buf_one_token == ',') { LEX_CONVERT_CUR_STRING(); } /* Handling of T_HALT_COMPILER; might cause memory leaks if not handled */ - if (buf_one->token == T_HALT_COMPILER && retval == '(') { + if (buf_one_token == T_HALT_COMPILER && retval == '(') { LEX_BUF_ADD - } else if (buf_two->token == T_HALT_COMPILER && buf_one->token == '(' && retval == ')') { + } else if (buf_two_token == T_HALT_COMPILER && buf_one_token == '(' && retval == ')') { LEX_BUF_ADD } } @@ -1304,7 +1313,7 @@ int lex_scan(zval *zendlval) { } else { switch (retval) { case ';': - if (buf_two->token == '(' && LEX_REL_BUF(3).token == T_HALT_COMPILER) { + if (buf_two_token == '(' && LEX_REL_BUF(3).token == T_HALT_COMPILER) { break; } case '&': @@ -1349,7 +1358,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yymore_restart: -#line 1353 "Zend/zend_language_scanner.c" +#line 1362 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1448,7 +1457,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy3: YYDEBUG(3, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2089 "Zend/zend_language_scanner.l" +#line 2098 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1508,7 +1517,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) HANDLE_NEWLINES(yytext, yyleng); return T_INLINE_HTML; } -#line 1512 "Zend/zend_language_scanner.c" +#line 1521 "Zend/zend_language_scanner.c" yy4: YYDEBUG(4, *YYCURSOR); yych = *++YYCURSOR; @@ -1526,7 +1535,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy6: YYDEBUG(6, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2079 "Zend/zend_language_scanner.l" +#line 2088 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1536,14 +1545,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1540 "Zend/zend_language_scanner.c" +#line 1549 "Zend/zend_language_scanner.c" yy7: YYDEBUG(7, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy43; YYDEBUG(8, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2060 "Zend/zend_language_scanner.l" +#line 2069 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1553,7 +1562,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1557 "Zend/zend_language_scanner.c" +#line 1566 "Zend/zend_language_scanner.c" yy9: YYDEBUG(9, *YYCURSOR); yych = *++YYCURSOR; @@ -1739,7 +1748,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2026 "Zend/zend_language_scanner.l" +#line 2035 "Zend/zend_language_scanner.l" { YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1)); @@ -1754,7 +1763,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1758 "Zend/zend_language_scanner.c" +#line 1767 "Zend/zend_language_scanner.c" yy39: YYDEBUG(39, *YYCURSOR); yych = *++YYCURSOR; @@ -1781,7 +1790,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2042 "Zend/zend_language_scanner.l" +#line 2051 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1791,19 +1800,19 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1795 "Zend/zend_language_scanner.c" +#line 1804 "Zend/zend_language_scanner.c" yy45: YYDEBUG(45, *YYCURSOR); ++YYCURSOR; YYDEBUG(46, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2053 "Zend/zend_language_scanner.l" +#line 2062 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG_WITH_ECHO; } -#line 1807 "Zend/zend_language_scanner.c" +#line 1816 "Zend/zend_language_scanner.c" yy47: YYDEBUG(47, *YYCURSOR); yych = *++YYCURSOR; @@ -1830,14 +1839,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2071 "Zend/zend_language_scanner.l" +#line 2080 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1841 "Zend/zend_language_scanner.c" +#line 1850 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; @@ -1908,7 +1917,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy56: YYDEBUG(56, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2533 "Zend/zend_language_scanner.l" +#line 2542 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1949,7 +1958,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 1953 "Zend/zend_language_scanner.c" +#line 1962 "Zend/zend_language_scanner.c" yy57: YYDEBUG(57, *YYCURSOR); yych = *++YYCURSOR; @@ -1960,12 +1969,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(59, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2477 "Zend/zend_language_scanner.l" +#line 2486 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '`'; } -#line 1969 "Zend/zend_language_scanner.c" +#line 1978 "Zend/zend_language_scanner.c" yy60: YYDEBUG(60, *YYCURSOR); yych = *++YYCURSOR; @@ -1975,14 +1984,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(62, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2464 "Zend/zend_language_scanner.l" +#line 2473 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 1986 "Zend/zend_language_scanner.c" +#line 1995 "Zend/zend_language_scanner.c" yy63: YYDEBUG(63, *YYCURSOR); yyaccept = 0; @@ -1998,24 +2007,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy65: YYDEBUG(65, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2171 "Zend/zend_language_scanner.l" +#line 2180 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2008 "Zend/zend_language_scanner.c" +#line 2017 "Zend/zend_language_scanner.c" yy66: YYDEBUG(66, *YYCURSOR); ++YYCURSOR; YYDEBUG(67, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1806 "Zend/zend_language_scanner.l" +#line 1815 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2019 "Zend/zend_language_scanner.c" +#line 2028 "Zend/zend_language_scanner.c" yy68: YYDEBUG(68, *YYCURSOR); yych = *++YYCURSOR; @@ -2029,7 +2038,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(71, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2163 "Zend/zend_language_scanner.l" +#line 2172 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2037,7 +2046,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2041 "Zend/zend_language_scanner.c" +#line 2050 "Zend/zend_language_scanner.c" yy72: YYDEBUG(72, *YYCURSOR); yych = *++YYCURSOR; @@ -2055,7 +2064,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(74, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2153 "Zend/zend_language_scanner.l" +#line 2162 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2063,7 +2072,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2067 "Zend/zend_language_scanner.c" +#line 2076 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -2131,7 +2140,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy78: YYDEBUG(78, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2483 "Zend/zend_language_scanner.l" +#line 2492 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -2180,7 +2189,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2184 "Zend/zend_language_scanner.c" +#line 2193 "Zend/zend_language_scanner.c" yy79: YYDEBUG(79, *YYCURSOR); yych = *++YYCURSOR; @@ -2191,12 +2200,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2472 "Zend/zend_language_scanner.l" +#line 2481 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '"'; } -#line 2200 "Zend/zend_language_scanner.c" +#line 2209 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2206,14 +2215,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2464 "Zend/zend_language_scanner.l" +#line 2473 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 2217 "Zend/zend_language_scanner.c" +#line 2226 "Zend/zend_language_scanner.c" yy85: YYDEBUG(85, *YYCURSOR); yyaccept = 0; @@ -2229,24 +2238,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy87: YYDEBUG(87, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2171 "Zend/zend_language_scanner.l" +#line 2180 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2239 "Zend/zend_language_scanner.c" +#line 2248 "Zend/zend_language_scanner.c" yy88: YYDEBUG(88, *YYCURSOR); ++YYCURSOR; YYDEBUG(89, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1806 "Zend/zend_language_scanner.l" +#line 1815 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2250 "Zend/zend_language_scanner.c" +#line 2259 "Zend/zend_language_scanner.c" yy90: YYDEBUG(90, *YYCURSOR); yych = *++YYCURSOR; @@ -2260,7 +2269,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2163 "Zend/zend_language_scanner.l" +#line 2172 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2268,7 +2277,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2272 "Zend/zend_language_scanner.c" +#line 2281 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); yych = *++YYCURSOR; @@ -2286,7 +2295,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(96, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2153 "Zend/zend_language_scanner.l" +#line 2162 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2294,7 +2303,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2298 "Zend/zend_language_scanner.c" +#line 2307 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -2305,7 +2314,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(100, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2450 "Zend/zend_language_scanner.l" +#line 2459 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -2318,7 +2327,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) BEGIN(ST_IN_SCRIPTING); return T_END_HEREDOC; } -#line 2322 "Zend/zend_language_scanner.c" +#line 2331 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -2380,7 +2389,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy104: YYDEBUG(104, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2575 "Zend/zend_language_scanner.l" +#line 2584 "Zend/zend_language_scanner.l" { int newline = 0; @@ -2453,7 +2462,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0 TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2457 "Zend/zend_language_scanner.c" +#line 2466 "Zend/zend_language_scanner.c" yy105: YYDEBUG(105, *YYCURSOR); yych = *++YYCURSOR; @@ -2468,14 +2477,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2464 "Zend/zend_language_scanner.l" +#line 2473 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 2479 "Zend/zend_language_scanner.c" +#line 2488 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 0; @@ -2491,24 +2500,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy111: YYDEBUG(111, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2171 "Zend/zend_language_scanner.l" +#line 2180 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2501 "Zend/zend_language_scanner.c" +#line 2510 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); ++YYCURSOR; YYDEBUG(113, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1806 "Zend/zend_language_scanner.l" +#line 1815 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2512 "Zend/zend_language_scanner.c" +#line 2521 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); yych = *++YYCURSOR; @@ -2522,7 +2531,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(117, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2163 "Zend/zend_language_scanner.l" +#line 2172 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2530,7 +2539,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2534 "Zend/zend_language_scanner.c" +#line 2543 "Zend/zend_language_scanner.c" yy118: YYDEBUG(118, *YYCURSOR); yych = *++YYCURSOR; @@ -2548,7 +2557,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2153 "Zend/zend_language_scanner.l" +#line 2162 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2556,7 +2565,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2560 "Zend/zend_language_scanner.c" +#line 2569 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2739,13 +2748,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy124: YYDEBUG(124, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2194 "Zend/zend_language_scanner.l" +#line 2203 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 2749 "Zend/zend_language_scanner.c" +#line 2758 "Zend/zend_language_scanner.c" yy125: YYDEBUG(125, *YYCURSOR); yych = *++YYCURSOR; @@ -2977,11 +2986,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy139: YYDEBUG(139, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1795 "Zend/zend_language_scanner.l" +#line 1804 "Zend/zend_language_scanner.l" { return yytext[0]; } -#line 2985 "Zend/zend_language_scanner.c" +#line 2994 "Zend/zend_language_scanner.c" yy140: YYDEBUG(140, *YYCURSOR); ++YYCURSOR; @@ -2990,13 +2999,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy141: YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1528 "Zend/zend_language_scanner.l" +#line 1537 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 3000 "Zend/zend_language_scanner.c" +#line 3009 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); yych = *++YYCURSOR; @@ -3007,11 +3016,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(144, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1555 "Zend/zend_language_scanner.l" +#line 1564 "Zend/zend_language_scanner.l" { return T_NS_SEPARATOR; } -#line 3015 "Zend/zend_language_scanner.c" +#line 3024 "Zend/zend_language_scanner.c" yy145: YYDEBUG(145, *YYCURSOR); yych = *++YYCURSOR; @@ -3239,25 +3248,25 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1800 "Zend/zend_language_scanner.l" +#line 1809 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return '{'; } -#line 3248 "Zend/zend_language_scanner.c" +#line 3257 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; YYDEBUG(171, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1812 "Zend/zend_language_scanner.l" +#line 1821 "Zend/zend_language_scanner.l" { if (!zend_stack_is_empty(&SCNG(state_stack))) { yy_pop_state(TSRMLS_C); } return '}'; } -#line 3261 "Zend/zend_language_scanner.c" +#line 3270 "Zend/zend_language_scanner.c" yy172: YYDEBUG(172, *YYCURSOR); yyaccept = 2; @@ -3285,7 +3294,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy173: YYDEBUG(173, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1861 "Zend/zend_language_scanner.l" +#line 1870 "Zend/zend_language_scanner.l" { if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0); @@ -3306,7 +3315,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_LONG; return T_LNUMBER; } -#line 3310 "Zend/zend_language_scanner.c" +#line 3319 "Zend/zend_language_scanner.c" yy174: YYDEBUG(174, *YYCURSOR); yyaccept = 2; @@ -3334,7 +3343,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy177: YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2201 "Zend/zend_language_scanner.l" +#line 2210 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -3368,14 +3377,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_COMMENT; } -#line 3372 "Zend/zend_language_scanner.c" +#line 3381 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; yy179: YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2287 "Zend/zend_language_scanner.l" +#line 2296 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -3441,14 +3450,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_CONSTANT_ENCAPSED_STRING; } -#line 3445 "Zend/zend_language_scanner.c" +#line 3454 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; yy181: YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2354 "Zend/zend_language_scanner.l" +#line 2363 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3489,24 +3498,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) BEGIN(ST_DOUBLE_QUOTES); return '"'; } -#line 3493 "Zend/zend_language_scanner.c" +#line 3502 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2444 "Zend/zend_language_scanner.l" +#line 2453 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); return '`'; } -#line 3504 "Zend/zend_language_scanner.c" +#line 3513 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2707 "Zend/zend_language_scanner.l" +#line 2716 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -3515,7 +3524,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3519 "Zend/zend_language_scanner.c" +#line 3528 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3542,12 +3551,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy190: YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1920 "Zend/zend_language_scanner.l" +#line 1929 "Zend/zend_language_scanner.l" { ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL)); return T_DNUMBER; } -#line 3551 "Zend/zend_language_scanner.c" +#line 3560 "Zend/zend_language_scanner.c" yy191: YYDEBUG(191, *YYCURSOR); yyaccept = 2; @@ -3639,7 +3648,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(202, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1837 "Zend/zend_language_scanner.l" +#line 1846 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3663,7 +3672,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_DNUMBER; } } -#line 3667 "Zend/zend_language_scanner.c" +#line 3676 "Zend/zend_language_scanner.c" yy203: YYDEBUG(203, *YYCURSOR); ++YYCURSOR; @@ -3675,7 +3684,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1882 "Zend/zend_language_scanner.l" +#line 1891 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3699,7 +3708,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_DNUMBER; } } -#line 3703 "Zend/zend_language_scanner.c" +#line 3712 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; @@ -3708,13 +3717,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy207: YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2268 "Zend/zend_language_scanner.l" +#line 2277 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ BEGIN(INITIAL); return T_CLOSE_TAG; /* implicit ';' at php-end tag */ } -#line 3718 "Zend/zend_language_scanner.c" +#line 3727 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); yych = *++YYCURSOR; @@ -3748,13 +3757,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy212: YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2171 "Zend/zend_language_scanner.l" +#line 2180 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 3758 "Zend/zend_language_scanner.c" +#line 3767 "Zend/zend_language_scanner.c" yy213: YYDEBUG(213, *YYCURSOR); yych = *++YYCURSOR; @@ -3768,11 +3777,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1783 "Zend/zend_language_scanner.l" +#line 1792 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_XOR) } -#line 3776 "Zend/zend_language_scanner.c" +#line 3785 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3781,61 +3790,61 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1775 "Zend/zend_language_scanner.l" +#line 1784 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_OR) } -#line 3789 "Zend/zend_language_scanner.c" +#line 3798 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1763 "Zend/zend_language_scanner.l" +#line 1772 "Zend/zend_language_scanner.l" { return T_XOR_EQUAL; } -#line 3799 "Zend/zend_language_scanner.c" +#line 3808 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; YYDEBUG(221, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1767 "Zend/zend_language_scanner.l" +#line 1776 "Zend/zend_language_scanner.l" { return T_BOOLEAN_OR; } -#line 3809 "Zend/zend_language_scanner.c" +#line 3818 "Zend/zend_language_scanner.c" yy222: YYDEBUG(222, *YYCURSOR); ++YYCURSOR; YYDEBUG(223, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1759 "Zend/zend_language_scanner.l" +#line 1768 "Zend/zend_language_scanner.l" { return T_OR_EQUAL; } -#line 3819 "Zend/zend_language_scanner.c" +#line 3828 "Zend/zend_language_scanner.c" yy224: YYDEBUG(224, *YYCURSOR); ++YYCURSOR; YYDEBUG(225, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1771 "Zend/zend_language_scanner.l" +#line 1780 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_BOOLEAN_AND) } -#line 3829 "Zend/zend_language_scanner.c" +#line 3838 "Zend/zend_language_scanner.c" yy226: YYDEBUG(226, *YYCURSOR); ++YYCURSOR; YYDEBUG(227, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1755 "Zend/zend_language_scanner.l" +#line 1764 "Zend/zend_language_scanner.l" { return T_AND_EQUAL; } -#line 3839 "Zend/zend_language_scanner.c" +#line 3848 "Zend/zend_language_scanner.c" yy228: YYDEBUG(228, *YYCURSOR); ++YYCURSOR; @@ -3844,7 +3853,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy229: YYDEBUG(229, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2275 "Zend/zend_language_scanner.l" +#line 2284 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { BEGIN(INITIAL); @@ -3855,17 +3864,17 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return yytext[0]; } } -#line 3859 "Zend/zend_language_scanner.c" +#line 3868 "Zend/zend_language_scanner.c" yy230: YYDEBUG(230, *YYCURSOR); ++YYCURSOR; YYDEBUG(231, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1743 "Zend/zend_language_scanner.l" +#line 1752 "Zend/zend_language_scanner.l" { return T_MOD_EQUAL; } -#line 3869 "Zend/zend_language_scanner.c" +#line 3878 "Zend/zend_language_scanner.c" yy232: YYDEBUG(232, *YYCURSOR); yych = *++YYCURSOR; @@ -3896,11 +3905,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(237, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1739 "Zend/zend_language_scanner.l" +#line 1748 "Zend/zend_language_scanner.l" { return T_CONCAT_EQUAL; } -#line 3904 "Zend/zend_language_scanner.c" +#line 3913 "Zend/zend_language_scanner.c" yy238: YYDEBUG(238, *YYCURSOR); yyaccept = 4; @@ -3909,7 +3918,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy239: YYDEBUG(239, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2235 "Zend/zend_language_scanner.l" +#line 2244 "Zend/zend_language_scanner.l" { int doc_com; @@ -3942,7 +3951,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_COMMENT; } -#line 3946 "Zend/zend_language_scanner.c" +#line 3955 "Zend/zend_language_scanner.c" yy240: YYDEBUG(240, *YYCURSOR); yych = *++YYCURSOR; @@ -3952,11 +3961,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(242, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1735 "Zend/zend_language_scanner.l" +#line 1744 "Zend/zend_language_scanner.l" { return T_DIV_EQUAL; } -#line 3960 "Zend/zend_language_scanner.c" +#line 3969 "Zend/zend_language_scanner.c" yy243: YYDEBUG(243, *YYCURSOR); yych = *++YYCURSOR; @@ -3979,42 +3988,42 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(247, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1731 "Zend/zend_language_scanner.l" +#line 1740 "Zend/zend_language_scanner.l" { return T_MUL_EQUAL; } -#line 3987 "Zend/zend_language_scanner.c" +#line 3996 "Zend/zend_language_scanner.c" yy248: YYDEBUG(248, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy252; YYDEBUG(249, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1791 "Zend/zend_language_scanner.l" +#line 1800 "Zend/zend_language_scanner.l" { return T_SR; } -#line 3998 "Zend/zend_language_scanner.c" +#line 4007 "Zend/zend_language_scanner.c" yy250: YYDEBUG(250, *YYCURSOR); ++YYCURSOR; YYDEBUG(251, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1719 "Zend/zend_language_scanner.l" +#line 1728 "Zend/zend_language_scanner.l" { return T_IS_GREATER_OR_EQUAL; } -#line 4008 "Zend/zend_language_scanner.c" +#line 4017 "Zend/zend_language_scanner.c" yy252: YYDEBUG(252, *YYCURSOR); ++YYCURSOR; YYDEBUG(253, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1751 "Zend/zend_language_scanner.l" +#line 1760 "Zend/zend_language_scanner.l" { return T_SR_EQUAL; } -#line 4018 "Zend/zend_language_scanner.c" +#line 4027 "Zend/zend_language_scanner.c" yy254: YYDEBUG(254, *YYCURSOR); yyaccept = 5; @@ -4025,11 +4034,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy255: YYDEBUG(255, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1787 "Zend/zend_language_scanner.l" +#line 1796 "Zend/zend_language_scanner.l" { return T_SL; } -#line 4033 "Zend/zend_language_scanner.c" +#line 4042 "Zend/zend_language_scanner.c" yy256: YYDEBUG(256, *YYCURSOR); yych = *++YYCURSOR; @@ -4041,22 +4050,22 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(258, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1715 "Zend/zend_language_scanner.l" +#line 1724 "Zend/zend_language_scanner.l" { return T_IS_SMALLER_OR_EQUAL; } -#line 4049 "Zend/zend_language_scanner.c" +#line 4058 "Zend/zend_language_scanner.c" yy259: YYDEBUG(259, *YYCURSOR); ++YYCURSOR; yy260: YYDEBUG(260, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1711 "Zend/zend_language_scanner.l" +#line 1720 "Zend/zend_language_scanner.l" { return T_IS_NOT_EQUAL; } -#line 4060 "Zend/zend_language_scanner.c" +#line 4069 "Zend/zend_language_scanner.c" yy261: YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; @@ -4107,11 +4116,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(269, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1747 "Zend/zend_language_scanner.l" +#line 1756 "Zend/zend_language_scanner.l" { return T_SL_EQUAL; } -#line 4115 "Zend/zend_language_scanner.c" +#line 4124 "Zend/zend_language_scanner.c" yy270: YYDEBUG(270, *YYCURSOR); ++YYCURSOR; @@ -4216,7 +4225,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy280: YYDEBUG(280, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2396 "Zend/zend_language_scanner.l" +#line 2405 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -4263,7 +4272,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_START_HEREDOC; } -#line 4267 "Zend/zend_language_scanner.c" +#line 4276 "Zend/zend_language_scanner.c" yy281: YYDEBUG(281, *YYCURSOR); yych = *++YYCURSOR; @@ -4303,31 +4312,31 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(286, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1703 "Zend/zend_language_scanner.l" +#line 1712 "Zend/zend_language_scanner.l" { return T_IS_NOT_IDENTICAL; } -#line 4311 "Zend/zend_language_scanner.c" +#line 4320 "Zend/zend_language_scanner.c" yy287: YYDEBUG(287, *YYCURSOR); ++YYCURSOR; YYDEBUG(288, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1723 "Zend/zend_language_scanner.l" +#line 1732 "Zend/zend_language_scanner.l" { return T_PLUS_EQUAL; } -#line 4321 "Zend/zend_language_scanner.c" +#line 4330 "Zend/zend_language_scanner.c" yy289: YYDEBUG(289, *YYCURSOR); ++YYCURSOR; YYDEBUG(290, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1691 "Zend/zend_language_scanner.l" +#line 1700 "Zend/zend_language_scanner.l" { return T_INC; } -#line 4331 "Zend/zend_language_scanner.c" +#line 4340 "Zend/zend_language_scanner.c" yy291: YYDEBUG(291, *YYCURSOR); yych = *++YYCURSOR; @@ -4346,42 +4355,42 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(294, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1679 "Zend/zend_language_scanner.l" +#line 1688 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LIST) } -#line 4354 "Zend/zend_language_scanner.c" +#line 4363 "Zend/zend_language_scanner.c" yy295: YYDEBUG(295, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy299; YYDEBUG(296, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1707 "Zend/zend_language_scanner.l" +#line 1716 "Zend/zend_language_scanner.l" { return T_IS_EQUAL; } -#line 4365 "Zend/zend_language_scanner.c" +#line 4374 "Zend/zend_language_scanner.c" yy297: YYDEBUG(297, *YYCURSOR); ++YYCURSOR; YYDEBUG(298, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1675 "Zend/zend_language_scanner.l" +#line 1684 "Zend/zend_language_scanner.l" { return T_DOUBLE_ARROW; } -#line 4375 "Zend/zend_language_scanner.c" +#line 4384 "Zend/zend_language_scanner.c" yy299: YYDEBUG(299, *YYCURSOR); ++YYCURSOR; YYDEBUG(300, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1699 "Zend/zend_language_scanner.l" +#line 1708 "Zend/zend_language_scanner.l" { return T_IS_IDENTICAL; } -#line 4385 "Zend/zend_language_scanner.c" +#line 4394 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4511,7 +4520,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(320, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2016 "Zend/zend_language_scanner.l" +#line 2025 "Zend/zend_language_scanner.l" { if (CG(current_namespace)) { *zendlval = *CG(current_namespace); @@ -4521,7 +4530,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_NS_C; } -#line 4525 "Zend/zend_language_scanner.c" +#line 4534 "Zend/zend_language_scanner.c" yy321: YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; @@ -4541,7 +4550,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(325, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1991 "Zend/zend_language_scanner.l" +#line 2000 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); const size_t filename_len = strlen(filename); @@ -4566,7 +4575,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ZVAL_STRING(zendlval, dirname, 0); return T_DIR; } -#line 4570 "Zend/zend_language_scanner.c" +#line 4579 "Zend/zend_language_scanner.c" yy326: YYDEBUG(326, *YYCURSOR); yych = *++YYCURSOR; @@ -4591,12 +4600,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(331, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1976 "Zend/zend_language_scanner.l" +#line 1985 "Zend/zend_language_scanner.l" { ZVAL_LONG(zendlval, CG(zend_lineno)); return T_LINE; } -#line 4600 "Zend/zend_language_scanner.c" +#line 4609 "Zend/zend_language_scanner.c" yy332: YYDEBUG(332, *YYCURSOR); yych = *++YYCURSOR; @@ -4631,7 +4640,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(339, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1963 "Zend/zend_language_scanner.l" +#line 1972 "Zend/zend_language_scanner.l" { const char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL; const char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL; @@ -4644,7 +4653,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_METHOD_C; } -#line 4648 "Zend/zend_language_scanner.c" +#line 4657 "Zend/zend_language_scanner.c" yy340: YYDEBUG(340, *YYCURSOR); yych = *++YYCURSOR; @@ -4695,7 +4704,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(350, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1953 "Zend/zend_language_scanner.l" +#line 1962 "Zend/zend_language_scanner.l" { zend_op_array *op_array = CG(active_op_array); if (op_array && op_array->function_name) { @@ -4705,7 +4714,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_FUNC_C; } -#line 4709 "Zend/zend_language_scanner.c" +#line 4718 "Zend/zend_language_scanner.c" yy351: YYDEBUG(351, *YYCURSOR); yych = *++YYCURSOR; @@ -4725,7 +4734,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(355, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1981 "Zend/zend_language_scanner.l" +#line 1990 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); @@ -4735,7 +4744,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ZVAL_STRING(zendlval, filename, 1); return T_FILE; } -#line 4739 "Zend/zend_language_scanner.c" +#line 4748 "Zend/zend_language_scanner.c" yy356: YYDEBUG(356, *YYCURSOR); yych = *++YYCURSOR; @@ -4765,7 +4774,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(362, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1943 "Zend/zend_language_scanner.l" +#line 1952 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ce->name && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4775,7 +4784,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_TRAIT_C; } -#line 4779 "Zend/zend_language_scanner.c" +#line 4788 "Zend/zend_language_scanner.c" yy363: YYDEBUG(363, *YYCURSOR); yych = *++YYCURSOR; @@ -4805,7 +4814,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(369, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1925 "Zend/zend_language_scanner.l" +#line 1934 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4823,7 +4832,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_CLASS_C; } -#line 4827 "Zend/zend_language_scanner.c" +#line 4836 "Zend/zend_language_scanner.c" yy370: YYDEBUG(370, *YYCURSOR); yych = *++YYCURSOR; @@ -4885,11 +4894,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(382, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1643 "Zend/zend_language_scanner.l" +#line 1652 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_HALT_COMPILER) } -#line 4893 "Zend/zend_language_scanner.c" +#line 4902 "Zend/zend_language_scanner.c" yy383: YYDEBUG(383, *YYCURSOR); yych = *++YYCURSOR; @@ -4909,11 +4918,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(386, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1623 "Zend/zend_language_scanner.l" +#line 1632 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_USE) } -#line 4917 "Zend/zend_language_scanner.c" +#line 4926 "Zend/zend_language_scanner.c" yy387: YYDEBUG(387, *YYCURSOR); yych = *++YYCURSOR; @@ -4932,11 +4941,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(390, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1671 "Zend/zend_language_scanner.l" +#line 1680 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_UNSET) } -#line 4940 "Zend/zend_language_scanner.c" +#line 4949 "Zend/zend_language_scanner.c" yy391: YYDEBUG(391, *YYCURSOR); ++YYCURSOR; @@ -5108,11 +5117,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(408, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1571 "Zend/zend_language_scanner.l" +#line 1580 "Zend/zend_language_scanner.l" { return T_INT_CAST; } -#line 5116 "Zend/zend_language_scanner.c" +#line 5125 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -5156,11 +5165,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(417, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1575 "Zend/zend_language_scanner.l" +#line 1584 "Zend/zend_language_scanner.l" { return T_DOUBLE_CAST; } -#line 5164 "Zend/zend_language_scanner.c" +#line 5173 "Zend/zend_language_scanner.c" yy418: YYDEBUG(418, *YYCURSOR); yych = *++YYCURSOR; @@ -5230,11 +5239,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1579 "Zend/zend_language_scanner.l" +#line 1588 "Zend/zend_language_scanner.l" { return T_STRING_CAST; } -#line 5238 "Zend/zend_language_scanner.c" +#line 5247 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); yych = *++YYCURSOR; @@ -5267,11 +5276,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(438, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1583 "Zend/zend_language_scanner.l" +#line 1592 "Zend/zend_language_scanner.l" { return T_ARRAY_CAST; } -#line 5275 "Zend/zend_language_scanner.c" +#line 5284 "Zend/zend_language_scanner.c" yy439: YYDEBUG(439, *YYCURSOR); yych = *++YYCURSOR; @@ -5309,11 +5318,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(446, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1587 "Zend/zend_language_scanner.l" +#line 1596 "Zend/zend_language_scanner.l" { return T_OBJECT_CAST; } -#line 5317 "Zend/zend_language_scanner.c" +#line 5326 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); yych = *++YYCURSOR; @@ -5354,11 +5363,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(454, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1591 "Zend/zend_language_scanner.l" +#line 1600 "Zend/zend_language_scanner.l" { return T_BOOL_CAST; } -#line 5362 "Zend/zend_language_scanner.c" +#line 5371 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5418,11 +5427,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(466, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1595 "Zend/zend_language_scanner.l" +#line 1604 "Zend/zend_language_scanner.l" { return T_UNSET_CAST; } -#line 5426 "Zend/zend_language_scanner.c" +#line 5435 "Zend/zend_language_scanner.c" yy467: YYDEBUG(467, *YYCURSOR); yych = *++YYCURSOR; @@ -5436,11 +5445,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(469, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1567 "Zend/zend_language_scanner.l" +#line 1576 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_VAR) } -#line 5444 "Zend/zend_language_scanner.c" +#line 5453 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; @@ -5460,11 +5469,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(473, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1559 "Zend/zend_language_scanner.l" +#line 1568 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_NEW) } -#line 5468 "Zend/zend_language_scanner.c" +#line 5477 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5503,21 +5512,21 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(481, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1619 "Zend/zend_language_scanner.l" +#line 1628 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_NAMESPACE) } -#line 5511 "Zend/zend_language_scanner.c" +#line 5520 "Zend/zend_language_scanner.c" yy482: YYDEBUG(482, *YYCURSOR); ++YYCURSOR; YYDEBUG(483, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1551 "Zend/zend_language_scanner.l" +#line 1560 "Zend/zend_language_scanner.l" { return T_PAAMAYIM_NEKUDOTAYIM; } -#line 5521 "Zend/zend_language_scanner.c" +#line 5530 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); ++YYCURSOR; @@ -5539,32 +5548,32 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(487, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1727 "Zend/zend_language_scanner.l" +#line 1736 "Zend/zend_language_scanner.l" { return T_MINUS_EQUAL; } -#line 5547 "Zend/zend_language_scanner.c" +#line 5556 "Zend/zend_language_scanner.c" yy488: YYDEBUG(488, *YYCURSOR); ++YYCURSOR; YYDEBUG(489, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1695 "Zend/zend_language_scanner.l" +#line 1704 "Zend/zend_language_scanner.l" { return T_DEC; } -#line 5557 "Zend/zend_language_scanner.c" +#line 5566 "Zend/zend_language_scanner.c" yy490: YYDEBUG(490, *YYCURSOR); ++YYCURSOR; YYDEBUG(491, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1523 "Zend/zend_language_scanner.l" +#line 1532 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); return T_OBJECT_OPERATOR; } -#line 5568 "Zend/zend_language_scanner.c" +#line 5577 "Zend/zend_language_scanner.c" yy492: YYDEBUG(492, *YYCURSOR); yych = *++YYCURSOR; @@ -5609,11 +5618,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(498, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1667 "Zend/zend_language_scanner.l" +#line 1676 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PUBLIC) } -#line 5617 "Zend/zend_language_scanner.c" +#line 5626 "Zend/zend_language_scanner.c" yy499: YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; @@ -5668,11 +5677,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(507, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1663 "Zend/zend_language_scanner.l" +#line 1672 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PROTECTED) } -#line 5676 "Zend/zend_language_scanner.c" +#line 5685 "Zend/zend_language_scanner.c" yy508: YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; @@ -5702,11 +5711,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(513, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1659 "Zend/zend_language_scanner.l" +#line 1668 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PRIVATE) } -#line 5710 "Zend/zend_language_scanner.c" +#line 5719 "Zend/zend_language_scanner.c" yy514: YYDEBUG(514, *YYCURSOR); ++YYCURSOR; @@ -5715,11 +5724,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(515, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1499 "Zend/zend_language_scanner.l" +#line 1508 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PRINT) } -#line 5723 "Zend/zend_language_scanner.c" +#line 5732 "Zend/zend_language_scanner.c" yy516: YYDEBUG(516, *YYCURSOR); yych = *++YYCURSOR; @@ -5744,11 +5753,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1491 "Zend/zend_language_scanner.l" +#line 1500 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_GOTO) } -#line 5752 "Zend/zend_language_scanner.c" +#line 5761 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5772,11 +5781,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(525, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1631 "Zend/zend_language_scanner.l" +#line 1640 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_GLOBAL) } -#line 5780 "Zend/zend_language_scanner.c" +#line 5789 "Zend/zend_language_scanner.c" yy526: YYDEBUG(526, *YYCURSOR); yych = *++YYCURSOR; @@ -5813,11 +5822,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(533, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1483 "Zend/zend_language_scanner.l" +#line 1492 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_BREAK) } -#line 5821 "Zend/zend_language_scanner.c" +#line 5830 "Zend/zend_language_scanner.c" yy534: YYDEBUG(534, *YYCURSOR); yych = *++YYCURSOR; @@ -5857,11 +5866,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(541, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1467 "Zend/zend_language_scanner.l" +#line 1476 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_SWITCH) } -#line 5865 "Zend/zend_language_scanner.c" +#line 5874 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5885,11 +5894,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(546, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1647 "Zend/zend_language_scanner.l" +#line 1656 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_STATIC) } -#line 5893 "Zend/zend_language_scanner.c" +#line 5902 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5916,11 +5925,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(551, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1463 "Zend/zend_language_scanner.l" +#line 1472 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_AS) } -#line 5924 "Zend/zend_language_scanner.c" +#line 5933 "Zend/zend_language_scanner.c" yy552: YYDEBUG(552, *YYCURSOR); yych = *++YYCURSOR; @@ -5939,11 +5948,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(555, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1683 "Zend/zend_language_scanner.l" +#line 1692 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ARRAY) } -#line 5947 "Zend/zend_language_scanner.c" +#line 5956 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); ++YYCURSOR; @@ -5952,11 +5961,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(557, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1779 "Zend/zend_language_scanner.l" +#line 1788 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_AND) } -#line 5960 "Zend/zend_language_scanner.c" +#line 5969 "Zend/zend_language_scanner.c" yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; @@ -5990,11 +5999,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(564, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1651 "Zend/zend_language_scanner.l" +#line 1660 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ABSTRACT) } -#line 5998 "Zend/zend_language_scanner.c" +#line 6007 "Zend/zend_language_scanner.c" yy565: YYDEBUG(565, *YYCURSOR); yych = *++YYCURSOR; @@ -6018,11 +6027,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(569, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1423 "Zend/zend_language_scanner.l" +#line 1432 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_WHILE) } -#line 6026 "Zend/zend_language_scanner.c" +#line 6035 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); ++YYCURSOR; @@ -6031,11 +6040,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(571, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1407 "Zend/zend_language_scanner.l" +#line 1416 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_IF) } -#line 6039 "Zend/zend_language_scanner.c" +#line 6048 "Zend/zend_language_scanner.c" yy572: YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; @@ -6087,11 +6096,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(578, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1635 "Zend/zend_language_scanner.l" +#line 1644 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ISSET) } -#line 6095 "Zend/zend_language_scanner.c" +#line 6104 "Zend/zend_language_scanner.c" yy579: YYDEBUG(579, *YYCURSOR); yych = *++YYCURSOR; @@ -6145,11 +6154,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy586: YYDEBUG(586, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1603 "Zend/zend_language_scanner.l" +#line 1612 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INCLUDE) } -#line 6153 "Zend/zend_language_scanner.c" +#line 6162 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -6178,11 +6187,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(592, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1607 "Zend/zend_language_scanner.l" +#line 1616 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INCLUDE_ONCE) } -#line 6186 "Zend/zend_language_scanner.c" +#line 6195 "Zend/zend_language_scanner.c" yy593: YYDEBUG(593, *YYCURSOR); yych = *++YYCURSOR; @@ -6216,11 +6225,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(599, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1507 "Zend/zend_language_scanner.l" +#line 1516 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INTERFACE) } -#line 6224 "Zend/zend_language_scanner.c" +#line 6233 "Zend/zend_language_scanner.c" yy600: YYDEBUG(600, *YYCURSOR); yych = *++YYCURSOR; @@ -6270,11 +6279,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(607, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1627 "Zend/zend_language_scanner.l" +#line 1636 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INSTEADOF) } -#line 6278 "Zend/zend_language_scanner.c" +#line 6287 "Zend/zend_language_scanner.c" yy608: YYDEBUG(608, *YYCURSOR); yych = *++YYCURSOR; @@ -6303,11 +6312,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(613, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1459 "Zend/zend_language_scanner.l" +#line 1468 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INSTANCEOF) } -#line 6311 "Zend/zend_language_scanner.c" +#line 6320 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6351,11 +6360,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(622, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1519 "Zend/zend_language_scanner.l" +#line 1528 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_IMPLEMENTS) } -#line 6359 "Zend/zend_language_scanner.c" +#line 6368 "Zend/zend_language_scanner.c" yy623: YYDEBUG(623, *YYCURSOR); yych = *++YYCURSOR; @@ -6383,11 +6392,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(626, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1391 "Zend/zend_language_scanner.l" +#line 1400 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_TRY) } -#line 6391 "Zend/zend_language_scanner.c" +#line 6400 "Zend/zend_language_scanner.c" yy627: YYDEBUG(627, *YYCURSOR); yych = *++YYCURSOR; @@ -6406,11 +6415,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(630, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1511 "Zend/zend_language_scanner.l" +#line 1520 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_TRAIT) } -#line 6414 "Zend/zend_language_scanner.c" +#line 6423 "Zend/zend_language_scanner.c" yy631: YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; @@ -6429,11 +6438,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(634, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1403 "Zend/zend_language_scanner.l" +#line 1412 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_THROW) } -#line 6437 "Zend/zend_language_scanner.c" +#line 6446 "Zend/zend_language_scanner.c" yy635: YYDEBUG(635, *YYCURSOR); yych = *++YYCURSOR; @@ -6457,11 +6466,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(639, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1387 "Zend/zend_language_scanner.l" +#line 1396 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_YIELD) } -#line 6465 "Zend/zend_language_scanner.c" +#line 6474 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); yych = *++YYCURSOR; @@ -6522,11 +6531,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy647: YYDEBUG(647, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1611 "Zend/zend_language_scanner.l" +#line 1620 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_REQUIRE) } -#line 6530 "Zend/zend_language_scanner.c" +#line 6539 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6555,11 +6564,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(653, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1615 "Zend/zend_language_scanner.l" +#line 1624 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_REQUIRE_ONCE) } -#line 6563 "Zend/zend_language_scanner.c" +#line 6572 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; @@ -6578,11 +6587,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(657, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1383 "Zend/zend_language_scanner.l" +#line 1392 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_RETURN) } -#line 6586 "Zend/zend_language_scanner.c" +#line 6595 "Zend/zend_language_scanner.c" yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; @@ -6672,11 +6681,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(668, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1487 "Zend/zend_language_scanner.l" +#line 1496 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CONTINUE) } -#line 6680 "Zend/zend_language_scanner.c" +#line 6689 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); ++YYCURSOR; @@ -6685,11 +6694,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1379 "Zend/zend_language_scanner.l" +#line 1388 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CONST) } -#line 6693 "Zend/zend_language_scanner.c" +#line 6702 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6714,11 +6723,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1563 "Zend/zend_language_scanner.l" +#line 1572 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CLONE) } -#line 6722 "Zend/zend_language_scanner.c" +#line 6731 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6732,11 +6741,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(678, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1503 "Zend/zend_language_scanner.l" +#line 1512 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CLASS) } -#line 6740 "Zend/zend_language_scanner.c" +#line 6749 "Zend/zend_language_scanner.c" yy679: YYDEBUG(679, *YYCURSOR); yych = *++YYCURSOR; @@ -6782,11 +6791,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(687, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1687 "Zend/zend_language_scanner.l" +#line 1696 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CALLABLE) } -#line 6790 "Zend/zend_language_scanner.c" +#line 6799 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); ++YYCURSOR; @@ -6795,11 +6804,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(689, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1475 "Zend/zend_language_scanner.l" +#line 1484 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CASE) } -#line 6803 "Zend/zend_language_scanner.c" +#line 6812 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); yych = *++YYCURSOR; @@ -6813,11 +6822,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(692, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1395 "Zend/zend_language_scanner.l" +#line 1404 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CATCH) } -#line 6821 "Zend/zend_language_scanner.c" +#line 6830 "Zend/zend_language_scanner.c" yy693: YYDEBUG(693, *YYCURSOR); yych = *++YYCURSOR; @@ -6868,11 +6877,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(702, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1375 "Zend/zend_language_scanner.l" +#line 1384 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FUNCTION) } -#line 6876 "Zend/zend_language_scanner.c" +#line 6885 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; @@ -6896,11 +6905,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy704: YYDEBUG(704, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1435 "Zend/zend_language_scanner.l" +#line 1444 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FOR) } -#line 6904 "Zend/zend_language_scanner.c" +#line 6913 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; @@ -6924,11 +6933,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(709, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1443 "Zend/zend_language_scanner.l" +#line 1452 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FOREACH) } -#line 6932 "Zend/zend_language_scanner.c" +#line 6941 "Zend/zend_language_scanner.c" yy710: YYDEBUG(710, *YYCURSOR); yych = *++YYCURSOR; @@ -6962,11 +6971,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy713: YYDEBUG(713, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1655 "Zend/zend_language_scanner.l" +#line 1664 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FINAL) } -#line 6970 "Zend/zend_language_scanner.c" +#line 6979 "Zend/zend_language_scanner.c" yy714: YYDEBUG(714, *YYCURSOR); yych = *++YYCURSOR; @@ -6980,11 +6989,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(716, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1399 "Zend/zend_language_scanner.l" +#line 1408 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FINALLY) } -#line 6988 "Zend/zend_language_scanner.c" +#line 6997 "Zend/zend_language_scanner.c" yy717: YYDEBUG(717, *YYCURSOR); yych = *++YYCURSOR; @@ -7015,11 +7024,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(720, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1431 "Zend/zend_language_scanner.l" +#line 1440 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DO) } -#line 7023 "Zend/zend_language_scanner.c" +#line 7032 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); ++YYCURSOR; @@ -7028,11 +7037,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(722, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1371 "Zend/zend_language_scanner.l" +#line 1380 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXIT) } -#line 7036 "Zend/zend_language_scanner.c" +#line 7045 "Zend/zend_language_scanner.c" yy723: YYDEBUG(723, *YYCURSOR); yych = *++YYCURSOR; @@ -7067,11 +7076,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(729, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1479 "Zend/zend_language_scanner.l" +#line 1488 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DEFAULT) } -#line 7075 "Zend/zend_language_scanner.c" +#line 7084 "Zend/zend_language_scanner.c" yy730: YYDEBUG(730, *YYCURSOR); yych = *++YYCURSOR; @@ -7095,11 +7104,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(734, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1451 "Zend/zend_language_scanner.l" +#line 1460 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DECLARE) } -#line 7103 "Zend/zend_language_scanner.c" +#line 7112 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -7179,11 +7188,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(747, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1515 "Zend/zend_language_scanner.l" +#line 1524 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXTENDS) } -#line 7187 "Zend/zend_language_scanner.c" +#line 7196 "Zend/zend_language_scanner.c" yy748: YYDEBUG(748, *YYCURSOR); ++YYCURSOR; @@ -7192,11 +7201,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(749, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1367 "Zend/zend_language_scanner.l" +#line 1376 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXIT) } -#line 7200 "Zend/zend_language_scanner.c" +#line 7209 "Zend/zend_language_scanner.c" yy750: YYDEBUG(750, *YYCURSOR); yych = *++YYCURSOR; @@ -7210,11 +7219,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(752, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1599 "Zend/zend_language_scanner.l" +#line 1608 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EVAL) } -#line 7218 "Zend/zend_language_scanner.c" +#line 7227 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7284,11 +7293,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(763, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1427 "Zend/zend_language_scanner.l" +#line 1436 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDWHILE) } -#line 7292 "Zend/zend_language_scanner.c" +#line 7301 "Zend/zend_language_scanner.c" yy764: YYDEBUG(764, *YYCURSOR); yych = *++YYCURSOR; @@ -7317,11 +7326,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1471 "Zend/zend_language_scanner.l" +#line 1480 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDSWITCH) } -#line 7325 "Zend/zend_language_scanner.c" +#line 7334 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7330,11 +7339,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(771, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1415 "Zend/zend_language_scanner.l" +#line 1424 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDIF) } -#line 7338 "Zend/zend_language_scanner.c" +#line 7347 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); yych = *++YYCURSOR; @@ -7363,11 +7372,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy774: YYDEBUG(774, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1439 "Zend/zend_language_scanner.l" +#line 1448 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDFOR) } -#line 7371 "Zend/zend_language_scanner.c" +#line 7380 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); yych = *++YYCURSOR; @@ -7391,11 +7400,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(779, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1447 "Zend/zend_language_scanner.l" +#line 1456 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDFOREACH) } -#line 7399 "Zend/zend_language_scanner.c" +#line 7408 "Zend/zend_language_scanner.c" yy780: YYDEBUG(780, *YYCURSOR); yych = *++YYCURSOR; @@ -7429,11 +7438,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(786, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1455 "Zend/zend_language_scanner.l" +#line 1464 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDDECLARE) } -#line 7437 "Zend/zend_language_scanner.c" +#line 7446 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); yych = *++YYCURSOR; @@ -7452,11 +7461,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(790, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1639 "Zend/zend_language_scanner.l" +#line 1648 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EMPTY) } -#line 7460 "Zend/zend_language_scanner.c" +#line 7469 "Zend/zend_language_scanner.c" yy791: YYDEBUG(791, *YYCURSOR); yych = *++YYCURSOR; @@ -7485,11 +7494,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy793: YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1419 "Zend/zend_language_scanner.l" +#line 1428 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ELSE) } -#line 7493 "Zend/zend_language_scanner.c" +#line 7502 "Zend/zend_language_scanner.c" yy794: YYDEBUG(794, *YYCURSOR); yych = *++YYCURSOR; @@ -7503,11 +7512,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(796, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1411 "Zend/zend_language_scanner.l" +#line 1420 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ELSEIF) } -#line 7511 "Zend/zend_language_scanner.c" +#line 7520 "Zend/zend_language_scanner.c" yy797: YYDEBUG(797, *YYCURSOR); yych = *++YYCURSOR; @@ -7521,11 +7530,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1495 "Zend/zend_language_scanner.l" +#line 1504 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ECHO) } -#line 7529 "Zend/zend_language_scanner.c" +#line 7538 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7598,13 +7607,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1528 "Zend/zend_language_scanner.l" +#line 1537 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 7608 "Zend/zend_language_scanner.c" +#line 7617 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7612,13 +7621,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy805: YYDEBUG(805, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1545 "Zend/zend_language_scanner.l" +#line 1554 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); goto restart; } -#line 7622 "Zend/zend_language_scanner.c" +#line 7631 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); ++YYCURSOR; @@ -7627,14 +7636,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy807: YYDEBUG(807, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1538 "Zend/zend_language_scanner.l" +#line 1547 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 7638 "Zend/zend_language_scanner.c" +#line 7647 "Zend/zend_language_scanner.c" yy808: YYDEBUG(808, *YYCURSOR); yych = *++YYCURSOR; @@ -7655,11 +7664,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(812, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1534 "Zend/zend_language_scanner.l" +#line 1543 "Zend/zend_language_scanner.l" { return T_OBJECT_OPERATOR; } -#line 7663 "Zend/zend_language_scanner.c" +#line 7672 "Zend/zend_language_scanner.c" yy813: YYDEBUG(813, *YYCURSOR); ++YYCURSOR; @@ -7744,14 +7753,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy818: YYDEBUG(818, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1830 "Zend/zend_language_scanner.l" +#line 1839 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); goto restart; } -#line 7755 "Zend/zend_language_scanner.c" +#line 7764 "Zend/zend_language_scanner.c" yy819: YYDEBUG(819, *YYCURSOR); yych = *++YYCURSOR; @@ -7776,7 +7785,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(824, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1820 "Zend/zend_language_scanner.l" +#line 1829 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); zend_copy_value(zendlval, yytext, yyleng); @@ -7785,7 +7794,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_STRING_VARNAME; } -#line 7789 "Zend/zend_language_scanner.c" +#line 7798 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7796,7 +7805,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(828, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2649 "Zend/zend_language_scanner.l" +#line 2658 "Zend/zend_language_scanner.l" { int newline = 0; @@ -7853,7 +7862,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) HANDLE_NEWLINES(yytext, yyleng - newline); return T_ENCAPSED_AND_WHITESPACE; } -#line 7857 "Zend/zend_language_scanner.c" +#line 7866 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7960,7 +7969,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy832: YYDEBUG(832, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1906 "Zend/zend_language_scanner.l" +#line 1915 "Zend/zend_language_scanner.l" { /* Offset could be treated as a long */ if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) { ZVAL_LONG(zendlval, strtol(yytext, NULL, 10)); @@ -7969,7 +7978,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_NUM_STRING; } -#line 7973 "Zend/zend_language_scanner.c" +#line 7982 "Zend/zend_language_scanner.c" yy833: YYDEBUG(833, *YYCURSOR); yych = *++YYCURSOR; @@ -7989,23 +7998,23 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy835: YYDEBUG(835, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2182 "Zend/zend_language_scanner.l" +#line 2191 "Zend/zend_language_scanner.l" { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -#line 7998 "Zend/zend_language_scanner.c" +#line 8007 "Zend/zend_language_scanner.c" yy836: YYDEBUG(836, *YYCURSOR); ++YYCURSOR; YYDEBUG(837, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2177 "Zend/zend_language_scanner.l" +#line 2186 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); return ']'; } -#line 8009 "Zend/zend_language_scanner.c" +#line 8018 "Zend/zend_language_scanner.c" yy838: YYDEBUG(838, *YYCURSOR); yych = *++YYCURSOR; @@ -8015,14 +8024,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(840, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2187 "Zend/zend_language_scanner.l" +#line 2196 "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 8026 "Zend/zend_language_scanner.c" +#line 8035 "Zend/zend_language_scanner.c" yy841: YYDEBUG(841, *YYCURSOR); ++YYCURSOR; @@ -8031,19 +8040,19 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy842: YYDEBUG(842, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2194 "Zend/zend_language_scanner.l" +#line 2203 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 8041 "Zend/zend_language_scanner.c" +#line 8050 "Zend/zend_language_scanner.c" yy843: YYDEBUG(843, *YYCURSOR); ++YYCURSOR; YYDEBUG(844, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2707 "Zend/zend_language_scanner.l" +#line 2716 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -8052,7 +8061,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 8056 "Zend/zend_language_scanner.c" +#line 8065 "Zend/zend_language_scanner.c" yy845: YYDEBUG(845, *YYCURSOR); ++YYCURSOR; @@ -8088,13 +8097,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy849: YYDEBUG(849, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2171 "Zend/zend_language_scanner.l" +#line 2180 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 8098 "Zend/zend_language_scanner.c" +#line 8107 "Zend/zend_language_scanner.c" yy850: YYDEBUG(850, *YYCURSOR); ++YYCURSOR; @@ -8134,12 +8143,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy857: YYDEBUG(857, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1915 "Zend/zend_language_scanner.l" +#line 1924 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng, 1); return T_NUM_STRING; } -#line 8143 "Zend/zend_language_scanner.c" +#line 8152 "Zend/zend_language_scanner.c" yy858: YYDEBUG(858, *YYCURSOR); ++YYCURSOR; @@ -8162,6 +8171,6 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto yy857; } } -#line 2716 "Zend/zend_language_scanner.l" +#line 2725 "Zend/zend_language_scanner.l" } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 007968c90fe22..c5a48a9aa2412 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -997,22 +997,25 @@ static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quo int lex_scan_ex(zval *zendlval TSRMLS_DC); #define LEX_BUF_ADD_EX \ - CG(tokenbuffer)[++CG(tokenbufptr)].zv = *zendlval; \ - CG(tokenbuffer)[CG(tokenbufptr)].token = retval; \ - CG(tokenbuffer)[CG(tokenbufptr)].text = SCNG(yy_text); \ - CG(tokenbuffer)[CG(tokenbufptr)].len = SCNG(yy_leng); \ - CG(tokenbuffer)[CG(tokenbufptr)].start = SCNG(yy_cursor); \ - CG(tokenbuffer)[CG(tokenbufptr)].end = SCNG(yy_limit); \ + buf_tmp = CG(tokenbuffer) + (++CG(tokenbufptr)); \ + buf_tmp->zv = *zendlval; \ + buf_tmp->token = retval; \ + buf_tmp->text = SCNG(yy_text); \ + buf_tmp->len = SCNG(yy_leng); \ + buf_tmp->start = SCNG(yy_cursor); \ + buf_tmp->end = SCNG(yy_limit); \ if (retval == T_DOC_COMMENT) { \ - CG(tokenbuffer)[CG(tokenbufptr)].doc_comment = SCNG(doc_comment); \ - CG(tokenbuffer)[CG(tokenbufptr)].doc_comment_len = SCNG(doc_comment_len); \ + buf_tmp->doc_comment = SCNG(doc_comment); \ + buf_tmp->doc_comment_len = SCNG(doc_comment_len); \ } \ - CG(tokenbuffer)[CG(tokenbufptr)].lineno = CG(zend_lineno); + buf_tmp->lineno = CG(zend_lineno); #define LEX_BUF_ADD \ - LEX_BUF_ADD_EX \ buf_two = buf_one; \ - buf_one = CG(tokenbuffer) + CG(tokenbufptr); \ + buf_two_token = buf_one_token; \ + LEX_BUF_ADD_EX \ + buf_one = buf_tmp; \ + buf_one_token = retval; \ goto again; static zend_always_inline int lex_get_real_buf_offset(const int relpos) { @@ -1046,7 +1049,7 @@ static zend_always_inline zend_bool lex_is_real_string_token(int token) { (Z_TYPE(LEX_REL_BUF(relpos).zv) == 255 && !lex_is_real_string_token_table[LEX_REL_BUF(relpos).token]) #define LEX_IS_BUF_ALPH_TOKEN(buf) \ - (Z_TYPE((buf).zv) == 255 && !lex_is_real_string_token_table[(buf).token]) + (Z_TYPE(buf->zv) == 255 && !lex_is_real_string_token_table[buf##_token]) #define LEX_CONVERT_STRING(token, zval, text, len) \ token = T_STRING; \ @@ -1054,30 +1057,31 @@ static zend_always_inline zend_bool lex_is_real_string_token(int token) { Z_STRVAL(zval) = estrndup(text, len); \ Z_TYPE(zval) = IS_STRING; -#define LEX_CONVERT_CUR_STRING() LEX_CONVERT_STRING(retval, *zendlval, yytext, yyleng) +#define LEX_CONVERT_CUR_STRING() LEX_CONVERT_STRING(retval, *zendlval, yytext, yyleng) goto leave; #define LEX_CONVERT_REL_STRING(relpos) LEX_CONVERT_STRING(LEX_REL_BUF(relpos).token, LEX_REL_BUF(relpos).zv, (char *)LEX_REL_BUF(relpos).text, LEX_REL_BUF(relpos).len) -#define LEX_CONVERT_BUF_STRING(buf) LEX_CONVERT_STRING((buf).token, (buf).zv, (char *)(buf).text, (buf).len) +#define LEX_CONVERT_BUF_STRING(buf) LEX_CONVERT_STRING(buf##_token, buf->zv, (char *)buf->text, buf->len) buf->token = buf##_token; #define LEX_PREPARE_RETURN_FROM_BUF \ - *zendlval = CG(tokenbuffer)[CG(tokenbufptr)].zv; \ + buf_tmp = CG(tokenbuffer) + CG(tokenbufptr)++; \ + *zendlval = buf_tmp->zv; \ if (Z_TYPE_P(zendlval) == 255) { \ Z_TYPE_P(zendlval) = 0; \ } \ - retval = CG(tokenbuffer)[CG(tokenbufptr)].token; \ + retval = buf_tmp->token; \ if (retval == '}' || retval == T_DOC_COMMENT) { \ RESET_DOC_COMMENT(); \ } \ - SCNG(yy_text) = CG(tokenbuffer)[CG(tokenbufptr)].text; \ - SCNG(yy_leng) = CG(tokenbuffer)[CG(tokenbufptr)].len; \ - SCNG(yy_cursor) = CG(tokenbuffer)[CG(tokenbufptr)].start; \ - SCNG(yy_limit) = CG(tokenbuffer)[CG(tokenbufptr)].end; \ + SCNG(yy_text) = buf_tmp->text; \ + SCNG(yy_leng) = buf_tmp->len; \ + SCNG(yy_cursor) = buf_tmp->start; \ + SCNG(yy_limit) = buf_tmp->end; \ if (retval == T_DOC_COMMENT) { \ - CG(doc_comment) = CG(tokenbuffer)[CG(tokenbufptr)].doc_comment; \ - CG(doc_comment_len) = CG(tokenbuffer)[CG(tokenbufptr)].doc_comment_len; \ + CG(doc_comment) = buf_tmp->doc_comment; \ + CG(doc_comment_len) = buf_tmp->doc_comment_len; \ } \ - CG(zend_lineno) = CG(tokenbuffer)[CG(tokenbufptr)++].lineno; + CG(zend_lineno) = buf_tmp->lineno; /* This function checks the cases where a token needs to be converted to some other token to simplify parsing */ /* Also it shouldn't be done in parser, because it actually breaks applications relying on token_get_all output */ @@ -1085,7 +1089,8 @@ static zend_always_inline zend_bool lex_is_real_string_token(int token) { /* The real lexing step is done in lex_scan_ex */ int lex_scan(zval *zendlval) { int retval; - token_buf *buf_one, *buf_two; + token_buf *buf_one, *buf_two, *buf_tmp; + int buf_one_token, buf_two_token; if (CG(tokenbufptr) != -1) { if (CG(tokenbuffer)[CG(tokenbufptr)].token != -1) { @@ -1096,7 +1101,9 @@ int lex_scan(zval *zendlval) { } buf_one = CG(tokenbuffer) - 1; + buf_one_token = buf_one->token; buf_two = buf_one; + buf_two_token = buf_one_token; again: Z_TYPE_P(zendlval) = 0; @@ -1111,7 +1118,9 @@ again: CG(tokenbuffer) = erealloc(--CG(tokenbuffer), sizeof(token_buf) * ((CG(tokenbufsize) *= 2) + 1)); CG(tokenbuffer)++; buf_one = CG(tokenbuffer) + lex_get_real_buf_offset(1); + buf_one_token = buf_one->token; buf_two = CG(tokenbuffer) + lex_get_real_buf_offset(2); + buf_two_token = buf_two->token; } if (CG(tokenbufptr) != -1) { @@ -1123,11 +1132,11 @@ again: /* class access */ /* class name */ - if (retval == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_BUF_ALPH_TOKEN(*buf_one)) { - LEX_CONVERT_BUF_STRING(*buf_one); + if (retval == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_BUF_ALPH_TOKEN(buf_one)) { + LEX_CONVERT_BUF_STRING(buf_one); } /* class const / method name */ - if (buf_one->token == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_CUR_ALPH_TOKEN()) { + if (buf_one_token == T_PAAMAYIM_NEKUDOTAYIM && LEX_IS_CUR_ALPH_TOKEN()) { /* ::class is reserved */ if (retval == T_CLASS) { goto leave; @@ -1138,7 +1147,7 @@ again: /* classes */ if (CG(tokenbuf_in_class) != -1 && LEX_IS_CUR_ALPH_TOKEN()) { /* class name */ - switch (buf_one->token) { + switch (buf_one_token) { case T_CLASS: case T_INTERFACE: case T_TRAIT: @@ -1146,21 +1155,21 @@ again: LEX_CONVERT_CUR_STRING(); } } - if (CG(tokenbuf_in_class) == 0 && retval != T_NAMESPACE && ((retval != T_IMPLEMENTS && retval != T_EXTENDS) || buf_one->token == ',' || buf_one->token == T_IMPLEMENTS) && LEX_IS_CUR_ALPH_TOKEN()) { + if (CG(tokenbuf_in_class) == 0 && retval != T_NAMESPACE && ((retval != T_IMPLEMENTS && retval != T_EXTENDS) || buf_one_token == ',' || buf_one_token == T_IMPLEMENTS) && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* method names */ - if ((buf_one->token == T_FUNCTION || (buf_one->token == '&' && buf_two->token == T_FUNCTION)) && LEX_IS_CUR_ALPH_TOKEN()) { + if ((buf_one_token == T_FUNCTION || (buf_one_token == '&' && buf_two_token == T_FUNCTION)) && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* constant names */ - if (buf_one->token == T_CONST && LEX_IS_CUR_ALPH_TOKEN()) { + if (buf_one_token == T_CONST && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* trait use aliasing */ if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE) { - if (retval == ';' && LEX_IS_BUF_ALPH_TOKEN(*buf_one)) { - switch (buf_one->token) { + if (retval == ';' && LEX_IS_BUF_ALPH_TOKEN(buf_one)) { + switch (buf_one_token) { case T_PUBLIC: case T_PROTECTED: case T_PRIVATE: @@ -1169,35 +1178,35 @@ again: LEX_BUF_ADD } } - if (buf_one->token == T_INSTEADOF && LEX_IS_CUR_ALPH_TOKEN()) { + if (buf_one_token == T_INSTEADOF && LEX_IS_CUR_ALPH_TOKEN()) { LEX_BUF_ADD } } } /* class name typehints */ - if (CG(tokenbuf_fn_decl) == 0 && (buf_one->token == '(' || buf_one->token == ',') && retval != T_NAMESPACE && LEX_IS_CUR_ALPH_TOKEN()) { + if (CG(tokenbuf_fn_decl) == 0 && (buf_one_token == '(' || buf_one_token == ',') && retval != T_NAMESPACE && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* goto & labels */ - if ((retval == ':' || (retval == ';' && buf_two->token == T_GOTO)) && LEX_IS_BUF_ALPH_TOKEN(*buf_one)) { + if ((retval == ':' || (retval == ';' && buf_two_token == T_GOTO)) && LEX_IS_BUF_ALPH_TOKEN(buf_one)) { /* disallow replacing of alternative syntax and default (in switch) */ - switch (buf_one->token) { + switch (buf_one_token) { case T_DEFAULT: case T_ELSE: break; default: - LEX_CONVERT_BUF_STRING(*buf_one); + LEX_CONVERT_BUF_STRING(buf_one); } } - if (buf_one->token == T_GOTO && LEX_IS_CUR_ALPH_TOKEN() && retval != T_DEFAULT) { + if (buf_one_token == T_GOTO && LEX_IS_CUR_ALPH_TOKEN() && retval != T_DEFAULT) { LEX_CONVERT_CUR_STRING(); } /* namespaces */ /* Disallow T_NAMESPACE because of namespace\string syntax */ - switch (buf_one->token) { + switch (buf_one_token) { case T_USE: if (CG(tokenbuf_in_class) != -1) { break; @@ -1210,41 +1219,41 @@ again: } } if (retval == T_NS_SEPARATOR) { - switch (buf_one->token) { + switch (buf_one_token) { case T_NAMESPACE: break; case T_NEW: - if (buf_two->token == T_THROW || buf_two->token == T_RETURN || buf_two->token == ',') { + if (buf_two_token == T_THROW || buf_two_token == T_RETURN || buf_two_token == ',') { break; } case T_USE: case T_ECHO: - if (buf_two->token < 256 && buf_two->token != ',') { + if (buf_two_token < 256 && buf_two_token != ',') { break; } case T_IMPLEMENTS: - if (buf_one->token == T_IMPLEMENTS && buf_two->token != T_IMPLEMENTS && buf_two->token != T_EXTENDS && buf_two->token != ',') { + if (buf_one_token == T_IMPLEMENTS && buf_two_token != T_IMPLEMENTS && buf_two_token != T_EXTENDS && buf_two_token != ',') { break; } case T_EXTENDS: - if (buf_one->token == T_EXTENDS && buf_two->token != T_EXTENDS && buf_two->token != ',') { + if (buf_one_token == T_EXTENDS && buf_two_token != T_EXTENDS && buf_two_token != ',') { break; } default: - if (LEX_IS_BUF_ALPH_TOKEN(*buf_one)) { - LEX_CONVERT_BUF_STRING(*buf_one); + if (LEX_IS_BUF_ALPH_TOKEN(buf_one)) { + LEX_CONVERT_BUF_STRING(buf_one); } } } /* handling of multiple comma separated T_USE */ - if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE && LEX_IS_CUR_ALPH_TOKEN() && buf_one->token == ',') { + if (CG(tokenbuf_mode) == LEX_USE_TOKEN_MODE && LEX_IS_CUR_ALPH_TOKEN() && buf_one_token == ',') { LEX_CONVERT_CUR_STRING(); } /* Handling of T_HALT_COMPILER; might cause memory leaks if not handled */ - if (buf_one->token == T_HALT_COMPILER && retval == '(') { + if (buf_one_token == T_HALT_COMPILER && retval == '(') { LEX_BUF_ADD - } else if (buf_two->token == T_HALT_COMPILER && buf_one->token == '(' && retval == ')') { + } else if (buf_two_token == T_HALT_COMPILER && buf_one_token == '(' && retval == ')') { LEX_BUF_ADD } } @@ -1302,7 +1311,7 @@ again: } else { switch (retval) { case ';': - if (buf_two->token == '(' && LEX_REL_BUF(3).token == T_HALT_COMPILER) { + if (buf_two_token == '(' && LEX_REL_BUF(3).token == T_HALT_COMPILER) { break; } case '&': From f8687b0d3614920cc927664d6be349550e412fd6 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Thu, 17 Oct 2013 00:25:56 +0200 Subject: [PATCH 6/9] Little clean up --- Zend/zend_compile.c | 22 +- Zend/zend_language_parser.y | 2 +- Zend/zend_language_scanner.c | 695 ++++++++++++++++++----------------- Zend/zend_language_scanner.l | 7 +- 4 files changed, 374 insertions(+), 352 deletions(-) diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 26535787d86fd..90fb399b7b37f 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -202,7 +202,8 @@ void zend_init_compiler_data_structures(TSRMLS_D) /* {{{ */ CG(encoding_declared) = 0; CG(tokenbufptr) = -1; - CG(tokenbuffer) = emalloc(sizeof(token_buf) * ((CG(tokenbufsize) = ZEND_INIT_TOKEN_BUF_SIZE) + 1)); + CG(tokenbufsize) = ZEND_INIT_TOKEN_BUF_SIZE; + CG(tokenbuffer) = emalloc(sizeof(token_buf) * (CG(tokenbufsize) + 1)); CG(tokenbuffer)++->token = 0; CG(tokenbuf_in_class) = -1; CG(tokenbuf_fn_decl) = -1; @@ -1522,6 +1523,25 @@ int zend_do_verify_access_types(const znode *current_access_type, const znode *n } /* }}} */ +void zend_prepare_typehint(const znode *token, znode *result) /* {{{ */ +{ + if ((Z_STRLEN(token->u.constant) == 5 && !strncasecmp(Z_STRVAL(token->u.constant), "array", 5)) || (Z_STRLEN(token->u.constant) == 8 && !strncasecmp(Z_STRVAL(token->u.constant), "callable", 8))) { + result->op_type = IS_CONST; + efree(Z_STRVAL(token->u.constant)); + switch (Z_STRLEN(token->u.constant)) { + case 5: + Z_TYPE(result->u.constant) = IS_ARRAY; + break; + case 8: + Z_TYPE(result->u.constant) = IS_CALLABLE; + break; + } + } else { + *result = *token; + } +} +/* }}} */ + void zend_do_begin_function_declaration(znode *function_token, znode *function_name, int is_method, int return_reference, znode *fn_flags_znode TSRMLS_DC) /* {{{ */ { zend_op_array op_array; diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 00e772fc26ef6..0c16c28f46603 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -535,7 +535,7 @@ non_empty_parameter_list: optional_class_type: /* empty */ { $$.op_type = IS_UNUSED; } - | class_name { if ((Z_STRLEN($1.u.constant) == 5 && !strncasecmp(Z_STRVAL($1.u.constant), "array", 5)) || (Z_STRLEN($1.u.constant) == 8 && !strncasecmp(Z_STRVAL($1.u.constant), "callable", 8))) { $$.op_type = IS_CONST; efree(Z_STRVAL($1.u.constant)); switch (Z_STRLEN($1.u.constant)) { case 5: Z_TYPE($$.u.constant) = IS_ARRAY; break; case 8: Z_TYPE($$.u.constant) = IS_CALLABLE; break; } } else { $$ = $1; } } + | class_name { zend_prepare_typehint(&$1, &$$); } ; diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 3d05d11be6831..df7bf9ae6a17f 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1253,9 +1253,10 @@ int lex_scan(zval *zendlval) { } /* Handling of T_HALT_COMPILER; might cause memory leaks if not handled */ - if (buf_one_token == T_HALT_COMPILER && retval == '(') { - LEX_BUF_ADD - } else if (buf_two_token == T_HALT_COMPILER && buf_one_token == '(' && retval == ')') { + if ( + (buf_one_token == T_HALT_COMPILER && retval == '(') + || (buf_two_token == T_HALT_COMPILER && buf_one_token == '(' && retval == ')') + ) { LEX_BUF_ADD } } @@ -1358,7 +1359,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yymore_restart: -#line 1362 "Zend/zend_language_scanner.c" +#line 1363 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1457,7 +1458,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy3: YYDEBUG(3, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2098 "Zend/zend_language_scanner.l" +#line 2099 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1517,7 +1518,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) HANDLE_NEWLINES(yytext, yyleng); return T_INLINE_HTML; } -#line 1521 "Zend/zend_language_scanner.c" +#line 1522 "Zend/zend_language_scanner.c" yy4: YYDEBUG(4, *YYCURSOR); yych = *++YYCURSOR; @@ -1535,7 +1536,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy6: YYDEBUG(6, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2088 "Zend/zend_language_scanner.l" +#line 2089 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1545,14 +1546,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1549 "Zend/zend_language_scanner.c" +#line 1550 "Zend/zend_language_scanner.c" yy7: YYDEBUG(7, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy43; YYDEBUG(8, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2069 "Zend/zend_language_scanner.l" +#line 2070 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1562,7 +1563,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1566 "Zend/zend_language_scanner.c" +#line 1567 "Zend/zend_language_scanner.c" yy9: YYDEBUG(9, *YYCURSOR); yych = *++YYCURSOR; @@ -1748,7 +1749,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2035 "Zend/zend_language_scanner.l" +#line 2036 "Zend/zend_language_scanner.l" { YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1)); @@ -1763,7 +1764,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1767 "Zend/zend_language_scanner.c" +#line 1768 "Zend/zend_language_scanner.c" yy39: YYDEBUG(39, *YYCURSOR); yych = *++YYCURSOR; @@ -1790,7 +1791,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2051 "Zend/zend_language_scanner.l" +#line 2052 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1800,19 +1801,19 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1804 "Zend/zend_language_scanner.c" +#line 1805 "Zend/zend_language_scanner.c" yy45: YYDEBUG(45, *YYCURSOR); ++YYCURSOR; YYDEBUG(46, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2062 "Zend/zend_language_scanner.l" +#line 2063 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG_WITH_ECHO; } -#line 1816 "Zend/zend_language_scanner.c" +#line 1817 "Zend/zend_language_scanner.c" yy47: YYDEBUG(47, *YYCURSOR); yych = *++YYCURSOR; @@ -1839,14 +1840,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2080 "Zend/zend_language_scanner.l" +#line 2081 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1850 "Zend/zend_language_scanner.c" +#line 1851 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; @@ -1917,7 +1918,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy56: YYDEBUG(56, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2542 "Zend/zend_language_scanner.l" +#line 2543 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1958,7 +1959,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 1962 "Zend/zend_language_scanner.c" +#line 1963 "Zend/zend_language_scanner.c" yy57: YYDEBUG(57, *YYCURSOR); yych = *++YYCURSOR; @@ -1969,12 +1970,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(59, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2486 "Zend/zend_language_scanner.l" +#line 2487 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '`'; } -#line 1978 "Zend/zend_language_scanner.c" +#line 1979 "Zend/zend_language_scanner.c" yy60: YYDEBUG(60, *YYCURSOR); yych = *++YYCURSOR; @@ -1984,14 +1985,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(62, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2473 "Zend/zend_language_scanner.l" +#line 2474 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 1995 "Zend/zend_language_scanner.c" +#line 1996 "Zend/zend_language_scanner.c" yy63: YYDEBUG(63, *YYCURSOR); yyaccept = 0; @@ -2007,24 +2008,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy65: YYDEBUG(65, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2180 "Zend/zend_language_scanner.l" +#line 2181 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2017 "Zend/zend_language_scanner.c" +#line 2018 "Zend/zend_language_scanner.c" yy66: YYDEBUG(66, *YYCURSOR); ++YYCURSOR; YYDEBUG(67, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1815 "Zend/zend_language_scanner.l" +#line 1816 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2028 "Zend/zend_language_scanner.c" +#line 2029 "Zend/zend_language_scanner.c" yy68: YYDEBUG(68, *YYCURSOR); yych = *++YYCURSOR; @@ -2038,7 +2039,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(71, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2172 "Zend/zend_language_scanner.l" +#line 2173 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2046,7 +2047,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2050 "Zend/zend_language_scanner.c" +#line 2051 "Zend/zend_language_scanner.c" yy72: YYDEBUG(72, *YYCURSOR); yych = *++YYCURSOR; @@ -2064,7 +2065,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(74, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2162 "Zend/zend_language_scanner.l" +#line 2163 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2072,7 +2073,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2076 "Zend/zend_language_scanner.c" +#line 2077 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -2140,7 +2141,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy78: YYDEBUG(78, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2492 "Zend/zend_language_scanner.l" +#line 2493 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -2189,7 +2190,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2193 "Zend/zend_language_scanner.c" +#line 2194 "Zend/zend_language_scanner.c" yy79: YYDEBUG(79, *YYCURSOR); yych = *++YYCURSOR; @@ -2200,12 +2201,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2481 "Zend/zend_language_scanner.l" +#line 2482 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '"'; } -#line 2209 "Zend/zend_language_scanner.c" +#line 2210 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2215,14 +2216,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2473 "Zend/zend_language_scanner.l" +#line 2474 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 2226 "Zend/zend_language_scanner.c" +#line 2227 "Zend/zend_language_scanner.c" yy85: YYDEBUG(85, *YYCURSOR); yyaccept = 0; @@ -2238,24 +2239,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy87: YYDEBUG(87, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2180 "Zend/zend_language_scanner.l" +#line 2181 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2248 "Zend/zend_language_scanner.c" +#line 2249 "Zend/zend_language_scanner.c" yy88: YYDEBUG(88, *YYCURSOR); ++YYCURSOR; YYDEBUG(89, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1815 "Zend/zend_language_scanner.l" +#line 1816 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2259 "Zend/zend_language_scanner.c" +#line 2260 "Zend/zend_language_scanner.c" yy90: YYDEBUG(90, *YYCURSOR); yych = *++YYCURSOR; @@ -2269,7 +2270,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2172 "Zend/zend_language_scanner.l" +#line 2173 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2277,7 +2278,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2281 "Zend/zend_language_scanner.c" +#line 2282 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); yych = *++YYCURSOR; @@ -2295,7 +2296,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(96, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2162 "Zend/zend_language_scanner.l" +#line 2163 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2303,7 +2304,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2307 "Zend/zend_language_scanner.c" +#line 2308 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -2314,7 +2315,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(100, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2459 "Zend/zend_language_scanner.l" +#line 2460 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -2327,7 +2328,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) BEGIN(ST_IN_SCRIPTING); return T_END_HEREDOC; } -#line 2331 "Zend/zend_language_scanner.c" +#line 2332 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -2389,7 +2390,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy104: YYDEBUG(104, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2584 "Zend/zend_language_scanner.l" +#line 2585 "Zend/zend_language_scanner.l" { int newline = 0; @@ -2462,7 +2463,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0 TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2466 "Zend/zend_language_scanner.c" +#line 2467 "Zend/zend_language_scanner.c" yy105: YYDEBUG(105, *YYCURSOR); yych = *++YYCURSOR; @@ -2477,14 +2478,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2473 "Zend/zend_language_scanner.l" +#line 2474 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 2488 "Zend/zend_language_scanner.c" +#line 2489 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 0; @@ -2500,24 +2501,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy111: YYDEBUG(111, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2180 "Zend/zend_language_scanner.l" +#line 2181 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2510 "Zend/zend_language_scanner.c" +#line 2511 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); ++YYCURSOR; YYDEBUG(113, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1815 "Zend/zend_language_scanner.l" +#line 1816 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2521 "Zend/zend_language_scanner.c" +#line 2522 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); yych = *++YYCURSOR; @@ -2531,7 +2532,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(117, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2172 "Zend/zend_language_scanner.l" +#line 2173 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2539,7 +2540,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2543 "Zend/zend_language_scanner.c" +#line 2544 "Zend/zend_language_scanner.c" yy118: YYDEBUG(118, *YYCURSOR); yych = *++YYCURSOR; @@ -2557,7 +2558,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2162 "Zend/zend_language_scanner.l" +#line 2163 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2565,7 +2566,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2569 "Zend/zend_language_scanner.c" +#line 2570 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2748,13 +2749,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy124: YYDEBUG(124, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2203 "Zend/zend_language_scanner.l" +#line 2204 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 2758 "Zend/zend_language_scanner.c" +#line 2759 "Zend/zend_language_scanner.c" yy125: YYDEBUG(125, *YYCURSOR); yych = *++YYCURSOR; @@ -2986,11 +2987,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy139: YYDEBUG(139, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1804 "Zend/zend_language_scanner.l" +#line 1805 "Zend/zend_language_scanner.l" { return yytext[0]; } -#line 2994 "Zend/zend_language_scanner.c" +#line 2995 "Zend/zend_language_scanner.c" yy140: YYDEBUG(140, *YYCURSOR); ++YYCURSOR; @@ -2999,13 +3000,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy141: YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1537 "Zend/zend_language_scanner.l" +#line 1538 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 3009 "Zend/zend_language_scanner.c" +#line 3010 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); yych = *++YYCURSOR; @@ -3016,11 +3017,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(144, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1564 "Zend/zend_language_scanner.l" +#line 1565 "Zend/zend_language_scanner.l" { return T_NS_SEPARATOR; } -#line 3024 "Zend/zend_language_scanner.c" +#line 3025 "Zend/zend_language_scanner.c" yy145: YYDEBUG(145, *YYCURSOR); yych = *++YYCURSOR; @@ -3248,25 +3249,25 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1809 "Zend/zend_language_scanner.l" +#line 1810 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return '{'; } -#line 3257 "Zend/zend_language_scanner.c" +#line 3258 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; YYDEBUG(171, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1821 "Zend/zend_language_scanner.l" +#line 1822 "Zend/zend_language_scanner.l" { if (!zend_stack_is_empty(&SCNG(state_stack))) { yy_pop_state(TSRMLS_C); } return '}'; } -#line 3270 "Zend/zend_language_scanner.c" +#line 3271 "Zend/zend_language_scanner.c" yy172: YYDEBUG(172, *YYCURSOR); yyaccept = 2; @@ -3294,7 +3295,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy173: YYDEBUG(173, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1870 "Zend/zend_language_scanner.l" +#line 1871 "Zend/zend_language_scanner.l" { if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0); @@ -3315,7 +3316,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_LONG; return T_LNUMBER; } -#line 3319 "Zend/zend_language_scanner.c" +#line 3320 "Zend/zend_language_scanner.c" yy174: YYDEBUG(174, *YYCURSOR); yyaccept = 2; @@ -3343,7 +3344,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy177: YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2210 "Zend/zend_language_scanner.l" +#line 2211 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -3377,14 +3378,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_COMMENT; } -#line 3381 "Zend/zend_language_scanner.c" +#line 3382 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; yy179: YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2296 "Zend/zend_language_scanner.l" +#line 2297 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -3450,14 +3451,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_CONSTANT_ENCAPSED_STRING; } -#line 3454 "Zend/zend_language_scanner.c" +#line 3455 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; yy181: YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2363 "Zend/zend_language_scanner.l" +#line 2364 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3498,24 +3499,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) BEGIN(ST_DOUBLE_QUOTES); return '"'; } -#line 3502 "Zend/zend_language_scanner.c" +#line 3503 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2453 "Zend/zend_language_scanner.l" +#line 2454 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); return '`'; } -#line 3513 "Zend/zend_language_scanner.c" +#line 3514 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2716 "Zend/zend_language_scanner.l" +#line 2717 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -3524,7 +3525,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3528 "Zend/zend_language_scanner.c" +#line 3529 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3551,12 +3552,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy190: YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1929 "Zend/zend_language_scanner.l" +#line 1930 "Zend/zend_language_scanner.l" { ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL)); return T_DNUMBER; } -#line 3560 "Zend/zend_language_scanner.c" +#line 3561 "Zend/zend_language_scanner.c" yy191: YYDEBUG(191, *YYCURSOR); yyaccept = 2; @@ -3648,7 +3649,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(202, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1846 "Zend/zend_language_scanner.l" +#line 1847 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3672,7 +3673,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_DNUMBER; } } -#line 3676 "Zend/zend_language_scanner.c" +#line 3677 "Zend/zend_language_scanner.c" yy203: YYDEBUG(203, *YYCURSOR); ++YYCURSOR; @@ -3684,7 +3685,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1891 "Zend/zend_language_scanner.l" +#line 1892 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3708,7 +3709,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_DNUMBER; } } -#line 3712 "Zend/zend_language_scanner.c" +#line 3713 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; @@ -3717,13 +3718,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy207: YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2277 "Zend/zend_language_scanner.l" +#line 2278 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ BEGIN(INITIAL); return T_CLOSE_TAG; /* implicit ';' at php-end tag */ } -#line 3727 "Zend/zend_language_scanner.c" +#line 3728 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); yych = *++YYCURSOR; @@ -3757,13 +3758,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy212: YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2180 "Zend/zend_language_scanner.l" +#line 2181 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 3767 "Zend/zend_language_scanner.c" +#line 3768 "Zend/zend_language_scanner.c" yy213: YYDEBUG(213, *YYCURSOR); yych = *++YYCURSOR; @@ -3777,11 +3778,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1792 "Zend/zend_language_scanner.l" +#line 1793 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_XOR) } -#line 3785 "Zend/zend_language_scanner.c" +#line 3786 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3790,61 +3791,61 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1784 "Zend/zend_language_scanner.l" +#line 1785 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_OR) } -#line 3798 "Zend/zend_language_scanner.c" +#line 3799 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1772 "Zend/zend_language_scanner.l" +#line 1773 "Zend/zend_language_scanner.l" { return T_XOR_EQUAL; } -#line 3808 "Zend/zend_language_scanner.c" +#line 3809 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; YYDEBUG(221, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1776 "Zend/zend_language_scanner.l" +#line 1777 "Zend/zend_language_scanner.l" { return T_BOOLEAN_OR; } -#line 3818 "Zend/zend_language_scanner.c" +#line 3819 "Zend/zend_language_scanner.c" yy222: YYDEBUG(222, *YYCURSOR); ++YYCURSOR; YYDEBUG(223, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1768 "Zend/zend_language_scanner.l" +#line 1769 "Zend/zend_language_scanner.l" { return T_OR_EQUAL; } -#line 3828 "Zend/zend_language_scanner.c" +#line 3829 "Zend/zend_language_scanner.c" yy224: YYDEBUG(224, *YYCURSOR); ++YYCURSOR; YYDEBUG(225, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1780 "Zend/zend_language_scanner.l" +#line 1781 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_BOOLEAN_AND) } -#line 3838 "Zend/zend_language_scanner.c" +#line 3839 "Zend/zend_language_scanner.c" yy226: YYDEBUG(226, *YYCURSOR); ++YYCURSOR; YYDEBUG(227, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1764 "Zend/zend_language_scanner.l" +#line 1765 "Zend/zend_language_scanner.l" { return T_AND_EQUAL; } -#line 3848 "Zend/zend_language_scanner.c" +#line 3849 "Zend/zend_language_scanner.c" yy228: YYDEBUG(228, *YYCURSOR); ++YYCURSOR; @@ -3853,7 +3854,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy229: YYDEBUG(229, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2284 "Zend/zend_language_scanner.l" +#line 2285 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { BEGIN(INITIAL); @@ -3864,17 +3865,17 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return yytext[0]; } } -#line 3868 "Zend/zend_language_scanner.c" +#line 3869 "Zend/zend_language_scanner.c" yy230: YYDEBUG(230, *YYCURSOR); ++YYCURSOR; YYDEBUG(231, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1752 "Zend/zend_language_scanner.l" +#line 1753 "Zend/zend_language_scanner.l" { return T_MOD_EQUAL; } -#line 3878 "Zend/zend_language_scanner.c" +#line 3879 "Zend/zend_language_scanner.c" yy232: YYDEBUG(232, *YYCURSOR); yych = *++YYCURSOR; @@ -3905,11 +3906,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(237, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1748 "Zend/zend_language_scanner.l" +#line 1749 "Zend/zend_language_scanner.l" { return T_CONCAT_EQUAL; } -#line 3913 "Zend/zend_language_scanner.c" +#line 3914 "Zend/zend_language_scanner.c" yy238: YYDEBUG(238, *YYCURSOR); yyaccept = 4; @@ -3918,7 +3919,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy239: YYDEBUG(239, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2244 "Zend/zend_language_scanner.l" +#line 2245 "Zend/zend_language_scanner.l" { int doc_com; @@ -3951,7 +3952,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_COMMENT; } -#line 3955 "Zend/zend_language_scanner.c" +#line 3956 "Zend/zend_language_scanner.c" yy240: YYDEBUG(240, *YYCURSOR); yych = *++YYCURSOR; @@ -3961,11 +3962,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(242, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1744 "Zend/zend_language_scanner.l" +#line 1745 "Zend/zend_language_scanner.l" { return T_DIV_EQUAL; } -#line 3969 "Zend/zend_language_scanner.c" +#line 3970 "Zend/zend_language_scanner.c" yy243: YYDEBUG(243, *YYCURSOR); yych = *++YYCURSOR; @@ -3988,42 +3989,42 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(247, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1740 "Zend/zend_language_scanner.l" +#line 1741 "Zend/zend_language_scanner.l" { return T_MUL_EQUAL; } -#line 3996 "Zend/zend_language_scanner.c" +#line 3997 "Zend/zend_language_scanner.c" yy248: YYDEBUG(248, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy252; YYDEBUG(249, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1800 "Zend/zend_language_scanner.l" +#line 1801 "Zend/zend_language_scanner.l" { return T_SR; } -#line 4007 "Zend/zend_language_scanner.c" +#line 4008 "Zend/zend_language_scanner.c" yy250: YYDEBUG(250, *YYCURSOR); ++YYCURSOR; YYDEBUG(251, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1728 "Zend/zend_language_scanner.l" +#line 1729 "Zend/zend_language_scanner.l" { return T_IS_GREATER_OR_EQUAL; } -#line 4017 "Zend/zend_language_scanner.c" +#line 4018 "Zend/zend_language_scanner.c" yy252: YYDEBUG(252, *YYCURSOR); ++YYCURSOR; YYDEBUG(253, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1760 "Zend/zend_language_scanner.l" +#line 1761 "Zend/zend_language_scanner.l" { return T_SR_EQUAL; } -#line 4027 "Zend/zend_language_scanner.c" +#line 4028 "Zend/zend_language_scanner.c" yy254: YYDEBUG(254, *YYCURSOR); yyaccept = 5; @@ -4034,11 +4035,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy255: YYDEBUG(255, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1796 "Zend/zend_language_scanner.l" +#line 1797 "Zend/zend_language_scanner.l" { return T_SL; } -#line 4042 "Zend/zend_language_scanner.c" +#line 4043 "Zend/zend_language_scanner.c" yy256: YYDEBUG(256, *YYCURSOR); yych = *++YYCURSOR; @@ -4050,22 +4051,22 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(258, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1724 "Zend/zend_language_scanner.l" +#line 1725 "Zend/zend_language_scanner.l" { return T_IS_SMALLER_OR_EQUAL; } -#line 4058 "Zend/zend_language_scanner.c" +#line 4059 "Zend/zend_language_scanner.c" yy259: YYDEBUG(259, *YYCURSOR); ++YYCURSOR; yy260: YYDEBUG(260, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1720 "Zend/zend_language_scanner.l" +#line 1721 "Zend/zend_language_scanner.l" { return T_IS_NOT_EQUAL; } -#line 4069 "Zend/zend_language_scanner.c" +#line 4070 "Zend/zend_language_scanner.c" yy261: YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; @@ -4116,11 +4117,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(269, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1756 "Zend/zend_language_scanner.l" +#line 1757 "Zend/zend_language_scanner.l" { return T_SL_EQUAL; } -#line 4124 "Zend/zend_language_scanner.c" +#line 4125 "Zend/zend_language_scanner.c" yy270: YYDEBUG(270, *YYCURSOR); ++YYCURSOR; @@ -4225,7 +4226,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy280: YYDEBUG(280, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2405 "Zend/zend_language_scanner.l" +#line 2406 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -4272,7 +4273,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_START_HEREDOC; } -#line 4276 "Zend/zend_language_scanner.c" +#line 4277 "Zend/zend_language_scanner.c" yy281: YYDEBUG(281, *YYCURSOR); yych = *++YYCURSOR; @@ -4312,31 +4313,31 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(286, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1712 "Zend/zend_language_scanner.l" +#line 1713 "Zend/zend_language_scanner.l" { return T_IS_NOT_IDENTICAL; } -#line 4320 "Zend/zend_language_scanner.c" +#line 4321 "Zend/zend_language_scanner.c" yy287: YYDEBUG(287, *YYCURSOR); ++YYCURSOR; YYDEBUG(288, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1732 "Zend/zend_language_scanner.l" +#line 1733 "Zend/zend_language_scanner.l" { return T_PLUS_EQUAL; } -#line 4330 "Zend/zend_language_scanner.c" +#line 4331 "Zend/zend_language_scanner.c" yy289: YYDEBUG(289, *YYCURSOR); ++YYCURSOR; YYDEBUG(290, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1700 "Zend/zend_language_scanner.l" +#line 1701 "Zend/zend_language_scanner.l" { return T_INC; } -#line 4340 "Zend/zend_language_scanner.c" +#line 4341 "Zend/zend_language_scanner.c" yy291: YYDEBUG(291, *YYCURSOR); yych = *++YYCURSOR; @@ -4355,42 +4356,42 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(294, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1688 "Zend/zend_language_scanner.l" +#line 1689 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LIST) } -#line 4363 "Zend/zend_language_scanner.c" +#line 4364 "Zend/zend_language_scanner.c" yy295: YYDEBUG(295, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy299; YYDEBUG(296, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1716 "Zend/zend_language_scanner.l" +#line 1717 "Zend/zend_language_scanner.l" { return T_IS_EQUAL; } -#line 4374 "Zend/zend_language_scanner.c" +#line 4375 "Zend/zend_language_scanner.c" yy297: YYDEBUG(297, *YYCURSOR); ++YYCURSOR; YYDEBUG(298, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1684 "Zend/zend_language_scanner.l" +#line 1685 "Zend/zend_language_scanner.l" { return T_DOUBLE_ARROW; } -#line 4384 "Zend/zend_language_scanner.c" +#line 4385 "Zend/zend_language_scanner.c" yy299: YYDEBUG(299, *YYCURSOR); ++YYCURSOR; YYDEBUG(300, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1708 "Zend/zend_language_scanner.l" +#line 1709 "Zend/zend_language_scanner.l" { return T_IS_IDENTICAL; } -#line 4394 "Zend/zend_language_scanner.c" +#line 4395 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4520,7 +4521,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(320, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2025 "Zend/zend_language_scanner.l" +#line 2026 "Zend/zend_language_scanner.l" { if (CG(current_namespace)) { *zendlval = *CG(current_namespace); @@ -4530,7 +4531,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_NS_C; } -#line 4534 "Zend/zend_language_scanner.c" +#line 4535 "Zend/zend_language_scanner.c" yy321: YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; @@ -4550,7 +4551,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(325, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2000 "Zend/zend_language_scanner.l" +#line 2001 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); const size_t filename_len = strlen(filename); @@ -4575,7 +4576,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ZVAL_STRING(zendlval, dirname, 0); return T_DIR; } -#line 4579 "Zend/zend_language_scanner.c" +#line 4580 "Zend/zend_language_scanner.c" yy326: YYDEBUG(326, *YYCURSOR); yych = *++YYCURSOR; @@ -4600,12 +4601,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(331, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1985 "Zend/zend_language_scanner.l" +#line 1986 "Zend/zend_language_scanner.l" { ZVAL_LONG(zendlval, CG(zend_lineno)); return T_LINE; } -#line 4609 "Zend/zend_language_scanner.c" +#line 4610 "Zend/zend_language_scanner.c" yy332: YYDEBUG(332, *YYCURSOR); yych = *++YYCURSOR; @@ -4640,7 +4641,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(339, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1972 "Zend/zend_language_scanner.l" +#line 1973 "Zend/zend_language_scanner.l" { const char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL; const char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL; @@ -4653,7 +4654,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_METHOD_C; } -#line 4657 "Zend/zend_language_scanner.c" +#line 4658 "Zend/zend_language_scanner.c" yy340: YYDEBUG(340, *YYCURSOR); yych = *++YYCURSOR; @@ -4704,7 +4705,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(350, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1962 "Zend/zend_language_scanner.l" +#line 1963 "Zend/zend_language_scanner.l" { zend_op_array *op_array = CG(active_op_array); if (op_array && op_array->function_name) { @@ -4714,7 +4715,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_FUNC_C; } -#line 4718 "Zend/zend_language_scanner.c" +#line 4719 "Zend/zend_language_scanner.c" yy351: YYDEBUG(351, *YYCURSOR); yych = *++YYCURSOR; @@ -4734,7 +4735,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(355, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1990 "Zend/zend_language_scanner.l" +#line 1991 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); @@ -4744,7 +4745,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ZVAL_STRING(zendlval, filename, 1); return T_FILE; } -#line 4748 "Zend/zend_language_scanner.c" +#line 4749 "Zend/zend_language_scanner.c" yy356: YYDEBUG(356, *YYCURSOR); yych = *++YYCURSOR; @@ -4774,7 +4775,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(362, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1952 "Zend/zend_language_scanner.l" +#line 1953 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ce->name && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4784,7 +4785,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_TRAIT_C; } -#line 4788 "Zend/zend_language_scanner.c" +#line 4789 "Zend/zend_language_scanner.c" yy363: YYDEBUG(363, *YYCURSOR); yych = *++YYCURSOR; @@ -4814,7 +4815,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(369, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1934 "Zend/zend_language_scanner.l" +#line 1935 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4832,7 +4833,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_CLASS_C; } -#line 4836 "Zend/zend_language_scanner.c" +#line 4837 "Zend/zend_language_scanner.c" yy370: YYDEBUG(370, *YYCURSOR); yych = *++YYCURSOR; @@ -4894,11 +4895,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(382, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1652 "Zend/zend_language_scanner.l" +#line 1653 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_HALT_COMPILER) } -#line 4902 "Zend/zend_language_scanner.c" +#line 4903 "Zend/zend_language_scanner.c" yy383: YYDEBUG(383, *YYCURSOR); yych = *++YYCURSOR; @@ -4918,11 +4919,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(386, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1632 "Zend/zend_language_scanner.l" +#line 1633 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_USE) } -#line 4926 "Zend/zend_language_scanner.c" +#line 4927 "Zend/zend_language_scanner.c" yy387: YYDEBUG(387, *YYCURSOR); yych = *++YYCURSOR; @@ -4941,11 +4942,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(390, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1680 "Zend/zend_language_scanner.l" +#line 1681 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_UNSET) } -#line 4949 "Zend/zend_language_scanner.c" +#line 4950 "Zend/zend_language_scanner.c" yy391: YYDEBUG(391, *YYCURSOR); ++YYCURSOR; @@ -5117,11 +5118,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(408, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1580 "Zend/zend_language_scanner.l" +#line 1581 "Zend/zend_language_scanner.l" { return T_INT_CAST; } -#line 5125 "Zend/zend_language_scanner.c" +#line 5126 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -5165,11 +5166,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(417, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1584 "Zend/zend_language_scanner.l" +#line 1585 "Zend/zend_language_scanner.l" { return T_DOUBLE_CAST; } -#line 5173 "Zend/zend_language_scanner.c" +#line 5174 "Zend/zend_language_scanner.c" yy418: YYDEBUG(418, *YYCURSOR); yych = *++YYCURSOR; @@ -5239,11 +5240,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1588 "Zend/zend_language_scanner.l" +#line 1589 "Zend/zend_language_scanner.l" { return T_STRING_CAST; } -#line 5247 "Zend/zend_language_scanner.c" +#line 5248 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); yych = *++YYCURSOR; @@ -5276,11 +5277,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(438, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1592 "Zend/zend_language_scanner.l" +#line 1593 "Zend/zend_language_scanner.l" { return T_ARRAY_CAST; } -#line 5284 "Zend/zend_language_scanner.c" +#line 5285 "Zend/zend_language_scanner.c" yy439: YYDEBUG(439, *YYCURSOR); yych = *++YYCURSOR; @@ -5318,11 +5319,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(446, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1596 "Zend/zend_language_scanner.l" +#line 1597 "Zend/zend_language_scanner.l" { return T_OBJECT_CAST; } -#line 5326 "Zend/zend_language_scanner.c" +#line 5327 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); yych = *++YYCURSOR; @@ -5363,11 +5364,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(454, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1600 "Zend/zend_language_scanner.l" +#line 1601 "Zend/zend_language_scanner.l" { return T_BOOL_CAST; } -#line 5371 "Zend/zend_language_scanner.c" +#line 5372 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5427,11 +5428,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(466, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1604 "Zend/zend_language_scanner.l" +#line 1605 "Zend/zend_language_scanner.l" { return T_UNSET_CAST; } -#line 5435 "Zend/zend_language_scanner.c" +#line 5436 "Zend/zend_language_scanner.c" yy467: YYDEBUG(467, *YYCURSOR); yych = *++YYCURSOR; @@ -5445,11 +5446,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(469, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1576 "Zend/zend_language_scanner.l" +#line 1577 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_VAR) } -#line 5453 "Zend/zend_language_scanner.c" +#line 5454 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; @@ -5469,11 +5470,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(473, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1568 "Zend/zend_language_scanner.l" +#line 1569 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_NEW) } -#line 5477 "Zend/zend_language_scanner.c" +#line 5478 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5512,21 +5513,21 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(481, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1628 "Zend/zend_language_scanner.l" +#line 1629 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_NAMESPACE) } -#line 5520 "Zend/zend_language_scanner.c" +#line 5521 "Zend/zend_language_scanner.c" yy482: YYDEBUG(482, *YYCURSOR); ++YYCURSOR; YYDEBUG(483, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1560 "Zend/zend_language_scanner.l" +#line 1561 "Zend/zend_language_scanner.l" { return T_PAAMAYIM_NEKUDOTAYIM; } -#line 5530 "Zend/zend_language_scanner.c" +#line 5531 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); ++YYCURSOR; @@ -5548,32 +5549,32 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(487, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1736 "Zend/zend_language_scanner.l" +#line 1737 "Zend/zend_language_scanner.l" { return T_MINUS_EQUAL; } -#line 5556 "Zend/zend_language_scanner.c" +#line 5557 "Zend/zend_language_scanner.c" yy488: YYDEBUG(488, *YYCURSOR); ++YYCURSOR; YYDEBUG(489, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1704 "Zend/zend_language_scanner.l" +#line 1705 "Zend/zend_language_scanner.l" { return T_DEC; } -#line 5566 "Zend/zend_language_scanner.c" +#line 5567 "Zend/zend_language_scanner.c" yy490: YYDEBUG(490, *YYCURSOR); ++YYCURSOR; YYDEBUG(491, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1532 "Zend/zend_language_scanner.l" +#line 1533 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); return T_OBJECT_OPERATOR; } -#line 5577 "Zend/zend_language_scanner.c" +#line 5578 "Zend/zend_language_scanner.c" yy492: YYDEBUG(492, *YYCURSOR); yych = *++YYCURSOR; @@ -5618,11 +5619,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(498, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1676 "Zend/zend_language_scanner.l" +#line 1677 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PUBLIC) } -#line 5626 "Zend/zend_language_scanner.c" +#line 5627 "Zend/zend_language_scanner.c" yy499: YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; @@ -5677,11 +5678,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(507, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1672 "Zend/zend_language_scanner.l" +#line 1673 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PROTECTED) } -#line 5685 "Zend/zend_language_scanner.c" +#line 5686 "Zend/zend_language_scanner.c" yy508: YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; @@ -5711,11 +5712,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(513, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1668 "Zend/zend_language_scanner.l" +#line 1669 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PRIVATE) } -#line 5719 "Zend/zend_language_scanner.c" +#line 5720 "Zend/zend_language_scanner.c" yy514: YYDEBUG(514, *YYCURSOR); ++YYCURSOR; @@ -5724,11 +5725,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(515, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1508 "Zend/zend_language_scanner.l" +#line 1509 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PRINT) } -#line 5732 "Zend/zend_language_scanner.c" +#line 5733 "Zend/zend_language_scanner.c" yy516: YYDEBUG(516, *YYCURSOR); yych = *++YYCURSOR; @@ -5753,11 +5754,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1500 "Zend/zend_language_scanner.l" +#line 1501 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_GOTO) } -#line 5761 "Zend/zend_language_scanner.c" +#line 5762 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5781,11 +5782,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(525, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1640 "Zend/zend_language_scanner.l" +#line 1641 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_GLOBAL) } -#line 5789 "Zend/zend_language_scanner.c" +#line 5790 "Zend/zend_language_scanner.c" yy526: YYDEBUG(526, *YYCURSOR); yych = *++YYCURSOR; @@ -5822,11 +5823,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(533, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1492 "Zend/zend_language_scanner.l" +#line 1493 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_BREAK) } -#line 5830 "Zend/zend_language_scanner.c" +#line 5831 "Zend/zend_language_scanner.c" yy534: YYDEBUG(534, *YYCURSOR); yych = *++YYCURSOR; @@ -5866,11 +5867,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(541, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1476 "Zend/zend_language_scanner.l" +#line 1477 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_SWITCH) } -#line 5874 "Zend/zend_language_scanner.c" +#line 5875 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5894,11 +5895,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(546, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1656 "Zend/zend_language_scanner.l" +#line 1657 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_STATIC) } -#line 5902 "Zend/zend_language_scanner.c" +#line 5903 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5925,11 +5926,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(551, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1472 "Zend/zend_language_scanner.l" +#line 1473 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_AS) } -#line 5933 "Zend/zend_language_scanner.c" +#line 5934 "Zend/zend_language_scanner.c" yy552: YYDEBUG(552, *YYCURSOR); yych = *++YYCURSOR; @@ -5948,11 +5949,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(555, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1692 "Zend/zend_language_scanner.l" +#line 1693 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ARRAY) } -#line 5956 "Zend/zend_language_scanner.c" +#line 5957 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); ++YYCURSOR; @@ -5961,11 +5962,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(557, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1788 "Zend/zend_language_scanner.l" +#line 1789 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_AND) } -#line 5969 "Zend/zend_language_scanner.c" +#line 5970 "Zend/zend_language_scanner.c" yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; @@ -5999,11 +6000,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(564, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1660 "Zend/zend_language_scanner.l" +#line 1661 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ABSTRACT) } -#line 6007 "Zend/zend_language_scanner.c" +#line 6008 "Zend/zend_language_scanner.c" yy565: YYDEBUG(565, *YYCURSOR); yych = *++YYCURSOR; @@ -6027,11 +6028,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(569, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1432 "Zend/zend_language_scanner.l" +#line 1433 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_WHILE) } -#line 6035 "Zend/zend_language_scanner.c" +#line 6036 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); ++YYCURSOR; @@ -6040,11 +6041,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(571, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1416 "Zend/zend_language_scanner.l" +#line 1417 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_IF) } -#line 6048 "Zend/zend_language_scanner.c" +#line 6049 "Zend/zend_language_scanner.c" yy572: YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; @@ -6096,11 +6097,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(578, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1644 "Zend/zend_language_scanner.l" +#line 1645 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ISSET) } -#line 6104 "Zend/zend_language_scanner.c" +#line 6105 "Zend/zend_language_scanner.c" yy579: YYDEBUG(579, *YYCURSOR); yych = *++YYCURSOR; @@ -6154,11 +6155,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy586: YYDEBUG(586, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1612 "Zend/zend_language_scanner.l" +#line 1613 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INCLUDE) } -#line 6162 "Zend/zend_language_scanner.c" +#line 6163 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -6187,11 +6188,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(592, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1616 "Zend/zend_language_scanner.l" +#line 1617 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INCLUDE_ONCE) } -#line 6195 "Zend/zend_language_scanner.c" +#line 6196 "Zend/zend_language_scanner.c" yy593: YYDEBUG(593, *YYCURSOR); yych = *++YYCURSOR; @@ -6225,11 +6226,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(599, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1516 "Zend/zend_language_scanner.l" +#line 1517 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INTERFACE) } -#line 6233 "Zend/zend_language_scanner.c" +#line 6234 "Zend/zend_language_scanner.c" yy600: YYDEBUG(600, *YYCURSOR); yych = *++YYCURSOR; @@ -6279,11 +6280,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(607, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1636 "Zend/zend_language_scanner.l" +#line 1637 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INSTEADOF) } -#line 6287 "Zend/zend_language_scanner.c" +#line 6288 "Zend/zend_language_scanner.c" yy608: YYDEBUG(608, *YYCURSOR); yych = *++YYCURSOR; @@ -6312,11 +6313,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(613, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1468 "Zend/zend_language_scanner.l" +#line 1469 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INSTANCEOF) } -#line 6320 "Zend/zend_language_scanner.c" +#line 6321 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6360,11 +6361,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(622, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1528 "Zend/zend_language_scanner.l" +#line 1529 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_IMPLEMENTS) } -#line 6368 "Zend/zend_language_scanner.c" +#line 6369 "Zend/zend_language_scanner.c" yy623: YYDEBUG(623, *YYCURSOR); yych = *++YYCURSOR; @@ -6392,11 +6393,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(626, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1400 "Zend/zend_language_scanner.l" +#line 1401 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_TRY) } -#line 6400 "Zend/zend_language_scanner.c" +#line 6401 "Zend/zend_language_scanner.c" yy627: YYDEBUG(627, *YYCURSOR); yych = *++YYCURSOR; @@ -6415,11 +6416,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(630, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1520 "Zend/zend_language_scanner.l" +#line 1521 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_TRAIT) } -#line 6423 "Zend/zend_language_scanner.c" +#line 6424 "Zend/zend_language_scanner.c" yy631: YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; @@ -6438,11 +6439,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(634, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1412 "Zend/zend_language_scanner.l" +#line 1413 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_THROW) } -#line 6446 "Zend/zend_language_scanner.c" +#line 6447 "Zend/zend_language_scanner.c" yy635: YYDEBUG(635, *YYCURSOR); yych = *++YYCURSOR; @@ -6466,11 +6467,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(639, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1396 "Zend/zend_language_scanner.l" +#line 1397 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_YIELD) } -#line 6474 "Zend/zend_language_scanner.c" +#line 6475 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); yych = *++YYCURSOR; @@ -6531,11 +6532,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy647: YYDEBUG(647, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1620 "Zend/zend_language_scanner.l" +#line 1621 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_REQUIRE) } -#line 6539 "Zend/zend_language_scanner.c" +#line 6540 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6564,11 +6565,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(653, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1624 "Zend/zend_language_scanner.l" +#line 1625 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_REQUIRE_ONCE) } -#line 6572 "Zend/zend_language_scanner.c" +#line 6573 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; @@ -6587,11 +6588,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(657, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1392 "Zend/zend_language_scanner.l" +#line 1393 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_RETURN) } -#line 6595 "Zend/zend_language_scanner.c" +#line 6596 "Zend/zend_language_scanner.c" yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; @@ -6681,11 +6682,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(668, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1496 "Zend/zend_language_scanner.l" +#line 1497 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CONTINUE) } -#line 6689 "Zend/zend_language_scanner.c" +#line 6690 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); ++YYCURSOR; @@ -6694,11 +6695,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1388 "Zend/zend_language_scanner.l" +#line 1389 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CONST) } -#line 6702 "Zend/zend_language_scanner.c" +#line 6703 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6723,11 +6724,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1572 "Zend/zend_language_scanner.l" +#line 1573 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CLONE) } -#line 6731 "Zend/zend_language_scanner.c" +#line 6732 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6741,11 +6742,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(678, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1512 "Zend/zend_language_scanner.l" +#line 1513 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CLASS) } -#line 6749 "Zend/zend_language_scanner.c" +#line 6750 "Zend/zend_language_scanner.c" yy679: YYDEBUG(679, *YYCURSOR); yych = *++YYCURSOR; @@ -6791,11 +6792,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(687, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1696 "Zend/zend_language_scanner.l" +#line 1697 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CALLABLE) } -#line 6799 "Zend/zend_language_scanner.c" +#line 6800 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); ++YYCURSOR; @@ -6804,11 +6805,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(689, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1484 "Zend/zend_language_scanner.l" +#line 1485 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CASE) } -#line 6812 "Zend/zend_language_scanner.c" +#line 6813 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); yych = *++YYCURSOR; @@ -6822,11 +6823,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(692, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1404 "Zend/zend_language_scanner.l" +#line 1405 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CATCH) } -#line 6830 "Zend/zend_language_scanner.c" +#line 6831 "Zend/zend_language_scanner.c" yy693: YYDEBUG(693, *YYCURSOR); yych = *++YYCURSOR; @@ -6877,11 +6878,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(702, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1384 "Zend/zend_language_scanner.l" +#line 1385 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FUNCTION) } -#line 6885 "Zend/zend_language_scanner.c" +#line 6886 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; @@ -6905,11 +6906,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy704: YYDEBUG(704, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1444 "Zend/zend_language_scanner.l" +#line 1445 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FOR) } -#line 6913 "Zend/zend_language_scanner.c" +#line 6914 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; @@ -6933,11 +6934,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(709, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1452 "Zend/zend_language_scanner.l" +#line 1453 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FOREACH) } -#line 6941 "Zend/zend_language_scanner.c" +#line 6942 "Zend/zend_language_scanner.c" yy710: YYDEBUG(710, *YYCURSOR); yych = *++YYCURSOR; @@ -6971,11 +6972,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy713: YYDEBUG(713, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1664 "Zend/zend_language_scanner.l" +#line 1665 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FINAL) } -#line 6979 "Zend/zend_language_scanner.c" +#line 6980 "Zend/zend_language_scanner.c" yy714: YYDEBUG(714, *YYCURSOR); yych = *++YYCURSOR; @@ -6989,11 +6990,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(716, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1408 "Zend/zend_language_scanner.l" +#line 1409 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FINALLY) } -#line 6997 "Zend/zend_language_scanner.c" +#line 6998 "Zend/zend_language_scanner.c" yy717: YYDEBUG(717, *YYCURSOR); yych = *++YYCURSOR; @@ -7024,11 +7025,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(720, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1440 "Zend/zend_language_scanner.l" +#line 1441 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DO) } -#line 7032 "Zend/zend_language_scanner.c" +#line 7033 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); ++YYCURSOR; @@ -7037,11 +7038,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(722, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1380 "Zend/zend_language_scanner.l" +#line 1381 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXIT) } -#line 7045 "Zend/zend_language_scanner.c" +#line 7046 "Zend/zend_language_scanner.c" yy723: YYDEBUG(723, *YYCURSOR); yych = *++YYCURSOR; @@ -7076,11 +7077,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(729, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1488 "Zend/zend_language_scanner.l" +#line 1489 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DEFAULT) } -#line 7084 "Zend/zend_language_scanner.c" +#line 7085 "Zend/zend_language_scanner.c" yy730: YYDEBUG(730, *YYCURSOR); yych = *++YYCURSOR; @@ -7104,11 +7105,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(734, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1460 "Zend/zend_language_scanner.l" +#line 1461 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DECLARE) } -#line 7112 "Zend/zend_language_scanner.c" +#line 7113 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -7188,11 +7189,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(747, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1524 "Zend/zend_language_scanner.l" +#line 1525 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXTENDS) } -#line 7196 "Zend/zend_language_scanner.c" +#line 7197 "Zend/zend_language_scanner.c" yy748: YYDEBUG(748, *YYCURSOR); ++YYCURSOR; @@ -7201,11 +7202,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(749, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1376 "Zend/zend_language_scanner.l" +#line 1377 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXIT) } -#line 7209 "Zend/zend_language_scanner.c" +#line 7210 "Zend/zend_language_scanner.c" yy750: YYDEBUG(750, *YYCURSOR); yych = *++YYCURSOR; @@ -7219,11 +7220,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(752, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1608 "Zend/zend_language_scanner.l" +#line 1609 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EVAL) } -#line 7227 "Zend/zend_language_scanner.c" +#line 7228 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7293,11 +7294,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(763, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1436 "Zend/zend_language_scanner.l" +#line 1437 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDWHILE) } -#line 7301 "Zend/zend_language_scanner.c" +#line 7302 "Zend/zend_language_scanner.c" yy764: YYDEBUG(764, *YYCURSOR); yych = *++YYCURSOR; @@ -7326,11 +7327,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1480 "Zend/zend_language_scanner.l" +#line 1481 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDSWITCH) } -#line 7334 "Zend/zend_language_scanner.c" +#line 7335 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7339,11 +7340,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(771, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1424 "Zend/zend_language_scanner.l" +#line 1425 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDIF) } -#line 7347 "Zend/zend_language_scanner.c" +#line 7348 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); yych = *++YYCURSOR; @@ -7372,11 +7373,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy774: YYDEBUG(774, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1448 "Zend/zend_language_scanner.l" +#line 1449 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDFOR) } -#line 7380 "Zend/zend_language_scanner.c" +#line 7381 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); yych = *++YYCURSOR; @@ -7400,11 +7401,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(779, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1456 "Zend/zend_language_scanner.l" +#line 1457 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDFOREACH) } -#line 7408 "Zend/zend_language_scanner.c" +#line 7409 "Zend/zend_language_scanner.c" yy780: YYDEBUG(780, *YYCURSOR); yych = *++YYCURSOR; @@ -7438,11 +7439,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(786, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1464 "Zend/zend_language_scanner.l" +#line 1465 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDDECLARE) } -#line 7446 "Zend/zend_language_scanner.c" +#line 7447 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); yych = *++YYCURSOR; @@ -7461,11 +7462,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(790, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1648 "Zend/zend_language_scanner.l" +#line 1649 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EMPTY) } -#line 7469 "Zend/zend_language_scanner.c" +#line 7470 "Zend/zend_language_scanner.c" yy791: YYDEBUG(791, *YYCURSOR); yych = *++YYCURSOR; @@ -7494,11 +7495,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy793: YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1428 "Zend/zend_language_scanner.l" +#line 1429 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ELSE) } -#line 7502 "Zend/zend_language_scanner.c" +#line 7503 "Zend/zend_language_scanner.c" yy794: YYDEBUG(794, *YYCURSOR); yych = *++YYCURSOR; @@ -7512,11 +7513,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(796, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1420 "Zend/zend_language_scanner.l" +#line 1421 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ELSEIF) } -#line 7520 "Zend/zend_language_scanner.c" +#line 7521 "Zend/zend_language_scanner.c" yy797: YYDEBUG(797, *YYCURSOR); yych = *++YYCURSOR; @@ -7530,11 +7531,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1504 "Zend/zend_language_scanner.l" +#line 1505 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ECHO) } -#line 7538 "Zend/zend_language_scanner.c" +#line 7539 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7607,13 +7608,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1537 "Zend/zend_language_scanner.l" +#line 1538 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 7617 "Zend/zend_language_scanner.c" +#line 7618 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7621,13 +7622,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy805: YYDEBUG(805, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1554 "Zend/zend_language_scanner.l" +#line 1555 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); goto restart; } -#line 7631 "Zend/zend_language_scanner.c" +#line 7632 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); ++YYCURSOR; @@ -7636,14 +7637,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy807: YYDEBUG(807, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1547 "Zend/zend_language_scanner.l" +#line 1548 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 7647 "Zend/zend_language_scanner.c" +#line 7648 "Zend/zend_language_scanner.c" yy808: YYDEBUG(808, *YYCURSOR); yych = *++YYCURSOR; @@ -7664,11 +7665,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(812, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1543 "Zend/zend_language_scanner.l" +#line 1544 "Zend/zend_language_scanner.l" { return T_OBJECT_OPERATOR; } -#line 7672 "Zend/zend_language_scanner.c" +#line 7673 "Zend/zend_language_scanner.c" yy813: YYDEBUG(813, *YYCURSOR); ++YYCURSOR; @@ -7753,14 +7754,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy818: YYDEBUG(818, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1839 "Zend/zend_language_scanner.l" +#line 1840 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); goto restart; } -#line 7764 "Zend/zend_language_scanner.c" +#line 7765 "Zend/zend_language_scanner.c" yy819: YYDEBUG(819, *YYCURSOR); yych = *++YYCURSOR; @@ -7785,7 +7786,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(824, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1829 "Zend/zend_language_scanner.l" +#line 1830 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); zend_copy_value(zendlval, yytext, yyleng); @@ -7794,7 +7795,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_STRING_VARNAME; } -#line 7798 "Zend/zend_language_scanner.c" +#line 7799 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7805,7 +7806,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(828, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2658 "Zend/zend_language_scanner.l" +#line 2659 "Zend/zend_language_scanner.l" { int newline = 0; @@ -7862,7 +7863,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) HANDLE_NEWLINES(yytext, yyleng - newline); return T_ENCAPSED_AND_WHITESPACE; } -#line 7866 "Zend/zend_language_scanner.c" +#line 7867 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7969,7 +7970,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy832: YYDEBUG(832, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1915 "Zend/zend_language_scanner.l" +#line 1916 "Zend/zend_language_scanner.l" { /* Offset could be treated as a long */ if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) { ZVAL_LONG(zendlval, strtol(yytext, NULL, 10)); @@ -7978,7 +7979,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_NUM_STRING; } -#line 7982 "Zend/zend_language_scanner.c" +#line 7983 "Zend/zend_language_scanner.c" yy833: YYDEBUG(833, *YYCURSOR); yych = *++YYCURSOR; @@ -7998,23 +7999,23 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy835: YYDEBUG(835, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2191 "Zend/zend_language_scanner.l" +#line 2192 "Zend/zend_language_scanner.l" { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -#line 8007 "Zend/zend_language_scanner.c" +#line 8008 "Zend/zend_language_scanner.c" yy836: YYDEBUG(836, *YYCURSOR); ++YYCURSOR; YYDEBUG(837, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2186 "Zend/zend_language_scanner.l" +#line 2187 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); return ']'; } -#line 8018 "Zend/zend_language_scanner.c" +#line 8019 "Zend/zend_language_scanner.c" yy838: YYDEBUG(838, *YYCURSOR); yych = *++YYCURSOR; @@ -8024,14 +8025,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(840, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2196 "Zend/zend_language_scanner.l" +#line 2197 "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 8035 "Zend/zend_language_scanner.c" +#line 8036 "Zend/zend_language_scanner.c" yy841: YYDEBUG(841, *YYCURSOR); ++YYCURSOR; @@ -8040,19 +8041,19 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy842: YYDEBUG(842, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2203 "Zend/zend_language_scanner.l" +#line 2204 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 8050 "Zend/zend_language_scanner.c" +#line 8051 "Zend/zend_language_scanner.c" yy843: YYDEBUG(843, *YYCURSOR); ++YYCURSOR; YYDEBUG(844, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2716 "Zend/zend_language_scanner.l" +#line 2717 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -8061,7 +8062,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 8065 "Zend/zend_language_scanner.c" +#line 8066 "Zend/zend_language_scanner.c" yy845: YYDEBUG(845, *YYCURSOR); ++YYCURSOR; @@ -8097,13 +8098,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy849: YYDEBUG(849, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2180 "Zend/zend_language_scanner.l" +#line 2181 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 8107 "Zend/zend_language_scanner.c" +#line 8108 "Zend/zend_language_scanner.c" yy850: YYDEBUG(850, *YYCURSOR); ++YYCURSOR; @@ -8143,12 +8144,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy857: YYDEBUG(857, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1924 "Zend/zend_language_scanner.l" +#line 1925 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng, 1); return T_NUM_STRING; } -#line 8152 "Zend/zend_language_scanner.c" +#line 8153 "Zend/zend_language_scanner.c" yy858: YYDEBUG(858, *YYCURSOR); ++YYCURSOR; @@ -8171,6 +8172,6 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto yy857; } } -#line 2725 "Zend/zend_language_scanner.l" +#line 2726 "Zend/zend_language_scanner.l" } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index c5a48a9aa2412..0d9ebafc68f2a 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1251,9 +1251,10 @@ again: } /* Handling of T_HALT_COMPILER; might cause memory leaks if not handled */ - if (buf_one_token == T_HALT_COMPILER && retval == '(') { - LEX_BUF_ADD - } else if (buf_two_token == T_HALT_COMPILER && buf_one_token == '(' && retval == ')') { + if ( + (buf_one_token == T_HALT_COMPILER && retval == '(') + || (buf_two_token == T_HALT_COMPILER && buf_one_token == '(' && retval == ')') + ) { LEX_BUF_ADD } } From b50dcce10f110d2cfc44ff5ea4184472fb2f7a73 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Thu, 17 Oct 2013 01:15:30 +0200 Subject: [PATCH 7/9] Reset test to inital state --- Zend/tests/bug43343.phpt | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Zend/tests/bug43343.phpt b/Zend/tests/bug43343.phpt index 9c1705e8eb81a..f0df976a9f47e 100644 --- a/Zend/tests/bug43343.phpt +++ b/Zend/tests/bug43343.phpt @@ -2,12 +2,10 @@ Bug #43343 (Variable class name) --FILE-- --EXPECTF-- -object(if)#1 (0) { -} +Fatal error: Class 'Foo\namespace' not found in %s on line %d From 0a360089a315a31004e0b46a7b2567c4f53ba4f8 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Thu, 17 Oct 2013 11:52:38 +0200 Subject: [PATCH 8/9] Fixed edge case where class name is "namespace": e.g. \ns\namespace --- Zend/zend_language_scanner.c | 694 ++++++++++++++++++----------------- Zend/zend_language_scanner.l | 6 +- 2 files changed, 354 insertions(+), 346 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index df7bf9ae6a17f..9542fde27af7a 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1214,12 +1214,15 @@ int lex_scan(zval *zendlval) { break; } case T_NEW: - case T_NS_SEPARATOR: case T_NAMESPACE: if (retval != T_NAMESPACE && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } } + if (buf_two_token == T_NS_SEPARATOR && LEX_IS_BUF_ALPH_TOKEN(buf_one) && (retval != T_NS_SEPARATOR || buf_one_token != T_NAMESPACE)) { + LEX_CONVERT_BUF_STRING(buf_one); + } + if (retval == T_NS_SEPARATOR) { switch (buf_one_token) { case T_NAMESPACE: @@ -1230,6 +1233,7 @@ int lex_scan(zval *zendlval) { } case T_USE: case T_ECHO: + case T_YIELD: if (buf_two_token < 256 && buf_two_token != ',') { break; } @@ -1359,7 +1363,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yymore_restart: -#line 1363 "Zend/zend_language_scanner.c" +#line 1367 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1458,7 +1462,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy3: YYDEBUG(3, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2099 "Zend/zend_language_scanner.l" +#line 2103 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1518,7 +1522,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) HANDLE_NEWLINES(yytext, yyleng); return T_INLINE_HTML; } -#line 1522 "Zend/zend_language_scanner.c" +#line 1526 "Zend/zend_language_scanner.c" yy4: YYDEBUG(4, *YYCURSOR); yych = *++YYCURSOR; @@ -1536,7 +1540,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy6: YYDEBUG(6, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2089 "Zend/zend_language_scanner.l" +#line 2093 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1546,14 +1550,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1550 "Zend/zend_language_scanner.c" +#line 1554 "Zend/zend_language_scanner.c" yy7: YYDEBUG(7, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy43; YYDEBUG(8, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2070 "Zend/zend_language_scanner.l" +#line 2074 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1563,7 +1567,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1567 "Zend/zend_language_scanner.c" +#line 1571 "Zend/zend_language_scanner.c" yy9: YYDEBUG(9, *YYCURSOR); yych = *++YYCURSOR; @@ -1749,7 +1753,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2036 "Zend/zend_language_scanner.l" +#line 2040 "Zend/zend_language_scanner.l" { YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1)); @@ -1764,7 +1768,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1768 "Zend/zend_language_scanner.c" +#line 1772 "Zend/zend_language_scanner.c" yy39: YYDEBUG(39, *YYCURSOR); yych = *++YYCURSOR; @@ -1791,7 +1795,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2052 "Zend/zend_language_scanner.l" +#line 2056 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ @@ -1801,19 +1805,19 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto inline_char_handler; } } -#line 1805 "Zend/zend_language_scanner.c" +#line 1809 "Zend/zend_language_scanner.c" yy45: YYDEBUG(45, *YYCURSOR); ++YYCURSOR; YYDEBUG(46, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2063 "Zend/zend_language_scanner.l" +#line 2067 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG_WITH_ECHO; } -#line 1817 "Zend/zend_language_scanner.c" +#line 1821 "Zend/zend_language_scanner.c" yy47: YYDEBUG(47, *YYCURSOR); yych = *++YYCURSOR; @@ -1840,14 +1844,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2081 "Zend/zend_language_scanner.l" +#line 2085 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1851 "Zend/zend_language_scanner.c" +#line 1855 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; @@ -1918,7 +1922,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy56: YYDEBUG(56, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2543 "Zend/zend_language_scanner.l" +#line 2547 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1959,7 +1963,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 1963 "Zend/zend_language_scanner.c" +#line 1967 "Zend/zend_language_scanner.c" yy57: YYDEBUG(57, *YYCURSOR); yych = *++YYCURSOR; @@ -1970,12 +1974,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(59, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2487 "Zend/zend_language_scanner.l" +#line 2491 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '`'; } -#line 1979 "Zend/zend_language_scanner.c" +#line 1983 "Zend/zend_language_scanner.c" yy60: YYDEBUG(60, *YYCURSOR); yych = *++YYCURSOR; @@ -1985,14 +1989,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(62, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2474 "Zend/zend_language_scanner.l" +#line 2478 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 1996 "Zend/zend_language_scanner.c" +#line 2000 "Zend/zend_language_scanner.c" yy63: YYDEBUG(63, *YYCURSOR); yyaccept = 0; @@ -2008,24 +2012,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy65: YYDEBUG(65, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2181 "Zend/zend_language_scanner.l" +#line 2185 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2018 "Zend/zend_language_scanner.c" +#line 2022 "Zend/zend_language_scanner.c" yy66: YYDEBUG(66, *YYCURSOR); ++YYCURSOR; YYDEBUG(67, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1816 "Zend/zend_language_scanner.l" +#line 1820 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2029 "Zend/zend_language_scanner.c" +#line 2033 "Zend/zend_language_scanner.c" yy68: YYDEBUG(68, *YYCURSOR); yych = *++YYCURSOR; @@ -2039,7 +2043,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(71, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2173 "Zend/zend_language_scanner.l" +#line 2177 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2047,7 +2051,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2051 "Zend/zend_language_scanner.c" +#line 2055 "Zend/zend_language_scanner.c" yy72: YYDEBUG(72, *YYCURSOR); yych = *++YYCURSOR; @@ -2065,7 +2069,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(74, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2163 "Zend/zend_language_scanner.l" +#line 2167 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2073,7 +2077,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2077 "Zend/zend_language_scanner.c" +#line 2081 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -2141,7 +2145,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy78: YYDEBUG(78, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2493 "Zend/zend_language_scanner.l" +#line 2497 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -2190,7 +2194,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2194 "Zend/zend_language_scanner.c" +#line 2198 "Zend/zend_language_scanner.c" yy79: YYDEBUG(79, *YYCURSOR); yych = *++YYCURSOR; @@ -2201,12 +2205,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2482 "Zend/zend_language_scanner.l" +#line 2486 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '"'; } -#line 2210 "Zend/zend_language_scanner.c" +#line 2214 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2216,14 +2220,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2474 "Zend/zend_language_scanner.l" +#line 2478 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 2227 "Zend/zend_language_scanner.c" +#line 2231 "Zend/zend_language_scanner.c" yy85: YYDEBUG(85, *YYCURSOR); yyaccept = 0; @@ -2239,24 +2243,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy87: YYDEBUG(87, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2181 "Zend/zend_language_scanner.l" +#line 2185 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2249 "Zend/zend_language_scanner.c" +#line 2253 "Zend/zend_language_scanner.c" yy88: YYDEBUG(88, *YYCURSOR); ++YYCURSOR; YYDEBUG(89, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1816 "Zend/zend_language_scanner.l" +#line 1820 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2260 "Zend/zend_language_scanner.c" +#line 2264 "Zend/zend_language_scanner.c" yy90: YYDEBUG(90, *YYCURSOR); yych = *++YYCURSOR; @@ -2270,7 +2274,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2173 "Zend/zend_language_scanner.l" +#line 2177 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2278,7 +2282,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2282 "Zend/zend_language_scanner.c" +#line 2286 "Zend/zend_language_scanner.c" yy94: YYDEBUG(94, *YYCURSOR); yych = *++YYCURSOR; @@ -2296,7 +2300,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(96, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2163 "Zend/zend_language_scanner.l" +#line 2167 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2304,7 +2308,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2308 "Zend/zend_language_scanner.c" +#line 2312 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -2315,7 +2319,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(100, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2460 "Zend/zend_language_scanner.l" +#line 2464 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -2328,7 +2332,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) BEGIN(ST_IN_SCRIPTING); return T_END_HEREDOC; } -#line 2332 "Zend/zend_language_scanner.c" +#line 2336 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -2390,7 +2394,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy104: YYDEBUG(104, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2585 "Zend/zend_language_scanner.l" +#line 2589 "Zend/zend_language_scanner.l" { int newline = 0; @@ -2463,7 +2467,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0 TSRMLS_CC); return T_ENCAPSED_AND_WHITESPACE; } -#line 2467 "Zend/zend_language_scanner.c" +#line 2471 "Zend/zend_language_scanner.c" yy105: YYDEBUG(105, *YYCURSOR); yych = *++YYCURSOR; @@ -2478,14 +2482,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2474 "Zend/zend_language_scanner.l" +#line 2478 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); yyless(1); return T_CURLY_OPEN; } -#line 2489 "Zend/zend_language_scanner.c" +#line 2493 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 0; @@ -2501,24 +2505,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy111: YYDEBUG(111, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2181 "Zend/zend_language_scanner.l" +#line 2185 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2511 "Zend/zend_language_scanner.c" +#line 2515 "Zend/zend_language_scanner.c" yy112: YYDEBUG(112, *YYCURSOR); ++YYCURSOR; YYDEBUG(113, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1816 "Zend/zend_language_scanner.l" +#line 1820 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2522 "Zend/zend_language_scanner.c" +#line 2526 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); yych = *++YYCURSOR; @@ -2532,7 +2536,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(117, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2173 "Zend/zend_language_scanner.l" +#line 2177 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2540,7 +2544,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2544 "Zend/zend_language_scanner.c" +#line 2548 "Zend/zend_language_scanner.c" yy118: YYDEBUG(118, *YYCURSOR); yych = *++YYCURSOR; @@ -2558,7 +2562,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2163 "Zend/zend_language_scanner.l" +#line 2167 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2566,7 +2570,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_VARIABLE; } -#line 2570 "Zend/zend_language_scanner.c" +#line 2574 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2749,13 +2753,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy124: YYDEBUG(124, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2204 "Zend/zend_language_scanner.l" +#line 2208 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 2759 "Zend/zend_language_scanner.c" +#line 2763 "Zend/zend_language_scanner.c" yy125: YYDEBUG(125, *YYCURSOR); yych = *++YYCURSOR; @@ -2987,11 +2991,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy139: YYDEBUG(139, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1805 "Zend/zend_language_scanner.l" +#line 1809 "Zend/zend_language_scanner.l" { return yytext[0]; } -#line 2995 "Zend/zend_language_scanner.c" +#line 2999 "Zend/zend_language_scanner.c" yy140: YYDEBUG(140, *YYCURSOR); ++YYCURSOR; @@ -3000,13 +3004,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy141: YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1538 "Zend/zend_language_scanner.l" +#line 1542 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 3010 "Zend/zend_language_scanner.c" +#line 3014 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); yych = *++YYCURSOR; @@ -3017,11 +3021,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(144, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1565 "Zend/zend_language_scanner.l" +#line 1569 "Zend/zend_language_scanner.l" { return T_NS_SEPARATOR; } -#line 3025 "Zend/zend_language_scanner.c" +#line 3029 "Zend/zend_language_scanner.c" yy145: YYDEBUG(145, *YYCURSOR); yych = *++YYCURSOR; @@ -3249,25 +3253,25 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1810 "Zend/zend_language_scanner.l" +#line 1814 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return '{'; } -#line 3258 "Zend/zend_language_scanner.c" +#line 3262 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; YYDEBUG(171, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1822 "Zend/zend_language_scanner.l" +#line 1826 "Zend/zend_language_scanner.l" { if (!zend_stack_is_empty(&SCNG(state_stack))) { yy_pop_state(TSRMLS_C); } return '}'; } -#line 3271 "Zend/zend_language_scanner.c" +#line 3275 "Zend/zend_language_scanner.c" yy172: YYDEBUG(172, *YYCURSOR); yyaccept = 2; @@ -3295,7 +3299,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy173: YYDEBUG(173, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1871 "Zend/zend_language_scanner.l" +#line 1875 "Zend/zend_language_scanner.l" { if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0); @@ -3316,7 +3320,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_LONG; return T_LNUMBER; } -#line 3320 "Zend/zend_language_scanner.c" +#line 3324 "Zend/zend_language_scanner.c" yy174: YYDEBUG(174, *YYCURSOR); yyaccept = 2; @@ -3344,7 +3348,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy177: YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2211 "Zend/zend_language_scanner.l" +#line 2215 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -3378,14 +3382,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_COMMENT; } -#line 3382 "Zend/zend_language_scanner.c" +#line 3386 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; yy179: YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2297 "Zend/zend_language_scanner.l" +#line 2301 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -3451,14 +3455,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_CONSTANT_ENCAPSED_STRING; } -#line 3455 "Zend/zend_language_scanner.c" +#line 3459 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; yy181: YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2364 "Zend/zend_language_scanner.l" +#line 2368 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3499,24 +3503,24 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) BEGIN(ST_DOUBLE_QUOTES); return '"'; } -#line 3503 "Zend/zend_language_scanner.c" +#line 3507 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2454 "Zend/zend_language_scanner.l" +#line 2458 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); return '`'; } -#line 3514 "Zend/zend_language_scanner.c" +#line 3518 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2717 "Zend/zend_language_scanner.l" +#line 2721 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -3525,7 +3529,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3529 "Zend/zend_language_scanner.c" +#line 3533 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3552,12 +3556,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy190: YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1930 "Zend/zend_language_scanner.l" +#line 1934 "Zend/zend_language_scanner.l" { ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL)); return T_DNUMBER; } -#line 3561 "Zend/zend_language_scanner.c" +#line 3565 "Zend/zend_language_scanner.c" yy191: YYDEBUG(191, *YYCURSOR); yyaccept = 2; @@ -3649,7 +3653,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(202, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1847 "Zend/zend_language_scanner.l" +#line 1851 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3673,7 +3677,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_DNUMBER; } } -#line 3677 "Zend/zend_language_scanner.c" +#line 3681 "Zend/zend_language_scanner.c" yy203: YYDEBUG(203, *YYCURSOR); ++YYCURSOR; @@ -3685,7 +3689,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1892 "Zend/zend_language_scanner.l" +#line 1896 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3709,7 +3713,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_DNUMBER; } } -#line 3713 "Zend/zend_language_scanner.c" +#line 3717 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; @@ -3718,13 +3722,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy207: YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2278 "Zend/zend_language_scanner.l" +#line 2282 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ BEGIN(INITIAL); return T_CLOSE_TAG; /* implicit ';' at php-end tag */ } -#line 3728 "Zend/zend_language_scanner.c" +#line 3732 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); yych = *++YYCURSOR; @@ -3758,13 +3762,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy212: YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2181 "Zend/zend_language_scanner.l" +#line 2185 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 3768 "Zend/zend_language_scanner.c" +#line 3772 "Zend/zend_language_scanner.c" yy213: YYDEBUG(213, *YYCURSOR); yych = *++YYCURSOR; @@ -3778,11 +3782,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1793 "Zend/zend_language_scanner.l" +#line 1797 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_XOR) } -#line 3786 "Zend/zend_language_scanner.c" +#line 3790 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3791,61 +3795,61 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1785 "Zend/zend_language_scanner.l" +#line 1789 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_OR) } -#line 3799 "Zend/zend_language_scanner.c" +#line 3803 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1773 "Zend/zend_language_scanner.l" +#line 1777 "Zend/zend_language_scanner.l" { return T_XOR_EQUAL; } -#line 3809 "Zend/zend_language_scanner.c" +#line 3813 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; YYDEBUG(221, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1777 "Zend/zend_language_scanner.l" +#line 1781 "Zend/zend_language_scanner.l" { return T_BOOLEAN_OR; } -#line 3819 "Zend/zend_language_scanner.c" +#line 3823 "Zend/zend_language_scanner.c" yy222: YYDEBUG(222, *YYCURSOR); ++YYCURSOR; YYDEBUG(223, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1769 "Zend/zend_language_scanner.l" +#line 1773 "Zend/zend_language_scanner.l" { return T_OR_EQUAL; } -#line 3829 "Zend/zend_language_scanner.c" +#line 3833 "Zend/zend_language_scanner.c" yy224: YYDEBUG(224, *YYCURSOR); ++YYCURSOR; YYDEBUG(225, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1781 "Zend/zend_language_scanner.l" +#line 1785 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_BOOLEAN_AND) } -#line 3839 "Zend/zend_language_scanner.c" +#line 3843 "Zend/zend_language_scanner.c" yy226: YYDEBUG(226, *YYCURSOR); ++YYCURSOR; YYDEBUG(227, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1765 "Zend/zend_language_scanner.l" +#line 1769 "Zend/zend_language_scanner.l" { return T_AND_EQUAL; } -#line 3849 "Zend/zend_language_scanner.c" +#line 3853 "Zend/zend_language_scanner.c" yy228: YYDEBUG(228, *YYCURSOR); ++YYCURSOR; @@ -3854,7 +3858,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy229: YYDEBUG(229, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2285 "Zend/zend_language_scanner.l" +#line 2289 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { BEGIN(INITIAL); @@ -3865,17 +3869,17 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return yytext[0]; } } -#line 3869 "Zend/zend_language_scanner.c" +#line 3873 "Zend/zend_language_scanner.c" yy230: YYDEBUG(230, *YYCURSOR); ++YYCURSOR; YYDEBUG(231, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1753 "Zend/zend_language_scanner.l" +#line 1757 "Zend/zend_language_scanner.l" { return T_MOD_EQUAL; } -#line 3879 "Zend/zend_language_scanner.c" +#line 3883 "Zend/zend_language_scanner.c" yy232: YYDEBUG(232, *YYCURSOR); yych = *++YYCURSOR; @@ -3906,11 +3910,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(237, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1749 "Zend/zend_language_scanner.l" +#line 1753 "Zend/zend_language_scanner.l" { return T_CONCAT_EQUAL; } -#line 3914 "Zend/zend_language_scanner.c" +#line 3918 "Zend/zend_language_scanner.c" yy238: YYDEBUG(238, *YYCURSOR); yyaccept = 4; @@ -3919,7 +3923,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy239: YYDEBUG(239, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2245 "Zend/zend_language_scanner.l" +#line 2249 "Zend/zend_language_scanner.l" { int doc_com; @@ -3952,7 +3956,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_COMMENT; } -#line 3956 "Zend/zend_language_scanner.c" +#line 3960 "Zend/zend_language_scanner.c" yy240: YYDEBUG(240, *YYCURSOR); yych = *++YYCURSOR; @@ -3962,11 +3966,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(242, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1745 "Zend/zend_language_scanner.l" +#line 1749 "Zend/zend_language_scanner.l" { return T_DIV_EQUAL; } -#line 3970 "Zend/zend_language_scanner.c" +#line 3974 "Zend/zend_language_scanner.c" yy243: YYDEBUG(243, *YYCURSOR); yych = *++YYCURSOR; @@ -3989,42 +3993,42 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(247, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1741 "Zend/zend_language_scanner.l" +#line 1745 "Zend/zend_language_scanner.l" { return T_MUL_EQUAL; } -#line 3997 "Zend/zend_language_scanner.c" +#line 4001 "Zend/zend_language_scanner.c" yy248: YYDEBUG(248, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy252; YYDEBUG(249, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1801 "Zend/zend_language_scanner.l" +#line 1805 "Zend/zend_language_scanner.l" { return T_SR; } -#line 4008 "Zend/zend_language_scanner.c" +#line 4012 "Zend/zend_language_scanner.c" yy250: YYDEBUG(250, *YYCURSOR); ++YYCURSOR; YYDEBUG(251, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1729 "Zend/zend_language_scanner.l" +#line 1733 "Zend/zend_language_scanner.l" { return T_IS_GREATER_OR_EQUAL; } -#line 4018 "Zend/zend_language_scanner.c" +#line 4022 "Zend/zend_language_scanner.c" yy252: YYDEBUG(252, *YYCURSOR); ++YYCURSOR; YYDEBUG(253, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1761 "Zend/zend_language_scanner.l" +#line 1765 "Zend/zend_language_scanner.l" { return T_SR_EQUAL; } -#line 4028 "Zend/zend_language_scanner.c" +#line 4032 "Zend/zend_language_scanner.c" yy254: YYDEBUG(254, *YYCURSOR); yyaccept = 5; @@ -4035,11 +4039,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy255: YYDEBUG(255, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1797 "Zend/zend_language_scanner.l" +#line 1801 "Zend/zend_language_scanner.l" { return T_SL; } -#line 4043 "Zend/zend_language_scanner.c" +#line 4047 "Zend/zend_language_scanner.c" yy256: YYDEBUG(256, *YYCURSOR); yych = *++YYCURSOR; @@ -4051,22 +4055,22 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(258, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1725 "Zend/zend_language_scanner.l" +#line 1729 "Zend/zend_language_scanner.l" { return T_IS_SMALLER_OR_EQUAL; } -#line 4059 "Zend/zend_language_scanner.c" +#line 4063 "Zend/zend_language_scanner.c" yy259: YYDEBUG(259, *YYCURSOR); ++YYCURSOR; yy260: YYDEBUG(260, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1721 "Zend/zend_language_scanner.l" +#line 1725 "Zend/zend_language_scanner.l" { return T_IS_NOT_EQUAL; } -#line 4070 "Zend/zend_language_scanner.c" +#line 4074 "Zend/zend_language_scanner.c" yy261: YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; @@ -4117,11 +4121,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(269, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1757 "Zend/zend_language_scanner.l" +#line 1761 "Zend/zend_language_scanner.l" { return T_SL_EQUAL; } -#line 4125 "Zend/zend_language_scanner.c" +#line 4129 "Zend/zend_language_scanner.c" yy270: YYDEBUG(270, *YYCURSOR); ++YYCURSOR; @@ -4226,7 +4230,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy280: YYDEBUG(280, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2406 "Zend/zend_language_scanner.l" +#line 2410 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -4273,7 +4277,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) return T_START_HEREDOC; } -#line 4277 "Zend/zend_language_scanner.c" +#line 4281 "Zend/zend_language_scanner.c" yy281: YYDEBUG(281, *YYCURSOR); yych = *++YYCURSOR; @@ -4313,31 +4317,31 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(286, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1713 "Zend/zend_language_scanner.l" +#line 1717 "Zend/zend_language_scanner.l" { return T_IS_NOT_IDENTICAL; } -#line 4321 "Zend/zend_language_scanner.c" +#line 4325 "Zend/zend_language_scanner.c" yy287: YYDEBUG(287, *YYCURSOR); ++YYCURSOR; YYDEBUG(288, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1733 "Zend/zend_language_scanner.l" +#line 1737 "Zend/zend_language_scanner.l" { return T_PLUS_EQUAL; } -#line 4331 "Zend/zend_language_scanner.c" +#line 4335 "Zend/zend_language_scanner.c" yy289: YYDEBUG(289, *YYCURSOR); ++YYCURSOR; YYDEBUG(290, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1701 "Zend/zend_language_scanner.l" +#line 1705 "Zend/zend_language_scanner.l" { return T_INC; } -#line 4341 "Zend/zend_language_scanner.c" +#line 4345 "Zend/zend_language_scanner.c" yy291: YYDEBUG(291, *YYCURSOR); yych = *++YYCURSOR; @@ -4356,42 +4360,42 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(294, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1689 "Zend/zend_language_scanner.l" +#line 1693 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LIST) } -#line 4364 "Zend/zend_language_scanner.c" +#line 4368 "Zend/zend_language_scanner.c" yy295: YYDEBUG(295, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy299; YYDEBUG(296, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1717 "Zend/zend_language_scanner.l" +#line 1721 "Zend/zend_language_scanner.l" { return T_IS_EQUAL; } -#line 4375 "Zend/zend_language_scanner.c" +#line 4379 "Zend/zend_language_scanner.c" yy297: YYDEBUG(297, *YYCURSOR); ++YYCURSOR; YYDEBUG(298, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1685 "Zend/zend_language_scanner.l" +#line 1689 "Zend/zend_language_scanner.l" { return T_DOUBLE_ARROW; } -#line 4385 "Zend/zend_language_scanner.c" +#line 4389 "Zend/zend_language_scanner.c" yy299: YYDEBUG(299, *YYCURSOR); ++YYCURSOR; YYDEBUG(300, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1709 "Zend/zend_language_scanner.l" +#line 1713 "Zend/zend_language_scanner.l" { return T_IS_IDENTICAL; } -#line 4395 "Zend/zend_language_scanner.c" +#line 4399 "Zend/zend_language_scanner.c" yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; @@ -4521,7 +4525,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(320, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2026 "Zend/zend_language_scanner.l" +#line 2030 "Zend/zend_language_scanner.l" { if (CG(current_namespace)) { *zendlval = *CG(current_namespace); @@ -4531,7 +4535,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_NS_C; } -#line 4535 "Zend/zend_language_scanner.c" +#line 4539 "Zend/zend_language_scanner.c" yy321: YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; @@ -4551,7 +4555,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(325, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2001 "Zend/zend_language_scanner.l" +#line 2005 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); const size_t filename_len = strlen(filename); @@ -4576,7 +4580,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ZVAL_STRING(zendlval, dirname, 0); return T_DIR; } -#line 4580 "Zend/zend_language_scanner.c" +#line 4584 "Zend/zend_language_scanner.c" yy326: YYDEBUG(326, *YYCURSOR); yych = *++YYCURSOR; @@ -4601,12 +4605,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(331, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1986 "Zend/zend_language_scanner.l" +#line 1990 "Zend/zend_language_scanner.l" { ZVAL_LONG(zendlval, CG(zend_lineno)); return T_LINE; } -#line 4610 "Zend/zend_language_scanner.c" +#line 4614 "Zend/zend_language_scanner.c" yy332: YYDEBUG(332, *YYCURSOR); yych = *++YYCURSOR; @@ -4641,7 +4645,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(339, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1973 "Zend/zend_language_scanner.l" +#line 1977 "Zend/zend_language_scanner.l" { const char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL; const char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL; @@ -4654,7 +4658,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zendlval->type = IS_STRING; return T_METHOD_C; } -#line 4658 "Zend/zend_language_scanner.c" +#line 4662 "Zend/zend_language_scanner.c" yy340: YYDEBUG(340, *YYCURSOR); yych = *++YYCURSOR; @@ -4705,7 +4709,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(350, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1963 "Zend/zend_language_scanner.l" +#line 1967 "Zend/zend_language_scanner.l" { zend_op_array *op_array = CG(active_op_array); if (op_array && op_array->function_name) { @@ -4715,7 +4719,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_FUNC_C; } -#line 4719 "Zend/zend_language_scanner.c" +#line 4723 "Zend/zend_language_scanner.c" yy351: YYDEBUG(351, *YYCURSOR); yych = *++YYCURSOR; @@ -4735,7 +4739,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(355, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1991 "Zend/zend_language_scanner.l" +#line 1995 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); @@ -4745,7 +4749,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ZVAL_STRING(zendlval, filename, 1); return T_FILE; } -#line 4749 "Zend/zend_language_scanner.c" +#line 4753 "Zend/zend_language_scanner.c" yy356: YYDEBUG(356, *YYCURSOR); yych = *++YYCURSOR; @@ -4775,7 +4779,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(362, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1953 "Zend/zend_language_scanner.l" +#line 1957 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ce->name && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4785,7 +4789,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_TRAIT_C; } -#line 4789 "Zend/zend_language_scanner.c" +#line 4793 "Zend/zend_language_scanner.c" yy363: YYDEBUG(363, *YYCURSOR); yych = *++YYCURSOR; @@ -4815,7 +4819,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(369, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1935 "Zend/zend_language_scanner.l" +#line 1939 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4833,7 +4837,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_CLASS_C; } -#line 4837 "Zend/zend_language_scanner.c" +#line 4841 "Zend/zend_language_scanner.c" yy370: YYDEBUG(370, *YYCURSOR); yych = *++YYCURSOR; @@ -4895,11 +4899,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(382, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1653 "Zend/zend_language_scanner.l" +#line 1657 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_HALT_COMPILER) } -#line 4903 "Zend/zend_language_scanner.c" +#line 4907 "Zend/zend_language_scanner.c" yy383: YYDEBUG(383, *YYCURSOR); yych = *++YYCURSOR; @@ -4919,11 +4923,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(386, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1633 "Zend/zend_language_scanner.l" +#line 1637 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_USE) } -#line 4927 "Zend/zend_language_scanner.c" +#line 4931 "Zend/zend_language_scanner.c" yy387: YYDEBUG(387, *YYCURSOR); yych = *++YYCURSOR; @@ -4942,11 +4946,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(390, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1681 "Zend/zend_language_scanner.l" +#line 1685 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_UNSET) } -#line 4950 "Zend/zend_language_scanner.c" +#line 4954 "Zend/zend_language_scanner.c" yy391: YYDEBUG(391, *YYCURSOR); ++YYCURSOR; @@ -5118,11 +5122,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(408, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1581 "Zend/zend_language_scanner.l" +#line 1585 "Zend/zend_language_scanner.l" { return T_INT_CAST; } -#line 5126 "Zend/zend_language_scanner.c" +#line 5130 "Zend/zend_language_scanner.c" yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; @@ -5166,11 +5170,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(417, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1585 "Zend/zend_language_scanner.l" +#line 1589 "Zend/zend_language_scanner.l" { return T_DOUBLE_CAST; } -#line 5174 "Zend/zend_language_scanner.c" +#line 5178 "Zend/zend_language_scanner.c" yy418: YYDEBUG(418, *YYCURSOR); yych = *++YYCURSOR; @@ -5240,11 +5244,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1589 "Zend/zend_language_scanner.l" +#line 1593 "Zend/zend_language_scanner.l" { return T_STRING_CAST; } -#line 5248 "Zend/zend_language_scanner.c" +#line 5252 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); yych = *++YYCURSOR; @@ -5277,11 +5281,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(438, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1593 "Zend/zend_language_scanner.l" +#line 1597 "Zend/zend_language_scanner.l" { return T_ARRAY_CAST; } -#line 5285 "Zend/zend_language_scanner.c" +#line 5289 "Zend/zend_language_scanner.c" yy439: YYDEBUG(439, *YYCURSOR); yych = *++YYCURSOR; @@ -5319,11 +5323,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(446, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1597 "Zend/zend_language_scanner.l" +#line 1601 "Zend/zend_language_scanner.l" { return T_OBJECT_CAST; } -#line 5327 "Zend/zend_language_scanner.c" +#line 5331 "Zend/zend_language_scanner.c" yy447: YYDEBUG(447, *YYCURSOR); yych = *++YYCURSOR; @@ -5364,11 +5368,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(454, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1601 "Zend/zend_language_scanner.l" +#line 1605 "Zend/zend_language_scanner.l" { return T_BOOL_CAST; } -#line 5372 "Zend/zend_language_scanner.c" +#line 5376 "Zend/zend_language_scanner.c" yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; @@ -5428,11 +5432,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(466, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1605 "Zend/zend_language_scanner.l" +#line 1609 "Zend/zend_language_scanner.l" { return T_UNSET_CAST; } -#line 5436 "Zend/zend_language_scanner.c" +#line 5440 "Zend/zend_language_scanner.c" yy467: YYDEBUG(467, *YYCURSOR); yych = *++YYCURSOR; @@ -5446,11 +5450,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(469, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1577 "Zend/zend_language_scanner.l" +#line 1581 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_VAR) } -#line 5454 "Zend/zend_language_scanner.c" +#line 5458 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; @@ -5470,11 +5474,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(473, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1569 "Zend/zend_language_scanner.l" +#line 1573 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_NEW) } -#line 5478 "Zend/zend_language_scanner.c" +#line 5482 "Zend/zend_language_scanner.c" yy474: YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; @@ -5513,21 +5517,21 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(481, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1629 "Zend/zend_language_scanner.l" +#line 1633 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_NAMESPACE) } -#line 5521 "Zend/zend_language_scanner.c" +#line 5525 "Zend/zend_language_scanner.c" yy482: YYDEBUG(482, *YYCURSOR); ++YYCURSOR; YYDEBUG(483, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1561 "Zend/zend_language_scanner.l" +#line 1565 "Zend/zend_language_scanner.l" { return T_PAAMAYIM_NEKUDOTAYIM; } -#line 5531 "Zend/zend_language_scanner.c" +#line 5535 "Zend/zend_language_scanner.c" yy484: YYDEBUG(484, *YYCURSOR); ++YYCURSOR; @@ -5549,32 +5553,32 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(487, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1737 "Zend/zend_language_scanner.l" +#line 1741 "Zend/zend_language_scanner.l" { return T_MINUS_EQUAL; } -#line 5557 "Zend/zend_language_scanner.c" +#line 5561 "Zend/zend_language_scanner.c" yy488: YYDEBUG(488, *YYCURSOR); ++YYCURSOR; YYDEBUG(489, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1705 "Zend/zend_language_scanner.l" +#line 1709 "Zend/zend_language_scanner.l" { return T_DEC; } -#line 5567 "Zend/zend_language_scanner.c" +#line 5571 "Zend/zend_language_scanner.c" yy490: YYDEBUG(490, *YYCURSOR); ++YYCURSOR; YYDEBUG(491, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1533 "Zend/zend_language_scanner.l" +#line 1537 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); return T_OBJECT_OPERATOR; } -#line 5578 "Zend/zend_language_scanner.c" +#line 5582 "Zend/zend_language_scanner.c" yy492: YYDEBUG(492, *YYCURSOR); yych = *++YYCURSOR; @@ -5619,11 +5623,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(498, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1677 "Zend/zend_language_scanner.l" +#line 1681 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PUBLIC) } -#line 5627 "Zend/zend_language_scanner.c" +#line 5631 "Zend/zend_language_scanner.c" yy499: YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; @@ -5678,11 +5682,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(507, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1673 "Zend/zend_language_scanner.l" +#line 1677 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PROTECTED) } -#line 5686 "Zend/zend_language_scanner.c" +#line 5690 "Zend/zend_language_scanner.c" yy508: YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; @@ -5712,11 +5716,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(513, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1669 "Zend/zend_language_scanner.l" +#line 1673 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PRIVATE) } -#line 5720 "Zend/zend_language_scanner.c" +#line 5724 "Zend/zend_language_scanner.c" yy514: YYDEBUG(514, *YYCURSOR); ++YYCURSOR; @@ -5725,11 +5729,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(515, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1509 "Zend/zend_language_scanner.l" +#line 1513 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_PRINT) } -#line 5733 "Zend/zend_language_scanner.c" +#line 5737 "Zend/zend_language_scanner.c" yy516: YYDEBUG(516, *YYCURSOR); yych = *++YYCURSOR; @@ -5754,11 +5758,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1501 "Zend/zend_language_scanner.l" +#line 1505 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_GOTO) } -#line 5762 "Zend/zend_language_scanner.c" +#line 5766 "Zend/zend_language_scanner.c" yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; @@ -5782,11 +5786,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(525, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1641 "Zend/zend_language_scanner.l" +#line 1645 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_GLOBAL) } -#line 5790 "Zend/zend_language_scanner.c" +#line 5794 "Zend/zend_language_scanner.c" yy526: YYDEBUG(526, *YYCURSOR); yych = *++YYCURSOR; @@ -5823,11 +5827,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(533, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1493 "Zend/zend_language_scanner.l" +#line 1497 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_BREAK) } -#line 5831 "Zend/zend_language_scanner.c" +#line 5835 "Zend/zend_language_scanner.c" yy534: YYDEBUG(534, *YYCURSOR); yych = *++YYCURSOR; @@ -5867,11 +5871,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(541, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1477 "Zend/zend_language_scanner.l" +#line 1481 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_SWITCH) } -#line 5875 "Zend/zend_language_scanner.c" +#line 5879 "Zend/zend_language_scanner.c" yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; @@ -5895,11 +5899,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(546, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1657 "Zend/zend_language_scanner.l" +#line 1661 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_STATIC) } -#line 5903 "Zend/zend_language_scanner.c" +#line 5907 "Zend/zend_language_scanner.c" yy547: YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; @@ -5926,11 +5930,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(551, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1473 "Zend/zend_language_scanner.l" +#line 1477 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_AS) } -#line 5934 "Zend/zend_language_scanner.c" +#line 5938 "Zend/zend_language_scanner.c" yy552: YYDEBUG(552, *YYCURSOR); yych = *++YYCURSOR; @@ -5949,11 +5953,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(555, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1693 "Zend/zend_language_scanner.l" +#line 1697 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ARRAY) } -#line 5957 "Zend/zend_language_scanner.c" +#line 5961 "Zend/zend_language_scanner.c" yy556: YYDEBUG(556, *YYCURSOR); ++YYCURSOR; @@ -5962,11 +5966,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(557, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1789 "Zend/zend_language_scanner.l" +#line 1793 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_LOGICAL_AND) } -#line 5970 "Zend/zend_language_scanner.c" +#line 5974 "Zend/zend_language_scanner.c" yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; @@ -6000,11 +6004,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(564, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1661 "Zend/zend_language_scanner.l" +#line 1665 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ABSTRACT) } -#line 6008 "Zend/zend_language_scanner.c" +#line 6012 "Zend/zend_language_scanner.c" yy565: YYDEBUG(565, *YYCURSOR); yych = *++YYCURSOR; @@ -6028,11 +6032,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(569, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1433 "Zend/zend_language_scanner.l" +#line 1437 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_WHILE) } -#line 6036 "Zend/zend_language_scanner.c" +#line 6040 "Zend/zend_language_scanner.c" yy570: YYDEBUG(570, *YYCURSOR); ++YYCURSOR; @@ -6041,11 +6045,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(571, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1417 "Zend/zend_language_scanner.l" +#line 1421 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_IF) } -#line 6049 "Zend/zend_language_scanner.c" +#line 6053 "Zend/zend_language_scanner.c" yy572: YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; @@ -6097,11 +6101,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(578, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1645 "Zend/zend_language_scanner.l" +#line 1649 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ISSET) } -#line 6105 "Zend/zend_language_scanner.c" +#line 6109 "Zend/zend_language_scanner.c" yy579: YYDEBUG(579, *YYCURSOR); yych = *++YYCURSOR; @@ -6155,11 +6159,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy586: YYDEBUG(586, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1613 "Zend/zend_language_scanner.l" +#line 1617 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INCLUDE) } -#line 6163 "Zend/zend_language_scanner.c" +#line 6167 "Zend/zend_language_scanner.c" yy587: YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; @@ -6188,11 +6192,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(592, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1617 "Zend/zend_language_scanner.l" +#line 1621 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INCLUDE_ONCE) } -#line 6196 "Zend/zend_language_scanner.c" +#line 6200 "Zend/zend_language_scanner.c" yy593: YYDEBUG(593, *YYCURSOR); yych = *++YYCURSOR; @@ -6226,11 +6230,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(599, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1517 "Zend/zend_language_scanner.l" +#line 1521 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INTERFACE) } -#line 6234 "Zend/zend_language_scanner.c" +#line 6238 "Zend/zend_language_scanner.c" yy600: YYDEBUG(600, *YYCURSOR); yych = *++YYCURSOR; @@ -6280,11 +6284,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(607, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1637 "Zend/zend_language_scanner.l" +#line 1641 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INSTEADOF) } -#line 6288 "Zend/zend_language_scanner.c" +#line 6292 "Zend/zend_language_scanner.c" yy608: YYDEBUG(608, *YYCURSOR); yych = *++YYCURSOR; @@ -6313,11 +6317,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(613, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1469 "Zend/zend_language_scanner.l" +#line 1473 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_INSTANCEOF) } -#line 6321 "Zend/zend_language_scanner.c" +#line 6325 "Zend/zend_language_scanner.c" yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; @@ -6361,11 +6365,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(622, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1529 "Zend/zend_language_scanner.l" +#line 1533 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_IMPLEMENTS) } -#line 6369 "Zend/zend_language_scanner.c" +#line 6373 "Zend/zend_language_scanner.c" yy623: YYDEBUG(623, *YYCURSOR); yych = *++YYCURSOR; @@ -6393,11 +6397,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(626, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1401 "Zend/zend_language_scanner.l" +#line 1405 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_TRY) } -#line 6401 "Zend/zend_language_scanner.c" +#line 6405 "Zend/zend_language_scanner.c" yy627: YYDEBUG(627, *YYCURSOR); yych = *++YYCURSOR; @@ -6416,11 +6420,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(630, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1521 "Zend/zend_language_scanner.l" +#line 1525 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_TRAIT) } -#line 6424 "Zend/zend_language_scanner.c" +#line 6428 "Zend/zend_language_scanner.c" yy631: YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; @@ -6439,11 +6443,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(634, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1413 "Zend/zend_language_scanner.l" +#line 1417 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_THROW) } -#line 6447 "Zend/zend_language_scanner.c" +#line 6451 "Zend/zend_language_scanner.c" yy635: YYDEBUG(635, *YYCURSOR); yych = *++YYCURSOR; @@ -6467,11 +6471,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(639, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1397 "Zend/zend_language_scanner.l" +#line 1401 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_YIELD) } -#line 6475 "Zend/zend_language_scanner.c" +#line 6479 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); yych = *++YYCURSOR; @@ -6532,11 +6536,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy647: YYDEBUG(647, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1621 "Zend/zend_language_scanner.l" +#line 1625 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_REQUIRE) } -#line 6540 "Zend/zend_language_scanner.c" +#line 6544 "Zend/zend_language_scanner.c" yy648: YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; @@ -6565,11 +6569,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(653, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1625 "Zend/zend_language_scanner.l" +#line 1629 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_REQUIRE_ONCE) } -#line 6573 "Zend/zend_language_scanner.c" +#line 6577 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; @@ -6588,11 +6592,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(657, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1393 "Zend/zend_language_scanner.l" +#line 1397 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_RETURN) } -#line 6596 "Zend/zend_language_scanner.c" +#line 6600 "Zend/zend_language_scanner.c" yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; @@ -6682,11 +6686,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(668, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1497 "Zend/zend_language_scanner.l" +#line 1501 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CONTINUE) } -#line 6690 "Zend/zend_language_scanner.c" +#line 6694 "Zend/zend_language_scanner.c" yy669: YYDEBUG(669, *YYCURSOR); ++YYCURSOR; @@ -6695,11 +6699,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1389 "Zend/zend_language_scanner.l" +#line 1393 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CONST) } -#line 6703 "Zend/zend_language_scanner.c" +#line 6707 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6724,11 +6728,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1573 "Zend/zend_language_scanner.l" +#line 1577 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CLONE) } -#line 6732 "Zend/zend_language_scanner.c" +#line 6736 "Zend/zend_language_scanner.c" yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; @@ -6742,11 +6746,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(678, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1513 "Zend/zend_language_scanner.l" +#line 1517 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CLASS) } -#line 6750 "Zend/zend_language_scanner.c" +#line 6754 "Zend/zend_language_scanner.c" yy679: YYDEBUG(679, *YYCURSOR); yych = *++YYCURSOR; @@ -6792,11 +6796,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(687, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1697 "Zend/zend_language_scanner.l" +#line 1701 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CALLABLE) } -#line 6800 "Zend/zend_language_scanner.c" +#line 6804 "Zend/zend_language_scanner.c" yy688: YYDEBUG(688, *YYCURSOR); ++YYCURSOR; @@ -6805,11 +6809,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(689, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1485 "Zend/zend_language_scanner.l" +#line 1489 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CASE) } -#line 6813 "Zend/zend_language_scanner.c" +#line 6817 "Zend/zend_language_scanner.c" yy690: YYDEBUG(690, *YYCURSOR); yych = *++YYCURSOR; @@ -6823,11 +6827,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(692, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1405 "Zend/zend_language_scanner.l" +#line 1409 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_CATCH) } -#line 6831 "Zend/zend_language_scanner.c" +#line 6835 "Zend/zend_language_scanner.c" yy693: YYDEBUG(693, *YYCURSOR); yych = *++YYCURSOR; @@ -6878,11 +6882,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(702, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1385 "Zend/zend_language_scanner.l" +#line 1389 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FUNCTION) } -#line 6886 "Zend/zend_language_scanner.c" +#line 6890 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); ++YYCURSOR; @@ -6906,11 +6910,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy704: YYDEBUG(704, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1445 "Zend/zend_language_scanner.l" +#line 1449 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FOR) } -#line 6914 "Zend/zend_language_scanner.c" +#line 6918 "Zend/zend_language_scanner.c" yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; @@ -6934,11 +6938,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(709, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1453 "Zend/zend_language_scanner.l" +#line 1457 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FOREACH) } -#line 6942 "Zend/zend_language_scanner.c" +#line 6946 "Zend/zend_language_scanner.c" yy710: YYDEBUG(710, *YYCURSOR); yych = *++YYCURSOR; @@ -6972,11 +6976,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy713: YYDEBUG(713, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1665 "Zend/zend_language_scanner.l" +#line 1669 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FINAL) } -#line 6980 "Zend/zend_language_scanner.c" +#line 6984 "Zend/zend_language_scanner.c" yy714: YYDEBUG(714, *YYCURSOR); yych = *++YYCURSOR; @@ -6990,11 +6994,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(716, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1409 "Zend/zend_language_scanner.l" +#line 1413 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_FINALLY) } -#line 6998 "Zend/zend_language_scanner.c" +#line 7002 "Zend/zend_language_scanner.c" yy717: YYDEBUG(717, *YYCURSOR); yych = *++YYCURSOR; @@ -7025,11 +7029,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(720, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1441 "Zend/zend_language_scanner.l" +#line 1445 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DO) } -#line 7033 "Zend/zend_language_scanner.c" +#line 7037 "Zend/zend_language_scanner.c" yy721: YYDEBUG(721, *YYCURSOR); ++YYCURSOR; @@ -7038,11 +7042,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(722, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1381 "Zend/zend_language_scanner.l" +#line 1385 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXIT) } -#line 7046 "Zend/zend_language_scanner.c" +#line 7050 "Zend/zend_language_scanner.c" yy723: YYDEBUG(723, *YYCURSOR); yych = *++YYCURSOR; @@ -7077,11 +7081,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(729, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1489 "Zend/zend_language_scanner.l" +#line 1493 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DEFAULT) } -#line 7085 "Zend/zend_language_scanner.c" +#line 7089 "Zend/zend_language_scanner.c" yy730: YYDEBUG(730, *YYCURSOR); yych = *++YYCURSOR; @@ -7105,11 +7109,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(734, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1461 "Zend/zend_language_scanner.l" +#line 1465 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_DECLARE) } -#line 7113 "Zend/zend_language_scanner.c" +#line 7117 "Zend/zend_language_scanner.c" yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; @@ -7189,11 +7193,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(747, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1525 "Zend/zend_language_scanner.l" +#line 1529 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXTENDS) } -#line 7197 "Zend/zend_language_scanner.c" +#line 7201 "Zend/zend_language_scanner.c" yy748: YYDEBUG(748, *YYCURSOR); ++YYCURSOR; @@ -7202,11 +7206,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(749, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1377 "Zend/zend_language_scanner.l" +#line 1381 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EXIT) } -#line 7210 "Zend/zend_language_scanner.c" +#line 7214 "Zend/zend_language_scanner.c" yy750: YYDEBUG(750, *YYCURSOR); yych = *++YYCURSOR; @@ -7220,11 +7224,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(752, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1609 "Zend/zend_language_scanner.l" +#line 1613 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EVAL) } -#line 7228 "Zend/zend_language_scanner.c" +#line 7232 "Zend/zend_language_scanner.c" yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; @@ -7294,11 +7298,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(763, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1437 "Zend/zend_language_scanner.l" +#line 1441 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDWHILE) } -#line 7302 "Zend/zend_language_scanner.c" +#line 7306 "Zend/zend_language_scanner.c" yy764: YYDEBUG(764, *YYCURSOR); yych = *++YYCURSOR; @@ -7327,11 +7331,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(769, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1481 "Zend/zend_language_scanner.l" +#line 1485 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDSWITCH) } -#line 7335 "Zend/zend_language_scanner.c" +#line 7339 "Zend/zend_language_scanner.c" yy770: YYDEBUG(770, *YYCURSOR); ++YYCURSOR; @@ -7340,11 +7344,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(771, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1425 "Zend/zend_language_scanner.l" +#line 1429 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDIF) } -#line 7348 "Zend/zend_language_scanner.c" +#line 7352 "Zend/zend_language_scanner.c" yy772: YYDEBUG(772, *YYCURSOR); yych = *++YYCURSOR; @@ -7373,11 +7377,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy774: YYDEBUG(774, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1449 "Zend/zend_language_scanner.l" +#line 1453 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDFOR) } -#line 7381 "Zend/zend_language_scanner.c" +#line 7385 "Zend/zend_language_scanner.c" yy775: YYDEBUG(775, *YYCURSOR); yych = *++YYCURSOR; @@ -7401,11 +7405,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(779, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1457 "Zend/zend_language_scanner.l" +#line 1461 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDFOREACH) } -#line 7409 "Zend/zend_language_scanner.c" +#line 7413 "Zend/zend_language_scanner.c" yy780: YYDEBUG(780, *YYCURSOR); yych = *++YYCURSOR; @@ -7439,11 +7443,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(786, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1465 "Zend/zend_language_scanner.l" +#line 1469 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ENDDECLARE) } -#line 7447 "Zend/zend_language_scanner.c" +#line 7451 "Zend/zend_language_scanner.c" yy787: YYDEBUG(787, *YYCURSOR); yych = *++YYCURSOR; @@ -7462,11 +7466,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(790, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1649 "Zend/zend_language_scanner.l" +#line 1653 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_EMPTY) } -#line 7470 "Zend/zend_language_scanner.c" +#line 7474 "Zend/zend_language_scanner.c" yy791: YYDEBUG(791, *YYCURSOR); yych = *++YYCURSOR; @@ -7495,11 +7499,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy793: YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1429 "Zend/zend_language_scanner.l" +#line 1433 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ELSE) } -#line 7503 "Zend/zend_language_scanner.c" +#line 7507 "Zend/zend_language_scanner.c" yy794: YYDEBUG(794, *YYCURSOR); yych = *++YYCURSOR; @@ -7513,11 +7517,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(796, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1421 "Zend/zend_language_scanner.l" +#line 1425 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ELSEIF) } -#line 7521 "Zend/zend_language_scanner.c" +#line 7525 "Zend/zend_language_scanner.c" yy797: YYDEBUG(797, *YYCURSOR); yych = *++YYCURSOR; @@ -7531,11 +7535,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1505 "Zend/zend_language_scanner.l" +#line 1509 "Zend/zend_language_scanner.l" { RETURN_STRING_TOKEN(T_ECHO) } -#line 7539 "Zend/zend_language_scanner.c" +#line 7543 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7608,13 +7612,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy803: YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1538 "Zend/zend_language_scanner.l" +#line 1542 "Zend/zend_language_scanner.l" { ZVAL_STRINGL(zendlval, yytext, yyleng, 0); /* no copying - intentional */ HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 7618 "Zend/zend_language_scanner.c" +#line 7622 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7622,13 +7626,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy805: YYDEBUG(805, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1555 "Zend/zend_language_scanner.l" +#line 1559 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); goto restart; } -#line 7632 "Zend/zend_language_scanner.c" +#line 7636 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); ++YYCURSOR; @@ -7637,14 +7641,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy807: YYDEBUG(807, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1548 "Zend/zend_language_scanner.l" +#line 1552 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 7648 "Zend/zend_language_scanner.c" +#line 7652 "Zend/zend_language_scanner.c" yy808: YYDEBUG(808, *YYCURSOR); yych = *++YYCURSOR; @@ -7665,11 +7669,11 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(812, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1544 "Zend/zend_language_scanner.l" +#line 1548 "Zend/zend_language_scanner.l" { return T_OBJECT_OPERATOR; } -#line 7673 "Zend/zend_language_scanner.c" +#line 7677 "Zend/zend_language_scanner.c" yy813: YYDEBUG(813, *YYCURSOR); ++YYCURSOR; @@ -7754,14 +7758,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy818: YYDEBUG(818, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1840 "Zend/zend_language_scanner.l" +#line 1844 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); goto restart; } -#line 7765 "Zend/zend_language_scanner.c" +#line 7769 "Zend/zend_language_scanner.c" yy819: YYDEBUG(819, *YYCURSOR); yych = *++YYCURSOR; @@ -7786,7 +7790,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(824, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1830 "Zend/zend_language_scanner.l" +#line 1834 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); zend_copy_value(zendlval, yytext, yyleng); @@ -7795,7 +7799,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_STRING_VARNAME; } -#line 7799 "Zend/zend_language_scanner.c" +#line 7803 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7806,7 +7810,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(828, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2659 "Zend/zend_language_scanner.l" +#line 2663 "Zend/zend_language_scanner.l" { int newline = 0; @@ -7863,7 +7867,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) HANDLE_NEWLINES(yytext, yyleng - newline); return T_ENCAPSED_AND_WHITESPACE; } -#line 7867 "Zend/zend_language_scanner.c" +#line 7871 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7970,7 +7974,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy832: YYDEBUG(832, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1916 "Zend/zend_language_scanner.l" +#line 1920 "Zend/zend_language_scanner.l" { /* Offset could be treated as a long */ if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) { ZVAL_LONG(zendlval, strtol(yytext, NULL, 10)); @@ -7979,7 +7983,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) } return T_NUM_STRING; } -#line 7983 "Zend/zend_language_scanner.c" +#line 7987 "Zend/zend_language_scanner.c" yy833: YYDEBUG(833, *YYCURSOR); yych = *++YYCURSOR; @@ -7999,23 +8003,23 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy835: YYDEBUG(835, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2192 "Zend/zend_language_scanner.l" +#line 2196 "Zend/zend_language_scanner.l" { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -#line 8008 "Zend/zend_language_scanner.c" +#line 8012 "Zend/zend_language_scanner.c" yy836: YYDEBUG(836, *YYCURSOR); ++YYCURSOR; YYDEBUG(837, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2187 "Zend/zend_language_scanner.l" +#line 2191 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); return ']'; } -#line 8019 "Zend/zend_language_scanner.c" +#line 8023 "Zend/zend_language_scanner.c" yy838: YYDEBUG(838, *YYCURSOR); yych = *++YYCURSOR; @@ -8025,14 +8029,14 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) ++YYCURSOR; YYDEBUG(840, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2197 "Zend/zend_language_scanner.l" +#line 2201 "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 8036 "Zend/zend_language_scanner.c" +#line 8040 "Zend/zend_language_scanner.c" yy841: YYDEBUG(841, *YYCURSOR); ++YYCURSOR; @@ -8041,19 +8045,19 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy842: YYDEBUG(842, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2204 "Zend/zend_language_scanner.l" +#line 2208 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } -#line 8051 "Zend/zend_language_scanner.c" +#line 8055 "Zend/zend_language_scanner.c" yy843: YYDEBUG(843, *YYCURSOR); ++YYCURSOR; YYDEBUG(844, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2717 "Zend/zend_language_scanner.l" +#line 2721 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -8062,7 +8066,7 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 8066 "Zend/zend_language_scanner.c" +#line 8070 "Zend/zend_language_scanner.c" yy845: YYDEBUG(845, *YYCURSOR); ++YYCURSOR; @@ -8098,13 +8102,13 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy849: YYDEBUG(849, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2181 "Zend/zend_language_scanner.l" +#line 2185 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); zendlval->type = IS_STRING; return T_VARIABLE; } -#line 8108 "Zend/zend_language_scanner.c" +#line 8112 "Zend/zend_language_scanner.c" yy850: YYDEBUG(850, *YYCURSOR); ++YYCURSOR; @@ -8144,12 +8148,12 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) yy857: YYDEBUG(857, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1925 "Zend/zend_language_scanner.l" +#line 1929 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng, 1); return T_NUM_STRING; } -#line 8153 "Zend/zend_language_scanner.c" +#line 8157 "Zend/zend_language_scanner.c" yy858: YYDEBUG(858, *YYCURSOR); ++YYCURSOR; @@ -8172,6 +8176,6 @@ int lex_scan_ex(zval *zendlval TSRMLS_DC) goto yy857; } } -#line 2726 "Zend/zend_language_scanner.l" +#line 2730 "Zend/zend_language_scanner.l" } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 0d9ebafc68f2a..6e4e70425157e 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1212,12 +1212,15 @@ again: break; } case T_NEW: - case T_NS_SEPARATOR: case T_NAMESPACE: if (retval != T_NAMESPACE && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } } + if (buf_two_token == T_NS_SEPARATOR && LEX_IS_BUF_ALPH_TOKEN(buf_one) && (retval != T_NS_SEPARATOR || buf_one_token != T_NAMESPACE)) { + LEX_CONVERT_BUF_STRING(buf_one); + } + if (retval == T_NS_SEPARATOR) { switch (buf_one_token) { case T_NAMESPACE: @@ -1228,6 +1231,7 @@ again: } case T_USE: case T_ECHO: + case T_YIELD: if (buf_two_token < 256 && buf_two_token != ',') { break; } From 630e909998b80488252c4e6890e713efbc9db724 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Thu, 17 Oct 2013 12:14:27 +0200 Subject: [PATCH 9/9] Fix: a class can now extend a class named "implements" --- Zend/zend_language_scanner.c | 2 +- Zend/zend_language_scanner.l | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 9542fde27af7a..3b35c6df35688 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1157,7 +1157,7 @@ int lex_scan(zval *zendlval) { LEX_CONVERT_CUR_STRING(); } } - if (CG(tokenbuf_in_class) == 0 && retval != T_NAMESPACE && ((retval != T_IMPLEMENTS && retval != T_EXTENDS) || buf_one_token == ',' || buf_one_token == T_IMPLEMENTS) && LEX_IS_CUR_ALPH_TOKEN()) { + if (CG(tokenbuf_in_class) == 0 && retval != T_NAMESPACE && (((retval != T_IMPLEMENTS && retval != T_EXTENDS) || buf_one_token == ',' || buf_one_token == T_IMPLEMENTS) || (retval == T_IMPLEMENTS && buf_one_token == T_EXTENDS)) && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* method names */ diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 6e4e70425157e..08e14abd6739c 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1155,7 +1155,7 @@ again: LEX_CONVERT_CUR_STRING(); } } - if (CG(tokenbuf_in_class) == 0 && retval != T_NAMESPACE && ((retval != T_IMPLEMENTS && retval != T_EXTENDS) || buf_one_token == ',' || buf_one_token == T_IMPLEMENTS) && LEX_IS_CUR_ALPH_TOKEN()) { + if (CG(tokenbuf_in_class) == 0 && retval != T_NAMESPACE && (((retval != T_IMPLEMENTS && retval != T_EXTENDS) || buf_one_token == ',' || buf_one_token == T_IMPLEMENTS) || (retval == T_IMPLEMENTS && buf_one_token == T_EXTENDS)) && LEX_IS_CUR_ALPH_TOKEN()) { LEX_CONVERT_CUR_STRING(); } /* method names */