From bccc1dd1e7a0280878e7288ab2700d08f711e15d Mon Sep 17 00:00:00 2001 From: Yasuo Ohgaki Date: Fri, 14 Oct 2016 07:52:51 +0900 Subject: [PATCH 01/47] Update UPGRADING --- UPGRADING | 2 ++ 1 file changed, 2 insertions(+) diff --git a/UPGRADING b/UPGRADING index d197f84d71f..5f04e1cf5f2 100644 --- a/UPGRADING +++ b/UPGRADING @@ -133,6 +133,8 @@ PHP 7.1 UPGRADE NOTES SHA2 and 5 bits = 39 chars, ceil(192/5)=39 SHA1 and 6 bits = 32 chars, ceil(192/6)=32 and so on. + . session_start() returns FALSE and no longer initializes $_SESSION when + it failed to start session. - Reflection: . The behavior of ReflectionMethod::invoke() and ::invokeArgs() has been From 5a2dd84314605b98e374ddb427ce0535c334eb3f Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 10 Oct 2016 15:59:52 +0200 Subject: [PATCH 02/47] add test for bug #73037 (cherry picked from commit 256b150a963337eeea5d42e3769ebf5ae45f50c8) --- ext/soap/tests/bug73037.phpt | 180 +++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 ext/soap/tests/bug73037.phpt diff --git a/ext/soap/tests/bug73037.phpt b/ext/soap/tests/bug73037.phpt new file mode 100644 index 00000000000..e68f6216078 --- /dev/null +++ b/ext/soap/tests/bug73037.phpt @@ -0,0 +1,180 @@ +--TEST-- +Bug #73037 SoapServer reports Bad Request when gzipped, var 0 +--SKIPIF-- + +--FILE-- + + Empire Burlesque + Bob Dylan + USA + Columbia + 10.90 + 1985 + "; + + $begin = ''; + $end = ''; + + $min = strlen($begin) + strlen($piece) + strlen($end); + $max = $max < $min ? $min : $max; + + $data = $begin; + $data .= $piece; + while (strlen($data) + strlen($end) < $max) { + /* Randomize a bit, taking gzip in account. */ + $tmp = str_replace( + array( + "Empire Burlesque", + "Bob Dylan", + ), + array( + md5(uniqid()), + sha1(uniqid()), + ), + $piece + ); + + if (strlen($begin) + strlen($tmp) + strlen($end) > $max) { + break; + } + + $data .= $tmp; + } + $data .= $end; + + return $data; +} + +$router = "bug73037_server.php"; +$args = substr(PHP_OS, 0, 3) == 'WIN' ? "-d extension_dir=" . ini_get("extension_dir") . " -d extension=php_soap.dll" : ""; +$code = <<<'PHP' +$s = new SoapServer(NULL, array('uri' => 'http://here')); +$s->setObject(new stdclass()); +$s->handle(); +PHP; + +php_cli_server_start($code, $router, $args); + +foreach (array(1024-1, 1024*8-3, 1024*9+1, 1024*16-1, 1024*32-5, 1024*64+3, 1024*128-7) as $k => $i) { + echo "Iteration $k\n\n"; + + /* with and without compression */ + foreach (array(false, true) as $b) { + $data = get_data($i); + if ($b) { + $data = gzencode($data); + } + $len = strlen($data); + + //echo "len=$len\n"; + + $hdrs = <<"); + if (false === $pos) { + echo $out; + goto cleanup; + } + $pos0 = $pos + strlen(""); + $pos = strpos($out, ""); + if (false === $pos) { + echo $out; + goto cleanup; + } + $len = $pos - $pos0; + echo substr($out, $pos0, $len); + } + +cleanup: + fclose($fp); + + echo "\n\n"; + } +} + +?> +==DONE== +--CLEAN-- + +--EXPECT-- +Iteration 0 + +Function 'CATALOG' doesn't exist + +Function 'CATALOG' doesn't exist + +Iteration 1 + +Function 'CATALOG' doesn't exist + +Function 'CATALOG' doesn't exist + +Iteration 2 + +Function 'CATALOG' doesn't exist + +Function 'CATALOG' doesn't exist + +Iteration 3 + +Function 'CATALOG' doesn't exist + +Function 'CATALOG' doesn't exist + +Iteration 4 + +Function 'CATALOG' doesn't exist + +Function 'CATALOG' doesn't exist + +Iteration 5 + +Function 'CATALOG' doesn't exist + +Function 'CATALOG' doesn't exist + +Iteration 6 + +Function 'CATALOG' doesn't exist + +Function 'CATALOG' doesn't exist + +==DONE== From 233992409bae1b467e5ba2af3319dc291e2bf03e Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 11 Oct 2016 01:58:30 +0300 Subject: [PATCH 03/47] Fixed referencecounter inference rules (cherry picked from commit fae7d6b9bbb3eaf053fb9eb43bc5ceabb34c87f7) --- ext/opcache/Optimizer/zend_func_info.c | 4 ++-- ext/opcache/Optimizer/zend_inference.c | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ext/opcache/Optimizer/zend_func_info.c b/ext/opcache/Optimizer/zend_func_info.c index 46153bc2ce9..528f0d637bf 100644 --- a/ext/opcache/Optimizer/zend_func_info.c +++ b/ext/opcache/Optimizer/zend_func_info.c @@ -358,8 +358,8 @@ static const func_info_t func_infos[] = { F1("strip_tags", MAY_BE_NULL | MAY_BE_STRING), F0("similar_text", MAY_BE_NULL | MAY_BE_LONG), F1("explode", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), - F1("implode", MAY_BE_NULL | MAY_BE_STRING), - F1("join", MAY_BE_NULL | MAY_BE_STRING), + FN("implode", MAY_BE_NULL | MAY_BE_STRING), + FN("join", MAY_BE_NULL | MAY_BE_STRING), FN("setlocale", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), F1("localeconv", MAY_BE_NULL | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_LONG | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_ARRAY), #if HAVE_NL_LANGINFO diff --git a/ext/opcache/Optimizer/zend_inference.c b/ext/opcache/Optimizer/zend_inference.c index fdff328dd7f..d6724d37361 100644 --- a/ext/opcache/Optimizer/zend_inference.c +++ b/ext/opcache/Optimizer/zend_inference.c @@ -2506,6 +2506,10 @@ static void zend_update_type_info(const zend_op_array *op_array, (opline->extended_value == IS_ARRAY || opline->extended_value == IS_OBJECT)) { tmp |= MAY_BE_RCN; + } else if ((t1 & MAY_BE_STRING) && + (opline->op1_type == IS_CV) && + opline->extended_value == IS_STRING) { + tmp |= MAY_BE_RCN; } UPDATE_SSA_TYPE(tmp, ssa_ops[i].op1_def); COPY_SSA_OBJ_TYPE(ssa_ops[i].op1_use, ssa_ops[i].op1_def); @@ -2521,6 +2525,10 @@ static void zend_update_type_info(const zend_op_array *op_array, } else if ((opline->extended_value == IS_ARRAY || opline->extended_value == IS_OBJECT) && (tmp & (MAY_BE_ARRAY|MAY_BE_OBJECT))) { + tmp |= MAY_BE_RC1 | MAY_BE_RCN; + } else if (opline->extended_value == IS_STRING && + (t1 & MAY_BE_STRING) && + (opline->op1_type == IS_CV)) { tmp |= MAY_BE_RC1 | MAY_BE_RCN; } else { tmp |= MAY_BE_RC1; From e92a18dcd5c7da93a412630e74baa7099e9dcc0f Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 11 Oct 2016 15:43:23 +0300 Subject: [PATCH 04/47] Fixed referencecounter inference rules (cherry picked from commit 6046a99b97b5abab2e75d73bc9d73062f1943126) --- ext/opcache/Optimizer/zend_inference.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/ext/opcache/Optimizer/zend_inference.c b/ext/opcache/Optimizer/zend_inference.c index d6724d37361..36bad724f81 100644 --- a/ext/opcache/Optimizer/zend_inference.c +++ b/ext/opcache/Optimizer/zend_inference.c @@ -2584,28 +2584,33 @@ static void zend_update_type_info(const zend_op_array *op_array, case ZEND_ASSIGN_BW_XOR: case ZEND_ASSIGN_CONCAT: orig = 0; + tmp = 0; if (opline->extended_value == ZEND_ASSIGN_OBJ) { - tmp = MAY_BE_RC1; + tmp |= MAY_BE_REF; orig = t1; t1 = MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; t2 = OP1_DATA_INFO(); } else if (opline->extended_value == ZEND_ASSIGN_DIM) { - tmp = MAY_BE_RC1; + if (t1 & MAY_BE_ARRAY_OF_REF) { + tmp |= MAY_BE_REF; + } orig = t1; t1 = zend_array_element_type(t1, 1, 0); t2 = OP1_DATA_INFO(); } else { - tmp = 0; - if (t1 & (MAY_BE_RC1|MAY_BE_RCN)) { - tmp |= MAY_BE_RC1 | MAY_BE_RCN; - } if (t1 & MAY_BE_REF) { - tmp |= MAY_BE_REF; + tmp |= MAY_BE_REF; } } tmp |= binary_op_result_type( ssa, get_compound_assign_op(opline->opcode), t1, t2, ssa_ops[i].op1_def); + if (tmp & (MAY_BE_STRING|MAY_BE_ARRAY)) { + tmp |= MAY_BE_RC1; + } + if (tmp & (MAY_BE_OBJECT|MAY_BE_RESOURCE)) { + tmp |= MAY_BE_RC1 | MAY_BE_RCN; + } if (opline->extended_value == ZEND_ASSIGN_DIM) { if (opline->op1_type == IS_CV) { From 25d4943b44a35cab30a18572bb957a6b1aa45301 Mon Sep 17 00:00:00 2001 From: Sara Golemon Date: Tue, 11 Oct 2016 21:35:10 -0700 Subject: [PATCH 05/47] Clear FG(user_stream_current_filename) when bailing out If a userwrapper opener E_ERRORs then FG(user_stream_current_filename) would remain set until the next request and would not be pointing at unallocated memory. Catch the bailout, clear the variable, then continue bailing. Closes https://bugs.php.net/bug.php?id=73188 (cherry picked from commit 9f86cdaf7fc44c0d97a35bc4d04622e3d3d53f4d) --- .../tests/streams/user-stream-error.phpt | 23 +++++++++++++++++++ main/streams/userspace.c | 17 +++++++++----- 2 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 ext/standard/tests/streams/user-stream-error.phpt diff --git a/ext/standard/tests/streams/user-stream-error.phpt b/ext/standard/tests/streams/user-stream-error.phpt new file mode 100644 index 00000000000..bfa625be2c6 --- /dev/null +++ b/ext/standard/tests/streams/user-stream-error.phpt @@ -0,0 +1,23 @@ +--TEST-- +E_ERROR during UserStream Open +--FILE-- +stream_open('mystream://foo', 'r', 0, NULL) +#1 %s/user-stream-error.php(%d): fopen('mystream://foo', 'r') +#2 {main} + thrown in %s/user-stream-error.php on line %d diff --git a/main/streams/userspace.c b/main/streams/userspace.c index eb8b32eed9e..6afa3b095cc 100644 --- a/main/streams/userspace.c +++ b/main/streams/userspace.c @@ -370,12 +370,17 @@ static php_stream *user_wrapper_opener(php_stream_wrapper *wrapper, const char * ZVAL_STRING(&zfuncname, USERSTREAM_OPEN); - call_result = call_user_function_ex(NULL, - Z_ISUNDEF(us->object)? NULL : &us->object, - &zfuncname, - &zretval, - 4, args, - 0, NULL ); + zend_try { + call_result = call_user_function_ex(NULL, + Z_ISUNDEF(us->object)? NULL : &us->object, + &zfuncname, + &zretval, + 4, args, + 0, NULL ); + } zend_catch { + FG(user_stream_current_filename) = NULL; + zend_bailout(); + } zend_end_try(); if (call_result == SUCCESS && Z_TYPE(zretval) != IS_UNDEF && zval_is_true(&zretval)) { /* the stream is now open! */ From c9274d20b73658d2e560f6a79b6b7c3bbb935e3e Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Wed, 12 Oct 2016 16:07:56 +0800 Subject: [PATCH 06/47] Fixed bug #73288 (Segfault in __clone > Exception.toString > __get) Actually this is caused by optimization(opcache) (cherry picked from commit d19898b2981c839f0758571c1b83052111634154) --- Zend/tests/bug73288.phpt | 34 ++++++++++++++++++++++++++++++++++ Zend/zend_vm_def.h | 9 ++++++--- Zend/zend_vm_execute.h | 36 ++++++++++++++++++++++++------------ 3 files changed, 64 insertions(+), 15 deletions(-) create mode 100644 Zend/tests/bug73288.phpt diff --git a/Zend/tests/bug73288.phpt b/Zend/tests/bug73288.phpt new file mode 100644 index 00000000000..fefcf3bbcd4 --- /dev/null +++ b/Zend/tests/bug73288.phpt @@ -0,0 +1,34 @@ +--TEST-- +Bug #73288 (Segfault in __clone > Exception.toString > __get) +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +--FILE-- +x; +} + +test_clone(); +?> +--EXPECTF-- +Fatal error: Uncaught Exception: No Cloneable in %sbug73288.php:%d +Stack trace: +#0 %s(%d): NoClone->__clone() +#1 %s(%d): test_clone() +#2 {main} + thrown in %sbug73288.php on line %d diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index fb7010e40a6..253443003e3 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -5000,6 +5000,7 @@ ZEND_VM_HANDLER(110, ZEND_CLONE, CONST|TMPVAR|UNUSED|THIS|CV, ANY) USE_OPLINE zend_free_op free_op1; zval *obj; + zend_object *clone_obj; zend_class_entry *ce, *scope; zend_function *clone; zend_object_clone_obj_t clone_call; @@ -5064,9 +5065,11 @@ ZEND_VM_HANDLER(110, ZEND_CLONE, CONST|TMPVAR|UNUSED|THIS|CV, ANY) } } - ZVAL_OBJ(EX_VAR(opline->result.var), clone_call(obj)); - if (UNEXPECTED(EG(exception) != NULL)) { - OBJ_RELEASE(Z_OBJ_P(EX_VAR(opline->result.var))); + clone_obj = clone_call(obj); + if (EXPECTED(EG(exception) == NULL)) { + ZVAL_OBJ(EX_VAR(opline->result.var), clone_obj); + } else { + OBJ_RELEASE(clone_obj); } FREE_OP1(); diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index f0b03d91c46..4c090725457 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -3231,6 +3231,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_CONST_HANDLER(ZEND_ USE_OPLINE zval *obj; + zend_object *clone_obj; zend_class_entry *ce, *scope; zend_function *clone; zend_object_clone_obj_t clone_call; @@ -3295,9 +3296,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_CONST_HANDLER(ZEND_ } } - ZVAL_OBJ(EX_VAR(opline->result.var), clone_call(obj)); - if (UNEXPECTED(EG(exception) != NULL)) { - OBJ_RELEASE(Z_OBJ_P(EX_VAR(opline->result.var))); + clone_obj = clone_call(obj); + if (EXPECTED(EG(exception) == NULL)) { + ZVAL_OBJ(EX_VAR(opline->result.var), clone_obj); + } else { + OBJ_RELEASE(clone_obj); } ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -27847,6 +27850,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_UNUSED_HANDLER(ZEND USE_OPLINE zval *obj; + zend_object *clone_obj; zend_class_entry *ce, *scope; zend_function *clone; zend_object_clone_obj_t clone_call; @@ -27911,9 +27915,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_UNUSED_HANDLER(ZEND } } - ZVAL_OBJ(EX_VAR(opline->result.var), clone_call(obj)); - if (UNEXPECTED(EG(exception) != NULL)) { - OBJ_RELEASE(Z_OBJ_P(EX_VAR(opline->result.var))); + clone_obj = clone_call(obj); + if (EXPECTED(EG(exception) == NULL)) { + ZVAL_OBJ(EX_VAR(opline->result.var), clone_obj); + } else { + OBJ_RELEASE(clone_obj); } ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -35170,6 +35176,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_CV_HANDLER(ZEND_OPC USE_OPLINE zval *obj; + zend_object *clone_obj; zend_class_entry *ce, *scope; zend_function *clone; zend_object_clone_obj_t clone_call; @@ -35234,9 +35241,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_CV_HANDLER(ZEND_OPC } } - ZVAL_OBJ(EX_VAR(opline->result.var), clone_call(obj)); - if (UNEXPECTED(EG(exception) != NULL)) { - OBJ_RELEASE(Z_OBJ_P(EX_VAR(opline->result.var))); + clone_obj = clone_call(obj); + if (EXPECTED(EG(exception) == NULL)) { + ZVAL_OBJ(EX_VAR(opline->result.var), clone_obj); + } else { + OBJ_RELEASE(clone_obj); } ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION(); @@ -51389,6 +51398,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_TMPVAR_HANDLER(ZEND USE_OPLINE zend_free_op free_op1; zval *obj; + zend_object *clone_obj; zend_class_entry *ce, *scope; zend_function *clone; zend_object_clone_obj_t clone_call; @@ -51453,9 +51463,11 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_TMPVAR_HANDLER(ZEND } } - ZVAL_OBJ(EX_VAR(opline->result.var), clone_call(obj)); - if (UNEXPECTED(EG(exception) != NULL)) { - OBJ_RELEASE(Z_OBJ_P(EX_VAR(opline->result.var))); + clone_obj = clone_call(obj); + if (EXPECTED(EG(exception) == NULL)) { + ZVAL_OBJ(EX_VAR(opline->result.var), clone_obj); + } else { + OBJ_RELEASE(clone_obj); } zval_ptr_dtor_nogc(free_op1); From c4254588a9d3b7067f84dbb84db4afcf646b5b40 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 25 Sep 2016 16:43:24 -0700 Subject: [PATCH 07/47] Fix bug #73091 - Unserializing DateInterval object may lead to __toString invocation (cherry picked from commit 1b29e4488e19c89e5b37ecb26acaec443d7f1355) --- ext/date/php_date.c | 4 ++-- ext/date/tests/bug73091.phpt | 46 ++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 ext/date/tests/bug73091.phpt diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 73715904693..aed0dc94b23 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -4159,7 +4159,7 @@ static int php_date_interval_initialize_from_hash(zval **return_value, php_inter #define PHP_DATE_INTERVAL_READ_PROPERTY(element, member, itype, def) \ do { \ zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \ - if (z_arg) { \ + if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \ (*intobj)->diff->member = (itype)zval_get_long(z_arg); \ } else { \ (*intobj)->diff->member = (itype)def; \ @@ -4169,7 +4169,7 @@ static int php_date_interval_initialize_from_hash(zval **return_value, php_inter #define PHP_DATE_INTERVAL_READ_PROPERTY_I64(element, member) \ do { \ zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \ - if (z_arg) { \ + if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \ zend_string *str = zval_get_string(z_arg); \ DATE_A64I((*intobj)->diff->member, ZSTR_VAL(str)); \ zend_string_release(str); \ diff --git a/ext/date/tests/bug73091.phpt b/ext/date/tests/bug73091.phpt new file mode 100644 index 00000000000..668ef505d80 --- /dev/null +++ b/ext/date/tests/bug73091.phpt @@ -0,0 +1,46 @@ +--TEST-- +Bug #73091 (Unserializing DateInterval object may lead to __toString invocation) +--FILE-- + +--EXPECTF-- +object(DateInterval)#%d (15) { + ["days"]=> + int(-1) + ["y"]=> + int(-1) + ["m"]=> + int(-1) + ["d"]=> + int(-1) + ["h"]=> + int(-1) + ["i"]=> + int(-1) + ["s"]=> + int(-1) + ["weekday"]=> + int(-1) + ["weekday_behavior"]=> + int(-1) + ["first_last_day_of"]=> + int(-1) + ["invert"]=> + int(0) + ["special_type"]=> + int(0) + ["special_amount"]=> + int(-1) + ["have_weekday_relative"]=> + int(0) + ["have_special_relative"]=> + int(0) +} From f901dce57548cf1ef63578966ee16fa11509adcf Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 10 Oct 2016 22:54:29 -0700 Subject: [PATCH 08/47] Fix bug #73257 and bug #73258 - SplObjectStorage unserialize allows use of non-object as key (cherry picked from commit 61cdd1255d5b9c8453be71aacbbf682796ac77d4) --- ext/spl/spl_observer.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ext/spl/spl_observer.c b/ext/spl/spl_observer.c index 4ad0c6d15e6..b94ab401cff 100644 --- a/ext/spl/spl_observer.c +++ b/ext/spl/spl_observer.c @@ -788,6 +788,9 @@ SPL_METHOD(SplObjectStorage, unserialize) --p; /* for ';' */ count = Z_LVAL_P(pcount); + ZVAL_UNDEF(&entry); + ZVAL_UNDEF(&inf); + while (count-- > 0) { spl_SplObjectStorageElement *pelement; zend_hash_key key; @@ -803,18 +806,17 @@ SPL_METHOD(SplObjectStorage, unserialize) if (!php_var_unserialize(&entry, &p, s + buf_len, &var_hash)) { goto outexcept; } - if (Z_TYPE(entry) != IS_OBJECT) { - zval_ptr_dtor(&entry); - goto outexcept; - } if (*p == ',') { /* new version has inf */ ++p; if (!php_var_unserialize(&inf, &p, s + buf_len, &var_hash)) { zval_ptr_dtor(&entry); goto outexcept; } - } else { - ZVAL_UNDEF(&inf); + } + if (Z_TYPE(entry) != IS_OBJECT) { + zval_ptr_dtor(&entry); + zval_ptr_dtor(&inf); + goto outexcept; } if (spl_object_storage_get_hash(&key, intern, getThis(), &entry) == FAILURE) { From 6b2992f54cb46a4ed559097a67b5c6fa8f5011b9 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 10 Oct 2016 23:42:50 -0700 Subject: [PATCH 09/47] Fix for #73240 - Write out of bounds at number_format (cherry picked from commit 3b5262ec4c9a6f985f8ff1fb4a7bed18f1b48f75) --- ext/standard/math.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/ext/standard/math.c b/ext/standard/math.c index 930cd08cb5c..83145a4dc9b 100644 --- a/ext/standard/math.c +++ b/ext/standard/math.c @@ -1111,8 +1111,8 @@ PHPAPI zend_string *_php_math_number_format_ex(double d, int dec, char *dec_poin zend_string *tmpbuf; char *s, *t; /* source, target */ char *dp; - int integral; - int reslen = 0; + size_t integral; + size_t reslen = 0; int count = 0; int is_negative=0; @@ -1147,7 +1147,11 @@ PHPAPI zend_string *_php_math_number_format_ex(double d, int dec, char *dec_poin /* allow for thousand separators */ if (thousand_sep) { - integral += (int)(thousand_sep_len * ((integral-1) / 3)); + if (integral + thousand_sep_len * ((integral-1) / 3) < integral) { + /* overflow */ + php_error_docref(NULL, E_ERROR, "String overflow"); + } + integral += thousand_sep_len * ((integral-1) / 3); } reslen = integral; @@ -1156,7 +1160,11 @@ PHPAPI zend_string *_php_math_number_format_ex(double d, int dec, char *dec_poin reslen += dec; if (dec_point) { - reslen += (int)dec_point_len; + if (reslen + dec_point_len < dec_point_len) { + /* overflow */ + php_error_docref(NULL, E_ERROR, "String overflow"); + } + reslen += dec_point_len; } } @@ -1258,7 +1266,6 @@ PHP_FUNCTION(number_format) break; default: WRONG_PARAM_COUNT; - break; } } /* }}} */ From 336322ce63f4d6bd2abd2b187c9de387f387593f Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 25 Sep 2016 21:25:01 -0700 Subject: [PATCH 10/47] Fix bug #73150: missing NULL check in dom_document_save_html (cherry picked from commit 1c0e9126fbfb7fde3173347b7464237f56c38bfa) (cherry picked from commit d1e878f2726e65502fdd992c5b57feeada57893f) --- ext/dom/document.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/dom/document.c b/ext/dom/document.c index 70289cf54a0..a5e119f7865 100644 --- a/ext/dom/document.c +++ b/ext/dom/document.c @@ -1663,7 +1663,7 @@ PHP_FUNCTION(dom_document_savexml) if (options & LIBXML_SAVE_NOEMPTYTAG) { xmlSaveNoEmptyTags = saveempty; } - if (!size) { + if (!size || !mem) { RETURN_FALSE; } RETVAL_STRINGL((char *) mem, size); @@ -2215,7 +2215,7 @@ PHP_FUNCTION(dom_document_save_html) #else htmlDocDumpMemory(docp, &mem, &size); #endif - if (!size) { + if (!size || !mem) { RETVAL_FALSE; } else { RETVAL_STRINGL((const char*) mem, size); From 0d9d133cd6318efc6a355397495cdfd38651500d Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 4 Oct 2016 21:28:40 -0700 Subject: [PATCH 11/47] Add more locale length checks, due to ICU bugs. (cherry picked from commit d3eb58332af433982f1e2ae9095fb087974a95f2) (cherry picked from commit 87a8240b5adc730153e6df54f33195aee1325e6f) --- ext/intl/locale/locale_methods.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ext/intl/locale/locale_methods.c b/ext/intl/locale/locale_methods.c index 8cf5babc952..472220d4048 100644 --- a/ext/intl/locale/locale_methods.c +++ b/ext/intl/locale/locale_methods.c @@ -406,6 +406,8 @@ static void get_icu_value_src_php( char* tag_name, INTERNAL_FUNCTION_PARAMETERS) if(loc_name_len == 0) { loc_name = intl_locale_get_default(); } + + INTL_CHECK_LOCALE_LEN(strlen(loc_name)); /* Call ICU get */ tag_value = get_icu_value_internal( loc_name , tag_name , &result ,0); @@ -1165,6 +1167,7 @@ PHP_FUNCTION(locale_get_all_variants) loc_name = intl_locale_get_default(); } + INTL_CHECK_LOCALE_LEN(strlen(loc_name)); array_init( return_value ); @@ -1273,6 +1276,9 @@ PHP_FUNCTION(locale_filter_matches) RETURN_TRUE; } + INTL_CHECK_LOCALE_LEN(strlen(loc_range)); + INTL_CHECK_LOCALE_LEN(strlen(lang_tag)); + if( boolCanonical ){ /* canonicalize loc_range */ can_loc_range=get_icu_value_internal( loc_range , LOC_CANONICALIZE_TAG , &result , 0); @@ -1554,6 +1560,8 @@ PHP_FUNCTION(locale_lookup) hash_arr = Z_ARRVAL_P(arr); + INTL_CHECK_LOCALE_LEN(strlen(loc_range)); + if( !hash_arr || zend_hash_num_elements( hash_arr ) == 0 ) { RETURN_EMPTY_STRING(); } From d25e427ab1a114c35dd129f18b99539eb50afd25 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 4 Oct 2016 22:40:09 -0700 Subject: [PATCH 12/47] Bug #73218: add mitigation for ICU int overflow (cherry picked from commit d946d102936525bc7dcd01f3827d0a6e0bb971b0) (cherry picked from commit b26b02b2df95eaa647ea3f4e7b42bd11eea4ed2c) --- ext/intl/resourcebundle/resourcebundle_class.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ext/intl/resourcebundle/resourcebundle_class.c b/ext/intl/resourcebundle/resourcebundle_class.c index fd255d57cd6..47d9bf0403d 100644 --- a/ext/intl/resourcebundle/resourcebundle_class.c +++ b/ext/intl/resourcebundle/resourcebundle_class.c @@ -101,6 +101,13 @@ static int resourcebundle_ctor(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_constr locale = intl_locale_get_default(); } + if (bundlename_len >= MAXPATHLEN) { + intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, "Bundle name too long", 0 ); + zval_dtor(return_value); + ZVAL_NULL(return_value); + return FAILURE; + } + if (fallback) { rb->me = ures_open(bundlename, locale, &INTL_DATA_ERROR_CODE(rb)); } else { @@ -331,6 +338,11 @@ PHP_FUNCTION( resourcebundle_locales ) RETURN_FALSE; } + if (bundlename_len >= MAXPATHLEN) { + intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, "resourcebundle_locales: bundle name too long", 0 ); + RETURN_FALSE; + } + if(bundlename_len == 0) { // fetch default locales list bundlename = NULL; From 0cf880e70ccae598b7f5d303c2728d2b150c9b9a Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 12 Oct 2016 13:28:23 +0200 Subject: [PATCH 13/47] avoid strlen (cherry picked from commit aaa5d07365b54f35ba3b5024492450f3d2fe4ee5) --- ext/intl/locale/locale_methods.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ext/intl/locale/locale_methods.c b/ext/intl/locale/locale_methods.c index 472220d4048..b75183da949 100644 --- a/ext/intl/locale/locale_methods.c +++ b/ext/intl/locale/locale_methods.c @@ -407,7 +407,7 @@ static void get_icu_value_src_php( char* tag_name, INTERNAL_FUNCTION_PARAMETERS) loc_name = intl_locale_get_default(); } - INTL_CHECK_LOCALE_LEN(strlen(loc_name)); + INTL_CHECK_LOCALE_LEN(loc_name_len); /* Call ICU get */ tag_value = get_icu_value_internal( loc_name , tag_name , &result ,0); @@ -1167,7 +1167,7 @@ PHP_FUNCTION(locale_get_all_variants) loc_name = intl_locale_get_default(); } - INTL_CHECK_LOCALE_LEN(strlen(loc_name)); + INTL_CHECK_LOCALE_LEN(loc_name_len); array_init( return_value ); @@ -1276,8 +1276,8 @@ PHP_FUNCTION(locale_filter_matches) RETURN_TRUE; } - INTL_CHECK_LOCALE_LEN(strlen(loc_range)); - INTL_CHECK_LOCALE_LEN(strlen(lang_tag)); + INTL_CHECK_LOCALE_LEN(loc_range_len); + INTL_CHECK_LOCALE_LEN(lang_tag_len); if( boolCanonical ){ /* canonicalize loc_range */ @@ -1560,7 +1560,7 @@ PHP_FUNCTION(locale_lookup) hash_arr = Z_ARRVAL_P(arr); - INTL_CHECK_LOCALE_LEN(strlen(loc_range)); + INTL_CHECK_LOCALE_LEN(loc_range_len); if( !hash_arr || zend_hash_num_elements( hash_arr ) == 0 ) { RETURN_EMPTY_STRING(); From 8e2c9024a6755c092f80b385aa7b7487efdc8acc Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 10 Oct 2016 23:42:50 -0700 Subject: [PATCH 14/47] Fix for #73240 - Write out of bounds at number_format (cherry picked from commit 8259130b6bc752968856b352c9e7f8e03a8c0a8e) (cherry picked from commit 01280f8deb837a61237a619cffa886d7f8c31963) --- ext/standard/math.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/ext/standard/math.c b/ext/standard/math.c index 83145a4dc9b..753656c56f7 100644 --- a/ext/standard/math.c +++ b/ext/standard/math.c @@ -1139,18 +1139,14 @@ PHPAPI zend_string *_php_math_number_format_ex(double d, int dec, char *dec_poin /* calculate the length of the return buffer */ if (dp) { - integral = (int)(dp - ZSTR_VAL(tmpbuf)); + integral = (dp - ZSTR_VAL(tmpbuf)); } else { /* no decimal point was found */ - integral = (int)ZSTR_LEN(tmpbuf); + integral = ZSTR_LEN(tmpbuf); } /* allow for thousand separators */ if (thousand_sep) { - if (integral + thousand_sep_len * ((integral-1) / 3) < integral) { - /* overflow */ - php_error_docref(NULL, E_ERROR, "String overflow"); - } integral += thousand_sep_len * ((integral-1) / 3); } @@ -1160,10 +1156,6 @@ PHPAPI zend_string *_php_math_number_format_ex(double d, int dec, char *dec_poin reslen += dec; if (dec_point) { - if (reslen + dec_point_len < dec_point_len) { - /* overflow */ - php_error_docref(NULL, E_ERROR, "String overflow"); - } reslen += dec_point_len; } } @@ -1266,6 +1258,7 @@ PHP_FUNCTION(number_format) break; default: WRONG_PARAM_COUNT; + break; } } /* }}} */ From e7e60851ae2a3ce47a317b93e080e4daa7120934 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 11 Oct 2016 13:30:52 -0700 Subject: [PATCH 15/47] Fix bug #73293 - NULL pointer dereference in SimpleXMLElement::asXML() (cherry picked from commit 96a8cf8e1b5dc1b0c708bb5574e0d6727cc56d9e) (cherry picked from commit 4ef79370a82d6c92f4ea0cd462274ba24e007f56) --- ext/simplexml/simplexml.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index fdda30451d6..1f75052ed74 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -1474,9 +1474,15 @@ SXE_METHOD(asXML) if (node) { if (node->parent && (XML_DOCUMENT_NODE == node->parent->type)) { xmlDocDumpMemoryEnc((xmlDocPtr) sxe->document->ptr, &strval, &strval_len, (const char *) ((xmlDocPtr) sxe->document->ptr)->encoding); - RETVAL_STRINGL((char *)strval, strval_len); + if (!strval) { + RETVAL_FALSE; + } else { + RETVAL_STRINGL((char *)strval, strval_len); + } xmlFree(strval); } else { + char *return_content; + size_t return_len; /* Should we be passing encoding information instead of NULL? */ outbuf = xmlAllocOutputBuffer(NULL); @@ -1487,10 +1493,17 @@ SXE_METHOD(asXML) xmlNodeDumpOutput(outbuf, (xmlDocPtr) sxe->document->ptr, node, 0, 0, (const char *) ((xmlDocPtr) sxe->document->ptr)->encoding); xmlOutputBufferFlush(outbuf); #ifdef LIBXML2_NEW_BUFFER - RETVAL_STRINGL((char *)xmlOutputBufferGetContent(outbuf), xmlOutputBufferGetSize(outbuf)); + return_content = (char *)xmlOutputBufferGetContent(outbuf); + return_len = xmlOutputBufferGetSize(outbuf); #else - RETVAL_STRINGL((char *)outbuf->buffer->content, outbuf->buffer->use); + return_content = (char *)outbuf->buffer->content; + return_len = outbuf->buffer->use; #endif + if (return_content) { + RETVAL_FALSE; + } else { + RETVAL_STRINGL(return_content, return_len); + } xmlOutputBufferClose(outbuf); } } else { From fe789b3f7c414954a47ccb6cee17b19f56ab1b98 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 11 Oct 2016 13:37:47 -0700 Subject: [PATCH 16/47] Fix bug #73276 - crash in openssl_random_pseudo_bytes function (cherry picked from commit 85a22a0af0722ef3a8d49a056a0b2b18be1fb981) (cherry picked from commit 7dc8b5e7aefce963a7a222c48ee3506725c4776b) --- ext/openssl/openssl.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index 9198530b1d7..7fbbbe87921 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -6458,7 +6458,11 @@ PHP_FUNCTION(openssl_random_pseudo_bytes) return; } - if (buffer_length <= 0) { + if (buffer_length <= 0 +#ifndef PHP_WIN32 + || ZEND_LONG_INT_OVFL(buffer_length) +#endif + ) { RETURN_FALSE; } @@ -6482,6 +6486,7 @@ PHP_FUNCTION(openssl_random_pseudo_bytes) PHP_OPENSSL_CHECK_LONG_TO_INT(buffer_length, length); PHP_OPENSSL_RAND_ADD_TIME(); + /* FIXME loop if requested size > INT_MAX */ if (RAND_bytes((unsigned char*)ZSTR_VAL(buffer), (int)buffer_length) <= 0) { zend_string_release(buffer); if (zstrong_result_returned) { From 48f06ada897a01b94516958f0581e26d90b53140 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 12 Oct 2016 16:03:09 +0200 Subject: [PATCH 17/47] fix test (cherry picked from commit 7c6cb1282d539c4d5ff5adc8f7a6926c83b98e20) --- ext/intl/tests/bug72241.phpt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ext/intl/tests/bug72241.phpt b/ext/intl/tests/bug72241.phpt index 397e1e7834b..7ac5a5b503e 100644 --- a/ext/intl/tests/bug72241.phpt +++ b/ext/intl/tests/bug72241.phpt @@ -9,6 +9,4 @@ $out = locale_get_primary_language($var1); echo strlen($out) . PHP_EOL; echo unpack('H*', $out)[1] . PHP_EOL; --EXPECT-- -1000 -61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161 - +0 From 7897e8cd6c1d6b201eb384fac38ed41a21420ae3 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 12 Oct 2016 16:03:35 +0200 Subject: [PATCH 18/47] followup with #73276 merge (cherry picked from commit b135ba3fa93fd4f085322573d2850b29cb662e21) --- ext/openssl/openssl.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index 7fbbbe87921..1aa59ad43ad 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -6458,6 +6458,11 @@ PHP_FUNCTION(openssl_random_pseudo_bytes) return; } + if (zstrong_result_returned) { + zval_dtor(zstrong_result_returned); + ZVAL_FALSE(zstrong_result_returned); + } + if (buffer_length <= 0 #ifndef PHP_WIN32 || ZEND_LONG_INT_OVFL(buffer_length) @@ -6465,12 +6470,6 @@ PHP_FUNCTION(openssl_random_pseudo_bytes) ) { RETURN_FALSE; } - - if (zstrong_result_returned) { - zval_dtor(zstrong_result_returned); - ZVAL_FALSE(zstrong_result_returned); - } - buffer = zend_string_alloc(buffer_length, 0); #ifdef PHP_WIN32 From 41ed9d1f9f1f0fd097e8157e42a4689d117e083d Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 12 Oct 2016 16:11:32 +0200 Subject: [PATCH 19/47] Revert "Fix for #73240 - Write out of bounds at number_format" This reverts commit 01280f8deb837a61237a619cffa886d7f8c31963. The fix is already merged by Stas. (cherry picked from commit 80eb013a926fad18cb0da05c508f564da3c1d88c) --- ext/standard/math.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/ext/standard/math.c b/ext/standard/math.c index 753656c56f7..83145a4dc9b 100644 --- a/ext/standard/math.c +++ b/ext/standard/math.c @@ -1139,14 +1139,18 @@ PHPAPI zend_string *_php_math_number_format_ex(double d, int dec, char *dec_poin /* calculate the length of the return buffer */ if (dp) { - integral = (dp - ZSTR_VAL(tmpbuf)); + integral = (int)(dp - ZSTR_VAL(tmpbuf)); } else { /* no decimal point was found */ - integral = ZSTR_LEN(tmpbuf); + integral = (int)ZSTR_LEN(tmpbuf); } /* allow for thousand separators */ if (thousand_sep) { + if (integral + thousand_sep_len * ((integral-1) / 3) < integral) { + /* overflow */ + php_error_docref(NULL, E_ERROR, "String overflow"); + } integral += thousand_sep_len * ((integral-1) / 3); } @@ -1156,6 +1160,10 @@ PHPAPI zend_string *_php_math_number_format_ex(double d, int dec, char *dec_poin reslen += dec; if (dec_point) { + if (reslen + dec_point_len < dec_point_len) { + /* overflow */ + php_error_docref(NULL, E_ERROR, "String overflow"); + } reslen += dec_point_len; } } @@ -1258,7 +1266,6 @@ PHP_FUNCTION(number_format) break; default: WRONG_PARAM_COUNT; - break; } } /* }}} */ From a5e9a73db25fb1348bd4a68a83d1237b14d05e17 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 12 Oct 2016 17:12:38 +0200 Subject: [PATCH 20/47] fix typo (cherry picked from commit efc1f33b58b0936539ea6ca1de345bd83c7e8f26) --- ext/simplexml/simplexml.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index 1f75052ed74..7870377687a 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -1499,7 +1499,7 @@ SXE_METHOD(asXML) return_content = (char *)outbuf->buffer->content; return_len = outbuf->buffer->use; #endif - if (return_content) { + if (!return_content) { RETVAL_FALSE; } else { RETVAL_STRINGL(return_content, return_len); From 54003ab6631b489af54631a548597e8bd599b266 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 25 Sep 2016 19:53:59 -0700 Subject: [PATCH 21/47] Fix bug #73147: Use After Free in PHP7 unserialize() (cherry picked from commit 0e6fe3a4c96be2d3e88389a5776f878021b4c59f) (cherry picked from commit f42cbd749cde1f91274c1d03df9024baba141a8f) --- Zend/zend_API.c | 18 ++++++++++++++++++ Zend/zend_API.h | 1 + ext/curl/curl_file.c | 1 + ext/curl/tests/bug73147.phpt | 20 ++++++++++++++++++++ 4 files changed, 40 insertions(+) create mode 100644 ext/curl/tests/bug73147.phpt diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 6ce60e1f06d..a71aca81065 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -3886,6 +3886,24 @@ ZEND_API void zend_update_property_null(zend_class_entry *scope, zval *object, c } /* }}} */ +ZEND_API void zend_unset_property(zend_class_entry *scope, zval *object, const char *name, size_t name_length) /* {{{ */ +{ + zval property; + zend_class_entry *old_scope = EG(scope); + + EG(scope) = scope; + + if (!Z_OBJ_HT_P(object)->unset_property) { + zend_error_noreturn(E_CORE_ERROR, "Property %s of class %s cannot be unset", name, ZSTR_VAL(Z_OBJCE_P(object)->name)); + } + ZVAL_STRINGL(&property, name, name_length); + Z_OBJ_HT_P(object)->unset_property(object, &property, 0); + zval_ptr_dtor(&property); + + EG(scope) = old_scope; +} +/* }}} */ + ZEND_API void zend_update_property_bool(zend_class_entry *scope, zval *object, const char *name, size_t name_length, zend_long value) /* {{{ */ { zval tmp; diff --git a/Zend/zend_API.h b/Zend/zend_API.h index 199e88a8af1..8c4a2ccccd0 100644 --- a/Zend/zend_API.h +++ b/Zend/zend_API.h @@ -346,6 +346,7 @@ ZEND_API void zend_update_property_double(zend_class_entry *scope, zval *object, ZEND_API void zend_update_property_str(zend_class_entry *scope, zval *object, const char *name, size_t name_length, zend_string *value); ZEND_API void zend_update_property_string(zend_class_entry *scope, zval *object, const char *name, size_t name_length, const char *value); ZEND_API void zend_update_property_stringl(zend_class_entry *scope, zval *object, const char *name, size_t name_length, const char *value, size_t value_length); +ZEND_API void zend_unset_property(zend_class_entry *scope, zval *object, const char *name, size_t name_length); ZEND_API int zend_update_static_property(zend_class_entry *scope, const char *name, size_t name_length, zval *value); ZEND_API int zend_update_static_property_null(zend_class_entry *scope, const char *name, size_t name_length); diff --git a/ext/curl/curl_file.c b/ext/curl/curl_file.c index de173a5f42c..ba8a7de1089 100644 --- a/ext/curl/curl_file.c +++ b/ext/curl/curl_file.c @@ -137,6 +137,7 @@ ZEND_METHOD(CURLFile, setPostFilename) Unserialization handler */ ZEND_METHOD(CURLFile, __wakeup) { + zend_unset_property(curl_CURLFile_class, getThis(), "name", sizeof("name")-1); zend_update_property_string(curl_CURLFile_class, getThis(), "name", sizeof("name")-1, ""); zend_throw_exception(NULL, "Unserialization of CURLFile instances is not allowed", 0); } diff --git a/ext/curl/tests/bug73147.phpt b/ext/curl/tests/bug73147.phpt new file mode 100644 index 00000000000..118177d871b --- /dev/null +++ b/ext/curl/tests/bug73147.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #73147: Use After Free in PHP7 unserialize() +--SKIPIF-- + +--FILE-- +getMessage(); +} +?> +--EXPECT-- +Unserialization of CURLFile instances is not allowed From a6715786a7e19b4c3deb0b366e21bbf49e40bf4f Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 12 Oct 2016 18:31:46 +0200 Subject: [PATCH 22/47] finish 7.1 port (cherry picked from commit f1fff032fcdb09a56c2fd763d1ee160106381586) --- Zend/zend_API.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Zend/zend_API.c b/Zend/zend_API.c index a71aca81065..2479cf0d32a 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -3889,9 +3889,9 @@ ZEND_API void zend_update_property_null(zend_class_entry *scope, zval *object, c ZEND_API void zend_unset_property(zend_class_entry *scope, zval *object, const char *name, size_t name_length) /* {{{ */ { zval property; - zend_class_entry *old_scope = EG(scope); + zend_class_entry *old_scope = EG(fake_scope); - EG(scope) = scope; + EG(fake_scope) = scope; if (!Z_OBJ_HT_P(object)->unset_property) { zend_error_noreturn(E_CORE_ERROR, "Property %s of class %s cannot be unset", name, ZSTR_VAL(Z_OBJCE_P(object)->name)); @@ -3900,7 +3900,7 @@ ZEND_API void zend_unset_property(zend_class_entry *scope, zval *object, const c Z_OBJ_HT_P(object)->unset_property(object, &property, 0); zval_ptr_dtor(&property); - EG(scope) = old_scope; + EG(fake_scope) = old_scope; } /* }}} */ From 06e7c9983a272e420e9437383ec4283607288c61 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 12 Oct 2016 19:28:15 +0200 Subject: [PATCH 23/47] fix test (cherry picked from commit fa9370db03944b31a9c3b20d586a290fe51ceaa0) --- ext/date/tests/bug73091.phpt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ext/date/tests/bug73091.phpt b/ext/date/tests/bug73091.phpt index 668ef505d80..c051573297e 100644 --- a/ext/date/tests/bug73091.phpt +++ b/ext/date/tests/bug73091.phpt @@ -12,7 +12,7 @@ class foo { var_dump(unserialize('O:12:"DateInterval":1:{s:4:"days";O:3:"foo":0:{}}')); ?> --EXPECTF-- -object(DateInterval)#%d (15) { +object(DateInterval)#%d (16) { ["days"]=> int(-1) ["y"]=> @@ -27,6 +27,8 @@ object(DateInterval)#%d (15) { int(-1) ["s"]=> int(-1) + ["f"]=> + float(-1) ["weekday"]=> int(-1) ["weekday_behavior"]=> From a8a11b669d86ee276e0942a5a9d5aa504cf49fd3 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 12 Oct 2016 20:09:24 +0200 Subject: [PATCH 24/47] Merge branch 'PHP-7.0' into PHP-7.1 * PHP-7.0: Fix bug #73190: memcpy negative parameter _bc_new_num_ex (cherry picked from commit af1bf873fe4fc70be17fa9f270e8f30666f2d2db) --- Zend/zend_exceptions.c | 25 +++++++++++++++++++++---- ext/bcmath/libbcmath/src/init.c | 5 ++++- ext/bcmath/libbcmath/src/outofmem.c | 3 +-- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c index dc073de6339..4f156c0bccc 100644 --- a/Zend/zend_exceptions.c +++ b/Zend/zend_exceptions.c @@ -306,10 +306,7 @@ ZEND_METHOD(exception, __construct) #define CHECK_EXC_TYPE(id, type) \ pvalue = zend_read_property_ex(i_get_exception_base(object), (object), CG(known_strings)[id], 1, &value); \ if (Z_TYPE_P(pvalue) != IS_NULL && Z_TYPE_P(pvalue) != type) { \ - zval tmp; \ - ZVAL_STR_COPY(&tmp, CG(known_strings)[id]); \ - Z_OBJ_HANDLER_P(object, unset_property)(object, &tmp, NULL); \ - zval_ptr_dtor(&tmp); \ + zend_unset_property(i_get_exception_base(object), object, ZEND_STR_PREVIOUS, sizeof(ZEND_STR_PREVIOUS)-1); \ } ZEND_METHOD(exception, __wakeup) @@ -323,6 +320,12 @@ ZEND_METHOD(exception, __wakeup) CHECK_EXC_TYPE(ZEND_STR_LINE, IS_LONG); CHECK_EXC_TYPE(ZEND_STR_TRACE, IS_ARRAY); CHECK_EXC_TYPE(ZEND_STR_PREVIOUS, IS_OBJECT); + pvalue = zend_read_property(i_get_exception_base(object), object, ZEND_STR_PREVIOUS, sizeof(ZEND_STR_PREVIOUS)-1, 1, &value); + if (pvalue && Z_TYPE_P(pvalue) != IS_NULL && (Z_TYPE_P(pvalue) != IS_OBJECT || + !instanceof_function(Z_OBJCE_P(pvalue), i_get_exception_base(object)) || + pvalue == object)) { + zend_unset_property(i_get_exception_base(object), object, ZEND_STR_PREVIOUS, sizeof(ZEND_STR_PREVIOUS)-1); + } } /* }}} */ @@ -735,10 +738,24 @@ ZEND_METHOD(exception, __toString) zend_string_release(file); zval_ptr_dtor(&trace); + Z_OBJPROP_P(exception)->u.v.nApplyCount++; exception = GET_PROPERTY(exception, ZEND_STR_PREVIOUS); + if (exception && Z_TYPE_P(exception) == IS_OBJECT && Z_OBJPROP_P(exception)->u.v.nApplyCount > 0) { + exception = NULL; + } } zend_string_release(fname); + /* Reset apply counts */ + while (exception && Z_TYPE_P(exception) == IS_OBJECT && (base_ce = i_get_exception_base(exception)) && instanceof_function(Z_OBJCE_P(exception), base_ce)) { + if(Z_OBJPROP_P(exception)->u.v.nApplyCount) { + Z_OBJPROP_P(exception)->u.v.nApplyCount--; + } else { + break; + } + exception = GET_PROPERTY(exception, ZEND_STR_PREVIOUS); + } + exception = getThis(); base_ce = i_get_exception_base(exception); diff --git a/ext/bcmath/libbcmath/src/init.c b/ext/bcmath/libbcmath/src/init.c index e1aeeddf890..d3a2e580e5e 100644 --- a/ext/bcmath/libbcmath/src/init.c +++ b/ext/bcmath/libbcmath/src/init.c @@ -49,7 +49,10 @@ _bc_new_num_ex (length, scale, persistent) int length, scale, persistent; { bc_num temp; - + /* PHP Change: add length check */ + if ((size_t)length+(size_t)scale > INT_MAX) { + zend_error(E_ERROR, "Result too long, max is %d", INT_MAX); + } /* PHP Change: malloc() -> pemalloc(), removed free_list code */ temp = (bc_num) safe_pemalloc (1, sizeof(bc_struct)+length, scale, persistent); #if 0 diff --git a/ext/bcmath/libbcmath/src/outofmem.c b/ext/bcmath/libbcmath/src/outofmem.c index bcbf4cfd1d3..05a85b76ea1 100644 --- a/ext/bcmath/libbcmath/src/outofmem.c +++ b/ext/bcmath/libbcmath/src/outofmem.c @@ -41,6 +41,5 @@ void bc_out_of_memory (void) { - (void) fprintf (stderr, "bcmath: out of memory!\n"); - exit (1); + zend_error_noreturn(E_ERROR, "bcmath: out of memory!"); } From 11e7447e044fe0b719e38246babbed6e8d56ebf3 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Wed, 12 Oct 2016 20:19:10 +0200 Subject: [PATCH 25/47] Merge branch 'PHP-7.0' into PHP-7.1 (cherry picked from commit 37ae5f3931b60c55e5004b6da912c4a957bca274) --- run-tests.php | 2 +- sapi/phpdbg/phpdbg.c | 80 ++++++++++-- sapi/phpdbg/phpdbg_bp.c | 23 ++-- sapi/phpdbg/phpdbg_bp.h | 2 +- sapi/phpdbg/phpdbg_help.c | 24 ++++ sapi/phpdbg/phpdbg_list.c | 34 +++-- sapi/phpdbg/phpdbg_prompt.c | 123 ++++++++++++++++++- sapi/phpdbg/phpdbg_prompt.h | 2 + sapi/phpdbg/tests/include_once.phpt | 16 +++ sapi/phpdbg/tests/set_exception_handler.phpt | 19 +++ sapi/phpdbg/tests/stdin_001.phpt | 25 ++++ 11 files changed, 304 insertions(+), 46 deletions(-) create mode 100644 sapi/phpdbg/tests/include_once.phpt create mode 100644 sapi/phpdbg/tests/set_exception_handler.phpt create mode 100644 sapi/phpdbg/tests/stdin_001.phpt diff --git a/run-tests.php b/run-tests.php index 80757edd908..41a061666b7 100755 --- a/run-tests.php +++ b/run-tests.php @@ -127,7 +127,7 @@ if (getenv('TEST_PHP_EXECUTABLE')) { $phpdbg = $cwd . '/sapi/phpdbg/phpdbg'; if (file_exists($phpdbg)) { - putenv("TEST_PHP_CGI_EXECUTABLE=$phpdbg"); + putenv("TEST_PHPDBG_EXECUTABLE=$phpdbg"); } else { $phpdbg = null; } diff --git a/sapi/phpdbg/phpdbg.c b/sapi/phpdbg/phpdbg.c index bda5b5619f1..be50de80708 100644 --- a/sapi/phpdbg/phpdbg.c +++ b/sapi/phpdbg/phpdbg.c @@ -127,6 +127,7 @@ static void php_phpdbg_destroy_file_source(zval *data) /* {{{ */ if (source->buf) { efree(source->buf); } + efree(source->filename); efree(source); } /* }}} */ @@ -373,7 +374,7 @@ static PHP_FUNCTION(phpdbg_break_file) return; } - phpdbg_set_breakpoint_file(file, line); + phpdbg_set_breakpoint_file(file, 0, line); } /* }}} */ /* {{{ proto void phpdbg_break_method(string class, string method) */ @@ -1076,6 +1077,7 @@ const opt_struct OPTIONS[] = { /* {{{ */ {'r', 0, "run"}, {'e', 0, "generate ext_stmt opcodes"}, {'E', 0, "step-through-eval"}, + {'s', 1, "script from stdin"}, {'S', 1, "sapi-name"}, #ifndef _WIN32 {'l', 1, "listen"}, @@ -1374,6 +1376,8 @@ int main(int argc, char **argv) /* {{{ */ zend_bool ext_stmt = 0; zend_bool is_exit; int exit_status; + char *read_from_stdin = NULL; + zend_string *backup_phpdbg_compile = NULL; #ifndef _WIN32 struct sigaction sigio_struct; @@ -1482,6 +1486,12 @@ phpdbg_main: /* begin phpdbg options */ + case 's': { /* read script from stdin */ + if (settings == NULL) { + read_from_stdin = strdup(php_optarg); + } + } break; + case 'S': { /* set SAPI name */ sapi_name = strdup(php_optarg); } break; @@ -1593,8 +1603,10 @@ phpdbg_main: php_optarg = NULL; } + quit_immediately = phpdbg_startup_run > 1; + /* set exec if present on command line */ - if (argc > php_optind && (strcmp(argv[php_optind-1], "--") != SUCCESS)) { + if (!read_from_stdin && argc > php_optind && (strcmp(argv[php_optind-1], "--") != SUCCESS)) { if (!exec && strlen(argv[php_optind])) { exec = strdup(argv[php_optind]); } @@ -1849,13 +1861,6 @@ phpdbg_main: if (init_file) { phpdbg_init(init_file, init_file_len, init_file_default); } - if (bp_tmp) { - PHPDBG_G(flags) |= PHPDBG_DISCARD_OUTPUT; - phpdbg_string_init(bp_tmp); - free(bp_tmp); - bp_tmp = NULL; - PHPDBG_G(flags) &= ~PHPDBG_DISCARD_OUTPUT; - } } zend_end_try(); PHPDBG_G(flags) &= ~PHPDBG_IS_INITIALIZING; @@ -1865,18 +1870,55 @@ phpdbg_main: } /* auto compile */ - if (PHPDBG_G(exec)) { + if (read_from_stdin) { + if (!read_from_stdin[0]) { + if (!quit_immediately) { + phpdbg_error("error", "", "Impossible to not specify a stdin delimiter without -rr"); + PHPDBG_G(flags) |= PHPDBG_IS_QUITTING; + goto phpdbg_out; + } + } + if (show_banner || read_from_stdin[0]) { + phpdbg_notice("stdin", "delimiter=\"%s\"", "Reading input from stdin; put '%s' followed by a newline on an own line after code to end input", read_from_stdin); + } + + if (phpdbg_startup_run > 0) { + PHPDBG_G(flags) |= PHPDBG_DISCARD_OUTPUT; + } + + zend_try { + phpdbg_param_t cmd; + cmd.str = read_from_stdin; + cmd.len = strlen(read_from_stdin); + PHPDBG_COMMAND_HANDLER(stdin)(&cmd); + } zend_end_try(); + + PHPDBG_G(flags) &= ~PHPDBG_DISCARD_OUTPUT; + } else if (PHPDBG_G(exec)) { if (settings || phpdbg_startup_run > 0) { PHPDBG_G(flags) |= PHPDBG_DISCARD_OUTPUT; } zend_try { - phpdbg_compile(); + if (backup_phpdbg_compile) { + phpdbg_compile_stdin(backup_phpdbg_compile); + } else { + phpdbg_compile(); + } } zend_end_try(); + backup_phpdbg_compile = NULL; PHPDBG_G(flags) &= ~PHPDBG_DISCARD_OUTPUT; } + if (bp_tmp) { + PHPDBG_G(flags) |= PHPDBG_DISCARD_OUTPUT | PHPDBG_IS_INITIALIZING; + phpdbg_string_init(bp_tmp); + free(bp_tmp); + bp_tmp = NULL; + PHPDBG_G(flags) &= ~PHPDBG_DISCARD_OUTPUT & ~PHPDBG_IS_INITIALIZING; + } + if (settings == (void *) 0x1) { if (PHPDBG_G(ops)) { phpdbg_print_opcodes(print_opline_func); @@ -1898,7 +1940,6 @@ phpdbg_interact: do { zend_try { if (phpdbg_startup_run) { - quit_immediately = phpdbg_startup_run > 1; phpdbg_startup_run = 0; if (quit_immediately) { PHPDBG_G(flags) = (PHPDBG_G(flags) & ~PHPDBG_HAS_PAGINATION) | PHPDBG_IS_INTERACTIVE | PHPDBG_PREVENT_INTERACTIVE; @@ -2073,6 +2114,12 @@ phpdbg_out: wrapper->wops->stream_opener = PHPDBG_G(orig_url_wrap_php); } + if (PHPDBG_G(exec) && !memcmp("-", PHPDBG_G(exec), 2)) { /* i.e. execution context has been read from stdin - back it up */ + phpdbg_file_source *data = zend_hash_str_find_ptr(&PHPDBG_G(file_sources), PHPDBG_G(exec), PHPDBG_G(exec_len)); + backup_phpdbg_compile = zend_string_alloc(data->len + 2, 1); + sprintf(ZSTR_VAL(backup_phpdbg_compile), "?>%.*s", (int) data->len, data->buf); + } + zend_try { php_module_shutdown(); } zend_end_try(); @@ -2097,6 +2144,11 @@ phpdbg_out: free(sapi_name); } + if (read_from_stdin) { + free(read_from_stdin); + read_from_stdin = NULL; + } + #ifdef ZTS tsrm_shutdown(); #endif @@ -2108,6 +2160,10 @@ phpdbg_out: goto phpdbg_main; } + if (backup_phpdbg_compile) { + zend_string_free(backup_phpdbg_compile); + } + #ifndef _WIN32 if (address) { free(address); diff --git a/sapi/phpdbg/phpdbg_bp.c b/sapi/phpdbg/phpdbg_bp.c index 4cb1dae42c6..da4c8f71bf3 100644 --- a/sapi/phpdbg/phpdbg_bp.c +++ b/sapi/phpdbg/phpdbg_bp.c @@ -230,7 +230,7 @@ PHPDBG_API void phpdbg_export_breakpoints_to_string(char **str) /* {{{ */ } } /* }}} */ -PHPDBG_API void phpdbg_set_breakpoint_file(const char *path, long line_num) /* {{{ */ +PHPDBG_API void phpdbg_set_breakpoint_file(const char *path, size_t path_len, long line_num) /* {{{ */ { php_stream_statbuf ssb; char realpath[MAXPATHLEN]; @@ -240,10 +240,11 @@ PHPDBG_API void phpdbg_set_breakpoint_file(const char *path, long line_num) /* { HashTable *broken, *file_breaks = &PHPDBG_G(bp)[PHPDBG_BREAK_FILE]; phpdbg_breakfile_t new_break; - size_t path_len = 0L; - if (VCWD_REALPATH(path, realpath)) { - path = realpath; + if (!path_len) { + if (VCWD_REALPATH(path, realpath)) { + path = realpath; + } } path_len = strlen(path); @@ -886,21 +887,13 @@ static inline phpdbg_breakbase_t *phpdbg_find_breakpoint_file(zend_op_array *op_ { HashTable *breaks; phpdbg_breakbase_t *brake; - size_t path_len; - char realpath[MAXPATHLEN]; - const char *path = ZSTR_VAL(op_array->filename); - - if (VCWD_REALPATH(path, realpath)) { - path = realpath; - } - - path_len = strlen(path); #if 0 - phpdbg_debug("Op at: %.*s %d\n", path_len, path, (*EG(opline_ptr))->lineno); + phpdbg_debug("Op at: %.*s %d\n", ZSTR_LEN(op_array->filename), ZSTR_VAL(op_array->filename), (*EG(opline_ptr))->lineno); #endif - if (!(breaks = zend_hash_str_find_ptr(&PHPDBG_G(bp)[PHPDBG_BREAK_FILE], path, path_len))) { + /* NOTE: realpath resolution should have happened at compile time - no reason to do it here again */ + if (!(breaks = zend_hash_find_ptr(&PHPDBG_G(bp)[PHPDBG_BREAK_FILE], op_array->filename))) { return NULL; } diff --git a/sapi/phpdbg/phpdbg_bp.h b/sapi/phpdbg/phpdbg_bp.h index abbcc4d5df9..7daafe48c1a 100644 --- a/sapi/phpdbg/phpdbg_bp.h +++ b/sapi/phpdbg/phpdbg_bp.h @@ -125,7 +125,7 @@ PHPDBG_API HashTable *phpdbg_resolve_pending_file_break_ex(const char *file, uin PHPDBG_API void phpdbg_resolve_pending_file_break(const char *file); /* }}} */ /* {{{ Breakpoint Creation API */ -PHPDBG_API void phpdbg_set_breakpoint_file(const char* filename, long lineno); +PHPDBG_API void phpdbg_set_breakpoint_file(const char* filename, size_t path_len, long lineno); PHPDBG_API void phpdbg_set_breakpoint_symbol(const char* func_name, size_t func_name_len); PHPDBG_API void phpdbg_set_breakpoint_method(const char* class_name, const char* func_name); PHPDBG_API void phpdbg_set_breakpoint_opcode(const char* opname, size_t opname_len); diff --git a/sapi/phpdbg/phpdbg_help.c b/sapi/phpdbg/phpdbg_help.c index a3bcbd10a1f..0943a7ea2cb 100644 --- a/sapi/phpdbg/phpdbg_help.c +++ b/sapi/phpdbg/phpdbg_help.c @@ -339,6 +339,7 @@ phpdbg_help_text_t phpdbg_help_text[] = { "**Starting and Stopping Execution**" CR " **exec** set execution context" CR +" **stdin** set executing script from stdin" CR " **run** attempt execution" CR " **step** continue execution until other line is reached" CR " **continue** continue execution" CR @@ -387,6 +388,7 @@ phpdbg_help_text_t phpdbg_help_text[] = { " **-rr** Run execution context and quit after execution (not respecting breakpoints)" CR " **-e** Generate extended information for debugger/profiler" CR " **-E** Enable step through eval, careful!" CR +" **-s** **-s=**, **-s**=foo Read code to execute from stdin with an optional delimiter" CR " **-S** **-S**cli Override SAPI name, careful!" CR " **-l** **-l**4000 Setup remote console ports" CR " **-a** **-a**192.168.0.3 Setup remote console bind address" CR @@ -397,6 +399,13 @@ phpdbg_help_text_t phpdbg_help_text[] = { " **--** **--** arg1 arg2 Use to delimit phpdbg arguments and php $argv; append any $argv " "argument after it" CR CR +"**Reading from stdin**" CR CR + +"The **-s** option allows inputting a script to execute directly from stdin. The given delimiter " +"(\"foo\" in the example) needs to be specified at the end of the input on its own line, followed by " +"a line break. If **-rr** has been specified, it is allowed to omit the delimiter (**-s=**) and " +"it will read until EOF. See also the help entry for the **stdin** command." CR CR + "**Remote Console Mode**" CR CR "This mode is enabled by specifying the **-a** option. Phpdbg will bind only to the loopback " @@ -635,6 +644,21 @@ phpdbg_help_text_t phpdbg_help_text[] = { " Set the execution context to **/tmp/script.php**" }, +{"stdin", +"The **stdin** command takes a string serving as delimiter. It will then read all the input from " +"stdin until encountering the given delimiter on a standalone line. It can also be passed at " +"startup using the **-s=** command line option (the delimiter then is optional if **-rr** is " +"also passed - in that case it will just read until EOF)." CR +"This input will be then compiled as PHP code and set as execution context." CR CR + +"**Example**" CR CR + +" $P stdin foo" CR +" file.name, strlen(param->file.name), 0); + zend_string *file; + char resolved_path_buf[MAXPATHLEN]; + const char *abspath = param->file.name; + if (VCWD_REALPATH(abspath, resolved_path_buf)) { + abspath = resolved_path_buf; + } + file = zend_string_init(abspath, strlen(abspath), 0); phpdbg_list_file(file, param->file.line, 0, 0); - efree(file); + zend_string_release(file); } break; phpdbg_default_switch_case(); @@ -127,16 +133,8 @@ void phpdbg_list_file(zend_string *filename, uint count, int offset, uint highli { uint line, lastline; phpdbg_file_source *data; - char resolved_path_buf[MAXPATHLEN]; - const char *abspath; - if (VCWD_REALPATH(ZSTR_VAL(filename), resolved_path_buf)) { - abspath = resolved_path_buf; - } else { - abspath = ZSTR_VAL(filename); - } - - if (!(data = zend_hash_str_find_ptr(&PHPDBG_G(file_sources), abspath, strlen(abspath)))) { + if (!(data = zend_hash_find_ptr(&PHPDBG_G(file_sources), filename))) { phpdbg_error("list", "type=\"unknownfile\"", "Could not find information about included file..."); return; } @@ -288,6 +286,7 @@ zend_op_array *phpdbg_compile_file(zend_file_handle *file, int type) { return NULL; } + dataptr->filename = estrdup(dataptr->filename); dataptr = erealloc(dataptr, sizeof(phpdbg_file_source) + sizeof(uint) * line); zend_hash_str_add_ptr(&PHPDBG_G(file_sources), filename, strlen(filename), dataptr); phpdbg_resolve_pending_file_break(filename); @@ -306,6 +305,17 @@ zend_op_array *phpdbg_init_compile_file(zend_file_handle *file, int type) { if (VCWD_REALPATH(filename, resolved_path_buf)) { filename = resolved_path_buf; + + if (file->opened_path) { + zend_string_release(file->opened_path); + file->opened_path = zend_string_init(filename, strlen(filename), 0); + } else { + if (file->free_filename) { + efree((char *) file->filename); + } + file->free_filename = 1; + file->filename = estrdup(filename); + } } op_array = PHPDBG_G(init_compile_file)(file, type); @@ -356,7 +366,7 @@ zend_op_array *phpdbg_compile_string(zval *source_string, char *filename) { return NULL; } - fake_name = strpprintf(0, "%s\0%p", filename, op_array->opcodes); + fake_name = strpprintf(0, "%s%c%p", filename, 0, op_array->opcodes); dataptr = erealloc(dataptr, sizeof(phpdbg_file_source) + sizeof(uint) * line); zend_hash_add_ptr(&PHPDBG_G(file_sources), fake_name, dataptr); diff --git a/sapi/phpdbg/phpdbg_prompt.c b/sapi/phpdbg/phpdbg_prompt.c index de81450eac7..367d7ef93d3 100644 --- a/sapi/phpdbg/phpdbg_prompt.c +++ b/sapi/phpdbg/phpdbg_prompt.c @@ -26,7 +26,9 @@ #include "zend_vm.h" #include "zend_generators.h" #include "zend_interfaces.h" +#include "zend_smart_str.h" #include "phpdbg.h" +#include "phpdbg_io.h" #include "phpdbg_help.h" #include "phpdbg_print.h" @@ -68,6 +70,7 @@ extern int phpdbg_startup_run; /* {{{ command declarations */ const phpdbg_command_t phpdbg_prompt_commands[] = { PHPDBG_COMMAND_D(exec, "set execution context", 'e', NULL, "s", 0), + PHPDBG_COMMAND_D(stdin, "read script from stdin", 0 , NULL, "s", 0), PHPDBG_COMMAND_D(step, "step through execution", 's', NULL, 0, PHPDBG_ASYNC_SAFE), PHPDBG_COMMAND_D(continue, "continue execution", 'c', NULL, 0, PHPDBG_ASYNC_SAFE), PHPDBG_COMMAND_D(run, "attempt execution", 'r', NULL, "|s", 0), @@ -459,6 +462,111 @@ PHPDBG_COMMAND(exec) /* {{{ */ return SUCCESS; } /* }}} */ +PHPDBG_COMMAND(stdin) +{ + smart_str code = {0}; + char *buf; + char *sep = param->str; + int seplen = param->len; + int bytes = 0; + + smart_str_appends(&code, "?>"); + + do { + PHPDBG_G(input_buflen) += bytes; + if (PHPDBG_G(input_buflen) <= 0) { + continue; + } + + if (sep && seplen) { + char *nl = buf = PHPDBG_G(input_buffer); + do { + if (buf == nl + seplen) { + if (!memcmp(sep, nl, seplen) && (*buf == '\n' || (*buf == '\r' && buf[1] == '\n'))) { + smart_str_appendl(&code, PHPDBG_G(input_buffer), nl - PHPDBG_G(input_buffer)); + memmove(PHPDBG_G(input_buffer), ++buf, --PHPDBG_G(input_buflen)); + goto exec_code; + } + } + if (*buf == '\n') { + nl = buf + 1; + } + buf++; + } while (--PHPDBG_G(input_buflen)); + if (buf != nl && buf <= nl + seplen) { + smart_str_appendl(&code, PHPDBG_G(input_buffer), nl - PHPDBG_G(input_buffer)); + PHPDBG_G(input_buflen) = buf - nl; + memmove(PHPDBG_G(input_buffer), nl, PHPDBG_G(input_buflen)); + } else { + PHPDBG_G(input_buflen) = 0; + smart_str_appendl(&code, PHPDBG_G(input_buffer), buf - PHPDBG_G(input_buffer)); + } + } else { + smart_str_appendl(&code, PHPDBG_G(input_buffer), PHPDBG_G(input_buflen)); + PHPDBG_G(input_buflen) = 0; + } + } while ((bytes = phpdbg_mixed_read(PHPDBG_G(io)[PHPDBG_STDIN].fd, PHPDBG_G(input_buffer) + PHPDBG_G(input_buflen), PHPDBG_MAX_CMD - PHPDBG_G(input_buflen), -1)) > 0); + + if (bytes < 0) { + PHPDBG_G(flags) |= PHPDBG_IS_QUITTING | PHPDBG_IS_DISCONNECTED; + zend_bailout(); + } + +exec_code: + smart_str_0(&code); + + if (phpdbg_compile_stdin(code.s) == FAILURE) { + zend_exception_error(EG(exception), E_ERROR); + zend_bailout(); + } + + return SUCCESS; +} /* }}} */ + +int phpdbg_compile_stdin(zend_string *code) { + zval zv; + + ZVAL_STR(&zv, code); + + PHPDBG_G(ops) = zend_compile_string(&zv, "-"); + + zend_string_release(code); + + if (EG(exception)) { + return FAILURE; + } + + if (PHPDBG_G(exec)) { + efree(PHPDBG_G(exec)); + } + PHPDBG_G(exec) = estrdup("-"); + PHPDBG_G(exec_len) = 1; + { /* remove leading ?> from source */ + int i; + zend_string *source_path = zend_strpprintf(0, "-%c%p", 0, PHPDBG_G(ops)->opcodes); + phpdbg_file_source *data = zend_hash_find_ptr(&PHPDBG_G(file_sources), source_path); + dtor_func_t dtor = PHPDBG_G(file_sources).pDestructor; + PHPDBG_G(file_sources).pDestructor = NULL; + zend_hash_del(&PHPDBG_G(file_sources), source_path); + PHPDBG_G(file_sources).pDestructor = dtor; + zend_hash_str_update_ptr(&PHPDBG_G(file_sources), "-", 1, data); + zend_string_release(source_path); + + efree(data->filename); + data->filename = estrdup("-"); + + for (i = 1; i <= data->lines; i++) { + data->line[i] -= 2; + } + data->len -= 2; + memmove(data->buf, data->buf + 2, data->len); + } + + phpdbg_notice("compile", "context=\"-\"", "Successful compilation of stdin input"); + + return SUCCESS; +} + int phpdbg_compile(void) /* {{{ */ { zend_file_handle fh; @@ -1066,16 +1174,21 @@ PHPDBG_COMMAND(set) /* {{{ */ PHPDBG_COMMAND(break) /* {{{ */ { if (!param) { - phpdbg_set_breakpoint_file( - zend_get_executed_filename(), - zend_get_executed_lineno()); + if (PHPDBG_G(exec)) { + phpdbg_set_breakpoint_file( + zend_get_executed_filename(), + strlen(zend_get_executed_filename()), + zend_get_executed_lineno()); + } else { + phpdbg_error("inactive", "type=\"noexec\"", "Execution context not set!"); + } } else switch (param->type) { case ADDR_PARAM: phpdbg_set_breakpoint_opline(param->addr); break; case NUMERIC_PARAM: if (PHPDBG_G(exec)) { - phpdbg_set_breakpoint_file(phpdbg_current_file(), param->num); + phpdbg_set_breakpoint_file(phpdbg_current_file(), strlen(phpdbg_current_file()), param->num); } else { phpdbg_error("inactive", "type=\"noexec\"", "Execution context not set!"); } @@ -1090,7 +1203,7 @@ PHPDBG_COMMAND(break) /* {{{ */ phpdbg_set_breakpoint_function_opline(param->str, param->num); break; case FILE_PARAM: - phpdbg_set_breakpoint_file(param->file.name, param->file.line); + phpdbg_set_breakpoint_file(param->file.name, 0, param->file.line); break; case NUMERIC_FILE_PARAM: phpdbg_set_breakpoint_file_opline(param->file.name, param->file.line); diff --git a/sapi/phpdbg/phpdbg_prompt.h b/sapi/phpdbg/phpdbg_prompt.h index e5a0286af1d..e9df7037151 100644 --- a/sapi/phpdbg/phpdbg_prompt.h +++ b/sapi/phpdbg/phpdbg_prompt.h @@ -27,11 +27,13 @@ void phpdbg_init(char *init_file, size_t init_file_len, zend_bool use_default); void phpdbg_try_file_init(char *init_file, size_t init_file_len, zend_bool free_init); int phpdbg_interactive(zend_bool allow_async_unsafe, char *input); int phpdbg_compile(void); +int phpdbg_compile_stdin(zend_string *code); void phpdbg_force_interruption(void); /* }}} */ /* {{{ phpdbg command handlers */ PHPDBG_COMMAND(exec); +PHPDBG_COMMAND(stdin); PHPDBG_COMMAND(step); PHPDBG_COMMAND(continue); PHPDBG_COMMAND(run); diff --git a/sapi/phpdbg/tests/include_once.phpt b/sapi/phpdbg/tests/include_once.phpt new file mode 100644 index 00000000000..0a00e04cde4 --- /dev/null +++ b/sapi/phpdbg/tests/include_once.phpt @@ -0,0 +1,16 @@ +--TEST-- +include_once must include only once +--PHPDBG-- +r +q +--EXPECTF-- +[Successful compilation of %s] +prompt> 1 +[Script ended normally] +prompt> +--FILE-- + [Uncaught Exception in %s on line 4: test] +>00004: throw new Exception("test"); + 00005: +prompt> EX +[Script ended normally] +prompt> +--FILE-- + [Successful compilation of stdin input] +prompt> [Breakpoint #0 added at -:3] +prompt> [Breakpoint #0 at -:3, hits: 1] +>00003: echo "Hello, world!\n"; + 00004: +prompt> Hello, world! +[Script ended normally] +prompt> [Breakpoint #0 at -:3, hits: 1] +>00003: echo "Hello, world!\n"; + 00004: +prompt> \ No newline at end of file From 2c38f70a94d49a5148c4fbddf04296d74a6b9b49 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 12 Oct 2016 20:21:27 +0200 Subject: [PATCH 26/47] fix wrong merge (cherry picked from commit 821a230f290b7457d4223001286afe00fe887277) --- Zend/zend_exceptions.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c index 4f156c0bccc..bff07cb9f1a 100644 --- a/Zend/zend_exceptions.c +++ b/Zend/zend_exceptions.c @@ -306,7 +306,7 @@ ZEND_METHOD(exception, __construct) #define CHECK_EXC_TYPE(id, type) \ pvalue = zend_read_property_ex(i_get_exception_base(object), (object), CG(known_strings)[id], 1, &value); \ if (Z_TYPE_P(pvalue) != IS_NULL && Z_TYPE_P(pvalue) != type) { \ - zend_unset_property(i_get_exception_base(object), object, ZEND_STR_PREVIOUS, sizeof(ZEND_STR_PREVIOUS)-1); \ + zend_unset_property(i_get_exception_base(object), object, "previous", sizeof("previous")-1); \ } ZEND_METHOD(exception, __wakeup) @@ -319,12 +319,11 @@ ZEND_METHOD(exception, __wakeup) CHECK_EXC_TYPE(ZEND_STR_FILE, IS_STRING); CHECK_EXC_TYPE(ZEND_STR_LINE, IS_LONG); CHECK_EXC_TYPE(ZEND_STR_TRACE, IS_ARRAY); - CHECK_EXC_TYPE(ZEND_STR_PREVIOUS, IS_OBJECT); - pvalue = zend_read_property(i_get_exception_base(object), object, ZEND_STR_PREVIOUS, sizeof(ZEND_STR_PREVIOUS)-1, 1, &value); + pvalue = zend_read_property(i_get_exception_base(object), object, "previous", sizeof("previous")-1, 1, &value); if (pvalue && Z_TYPE_P(pvalue) != IS_NULL && (Z_TYPE_P(pvalue) != IS_OBJECT || !instanceof_function(Z_OBJCE_P(pvalue), i_get_exception_base(object)) || pvalue == object)) { - zend_unset_property(i_get_exception_base(object), object, ZEND_STR_PREVIOUS, sizeof(ZEND_STR_PREVIOUS)-1); + zend_unset_property(i_get_exception_base(object), object, "previous", sizeof("previous")-1); } } /* }}} */ From 6f9c3b45580a877c793832d60e5ce0f40cdf9e0c Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 12 Oct 2016 20:52:46 +0200 Subject: [PATCH 27/47] update len in fallback cases (cherry picked from commit 58b18892bf3db0adf2a01f92adb4c907700fbbdd) --- ext/intl/locale/locale_methods.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ext/intl/locale/locale_methods.c b/ext/intl/locale/locale_methods.c index b75183da949..e35da2fd052 100644 --- a/ext/intl/locale/locale_methods.c +++ b/ext/intl/locale/locale_methods.c @@ -405,6 +405,7 @@ static void get_icu_value_src_php( char* tag_name, INTERNAL_FUNCTION_PARAMETERS) if(loc_name_len == 0) { loc_name = intl_locale_get_default(); + loc_name_len = strlen(loc_name); } INTL_CHECK_LOCALE_LEN(loc_name_len); @@ -1165,6 +1166,7 @@ PHP_FUNCTION(locale_get_all_variants) if(loc_name_len == 0) { loc_name = intl_locale_get_default(); + loc_name_len = strlen(loc_name); } INTL_CHECK_LOCALE_LEN(loc_name_len); @@ -1270,6 +1272,7 @@ PHP_FUNCTION(locale_filter_matches) if(loc_range_len == 0) { loc_range = intl_locale_get_default(); + loc_range_len = strlen(loc_range); } if( strcmp(loc_range,"*")==0){ @@ -1553,8 +1556,10 @@ PHP_FUNCTION(locale_lookup) if(loc_range_len == 0) { if(fallback_loc_str) { loc_range = ZSTR_VAL(fallback_loc_str); + loc_range_len = ZSTR_LEN(fallback_loc_str); } else { loc_range = intl_locale_get_default(); + loc_range_len = strlen(loc_range); } } From f8be3ede4fa7a1f7514c7e1dfc004031a881e660 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Wed, 28 Sep 2016 23:30:48 -0700 Subject: [PATCH 28/47] Fix bug #73189 - Memcpy negative size parameter php_resolve_path (cherry picked from commit da7e89cde880c66887caacd0a3eae7ecdacf9b2a) (cherry picked from commit c4c2cce37dd99bbcf1411ad8d6884c3c927d7bc9) --- main/fopen_wrappers.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/main/fopen_wrappers.c b/main/fopen_wrappers.c index bf78db3bdf1..b554c380398 100644 --- a/main/fopen_wrappers.c +++ b/main/fopen_wrappers.c @@ -536,7 +536,7 @@ PHPAPI zend_string *php_resolve_path(const char *filename, int filename_length, } end = strchr(p, DEFAULT_DIR_SEPARATOR); if (end) { - if ((end-ptr) + 1 + filename_length + 1 >= MAXPATHLEN) { + if (filename_length > (MAXPATHLEN - 2) || (end-ptr) > MAXPATHLEN || (end-ptr) + 1 + (size_t)filename_length + 1 >= MAXPATHLEN) { ptr = end + 1; continue; } @@ -545,9 +545,9 @@ PHPAPI zend_string *php_resolve_path(const char *filename, int filename_length, memcpy(trypath+(end-ptr)+1, filename, filename_length+1); ptr = end+1; } else { - int len = (int)strlen(ptr); + size_t len = strlen(ptr); - if (len + 1 + filename_length + 1 >= MAXPATHLEN) { + if (filename_length > (MAXPATHLEN - 2) || len > MAXPATHLEN || len + 1 + (size_t)filename_length + 1 >= MAXPATHLEN) { break; } memcpy(trypath, ptr, len); @@ -585,6 +585,7 @@ PHPAPI zend_string *php_resolve_path(const char *filename, int filename_length, while ((--exec_fname_length < SIZE_MAX) && !IS_SLASH(exec_fname[exec_fname_length])); if (exec_fname_length > 0 && + filename_length < (MAXPATHLEN - 2) && exec_fname_length + 1 + filename_length + 1 < MAXPATHLEN) { memcpy(trypath, exec_fname, exec_fname_length + 1); memcpy(trypath+exec_fname_length + 1, filename, filename_length+1); From 06df34072e8b62145e3aa2abf03430ac6c5a8a80 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Wed, 12 Oct 2016 22:16:11 +0200 Subject: [PATCH 29/47] Fix accidental PHPDBG_ABI break (cherry picked from commit 671d8054f85d2dec1a00201a73ab792847c13919) --- sapi/phpdbg/phpdbg.c | 2 +- sapi/phpdbg/phpdbg_bp.c | 7 ++++++- sapi/phpdbg/phpdbg_bp.h | 3 ++- sapi/phpdbg/phpdbg_prompt.c | 6 +++--- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/sapi/phpdbg/phpdbg.c b/sapi/phpdbg/phpdbg.c index be50de80708..f4b42733023 100644 --- a/sapi/phpdbg/phpdbg.c +++ b/sapi/phpdbg/phpdbg.c @@ -374,7 +374,7 @@ static PHP_FUNCTION(phpdbg_break_file) return; } - phpdbg_set_breakpoint_file(file, 0, line); + phpdbg_set_breakpoint_file(file, line); } /* }}} */ /* {{{ proto void phpdbg_break_method(string class, string method) */ diff --git a/sapi/phpdbg/phpdbg_bp.c b/sapi/phpdbg/phpdbg_bp.c index da4c8f71bf3..a690a77af80 100644 --- a/sapi/phpdbg/phpdbg_bp.c +++ b/sapi/phpdbg/phpdbg_bp.c @@ -230,7 +230,12 @@ PHPDBG_API void phpdbg_export_breakpoints_to_string(char **str) /* {{{ */ } } /* }}} */ -PHPDBG_API void phpdbg_set_breakpoint_file(const char *path, size_t path_len, long line_num) /* {{{ */ +PHPDBG_API void phpdbg_set_breakpoint_file(const char *path, long line_num) /* {{{ */ +{ + phpdbg_set_breakpoint_file_ex(path, 0, line_num); +} /* }}} */ + +PHPDBG_API void phpdbg_set_breakpoint_file_ex(const char *path, size_t path_len, long line_num) /* {{{ */ { php_stream_statbuf ssb; char realpath[MAXPATHLEN]; diff --git a/sapi/phpdbg/phpdbg_bp.h b/sapi/phpdbg/phpdbg_bp.h index 7daafe48c1a..b44d5ec74eb 100644 --- a/sapi/phpdbg/phpdbg_bp.h +++ b/sapi/phpdbg/phpdbg_bp.h @@ -125,7 +125,8 @@ PHPDBG_API HashTable *phpdbg_resolve_pending_file_break_ex(const char *file, uin PHPDBG_API void phpdbg_resolve_pending_file_break(const char *file); /* }}} */ /* {{{ Breakpoint Creation API */ -PHPDBG_API void phpdbg_set_breakpoint_file(const char* filename, size_t path_len, long lineno); +PHPDBG_API void phpdbg_set_breakpoint_file(const char* filename, long lineno); +PHPDBG_API void phpdbg_set_breakpoint_file_ex(const char* filename, size_t path_len, long lineno); PHPDBG_API void phpdbg_set_breakpoint_symbol(const char* func_name, size_t func_name_len); PHPDBG_API void phpdbg_set_breakpoint_method(const char* class_name, const char* func_name); PHPDBG_API void phpdbg_set_breakpoint_opcode(const char* opname, size_t opname_len); diff --git a/sapi/phpdbg/phpdbg_prompt.c b/sapi/phpdbg/phpdbg_prompt.c index 367d7ef93d3..c6115e7d004 100644 --- a/sapi/phpdbg/phpdbg_prompt.c +++ b/sapi/phpdbg/phpdbg_prompt.c @@ -1175,7 +1175,7 @@ PHPDBG_COMMAND(break) /* {{{ */ { if (!param) { if (PHPDBG_G(exec)) { - phpdbg_set_breakpoint_file( + phpdbg_set_breakpoint_file_ex( zend_get_executed_filename(), strlen(zend_get_executed_filename()), zend_get_executed_lineno()); @@ -1188,7 +1188,7 @@ PHPDBG_COMMAND(break) /* {{{ */ break; case NUMERIC_PARAM: if (PHPDBG_G(exec)) { - phpdbg_set_breakpoint_file(phpdbg_current_file(), strlen(phpdbg_current_file()), param->num); + phpdbg_set_breakpoint_file_ex(phpdbg_current_file(), strlen(phpdbg_current_file()), param->num); } else { phpdbg_error("inactive", "type=\"noexec\"", "Execution context not set!"); } @@ -1203,7 +1203,7 @@ PHPDBG_COMMAND(break) /* {{{ */ phpdbg_set_breakpoint_function_opline(param->str, param->num); break; case FILE_PARAM: - phpdbg_set_breakpoint_file(param->file.name, 0, param->file.line); + phpdbg_set_breakpoint_file(param->file.name, param->file.line); break; case NUMERIC_FILE_PARAM: phpdbg_set_breakpoint_file_opline(param->file.name, param->file.line); From 4e338817d1b459a6e7d3e4ceb88ea25fec6024ea Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 12 Oct 2016 22:18:05 +0200 Subject: [PATCH 30/47] export symbol missing by phpdbg (cherry picked from commit 611ab7fe5b9fe41de56c25b1d348a866794b1fb1) --- Zend/zend_exceptions.c | 12 ------------ Zend/zend_string.c | 12 ++++++++++++ Zend/zend_string.h | 2 ++ 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c index bff07cb9f1a..f3143b942da 100644 --- a/Zend/zend_exceptions.c +++ b/Zend/zend_exceptions.c @@ -661,18 +661,6 @@ size_t zend_spprintf(char **message, size_t max_len, const char *format, ...) /* } /* }}} */ -zend_string *zend_strpprintf(size_t max_len, const char *format, ...) /* {{{ */ -{ - va_list arg; - zend_string *str; - - va_start(arg, format); - str = zend_vstrpprintf(max_len, format, arg); - va_end(arg); - return str; -} -/* }}} */ - /* {{{ proto string Exception|Error::__toString() Obtain the string representation of the Exception object */ ZEND_METHOD(exception, __toString) diff --git a/Zend/zend_string.c b/Zend/zend_string.c index 612c8049ef8..194170db0ba 100644 --- a/Zend/zend_string.c +++ b/Zend/zend_string.c @@ -243,6 +243,18 @@ static void zend_interned_strings_restore_int(void) #endif } +ZEND_API zend_string *zend_strpprintf(size_t max_len, const char *format, ...) /* {{{ */ +{ + va_list arg; + zend_string *str; + + va_start(arg, format); + str = zend_vstrpprintf(max_len, format, arg); + va_end(arg); + return str; +} +/* }}} */ + /* * Local variables: * tab-width: 4 diff --git a/Zend/zend_string.h b/Zend/zend_string.h index 8a1ac6f506d..1bc3c863056 100644 --- a/Zend/zend_string.h +++ b/Zend/zend_string.h @@ -34,6 +34,8 @@ void zend_interned_strings_init(void); void zend_interned_strings_dtor(void); void zend_known_interned_strings_init(zend_string ***, uint32_t *); +ZEND_API zend_string *zend_strpprintf(size_t max_len, const char *format, ...); + END_EXTERN_C() /* Shortcuts */ From 0e4c1733494a948f114f1c13799d571eaedbf599 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 12 Oct 2016 22:26:28 +0200 Subject: [PATCH 31/47] Merge branch 'PHP-7.0' into PHP-7.1 (cherry picked from commit 26964ccea0f52ed4d6beda3bcfd1508f6d3dad43) --- Zend/zend_language_scanner.c | 10425 ++++++++++++++-------------- Zend/zend_language_scanner.l | 4 +- Zend/zend_language_scanner_defs.h | 2 +- 3 files changed, 5300 insertions(+), 5131 deletions(-) diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 43a542a9327..a1c8e2c129b 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 */ +/* Generated by re2c 0.16 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -585,6 +585,7 @@ static zend_op_array *zend_compile(int type) CG(ast_arena) = zend_arena_create(1024 * 32); if (!zendparse()) { + int last_lineno = CG(zend_lineno); zend_file_context original_file_context; zend_oparray_context original_oparray_context; zend_op_array *original_active_op_array = CG(active_op_array); @@ -600,9 +601,10 @@ static zend_op_array *zend_compile(int type) zend_file_context_begin(&original_file_context); zend_oparray_context_begin(&original_oparray_context); zend_compile_top_stmt(CG(ast)); + CG(zend_lineno) = last_lineno; zend_emit_final_return(type == ZEND_USER_FUNCTION); op_array->line_start = 1; - op_array->line_end = CG(zend_lineno); + op_array->line_end = last_lineno; pass_two(op_array); zend_oparray_context_end(&original_oparray_context); zend_file_context_end(&original_file_context); @@ -1106,7 +1108,7 @@ restart: SCNG(yy_text) = YYCURSOR; -#line 1110 "Zend/zend_language_scanner.c" +#line 1112 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1149,18 +1151,16 @@ restart: } /* *********************************** */ yyc_INITIAL: - - YYDEBUG(0, *YYCURSOR); + YYDEBUG(1, *YYCURSOR); YYFILL(7); yych = *YYCURSOR; - if (yych != '<') goto yy4; - YYDEBUG(2, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '?') goto yy5; -yy3: + if (yych == '<') goto yy5; YYDEBUG(3, *YYCURSOR); + ++YYCURSOR; +yy4: + YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1802 "Zend/zend_language_scanner.l" +#line 1804 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1206,24 +1206,22 @@ inline_char_handler: RETURN_TOKEN(T_INLINE_HTML); } #line 1209 "Zend/zend_language_scanner.c" -yy4: - YYDEBUG(4, *YYCURSOR); - yych = *++YYCURSOR; - goto yy3; yy5: YYDEBUG(5, *YYCURSOR); - yyaccept = 0; + yych = *++YYCURSOR; + if (yych != '?') goto yy4; + YYDEBUG(6, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'O') { - if (yych == '=') goto yy7; + if (yych == '=') goto yy8; } else { - if (yych <= 'P') goto yy9; - if (yych == 'p') goto yy9; + if (yych <= 'P') goto yy10; + if (yych == 'p') goto yy10; } -yy6: - YYDEBUG(6, *YYCURSOR); +yy7: + YYDEBUG(7, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1793 "Zend/zend_language_scanner.l" +#line 1795 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { BEGIN(ST_IN_SCRIPTING); @@ -1232,60 +1230,60 @@ yy6: goto inline_char_handler; } } -#line 1236 "Zend/zend_language_scanner.c" -yy7: - YYDEBUG(7, *YYCURSOR); - ++YYCURSOR; +#line 1234 "Zend/zend_language_scanner.c" +yy8: YYDEBUG(8, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(9, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1780 "Zend/zend_language_scanner.l" +#line 1782 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 1247 "Zend/zend_language_scanner.c" -yy9: - YYDEBUG(9, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy11; - if (yych == 'h') goto yy11; +#line 1245 "Zend/zend_language_scanner.c" yy10: YYDEBUG(10, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy6; + yych = *++YYCURSOR; + if (yych == 'H') goto yy12; + if (yych == 'h') goto yy12; yy11: YYDEBUG(11, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy12; - if (yych != 'p') goto yy10; + YYCURSOR = YYMARKER; + goto yy7; yy12: YYDEBUG(12, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '\f') { - if (yych <= 0x08) goto yy10; - if (yych >= '\v') goto yy10; - } else { - if (yych <= '\r') goto yy15; - if (yych != ' ') goto yy10; - } + if (yych == 'P') goto yy13; + if (yych != 'p') goto yy11; yy13: YYDEBUG(13, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= '\f') { + if (yych <= 0x08) goto yy11; + if (yych >= '\v') goto yy11; + } else { + if (yych <= '\r') goto yy16; + if (yych != ' ') goto yy11; + } yy14: YYDEBUG(14, *YYCURSOR); + ++YYCURSOR; +yy15: + YYDEBUG(15, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1786 "Zend/zend_language_scanner.l" +#line 1788 "Zend/zend_language_scanner.l" { HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG); } -#line 1284 "Zend/zend_language_scanner.c" -yy15: - YYDEBUG(15, *YYCURSOR); +#line 1282 "Zend/zend_language_scanner.c" +yy16: + YYDEBUG(16, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy13; - goto yy14; + if ((yych = *YYCURSOR) == '\n') goto yy14; + goto yy15; /* *********************************** */ yyc_ST_BACKQUOTE: { @@ -1323,34 +1321,21 @@ yyc_ST_BACKQUOTE: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(16, *YYCURSOR); + YYDEBUG(17, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '_') { - if (yych != '$') goto yy23; + if (yych == '$') goto yy21; } else { - if (yych <= '`') goto yy21; - if (yych == '{') goto yy20; - goto yy23; + if (yych <= '`') goto yy22; + if (yych == '{') goto yy24; } - YYDEBUG(18, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy19; - if (yych <= 'Z') goto yy26; - if (yych >= '_') goto yy26; - } else { - if (yych <= 'z') { - if (yych >= 'a') goto yy26; - } else { - if (yych <= '{') goto yy29; - if (yych >= 0x80) goto yy26; - } - } -yy19: YYDEBUG(19, *YYCURSOR); + ++YYCURSOR; +yy20: + YYDEBUG(20, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2212 "Zend/zend_language_scanner.l" +#line 2214 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1391,118 +1376,132 @@ yy19: zend_scan_escape_string(zendlval, yytext, yyleng, '`'); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 1395 "Zend/zend_language_scanner.c" -yy20: - YYDEBUG(20, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '$') goto yy24; - goto yy19; +#line 1380 "Zend/zend_language_scanner.c" yy21: YYDEBUG(21, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy20; + if (yych <= 'Z') goto yy25; + if (yych <= '^') goto yy20; + goto yy25; + } else { + if (yych <= 'z') { + if (yych <= '`') goto yy20; + goto yy25; + } else { + if (yych <= '{') goto yy28; + if (yych <= 0x7F) goto yy20; + goto yy25; + } + } +yy22: YYDEBUG(22, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(23, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2156 "Zend/zend_language_scanner.l" +#line 2158 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 1411 "Zend/zend_language_scanner.c" -yy23: - YYDEBUG(23, *YYCURSOR); - yych = *++YYCURSOR; - goto yy19; +#line 1409 "Zend/zend_language_scanner.c" yy24: YYDEBUG(24, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '$') goto yy30; + goto yy20; +yy25: YYDEBUG(25, *YYCURSOR); + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; + YYDEBUG(26, *YYCURSOR); + if (yybm[0+yych] & 128) { + goto yy25; + } + if (yych == '-') goto yy32; + if (yych <= '@') goto yy27; + if (yych <= '[') goto yy34; +yy27: + YYDEBUG(27, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2143 "Zend/zend_language_scanner.l" +#line 1869 "Zend/zend_language_scanner.l" + { + zend_copy_value(zendlval, (yytext+1), (yyleng-1)); + RETURN_TOKEN(T_VARIABLE); +} +#line 1435 "Zend/zend_language_scanner.c" +yy28: + YYDEBUG(28, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(29, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1587 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); +} +#line 1446 "Zend/zend_language_scanner.c" +yy30: + YYDEBUG(30, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(31, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2145 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (zend_long) '{'; yy_push_state(ST_IN_SCRIPTING); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 1428 "Zend/zend_language_scanner.c" -yy26: - YYDEBUG(26, *YYCURSOR); - yyaccept = 0; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(27, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy26; - } - if (yych == '-') goto yy31; - if (yych == '[') goto yy33; -yy28: - YYDEBUG(28, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1867 "Zend/zend_language_scanner.l" - { - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); -} -#line 1449 "Zend/zend_language_scanner.c" -yy29: - YYDEBUG(29, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(30, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1585 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); -} -#line 1460 "Zend/zend_language_scanner.c" -yy31: - YYDEBUG(31, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy35; +#line 1459 "Zend/zend_language_scanner.c" yy32: YYDEBUG(32, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy28; + yych = *++YYCURSOR; + if (yych == '>') goto yy36; yy33: YYDEBUG(33, *YYCURSOR); - ++YYCURSOR; + YYCURSOR = YYMARKER; + goto yy27; +yy34: YYDEBUG(34, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(35, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1860 "Zend/zend_language_scanner.l" +#line 1862 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 1481 "Zend/zend_language_scanner.c" -yy35: - YYDEBUG(35, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy32; - if (yych <= 'Z') goto yy36; - if (yych <= '^') goto yy32; - } else { - if (yych <= '`') goto yy32; - if (yych <= 'z') goto yy36; - if (yych <= 0x7F) goto yy32; - } +#line 1480 "Zend/zend_language_scanner.c" yy36: YYDEBUG(36, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy33; + if (yych <= 'Z') goto yy37; + if (yych <= '^') goto yy33; + } else { + if (yych <= '`') goto yy33; + if (yych <= 'z') goto yy37; + if (yych <= 0x7F) goto yy33; + } +yy37: YYDEBUG(37, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1851 "Zend/zend_language_scanner.l" +#line 1853 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 1506 "Zend/zend_language_scanner.c" +#line 1505 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -1541,36 +1540,21 @@ yyc_ST_DOUBLE_QUOTES: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(38, *YYCURSOR); + YYDEBUG(39, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '#') { if (yych == '"') goto yy43; - goto yy45; } else { - if (yych <= '$') goto yy40; - if (yych == '{') goto yy42; - goto yy45; + if (yych <= '$') goto yy45; + if (yych == '{') goto yy46; } -yy40: - YYDEBUG(40, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy41; - if (yych <= 'Z') goto yy48; - if (yych >= '_') goto yy48; - } else { - if (yych <= 'z') { - if (yych >= 'a') goto yy48; - } else { - if (yych <= '{') goto yy51; - if (yych >= 0x80) goto yy48; - } - } -yy41: YYDEBUG(41, *YYCURSOR); + ++YYCURSOR; +yy42: + YYDEBUG(42, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2162 "Zend/zend_language_scanner.l" +#line 2164 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1619,129 +1603,143 @@ double_quotes_scan_done: zend_scan_escape_string(zendlval, yytext, yyleng, '"'); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 1623 "Zend/zend_language_scanner.c" -yy42: - YYDEBUG(42, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '$') goto yy46; - goto yy41; +#line 1607 "Zend/zend_language_scanner.c" yy43: YYDEBUG(43, *YYCURSOR); ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2151 "Zend/zend_language_scanner.l" +#line 2153 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 1639 "Zend/zend_language_scanner.c" +#line 1618 "Zend/zend_language_scanner.c" yy45: YYDEBUG(45, *YYCURSOR); yych = *++YYCURSOR; - goto yy41; + if (yych <= '_') { + if (yych <= '@') goto yy42; + if (yych <= 'Z') goto yy47; + if (yych <= '^') goto yy42; + goto yy47; + } else { + if (yych <= 'z') { + if (yych <= '`') goto yy42; + goto yy47; + } else { + if (yych <= '{') goto yy50; + if (yych <= 0x7F) goto yy42; + goto yy47; + } + } yy46: YYDEBUG(46, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '$') goto yy52; + goto yy42; +yy47: YYDEBUG(47, *YYCURSOR); + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; + YYDEBUG(48, *YYCURSOR); + if (yybm[0+yych] & 128) { + goto yy47; + } + if (yych == '-') goto yy54; + if (yych <= '@') goto yy49; + if (yych <= '[') goto yy56; +yy49: + YYDEBUG(49, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2143 "Zend/zend_language_scanner.l" +#line 1869 "Zend/zend_language_scanner.l" + { + zend_copy_value(zendlval, (yytext+1), (yyleng-1)); + RETURN_TOKEN(T_VARIABLE); +} +#line 1662 "Zend/zend_language_scanner.c" +yy50: + YYDEBUG(50, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(51, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1587 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); +} +#line 1673 "Zend/zend_language_scanner.c" +yy52: + YYDEBUG(52, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(53, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2145 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (zend_long) '{'; yy_push_state(ST_IN_SCRIPTING); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 1656 "Zend/zend_language_scanner.c" -yy48: - YYDEBUG(48, *YYCURSOR); - yyaccept = 0; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(49, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy48; - } - if (yych == '-') goto yy53; - if (yych == '[') goto yy55; -yy50: - YYDEBUG(50, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1867 "Zend/zend_language_scanner.l" - { - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); -} -#line 1677 "Zend/zend_language_scanner.c" -yy51: - YYDEBUG(51, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(52, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1585 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); -} -#line 1688 "Zend/zend_language_scanner.c" -yy53: - YYDEBUG(53, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy57; +#line 1686 "Zend/zend_language_scanner.c" yy54: YYDEBUG(54, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy50; + yych = *++YYCURSOR; + if (yych == '>') goto yy58; yy55: YYDEBUG(55, *YYCURSOR); - ++YYCURSOR; + YYCURSOR = YYMARKER; + goto yy49; +yy56: YYDEBUG(56, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(57, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1860 "Zend/zend_language_scanner.l" +#line 1862 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 1709 "Zend/zend_language_scanner.c" -yy57: - YYDEBUG(57, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy54; - if (yych <= 'Z') goto yy58; - if (yych <= '^') goto yy54; - } else { - if (yych <= '`') goto yy54; - if (yych <= 'z') goto yy58; - if (yych <= 0x7F) goto yy54; - } +#line 1707 "Zend/zend_language_scanner.c" yy58: YYDEBUG(58, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy55; + if (yych <= 'Z') goto yy59; + if (yych <= '^') goto yy55; + } else { + if (yych <= '`') goto yy55; + if (yych <= 'z') goto yy59; + if (yych <= 0x7F) goto yy55; + } +yy59: YYDEBUG(59, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(60, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1851 "Zend/zend_language_scanner.l" +#line 1853 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 1734 "Zend/zend_language_scanner.c" +#line 1732 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: - YYDEBUG(60, *YYCURSOR); + YYDEBUG(61, *YYCURSOR); YYFILL(1); yych = *YYCURSOR; - YYDEBUG(62, *YYCURSOR); - ++YYCURSOR; YYDEBUG(63, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(64, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2129 "Zend/zend_language_scanner.l" +#line 2131 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1754,7 +1752,7 @@ yyc_ST_END_HEREDOC: BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 1758 "Zend/zend_language_scanner.c" +#line 1756 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -1792,31 +1790,17 @@ yyc_ST_HEREDOC: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(64, *YYCURSOR); + YYDEBUG(65, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; - if (yych == '$') goto yy66; - if (yych == '{') goto yy68; - goto yy69; -yy66: - YYDEBUG(66, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy67; - if (yych <= 'Z') goto yy72; - if (yych >= '_') goto yy72; - } else { - if (yych <= 'z') { - if (yych >= 'a') goto yy72; - } else { - if (yych <= '{') goto yy75; - if (yych >= 0x80) goto yy72; - } - } -yy67: + if (yych == '$') goto yy69; + if (yych == '{') goto yy70; YYDEBUG(67, *YYCURSOR); + ++YYCURSOR; +yy68: + YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2254 "Zend/zend_language_scanner.l" +#line 2256 "Zend/zend_language_scanner.l" { int newline = 0; @@ -1889,149 +1873,165 @@ heredoc_scan_done: zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 1893 "Zend/zend_language_scanner.c" -yy68: - YYDEBUG(68, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '$') goto yy70; - goto yy67; +#line 1877 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; - goto yy67; + if (yych <= '_') { + if (yych <= '@') goto yy68; + if (yych <= 'Z') goto yy71; + if (yych <= '^') goto yy68; + goto yy71; + } else { + if (yych <= 'z') { + if (yych <= '`') goto yy68; + goto yy71; + } else { + if (yych <= '{') goto yy74; + if (yych <= 0x7F) goto yy68; + goto yy71; + } + } yy70: YYDEBUG(70, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '$') goto yy76; + goto yy68; +yy71: YYDEBUG(71, *YYCURSOR); + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; + YYDEBUG(72, *YYCURSOR); + if (yybm[0+yych] & 128) { + goto yy71; + } + if (yych == '-') goto yy78; + if (yych <= '@') goto yy73; + if (yych <= '[') goto yy80; +yy73: + YYDEBUG(73, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2143 "Zend/zend_language_scanner.l" +#line 1869 "Zend/zend_language_scanner.l" + { + zend_copy_value(zendlval, (yytext+1), (yyleng-1)); + RETURN_TOKEN(T_VARIABLE); +} +#line 1921 "Zend/zend_language_scanner.c" +yy74: + YYDEBUG(74, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(75, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1587 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_LOOKING_FOR_VARNAME); + RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); +} +#line 1932 "Zend/zend_language_scanner.c" +yy76: + YYDEBUG(76, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(77, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2145 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (zend_long) '{'; yy_push_state(ST_IN_SCRIPTING); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 1915 "Zend/zend_language_scanner.c" -yy72: - YYDEBUG(72, *YYCURSOR); - yyaccept = 0; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(73, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy72; - } - if (yych == '-') goto yy77; - if (yych == '[') goto yy79; -yy74: - YYDEBUG(74, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1867 "Zend/zend_language_scanner.l" - { - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); -} -#line 1936 "Zend/zend_language_scanner.c" -yy75: - YYDEBUG(75, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(76, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1585 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); -} -#line 1947 "Zend/zend_language_scanner.c" -yy77: - YYDEBUG(77, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy81; +#line 1945 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy74; + yych = *++YYCURSOR; + if (yych == '>') goto yy82; yy79: YYDEBUG(79, *YYCURSOR); - ++YYCURSOR; + YYCURSOR = YYMARKER; + goto yy73; +yy80: YYDEBUG(80, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1860 "Zend/zend_language_scanner.l" +#line 1862 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 1968 "Zend/zend_language_scanner.c" -yy81: - YYDEBUG(81, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy78; - if (yych <= 'Z') goto yy82; - if (yych <= '^') goto yy78; - } else { - if (yych <= '`') goto yy78; - if (yych <= 'z') goto yy82; - if (yych <= 0x7F) goto yy78; - } +#line 1966 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy79; + if (yych <= 'Z') goto yy83; + if (yych <= '^') goto yy79; + } else { + if (yych <= '`') goto yy79; + if (yych <= 'z') goto yy83; + if (yych <= 0x7F) goto yy79; + } +yy83: YYDEBUG(83, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1851 "Zend/zend_language_scanner.l" +#line 1853 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 1993 "Zend/zend_language_scanner.c" +#line 1991 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: { static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, - 0, 192, 64, 0, 0, 64, 0, 0, + 0, 36, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 60, 60, 44, 44, 44, 44, 44, 44, - 44, 44, 0, 0, 0, 0, 0, 0, - 0, 36, 36, 36, 36, 36, 36, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 0, 0, 0, 0, 4, - 0, 36, 36, 36, 36, 36, 36, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 0, 0, 0, 0, 0, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, + 216, 216, 152, 152, 152, 152, 152, 152, + 152, 152, 0, 0, 0, 0, 0, 0, + 0, 144, 144, 144, 144, 144, 144, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 0, 0, 0, 0, 16, + 0, 144, 144, 144, 144, 144, 144, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 0, 0, 0, 0, 0, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, }; - YYDEBUG(84, *YYCURSOR); + YYDEBUG(85, *YYCURSOR); YYFILL(16); yych = *YYCURSOR; - YYDEBUG(-1, yych); + if (yybm[0+yych] & 4) { + goto yy89; + } switch (yych) { case 0x00: case 0x01: @@ -2042,8 +2042,11 @@ yyc_ST_IN_SCRIPTING: case 0x06: case 0x07: case 0x08: + case '\t': + case '\n': case '\v': case '\f': + case '\r': case 0x0E: case 0x0F: case 0x10: @@ -2062,32 +2065,29 @@ yyc_ST_IN_SCRIPTING: case 0x1D: case 0x1E: case 0x1F: - case 0x7F: goto yy147; - case '\t': - case '\n': - case '\r': - case ' ': goto yy103; - case '!': goto yy118; - case '"': goto yy143; - case '#': goto yy139; - case '$': goto yy129; - case '%': goto yy123; - case '&': goto yy124; - case '\'': goto yy141; - case '(': goto yy112; + case 0x7F: goto yy87; + case ' ': + case '!': goto yy92; + case '"': goto yy94; + case '#': goto yy96; + case '$': goto yy98; + case '%': goto yy99; + case '&': goto yy100; + case '\'': goto yy101; + case '(': goto yy103; case ')': case ',': case ';': case '@': case '[': case ']': - case '~': goto yy130; - case '*': goto yy121; - case '+': goto yy117; - case '-': goto yy101; + case '~': goto yy104; + case '*': goto yy105; + case '+': goto yy106; + case '-': goto yy107; case '.': goto yy108; - case '/': goto yy122; - case '0': goto yy135; + case '/': goto yy109; + case '0': goto yy110; case '1': case '2': case '3': @@ -2096,703 +2096,158 @@ yyc_ST_IN_SCRIPTING: case '6': case '7': case '8': - case '9': goto yy137; - case ':': goto yy105; - case '<': goto yy119; - case '=': goto yy115; - case '>': goto yy120; - case '?': goto yy109; + case '9': goto yy112; + case ':': goto yy114; + case '<': goto yy115; + case '=': goto yy116; + case '>': goto yy117; + case '?': goto yy118; case 'A': - case 'a': goto yy96; + case 'a': goto yy119; case 'B': - case 'b': goto yy98; + case 'b': goto yy121; case 'C': - case 'c': goto yy90; + case 'c': goto yy122; case 'D': - case 'd': goto yy88; + case 'd': goto yy123; case 'E': - case 'e': goto yy86; + case 'e': goto yy124; case 'F': - case 'f': goto yy89; + case 'f': goto yy125; case 'G': - case 'g': goto yy99; + case 'g': goto yy126; case 'I': - case 'i': goto yy94; + case 'i': goto yy129; case 'L': - case 'l': goto yy116; + case 'l': goto yy130; case 'N': - case 'n': goto yy110; + case 'n': goto yy131; case 'O': - case 'o': goto yy127; + case 'o': goto yy132; case 'P': - case 'p': goto yy100; + case 'p': goto yy133; case 'R': - case 'r': goto yy91; + case 'r': goto yy134; case 'S': - case 's': goto yy97; + case 's': goto yy135; case 'T': - case 't': goto yy93; + case 't': goto yy136; case 'U': - case 'u': goto yy113; + case 'u': goto yy137; case 'V': - case 'v': goto yy111; + case 'v': goto yy138; case 'W': - case 'w': goto yy95; + case 'w': goto yy139; case 'X': - case 'x': goto yy128; + case 'x': goto yy140; case 'Y': - case 'y': goto yy92; - case '\\': goto yy106; - case '^': goto yy126; - case '_': goto yy114; - case '`': goto yy145; - case '{': goto yy131; - case '|': goto yy125; - case '}': goto yy133; - default: goto yy138; - } -yy86: - YYDEBUG(86, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(-1, yych); - switch ((yych = *YYCURSOR)) { - case 'C': - case 'c': goto yy704; - case 'L': - case 'l': goto yy705; - case 'M': - case 'm': goto yy706; - case 'N': - case 'n': goto yy707; - case 'V': - case 'v': goto yy708; - case 'X': - case 'x': goto yy709; - default: goto yy150; + case 'y': goto yy141; + case '\\': goto yy142; + case '^': goto yy144; + case '_': goto yy145; + case '`': goto yy146; + case '{': goto yy148; + case '|': goto yy150; + case '}': goto yy151; + default: goto yy127; } yy87: YYDEBUG(87, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1890 "Zend/zend_language_scanner.l" - { - zend_copy_value(zendlval, yytext, yyleng); - RETURN_TOKEN(T_STRING); -} -#line 2182 "Zend/zend_language_scanner.c" -yy88: + ++YYCURSOR; YYDEBUG(88, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'H') { - if (yych == 'E') goto yy686; - goto yy150; - } else { - if (yych <= 'I') goto yy687; - if (yych <= 'N') goto yy150; - goto yy688; - } - } else { - if (yych <= 'h') { - if (yych == 'e') goto yy686; - goto yy150; - } else { - if (yych <= 'i') goto yy687; - if (yych == 'o') goto yy688; - goto yy150; - } - } + yyleng = YYCURSOR - SCNG(yy_text); +#line 2387 "Zend/zend_language_scanner.l" + { + if (YYCURSOR > YYLIMIT) { + RETURN_TOKEN(END); + } + + zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); + goto restart; +} +#line 2169 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= 'N') { - if (yych == 'I') goto yy662; - goto yy150; - } else { - if (yych <= 'O') goto yy663; - if (yych <= 'T') goto yy150; - goto yy664; - } - } else { - if (yych <= 'n') { - if (yych == 'i') goto yy662; - goto yy150; - } else { - if (yych <= 'o') goto yy663; - if (yych == 'u') goto yy664; - goto yy150; - } - } -yy90: - YYDEBUG(90, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'K') { - if (yych == 'A') goto yy627; - goto yy150; - } else { - if (yych <= 'L') goto yy628; - if (yych <= 'N') goto yy150; - goto yy629; - } - } else { - if (yych <= 'k') { - if (yych == 'a') goto yy627; - goto yy150; - } else { - if (yych <= 'l') goto yy628; - if (yych == 'o') goto yy629; - goto yy150; - } - } -yy91: - YYDEBUG(91, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy609; - if (yych == 'e') goto yy609; - goto yy150; -yy92: - YYDEBUG(92, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy597; - if (yych == 'i') goto yy597; - goto yy150; -yy93: - YYDEBUG(93, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych == 'H') goto yy585; - if (yych <= 'Q') goto yy150; - goto yy586; - } else { - if (yych <= 'h') { - if (yych <= 'g') goto yy150; - goto yy585; - } else { - if (yych == 'r') goto yy586; - goto yy150; - } - } -yy94: - YYDEBUG(94, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= 'L') { - if (yych == 'F') goto yy532; - goto yy150; - } else { - if (yych <= 'M') goto yy534; - if (yych <= 'N') goto yy535; - if (yych <= 'R') goto yy150; - goto yy536; - } - } else { - if (yych <= 'm') { - if (yych == 'f') goto yy532; - if (yych <= 'l') goto yy150; - goto yy534; - } else { - if (yych <= 'n') goto yy535; - if (yych == 's') goto yy536; - goto yy150; - } - } -yy95: - YYDEBUG(95, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy527; - if (yych == 'h') goto yy527; - goto yy150; -yy96: - YYDEBUG(96, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= 'M') { - if (yych == 'B') goto yy509; - goto yy150; - } else { - if (yych <= 'N') goto yy510; - if (yych <= 'Q') goto yy150; - if (yych <= 'R') goto yy511; - goto yy512; - } - } else { - if (yych <= 'n') { - if (yych == 'b') goto yy509; - if (yych <= 'm') goto yy150; - goto yy510; - } else { - if (yych <= 'q') goto yy150; - if (yych <= 'r') goto yy511; - if (yych <= 's') goto yy512; - goto yy150; - } - } -yy97: - YYDEBUG(97, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'W') { - if (yych == 'T') goto yy497; - if (yych <= 'V') goto yy150; - goto yy498; - } else { - if (yych <= 't') { - if (yych <= 's') goto yy150; - goto yy497; - } else { - if (yych == 'w') goto yy498; - goto yy150; - } - } -yy98: - YYDEBUG(98, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') { - if (yych <= '"') { - if (yych <= '!') goto yy150; - goto yy489; - } else { - if (yych == '\'') goto yy490; - goto yy150; - } - } else { - if (yych <= 'R') { - if (yych <= '<') goto yy488; - if (yych <= 'Q') goto yy150; - goto yy491; - } else { - if (yych == 'r') goto yy491; - goto yy150; - } - } -yy99: - YYDEBUG(99, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'L') goto yy478; - if (yych <= 'N') goto yy150; - goto yy479; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy150; - goto yy478; - } else { - if (yych == 'o') goto yy479; - goto yy150; - } - } -yy100: - YYDEBUG(100, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'R') goto yy454; - if (yych <= 'T') goto yy150; - goto yy455; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy150; - goto yy454; - } else { - if (yych == 'u') goto yy455; - goto yy150; - } - } -yy101: - YYDEBUG(101, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '<') { - if (yych == '-') goto yy450; - } else { - if (yych <= '=') goto yy448; - if (yych <= '>') goto yy452; - } -yy102: - YYDEBUG(102, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1574 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(yytext[0]); -} -#line 2418 "Zend/zend_language_scanner.c" -yy103: - YYDEBUG(103, *YYCURSOR); ++YYCURSOR; + YYFILL(1); yych = *YYCURSOR; - goto yy447; -yy104: - YYDEBUG(104, *YYCURSOR); + YYDEBUG(90, *YYCURSOR); + if (yybm[0+yych] & 4) { + goto yy89; + } + YYDEBUG(91, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1289 "Zend/zend_language_scanner.l" +#line 1291 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 2432 "Zend/zend_language_scanner.c" -yy105: - YYDEBUG(105, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == ':') goto yy444; - goto yy102; -yy106: - YYDEBUG(106, *YYCURSOR); +#line 2186 "Zend/zend_language_scanner.c" +yy92: + YYDEBUG(92, *YYCURSOR); ++YYCURSOR; - YYDEBUG(107, *YYCURSOR); + if ((yych = *YYCURSOR) == '=') goto yy153; +yy93: + YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1314 "Zend/zend_language_scanner.l" +#line 1576 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_NS_SEPARATOR); + RETURN_TOKEN(yytext[0]); } -#line 2447 "Zend/zend_language_scanner.c" -yy108: - YYDEBUG(108, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy441; - goto yy102; - } else { - if (yych <= '9') goto yy437; - if (yych == '=') goto yy439; - goto yy102; - } -yy109: - YYDEBUG(109, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '=') goto yy102; - if (yych <= '>') goto yy431; - if (yych <= '?') goto yy433; - goto yy102; -yy110: - YYDEBUG(110, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych == 'A') goto yy419; - if (yych <= 'D') goto yy150; - goto yy420; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy150; - goto yy419; - } else { - if (yych == 'e') goto yy420; - goto yy150; - } - } -yy111: - YYDEBUG(111, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy416; - if (yych == 'a') goto yy416; - goto yy150; -yy112: - YYDEBUG(112, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy341; - if (yych <= 0x1F) goto yy102; - goto yy341; - } else { - if (yych <= '@') goto yy102; - if (yych == 'C') goto yy102; - goto yy341; - } - } else { - if (yych <= 'I') { - if (yych == 'F') goto yy341; - if (yych <= 'H') goto yy102; - goto yy341; - } else { - if (yych == 'O') goto yy341; - if (yych <= 'Q') goto yy102; - goto yy341; - } - } - } else { - if (yych <= 'f') { - if (yych <= 'b') { - if (yych == 'U') goto yy341; - if (yych <= '`') goto yy102; - goto yy341; - } else { - if (yych == 'd') goto yy341; - if (yych <= 'e') goto yy102; - goto yy341; - } - } else { - if (yych <= 'o') { - if (yych == 'i') goto yy341; - if (yych <= 'n') goto yy102; - goto yy341; - } else { - if (yych <= 's') { - if (yych <= 'q') goto yy102; - goto yy341; - } else { - if (yych == 'u') goto yy341; - goto yy102; - } - } - } - } -yy113: - YYDEBUG(113, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych == 'N') goto yy332; - if (yych <= 'R') goto yy150; - goto yy333; - } else { - if (yych <= 'n') { - if (yych <= 'm') goto yy150; - goto yy332; - } else { - if (yych == 's') goto yy333; - goto yy150; - } - } -yy114: - YYDEBUG(114, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy250; - goto yy150; -yy115: - YYDEBUG(115, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '<') goto yy102; - if (yych <= '=') goto yy244; - if (yych <= '>') goto yy246; - goto yy102; -yy116: - YYDEBUG(116, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy240; - if (yych == 'i') goto yy240; - goto yy150; -yy117: - YYDEBUG(117, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '+') goto yy238; - if (yych == '=') goto yy236; - goto yy102; -yy118: - YYDEBUG(118, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy233; - goto yy102; -yy119: - YYDEBUG(119, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= ';') goto yy102; - if (yych <= '<') goto yy209; - if (yych <= '=') goto yy211; - if (yych <= '>') goto yy213; - goto yy102; -yy120: - YYDEBUG(120, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '<') goto yy102; - if (yych <= '=') goto yy205; - if (yych <= '>') goto yy203; - goto yy102; -yy121: - YYDEBUG(121, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '*') goto yy197; - if (yych == '=') goto yy199; - goto yy102; -yy122: - YYDEBUG(122, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '.') { - if (yych == '*') goto yy189; - goto yy102; - } else { - if (yych <= '/') goto yy191; - if (yych == '=') goto yy192; - goto yy102; - } -yy123: - YYDEBUG(123, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy187; - goto yy102; -yy124: - YYDEBUG(124, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '&') goto yy183; - if (yych == '=') goto yy185; - goto yy102; -yy125: - YYDEBUG(125, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy181; - if (yych == '|') goto yy179; - goto yy102; -yy126: - YYDEBUG(126, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy177; - goto yy102; -yy127: - YYDEBUG(127, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy175; - if (yych == 'r') goto yy175; - goto yy150; -yy128: - YYDEBUG(128, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy172; - if (yych == 'o') goto yy172; - goto yy150; -yy129: - YYDEBUG(129, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy102; - if (yych <= 'Z') goto yy169; - if (yych <= '^') goto yy102; - goto yy169; - } else { - if (yych <= '`') goto yy102; - if (yych <= 'z') goto yy169; - if (yych <= 0x7F) goto yy102; - goto yy169; - } -yy130: - YYDEBUG(130, *YYCURSOR); - yych = *++YYCURSOR; - goto yy102; -yy131: - YYDEBUG(131, *YYCURSOR); +#line 2198 "Zend/zend_language_scanner.c" +yy94: + YYDEBUG(94, *YYCURSOR); ++YYCURSOR; - YYDEBUG(132, *YYCURSOR); + YYDEBUG(95, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1579 "Zend/zend_language_scanner.l" +#line 2035 "Zend/zend_language_scanner.l" { - yy_push_state(ST_IN_SCRIPTING); - RETURN_TOKEN('{'); -} -#line 2681 "Zend/zend_language_scanner.c" -yy133: - YYDEBUG(133, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(134, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1591 "Zend/zend_language_scanner.l" - { - RESET_DOC_COMMENT(); - if (!zend_stack_is_empty(&SCNG(state_stack))) { - yy_pop_state(); + int bprefix = (yytext[0] != '"') ? 1 : 0; + + while (YYCURSOR < YYLIMIT) { + switch (*YYCURSOR++) { + case '"': + yyleng = YYCURSOR - SCNG(yy_text); + zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"'); + RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING); + case '$': + if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { + break; + } + continue; + case '{': + if (*YYCURSOR == '$') { + break; + } + continue; + case '\\': + if (YYCURSOR < YYLIMIT) { + YYCURSOR++; + } + /* fall through */ + default: + continue; + } + + YYCURSOR--; + break; } - RETURN_TOKEN('}'); + + /* Remember how much was scanned to save rescanning */ + SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng); + + YYCURSOR = SCNG(yy_text) + yyleng; + + BEGIN(ST_DOUBLE_QUOTES); + RETURN_TOKEN('"'); } -#line 2695 "Zend/zend_language_scanner.c" -yy135: - YYDEBUG(135, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'E') { - if (yych <= '9') { - if (yych == '.') goto yy151; - if (yych >= '0') goto yy154; - } else { - if (yych == 'B') goto yy162; - if (yych >= 'E') goto yy156; - } - } else { - if (yych <= 'b') { - if (yych == 'X') goto yy161; - if (yych >= 'b') goto yy162; - } else { - if (yych <= 'e') { - if (yych >= 'e') goto yy156; - } else { - if (yych == 'x') goto yy161; - } - } - } -yy136: - YYDEBUG(136, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1644 "Zend/zend_language_scanner.l" - { - char *end; - if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0)); - /* This isn't an assert, we need to ensure 019 isn't valid octal - * Because the lexing itself doesn't do that for us - */ - if (end != yytext + yyleng) { - zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0); - ZVAL_UNDEF(zendlval); - RETURN_TOKEN(T_LNUMBER); - } - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0)); - if (errno == ERANGE) { /* Overflow */ - errno = 0; - if (yytext[0] == '0') { /* octal overflow */ - errno = 0; - ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, (const char **)&end)); - } else { - ZVAL_DOUBLE(zendlval, zend_strtod(yytext, (const char **)&end)); - } - /* Also not an assert for the same reason */ - if (end != yytext + yyleng) { - zend_throw_exception(zend_ce_parse_error, - "Invalid numeric literal", 0); - ZVAL_UNDEF(zendlval); - RETURN_TOKEN(T_DNUMBER); - } - ZEND_ASSERT(!errno); - RETURN_TOKEN(T_DNUMBER); - } - /* Also not an assert for the same reason */ - if (end != yytext + yyleng) { - zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0); - ZVAL_UNDEF(zendlval); - RETURN_TOKEN(T_DNUMBER); - } - } - ZEND_ASSERT(!errno); - RETURN_TOKEN(T_LNUMBER); -} -#line 2768 "Zend/zend_language_scanner.c" -yy137: - YYDEBUG(137, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych == '.') goto yy151; - if (yych <= '/') goto yy136; - goto yy154; - } else { - if (yych <= 'E') { - if (yych <= 'D') goto yy136; - goto yy156; - } else { - if (yych == 'e') goto yy156; - goto yy136; - } - } -yy138: - YYDEBUG(138, *YYCURSOR); - yych = *++YYCURSOR; - goto yy150; -yy139: - YYDEBUG(139, *YYCURSOR); +#line 2245 "Zend/zend_language_scanner.c" +yy96: + YYDEBUG(96, *YYCURSOR); ++YYCURSOR; -yy140: - YYDEBUG(140, *YYCURSOR); + YYDEBUG(97, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1896 "Zend/zend_language_scanner.l" +#line 1898 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -2821,14 +2276,38 @@ yy140: RETURN_TOKEN(T_COMMENT); } -#line 2825 "Zend/zend_language_scanner.c" -yy141: - YYDEBUG(141, *YYCURSOR); +#line 2280 "Zend/zend_language_scanner.c" +yy98: + YYDEBUG(98, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy93; + if (yych <= 'Z') goto yy155; + if (yych <= '^') goto yy93; + goto yy155; + } else { + if (yych <= '`') goto yy93; + if (yych <= 'z') goto yy155; + if (yych <= 0x7F) goto yy93; + goto yy155; + } +yy99: + YYDEBUG(99, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '=') goto yy158; + goto yy93; +yy100: + YYDEBUG(100, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '&') goto yy160; + if (yych == '=') goto yy162; + goto yy93; +yy101: + YYDEBUG(101, *YYCURSOR); ++YYCURSOR; -yy142: - YYDEBUG(142, *YYCURSOR); + YYDEBUG(102, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1964 "Zend/zend_language_scanner.l" +#line 1966 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -2896,108 +2375,899 @@ yy142: } RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING); } -#line 2900 "Zend/zend_language_scanner.c" -yy143: - YYDEBUG(143, *YYCURSOR); +#line 2379 "Zend/zend_language_scanner.c" +yy103: + YYDEBUG(103, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'S') { + if (yych <= 'D') { + if (yych <= ' ') { + if (yych == '\t') goto yy165; + if (yych <= 0x1F) goto yy93; + goto yy165; + } else { + if (yych <= '@') goto yy93; + if (yych == 'C') goto yy93; + goto yy165; + } + } else { + if (yych <= 'I') { + if (yych == 'F') goto yy165; + if (yych <= 'H') goto yy93; + goto yy165; + } else { + if (yych == 'O') goto yy165; + if (yych <= 'Q') goto yy93; + goto yy165; + } + } + } else { + if (yych <= 'f') { + if (yych <= 'b') { + if (yych == 'U') goto yy165; + if (yych <= '`') goto yy93; + goto yy165; + } else { + if (yych == 'd') goto yy165; + if (yych <= 'e') goto yy93; + goto yy165; + } + } else { + if (yych <= 'o') { + if (yych == 'i') goto yy165; + if (yych <= 'n') goto yy93; + goto yy165; + } else { + if (yych <= 's') { + if (yych <= 'q') goto yy93; + goto yy165; + } else { + if (yych == 'u') goto yy165; + goto yy93; + } + } + } + } +yy104: + YYDEBUG(104, *YYCURSOR); + yych = *++YYCURSOR; + goto yy93; +yy105: + YYDEBUG(105, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '*') goto yy176; + if (yych == '=') goto yy178; + goto yy93; +yy106: + YYDEBUG(106, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '+') goto yy180; + if (yych == '=') goto yy182; + goto yy93; +yy107: + YYDEBUG(107, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '<') { + if (yych == '-') goto yy184; + goto yy93; + } else { + if (yych <= '=') goto yy186; + if (yych <= '>') goto yy188; + goto yy93; + } +yy108: + YYDEBUG(108, *YYCURSOR); + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy190; + goto yy93; + } else { + if (yych <= '9') goto yy191; + if (yych == '=') goto yy194; + goto yy93; + } +yy109: + YYDEBUG(109, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '.') { + if (yych == '*') goto yy196; + goto yy93; + } else { + if (yych <= '/') goto yy96; + if (yych == '=') goto yy198; + goto yy93; + } +yy110: + YYDEBUG(110, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yybm[0+yych] & 8) { + goto yy112; + } + if (yych <= 'W') { + if (yych <= 'A') { + if (yych == '.') goto yy191; + } else { + if (yych <= 'B') goto yy200; + if (yych == 'E') goto yy201; + } + } else { + if (yych <= 'd') { + if (yych <= 'X') goto yy202; + if (yych == 'b') goto yy200; + } else { + if (yych <= 'e') goto yy201; + if (yych == 'x') goto yy202; + } + } +yy111: + YYDEBUG(111, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1646 "Zend/zend_language_scanner.l" + { + char *end; + if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0)); + /* This isn't an assert, we need to ensure 019 isn't valid octal + * Because the lexing itself doesn't do that for us + */ + if (end != yytext + yyleng) { + zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0); + ZVAL_UNDEF(zendlval); + RETURN_TOKEN(T_LNUMBER); + } + } else { + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0)); + if (errno == ERANGE) { /* Overflow */ + errno = 0; + if (yytext[0] == '0') { /* octal overflow */ + errno = 0; + ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, (const char **)&end)); + } else { + ZVAL_DOUBLE(zendlval, zend_strtod(yytext, (const char **)&end)); + } + /* Also not an assert for the same reason */ + if (end != yytext + yyleng) { + zend_throw_exception(zend_ce_parse_error, + "Invalid numeric literal", 0); + ZVAL_UNDEF(zendlval); + RETURN_TOKEN(T_DNUMBER); + } + ZEND_ASSERT(!errno); + RETURN_TOKEN(T_DNUMBER); + } + /* Also not an assert for the same reason */ + if (end != yytext + yyleng) { + zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0); + ZVAL_UNDEF(zendlval); + RETURN_TOKEN(T_DNUMBER); + } + } + ZEND_ASSERT(!errno); + RETURN_TOKEN(T_LNUMBER); +} +#line 2554 "Zend/zend_language_scanner.c" +yy112: + YYDEBUG(112, *YYCURSOR); + yyaccept = 1; + YYMARKER = ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; + YYDEBUG(113, *YYCURSOR); + if (yybm[0+yych] & 8) { + goto yy112; + } + if (yych <= 'D') { + if (yych == '.') goto yy191; + goto yy111; + } else { + if (yych <= 'E') goto yy201; + if (yych == 'e') goto yy201; + goto yy111; + } +yy114: + YYDEBUG(114, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == ':') goto yy203; + goto yy93; +yy115: + YYDEBUG(115, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= ';') goto yy93; + if (yych <= '<') goto yy205; + if (yych <= '=') goto yy207; + if (yych <= '>') goto yy209; + goto yy93; +yy116: + YYDEBUG(116, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '<') goto yy93; + if (yych <= '=') goto yy210; + if (yych <= '>') goto yy212; + goto yy93; +yy117: + YYDEBUG(117, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '<') goto yy93; + if (yych <= '=') goto yy214; + if (yych <= '>') goto yy216; + goto yy93; +yy118: + YYDEBUG(118, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '=') goto yy93; + if (yych <= '>') goto yy218; + if (yych <= '?') goto yy220; + goto yy93; +yy119: + YYDEBUG(119, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) <= 'S') { + if (yych <= 'M') { + if (yych == 'B') goto yy222; + goto yy128; + } else { + if (yych <= 'N') goto yy223; + if (yych <= 'Q') goto yy128; + if (yych <= 'R') goto yy224; + goto yy225; + } + } else { + if (yych <= 'n') { + if (yych == 'b') goto yy222; + if (yych <= 'm') goto yy128; + goto yy223; + } else { + if (yych <= 'q') goto yy128; + if (yych <= 'r') goto yy224; + if (yych <= 's') goto yy225; + goto yy128; + } + } +yy120: + YYDEBUG(120, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1892 "Zend/zend_language_scanner.l" + { + zend_copy_value(zendlval, yytext, yyleng); + RETURN_TOKEN(T_STRING); +} +#line 2640 "Zend/zend_language_scanner.c" +yy121: + YYDEBUG(121, *YYCURSOR); + yyaccept = 2; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ';') { + if (yych <= '"') { + if (yych <= '!') goto yy128; + goto yy94; + } else { + if (yych == '\'') goto yy101; + goto yy128; + } + } else { + if (yych <= 'R') { + if (yych <= '<') goto yy227; + if (yych <= 'Q') goto yy128; + goto yy228; + } else { + if (yych == 'r') goto yy228; + goto yy128; + } + } +yy122: + YYDEBUG(122, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'K') { + if (yych == 'A') goto yy229; + goto yy128; + } else { + if (yych <= 'L') goto yy230; + if (yych <= 'N') goto yy128; + goto yy231; + } + } else { + if (yych <= 'k') { + if (yych == 'a') goto yy229; + goto yy128; + } else { + if (yych <= 'l') goto yy230; + if (yych == 'o') goto yy231; + goto yy128; + } + } +yy123: + YYDEBUG(123, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych <= 'H') { + if (yych == 'E') goto yy232; + goto yy128; + } else { + if (yych <= 'I') goto yy233; + if (yych <= 'N') goto yy128; + goto yy234; + } + } else { + if (yych <= 'h') { + if (yych == 'e') goto yy232; + goto yy128; + } else { + if (yych <= 'i') goto yy233; + if (yych == 'o') goto yy234; + goto yy128; + } + } +yy124: + YYDEBUG(124, *YYCURSOR); + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy236; + case 'L': + case 'l': goto yy237; + case 'M': + case 'm': goto yy238; + case 'N': + case 'n': goto yy239; + case 'V': + case 'v': goto yy240; + case 'X': + case 'x': goto yy241; + default: goto yy128; + } +yy125: + YYDEBUG(125, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych <= 'N') { + if (yych == 'I') goto yy242; + goto yy128; + } else { + if (yych <= 'O') goto yy243; + if (yych <= 'T') goto yy128; + goto yy244; + } + } else { + if (yych <= 'n') { + if (yych == 'i') goto yy242; + goto yy128; + } else { + if (yych <= 'o') goto yy243; + if (yych == 'u') goto yy244; + goto yy128; + } + } +yy126: + YYDEBUG(126, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych == 'L') goto yy245; + if (yych <= 'N') goto yy128; + goto yy246; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy128; + goto yy245; + } else { + if (yych == 'o') goto yy246; + goto yy128; + } + } +yy127: + YYDEBUG(127, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; +yy128: + YYDEBUG(128, *YYCURSOR); + if (yybm[0+yych] & 16) { + goto yy127; + } + goto yy120; +yy129: + YYDEBUG(129, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych <= 'L') { + if (yych == 'F') goto yy247; + goto yy128; + } else { + if (yych <= 'M') goto yy249; + if (yych <= 'N') goto yy250; + if (yych <= 'R') goto yy128; + goto yy251; + } + } else { + if (yych <= 'm') { + if (yych == 'f') goto yy247; + if (yych <= 'l') goto yy128; + goto yy249; + } else { + if (yych <= 'n') goto yy250; + if (yych == 's') goto yy251; + goto yy128; + } + } +yy130: + YYDEBUG(130, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy252; + if (yych == 'i') goto yy252; + goto yy128; +yy131: + YYDEBUG(131, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych == 'A') goto yy253; + if (yych <= 'D') goto yy128; + goto yy254; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy128; + goto yy253; + } else { + if (yych == 'e') goto yy254; + goto yy128; + } + } +yy132: + YYDEBUG(132, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy255; + if (yych == 'r') goto yy255; + goto yy128; +yy133: + YYDEBUG(133, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'R') goto yy257; + if (yych <= 'T') goto yy128; + goto yy258; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy128; + goto yy257; + } else { + if (yych == 'u') goto yy258; + goto yy128; + } + } +yy134: + YYDEBUG(134, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy259; + if (yych == 'e') goto yy259; + goto yy128; +yy135: + YYDEBUG(135, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'W') { + if (yych == 'T') goto yy260; + if (yych <= 'V') goto yy128; + goto yy261; + } else { + if (yych <= 't') { + if (yych <= 's') goto yy128; + goto yy260; + } else { + if (yych == 'w') goto yy261; + goto yy128; + } + } +yy136: + YYDEBUG(136, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'R') { + if (yych == 'H') goto yy262; + if (yych <= 'Q') goto yy128; + goto yy263; + } else { + if (yych <= 'h') { + if (yych <= 'g') goto yy128; + goto yy262; + } else { + if (yych == 'r') goto yy263; + goto yy128; + } + } +yy137: + YYDEBUG(137, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych == 'N') goto yy264; + if (yych <= 'R') goto yy128; + goto yy265; + } else { + if (yych <= 'n') { + if (yych <= 'm') goto yy128; + goto yy264; + } else { + if (yych == 's') goto yy265; + goto yy128; + } + } +yy138: + YYDEBUG(138, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy266; + if (yych == 'a') goto yy266; + goto yy128; +yy139: + YYDEBUG(139, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy267; + if (yych == 'h') goto yy267; + goto yy128; +yy140: + YYDEBUG(140, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy268; + if (yych == 'o') goto yy268; + goto yy128; +yy141: + YYDEBUG(141, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy269; + if (yych == 'i') goto yy269; + goto yy128; +yy142: + YYDEBUG(142, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(143, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1316 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_NS_SEPARATOR); +} +#line 2929 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2033 "Zend/zend_language_scanner.l" - { - int bprefix = (yytext[0] != '"') ? 1 : 0; - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '"': - yyleng = YYCURSOR - SCNG(yy_text); - zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"'); - RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING); - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - /* fall through */ - default: - continue; - } - - YYCURSOR--; - break; - } - - /* Remember how much was scanned to save rescanning */ - SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng); - - YYCURSOR = SCNG(yy_text) + yyleng; - - BEGIN(ST_DOUBLE_QUOTES); - RETURN_TOKEN('"'); -} -#line 2948 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '=') goto yy270; + goto yy93; yy145: YYDEBUG(145, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '_') goto yy272; + goto yy128; +yy146: YYDEBUG(146, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(147, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2123 "Zend/zend_language_scanner.l" +#line 2125 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 2959 "Zend/zend_language_scanner.c" -yy147: - YYDEBUG(147, *YYCURSOR); - ++YYCURSOR; +#line 2950 "Zend/zend_language_scanner.c" +yy148: YYDEBUG(148, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2385 "Zend/zend_language_scanner.l" - { - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - - zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); - goto restart; -} -#line 2974 "Zend/zend_language_scanner.c" -yy149: + ++YYCURSOR; YYDEBUG(149, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1581 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_IN_SCRIPTING); + RETURN_TOKEN('{'); +} +#line 2961 "Zend/zend_language_scanner.c" +yy150: + YYDEBUG(150, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '=') goto yy273; + if (yych == '|') goto yy275; + goto yy93; +yy151: + YYDEBUG(151, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(152, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1593 "Zend/zend_language_scanner.l" + { + RESET_DOC_COMMENT(); + if (!zend_stack_is_empty(&SCNG(state_stack))) { + yy_pop_state(); + } + RETURN_TOKEN('}'); +} +#line 2981 "Zend/zend_language_scanner.c" +yy153: + YYDEBUG(153, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy277; +yy154: + YYDEBUG(154, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1480 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_NOT_EQUAL); +} +#line 2993 "Zend/zend_language_scanner.c" +yy155: + YYDEBUG(155, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy150: - YYDEBUG(150, *YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy149; + YYDEBUG(156, *YYCURSOR); + if (yych <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy155; + } else { + if (yych <= '@') goto yy157; + if (yych <= 'Z') goto yy155; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy155; + } else { + if (yych <= 'z') goto yy155; + if (yych >= 0x80) goto yy155; + } } - goto yy87; -yy151: - YYDEBUG(151, *YYCURSOR); +yy157: + YYDEBUG(157, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1869 "Zend/zend_language_scanner.l" + { + zend_copy_value(zendlval, (yytext+1), (yyleng-1)); + RETURN_TOKEN(T_VARIABLE); +} +#line 3023 "Zend/zend_language_scanner.c" +yy158: + YYDEBUG(158, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(159, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1524 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_MOD_EQUAL); +} +#line 3033 "Zend/zend_language_scanner.c" +yy160: + YYDEBUG(160, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(161, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1552 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_BOOLEAN_AND); +} +#line 3043 "Zend/zend_language_scanner.c" +yy162: + YYDEBUG(162, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(163, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1536 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_AND_EQUAL); +} +#line 3053 "Zend/zend_language_scanner.c" +yy164: + YYDEBUG(164, *YYCURSOR); + ++YYCURSOR; + YYFILL(7); + yych = *YYCURSOR; +yy165: + YYDEBUG(165, *YYCURSOR); + if (yybm[0+yych] & 32) { + goto yy164; + } + switch (yych) { + case 'A': + case 'a': goto yy167; + case 'B': + case 'b': goto yy168; + case 'D': + case 'd': goto yy169; + case 'F': + case 'f': goto yy170; + case 'I': + case 'i': goto yy171; + case 'O': + case 'o': goto yy172; + case 'R': + case 'r': goto yy173; + case 'S': + case 's': goto yy174; + case 'U': + case 'u': goto yy175; + default: goto yy166; + } +yy166: + YYDEBUG(166, *YYCURSOR); + YYCURSOR = YYMARKER; + if (yyaccept <= 3) { + if (yyaccept <= 1) { + if (yyaccept == 0) { + goto yy93; + } else { + goto yy111; + } + } else { + if (yyaccept == 2) { + goto yy120; + } else { + goto yy193; + } + } + } else { + if (yyaccept <= 5) { + if (yyaccept == 4) { + goto yy197; + } else { + goto yy206; + } + } else { + goto yy541; + } + } +yy167: + YYDEBUG(167, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy279; + if (yych == 'r') goto yy279; + goto yy166; +yy168: + YYDEBUG(168, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych == 'I') goto yy280; + if (yych <= 'N') goto yy166; + goto yy281; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy166; + goto yy280; + } else { + if (yych == 'o') goto yy281; + goto yy166; + } + } +yy169: + YYDEBUG(169, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy282; + if (yych == 'o') goto yy282; + goto yy166; +yy170: + YYDEBUG(170, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy283; + if (yych == 'l') goto yy283; + goto yy166; +yy171: + YYDEBUG(171, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy284; + if (yych == 'n') goto yy284; + goto yy166; +yy172: + YYDEBUG(172, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy285; + if (yych == 'b') goto yy285; + goto yy166; +yy173: + YYDEBUG(173, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy286; + if (yych == 'e') goto yy286; + goto yy166; +yy174: + YYDEBUG(174, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy287; + if (yych == 't') goto yy287; + goto yy166; +yy175: + YYDEBUG(175, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy288; + if (yych == 'n') goto yy288; + goto yy166; +yy176: + YYDEBUG(176, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy289; + YYDEBUG(177, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1508 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_POW); +} +#line 3187 "Zend/zend_language_scanner.c" +yy178: + YYDEBUG(178, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(179, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1504 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_MUL_EQUAL); +} +#line 3197 "Zend/zend_language_scanner.c" +yy180: + YYDEBUG(180, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(181, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1460 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INC); +} +#line 3207 "Zend/zend_language_scanner.c" +yy182: + YYDEBUG(182, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(183, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1496 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PLUS_EQUAL); +} +#line 3217 "Zend/zend_language_scanner.c" +yy184: + YYDEBUG(184, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(185, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1464 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DEC); +} +#line 3227 "Zend/zend_language_scanner.c" +yy186: + YYDEBUG(186, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(187, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1500 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_MINUS_EQUAL); +} +#line 3237 "Zend/zend_language_scanner.c" +yy188: + YYDEBUG(188, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(189, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1286 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_LOOKING_FOR_PROPERTY); + RETURN_TOKEN(T_OBJECT_OPERATOR); +} +#line 3248 "Zend/zend_language_scanner.c" +yy190: + YYDEBUG(190, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '.') goto yy291; + goto yy166; +yy191: + YYDEBUG(191, *YYCURSOR); yyaccept = 3; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(152, *YYCURSOR); - if (yybm[0+yych] & 8) { - goto yy151; + YYDEBUG(192, *YYCURSOR); + if (yych <= 'D') { + if (yych <= '/') goto yy193; + if (yych <= '9') goto yy191; + } else { + if (yych <= 'E') goto yy201; + if (yych == 'e') goto yy201; } - if (yych == 'E') goto yy156; - if (yych == 'e') goto yy156; -yy153: - YYDEBUG(153, *YYCURSOR); +yy193: + YYDEBUG(193, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1738 "Zend/zend_language_scanner.l" +#line 1740 "Zend/zend_language_scanner.l" { const char *end; @@ -3006,301 +3276,26 @@ yy153: ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN(T_DNUMBER); } -#line 3010 "Zend/zend_language_scanner.c" -yy154: - YYDEBUG(154, *YYCURSOR); - yyaccept = 2; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(155, *YYCURSOR); - if (yych <= '9') { - if (yych == '.') goto yy151; - if (yych <= '/') goto yy136; - goto yy154; - } else { - if (yych <= 'E') { - if (yych <= 'D') goto yy136; - } else { - if (yych != 'e') goto yy136; - } - } -yy156: - YYDEBUG(156, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy158; - } else { - if (yych <= '-') goto yy158; - if (yych <= '/') goto yy157; - if (yych <= '9') goto yy159; - } -yy157: - YYDEBUG(157, *YYCURSOR); - YYCURSOR = YYMARKER; - if (yyaccept <= 3) { - if (yyaccept <= 1) { - if (yyaccept <= 0) { - goto yy87; - } else { - goto yy102; - } - } else { - if (yyaccept <= 2) { - goto yy136; - } else { - goto yy153; - } - } - } else { - if (yyaccept <= 5) { - if (yyaccept <= 4) { - goto yy190; - } else { - goto yy210; - } - } else { - goto yy601; - } - } -yy158: - YYDEBUG(158, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy157; - if (yych >= ':') goto yy157; -yy159: - YYDEBUG(159, *YYCURSOR); +#line 3280 "Zend/zend_language_scanner.c" +yy194: + YYDEBUG(194, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(160, *YYCURSOR); - if (yych <= '/') goto yy153; - if (yych <= '9') goto yy159; - goto yy153; -yy161: - YYDEBUG(161, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 32) { - goto yy166; - } - goto yy157; -yy162: - YYDEBUG(162, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy163; - } - goto yy157; -yy163: - YYDEBUG(163, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(164, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy163; - } - YYDEBUG(165, *YYCURSOR); + YYDEBUG(195, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1616 "Zend/zend_language_scanner.l" +#line 1520 "Zend/zend_language_scanner.l" { - char *bin = yytext + 2; /* Skip "0b" */ - int len = yyleng - 2; - char *end; - - /* Skip any leading 0s */ - while (*bin == '0') { - ++bin; - --len; - } - - if (len < SIZEOF_ZEND_LONG * 8) { - if (len == 0) { - ZVAL_LONG(zendlval, 0); - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2)); - ZEND_ASSERT(!errno && end == yytext + yyleng); - } - RETURN_TOKEN(T_LNUMBER); - } else { - ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, (const char **)&end)); - /* errno isn't checked since we allow HUGE_VAL/INF overflow */ - ZEND_ASSERT(end == yytext + yyleng); - RETURN_TOKEN(T_DNUMBER); - } + RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 3134 "Zend/zend_language_scanner.c" -yy166: - YYDEBUG(166, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(167, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy166; - } - YYDEBUG(168, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1689 "Zend/zend_language_scanner.l" - { - char *hex = yytext + 2; /* Skip "0x" */ - int len = yyleng - 2; - char *end; - - /* Skip any leading 0s */ - while (*hex == '0') { - hex++; - len--; - } - - if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) { - if (len == 0) { - ZVAL_LONG(zendlval, 0); - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16)); - ZEND_ASSERT(!errno && end == hex + len); - } - RETURN_TOKEN(T_LNUMBER); - } else { - ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, (const char **)&end)); - /* errno isn't checked since we allow HUGE_VAL/INF overflow */ - ZEND_ASSERT(end == hex + len); - RETURN_TOKEN(T_DNUMBER); - } -} -#line 3174 "Zend/zend_language_scanner.c" -yy169: - YYDEBUG(169, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(170, *YYCURSOR); - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy169; - } else { - if (yych <= '@') goto yy171; - if (yych <= 'Z') goto yy169; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy169; - } else { - if (yych <= 'z') goto yy169; - if (yych >= 0x80) goto yy169; - } - } -yy171: - YYDEBUG(171, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1867 "Zend/zend_language_scanner.l" - { - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); -} -#line 3204 "Zend/zend_language_scanner.c" -yy172: - YYDEBUG(172, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy173; - if (yych != 'r') goto yy150; -yy173: - YYDEBUG(173, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(174, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1562 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_XOR); -} -#line 3222 "Zend/zend_language_scanner.c" -yy175: - YYDEBUG(175, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(176, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1554 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_OR); -} -#line 3235 "Zend/zend_language_scanner.c" -yy177: - YYDEBUG(177, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(178, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1542 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_XOR_EQUAL); -} -#line 3245 "Zend/zend_language_scanner.c" -yy179: - YYDEBUG(179, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(180, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1546 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BOOLEAN_OR); -} -#line 3255 "Zend/zend_language_scanner.c" -yy181: - YYDEBUG(181, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(182, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1538 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_OR_EQUAL); -} -#line 3265 "Zend/zend_language_scanner.c" -yy183: - YYDEBUG(183, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(184, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1550 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BOOLEAN_AND); -} -#line 3275 "Zend/zend_language_scanner.c" -yy185: - YYDEBUG(185, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(186, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1534 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_AND_EQUAL); -} -#line 3285 "Zend/zend_language_scanner.c" -yy187: - YYDEBUG(187, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(188, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1522 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_MOD_EQUAL); -} -#line 3295 "Zend/zend_language_scanner.c" -yy189: - YYDEBUG(189, *YYCURSOR); +#line 3290 "Zend/zend_language_scanner.c" +yy196: + YYDEBUG(196, *YYCURSOR); yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '*') goto yy194; -yy190: - YYDEBUG(190, *YYCURSOR); + if (yych == '*') goto yy293; +yy197: + YYDEBUG(197, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1925 "Zend/zend_language_scanner.l" +#line 1927 "Zend/zend_language_scanner.l" { int doc_com; @@ -3333,262 +3328,1996 @@ yy190: RETURN_TOKEN(T_COMMENT); } -#line 3337 "Zend/zend_language_scanner.c" -yy191: - YYDEBUG(191, *YYCURSOR); - yych = *++YYCURSOR; - goto yy140; -yy192: - YYDEBUG(192, *YYCURSOR); +#line 3332 "Zend/zend_language_scanner.c" +yy198: + YYDEBUG(198, *YYCURSOR); ++YYCURSOR; - YYDEBUG(193, *YYCURSOR); + YYDEBUG(199, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1514 "Zend/zend_language_scanner.l" +#line 1516 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3351 "Zend/zend_language_scanner.c" -yy194: - YYDEBUG(194, *YYCURSOR); +#line 3342 "Zend/zend_language_scanner.c" +yy200: + YYDEBUG(200, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 64) { - goto yy195; + goto yy294; } - goto yy157; -yy195: - YYDEBUG(195, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(196, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy195; - } - goto yy190; -yy197: - YYDEBUG(197, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy201; - YYDEBUG(198, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1506 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_POW); -} -#line 3379 "Zend/zend_language_scanner.c" -yy199: - YYDEBUG(199, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(200, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1502 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_MUL_EQUAL); -} -#line 3389 "Zend/zend_language_scanner.c" + goto yy166; yy201: YYDEBUG(201, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych <= ',') { + if (yych == '+') goto yy297; + goto yy166; + } else { + if (yych <= '-') goto yy297; + if (yych <= '/') goto yy166; + if (yych <= '9') goto yy298; + goto yy166; + } +yy202: YYDEBUG(202, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1510 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_POW_EQUAL); -} -#line 3399 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yybm[0+yych] & 128) { + goto yy300; + } + goto yy166; yy203: YYDEBUG(203, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy207; YYDEBUG(204, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1570 "Zend/zend_language_scanner.l" +#line 1312 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_SR); + RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 3410 "Zend/zend_language_scanner.c" +#line 3378 "Zend/zend_language_scanner.c" yy205: YYDEBUG(205, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(206, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1490 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); -} -#line 3420 "Zend/zend_language_scanner.c" -yy207: - YYDEBUG(207, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(208, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1530 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SR_EQUAL); -} -#line 3430 "Zend/zend_language_scanner.c" -yy209: - YYDEBUG(209, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') goto yy210; - if (yych <= '<') goto yy219; - if (yych <= '=') goto yy217; -yy210: - YYDEBUG(210, *YYCURSOR); + if (yych <= ';') goto yy206; + if (yych <= '<') goto yy303; + if (yych <= '=') goto yy305; +yy206: + YYDEBUG(206, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1566 "Zend/zend_language_scanner.l" +#line 1568 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL); } -#line 3445 "Zend/zend_language_scanner.c" -yy211: - YYDEBUG(211, *YYCURSOR); +#line 3393 "Zend/zend_language_scanner.c" +yy207: + YYDEBUG(207, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '>') goto yy215; - YYDEBUG(212, *YYCURSOR); + if ((yych = *YYCURSOR) == '>') goto yy307; + YYDEBUG(208, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1486 "Zend/zend_language_scanner.l" +#line 1488 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3456 "Zend/zend_language_scanner.c" -yy213: - YYDEBUG(213, *YYCURSOR); +#line 3404 "Zend/zend_language_scanner.c" +yy209: + YYDEBUG(209, *YYCURSOR); + yych = *++YYCURSOR; + goto yy154; +yy210: + YYDEBUG(210, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy309; + YYDEBUG(211, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1476 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_EQUAL); +} +#line 3419 "Zend/zend_language_scanner.c" +yy212: + YYDEBUG(212, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(213, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1444 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DOUBLE_ARROW); +} +#line 3429 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1478 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_NOT_EQUAL); -} -#line 3467 "Zend/zend_language_scanner.c" -yy215: + ++YYCURSOR; YYDEBUG(215, *YYCURSOR); - ++YYCURSOR; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1492 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); +} +#line 3439 "Zend/zend_language_scanner.c" +yy216: YYDEBUG(216, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1482 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SPACESHIP); -} -#line 3477 "Zend/zend_language_scanner.c" -yy217: - YYDEBUG(217, *YYCURSOR); ++YYCURSOR; - YYDEBUG(218, *YYCURSOR); + if ((yych = *YYCURSOR) == '=') goto yy311; + YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1526 "Zend/zend_language_scanner.l" +#line 1572 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_SL_EQUAL); + RETURN_TOKEN(T_SR); } -#line 3487 "Zend/zend_language_scanner.c" +#line 3450 "Zend/zend_language_scanner.c" +yy218: + YYDEBUG(218, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '\n') goto yy313; + if (yych == '\r') goto yy314; yy219: YYDEBUG(219, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1960 "Zend/zend_language_scanner.l" + { + BEGIN(INITIAL); + RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ +} +#line 3464 "Zend/zend_language_scanner.c" +yy220: YYDEBUG(220, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy219; - } - if (yych <= 'Z') { - if (yych <= '&') { - if (yych == '"') goto yy224; - goto yy157; - } else { - if (yych <= '\'') goto yy223; - if (yych <= '@') goto yy157; - } - } else { - if (yych <= '`') { - if (yych != '_') goto yy157; - } else { - if (yych <= 'z') goto yy221; - if (yych <= 0x7F) goto yy157; - } - } -yy221: - YYDEBUG(221, *YYCURSOR); ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; + YYDEBUG(221, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1324 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_COALESCE); +} +#line 3474 "Zend/zend_language_scanner.c" +yy222: YYDEBUG(222, *YYCURSOR); - if (yych <= '@') { - if (yych <= '\f') { - if (yych == '\n') goto yy228; - goto yy157; - } else { - if (yych <= '\r') goto yy230; - if (yych <= '/') goto yy157; - if (yych <= '9') goto yy221; - goto yy157; - } - } else { - if (yych <= '_') { - if (yych <= 'Z') goto yy221; - if (yych <= '^') goto yy157; - goto yy221; - } else { - if (yych <= '`') goto yy157; - if (yych <= 'z') goto yy221; - if (yych <= 0x7F) goto yy157; - goto yy221; - } - } + yych = *++YYCURSOR; + if (yych == 'S') goto yy315; + if (yych == 's') goto yy315; + goto yy128; yy223: YYDEBUG(223, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\'') goto yy157; - if (yych <= '/') goto yy232; - if (yych <= '9') goto yy157; - goto yy232; + if (yych == 'D') goto yy316; + if (yych == 'd') goto yy316; + goto yy128; yy224: YYDEBUG(224, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '"') goto yy157; - if (yych <= '/') goto yy226; - if (yych <= '9') goto yy157; - goto yy226; + if (yych == 'R') goto yy318; + if (yych == 'r') goto yy318; + goto yy128; yy225: YYDEBUG(225, *YYCURSOR); ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; -yy226: - YYDEBUG(226, *YYCURSOR); - if (yych <= 'Z') { - if (yych <= '/') { - if (yych != '"') goto yy157; - } else { - if (yych <= '9') goto yy225; - if (yych <= '@') goto yy157; - goto yy225; - } - } else { - if (yych <= '`') { - if (yych == '_') goto yy225; - goto yy157; - } else { - if (yych <= 'z') goto yy225; - if (yych <= 0x7F) goto yy157; - goto yy225; - } + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } + YYDEBUG(226, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1226 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_AS); +} +#line 3505 "Zend/zend_language_scanner.c" yy227: YYDEBUG(227, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy228; - if (yych == '\r') goto yy230; - goto yy157; + if (yych == '<') goto yy319; + goto yy166; yy228: YYDEBUG(228, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == 'E') goto yy320; + if (yych == 'e') goto yy320; + goto yy128; yy229: YYDEBUG(229, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= 'L') { + if (yych <= 'K') goto yy128; + goto yy321; + } else { + if (yych <= 'R') goto yy128; + if (yych <= 'S') goto yy322; + goto yy323; + } + } else { + if (yych <= 'r') { + if (yych == 'l') goto yy321; + goto yy128; + } else { + if (yych <= 's') goto yy322; + if (yych <= 't') goto yy323; + goto yy128; + } + } +yy230: + YYDEBUG(230, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych == 'A') goto yy324; + if (yych <= 'N') goto yy128; + goto yy325; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy128; + goto yy324; + } else { + if (yych == 'o') goto yy325; + goto yy128; + } + } +yy231: + YYDEBUG(231, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy326; + if (yych == 'n') goto yy326; + goto yy128; +yy232: + YYDEBUG(232, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'F') { + if (yych == 'C') goto yy327; + if (yych <= 'E') goto yy128; + goto yy328; + } else { + if (yych <= 'c') { + if (yych <= 'b') goto yy128; + goto yy327; + } else { + if (yych == 'f') goto yy328; + goto yy128; + } + } +yy233: + YYDEBUG(233, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy329; + if (yych == 'e') goto yy329; + goto yy128; +yy234: + YYDEBUG(234, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(235, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2075 "Zend/zend_language_scanner.l" +#line 1194 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DO); +} +#line 3595 "Zend/zend_language_scanner.c" +yy236: + YYDEBUG(236, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy331; + if (yych == 'h') goto yy331; + goto yy128; +yy237: + YYDEBUG(237, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy332; + if (yych == 's') goto yy332; + goto yy128; +yy238: + YYDEBUG(238, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy333; + if (yych == 'p') goto yy333; + goto yy128; +yy239: + YYDEBUG(239, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy334; + if (yych == 'd') goto yy334; + goto yy128; +yy240: + YYDEBUG(240, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy335; + if (yych == 'a') goto yy335; + goto yy128; +yy241: + YYDEBUG(241, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych == 'I') goto yy336; + if (yych <= 'S') goto yy128; + goto yy337; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy128; + goto yy336; + } else { + if (yych == 't') goto yy337; + goto yy128; + } + } +yy242: + YYDEBUG(242, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy338; + if (yych == 'n') goto yy338; + goto yy128; +yy243: + YYDEBUG(243, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy339; + if (yych == 'r') goto yy339; + goto yy128; +yy244: + YYDEBUG(244, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy341; + if (yych == 'n') goto yy341; + goto yy128; +yy245: + YYDEBUG(245, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy342; + if (yych == 'o') goto yy342; + goto yy128; +yy246: + YYDEBUG(246, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy343; + if (yych == 't') goto yy343; + goto yy128; +yy247: + YYDEBUG(247, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(248, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1170 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IF); +} +#line 3684 "Zend/zend_language_scanner.c" +yy249: + YYDEBUG(249, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy344; + if (yych == 'p') goto yy344; + goto yy128; +yy250: + YYDEBUG(250, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= 'C') { + if (yych <= 'B') goto yy128; + goto yy345; + } else { + if (yych <= 'R') goto yy128; + if (yych <= 'S') goto yy346; + goto yy347; + } + } else { + if (yych <= 'r') { + if (yych == 'c') goto yy345; + goto yy128; + } else { + if (yych <= 's') goto yy346; + if (yych <= 't') goto yy347; + goto yy128; + } + } +yy251: + YYDEBUG(251, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy348; + if (yych == 's') goto yy348; + goto yy128; +yy252: + YYDEBUG(252, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy349; + if (yych == 's') goto yy349; + goto yy128; +yy253: + YYDEBUG(253, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy350; + if (yych == 'm') goto yy350; + goto yy128; +yy254: + YYDEBUG(254, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy351; + if (yych == 'w') goto yy351; + goto yy128; +yy255: + YYDEBUG(255, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(256, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1556 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LOGICAL_OR); +} +#line 3749 "Zend/zend_language_scanner.c" +yy257: + YYDEBUG(257, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'O') { + if (yych == 'I') goto yy353; + if (yych <= 'N') goto yy128; + goto yy354; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy128; + goto yy353; + } else { + if (yych == 'o') goto yy354; + goto yy128; + } + } +yy258: + YYDEBUG(258, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy355; + if (yych == 'b') goto yy355; + goto yy128; +yy259: + YYDEBUG(259, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych == 'Q') goto yy356; + if (yych <= 'S') goto yy128; + goto yy357; + } else { + if (yych <= 'q') { + if (yych <= 'p') goto yy128; + goto yy356; + } else { + if (yych == 't') goto yy357; + goto yy128; + } + } +yy260: + YYDEBUG(260, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy358; + if (yych == 'a') goto yy358; + goto yy128; +yy261: + YYDEBUG(261, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy359; + if (yych == 'i') goto yy359; + goto yy128; +yy262: + YYDEBUG(262, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy360; + if (yych == 'r') goto yy360; + goto yy128; +yy263: + YYDEBUG(263, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych == 'A') goto yy361; + if (yych <= 'X') goto yy128; + goto yy362; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy128; + goto yy361; + } else { + if (yych == 'y') goto yy362; + goto yy128; + } + } +yy264: + YYDEBUG(264, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy364; + if (yych == 's') goto yy364; + goto yy128; +yy265: + YYDEBUG(265, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy365; + if (yych == 'e') goto yy365; + goto yy128; +yy266: + YYDEBUG(266, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy367; + if (yych == 'r') goto yy367; + goto yy128; +yy267: + YYDEBUG(267, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy369; + if (yych == 'i') goto yy369; + goto yy128; +yy268: + YYDEBUG(268, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy370; + if (yych == 'r') goto yy370; + goto yy128; +yy269: + YYDEBUG(269, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy372; + if (yych == 'e') goto yy372; + goto yy128; +yy270: + YYDEBUG(270, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(271, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1544 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_XOR_EQUAL); +} +#line 3867 "Zend/zend_language_scanner.c" +yy272: + YYDEBUG(272, *YYCURSOR); + yych = *++YYCURSOR; + switch (yych) { + case 'C': + case 'c': goto yy373; + case 'D': + case 'd': goto yy374; + case 'F': + case 'f': goto yy375; + case 'H': + case 'h': goto yy376; + case 'L': + case 'l': goto yy377; + case 'M': + case 'm': goto yy378; + case 'N': + case 'n': goto yy379; + case 'T': + case 't': goto yy380; + default: goto yy128; + } +yy273: + YYDEBUG(273, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(274, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1540 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_OR_EQUAL); +} +#line 3899 "Zend/zend_language_scanner.c" +yy275: + YYDEBUG(275, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(276, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1548 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_BOOLEAN_OR); +} +#line 3909 "Zend/zend_language_scanner.c" +yy277: + YYDEBUG(277, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(278, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1472 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_NOT_IDENTICAL); +} +#line 3919 "Zend/zend_language_scanner.c" +yy279: + YYDEBUG(279, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy381; + if (yych == 'r') goto yy381; + goto yy166; +yy280: + YYDEBUG(280, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy382; + if (yych == 'n') goto yy382; + goto yy166; +yy281: + YYDEBUG(281, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy383; + if (yych == 'o') goto yy383; + goto yy166; +yy282: + YYDEBUG(282, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy384; + if (yych == 'u') goto yy384; + goto yy166; +yy283: + YYDEBUG(283, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy385; + if (yych == 'o') goto yy385; + goto yy166; +yy284: + YYDEBUG(284, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy386; + if (yych == 't') goto yy386; + goto yy166; +yy285: + YYDEBUG(285, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'J') goto yy387; + if (yych == 'j') goto yy387; + goto yy166; +yy286: + YYDEBUG(286, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy388; + if (yych == 'a') goto yy388; + goto yy166; +yy287: + YYDEBUG(287, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy389; + if (yych == 'r') goto yy389; + goto yy166; +yy288: + YYDEBUG(288, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy390; + if (yych == 's') goto yy390; + goto yy166; +yy289: + YYDEBUG(289, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(290, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1512 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_POW_EQUAL); +} +#line 3989 "Zend/zend_language_scanner.c" +yy291: + YYDEBUG(291, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(292, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1320 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ELLIPSIS); +} +#line 3999 "Zend/zend_language_scanner.c" +yy293: + YYDEBUG(293, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '\f') { + if (yych <= 0x08) goto yy166; + if (yych <= '\n') goto yy391; + goto yy166; + } else { + if (yych <= '\r') goto yy391; + if (yych == ' ') goto yy391; + goto yy166; + } +yy294: + YYDEBUG(294, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(295, *YYCURSOR); + if (yybm[0+yych] & 64) { + goto yy294; + } + YYDEBUG(296, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1618 "Zend/zend_language_scanner.l" + { + char *bin = yytext + 2; /* Skip "0b" */ + int len = yyleng - 2; + char *end; + + /* Skip any leading 0s */ + while (*bin == '0') { + ++bin; + --len; + } + + if (len < SIZEOF_ZEND_LONG * 8) { + if (len == 0) { + ZVAL_LONG(zendlval, 0); + } else { + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2)); + ZEND_ASSERT(!errno && end == yytext + yyleng); + } + RETURN_TOKEN(T_LNUMBER); + } else { + ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, (const char **)&end)); + /* errno isn't checked since we allow HUGE_VAL/INF overflow */ + ZEND_ASSERT(end == yytext + yyleng); + RETURN_TOKEN(T_DNUMBER); + } +} +#line 4051 "Zend/zend_language_scanner.c" +yy297: + YYDEBUG(297, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy166; + if (yych >= ':') goto yy166; +yy298: + YYDEBUG(298, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(299, *YYCURSOR); + if (yych <= '/') goto yy193; + if (yych <= '9') goto yy298; + goto yy193; +yy300: + YYDEBUG(300, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(301, *YYCURSOR); + if (yybm[0+yych] & 128) { + goto yy300; + } + YYDEBUG(302, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1691 "Zend/zend_language_scanner.l" + { + char *hex = yytext + 2; /* Skip "0x" */ + int len = yyleng - 2; + char *end; + + /* Skip any leading 0s */ + while (*hex == '0') { + hex++; + len--; + } + + if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) { + if (len == 0) { + ZVAL_LONG(zendlval, 0); + } else { + errno = 0; + ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16)); + ZEND_ASSERT(!errno && end == hex + len); + } + RETURN_TOKEN(T_LNUMBER); + } else { + ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, (const char **)&end)); + /* errno isn't checked since we allow HUGE_VAL/INF overflow */ + ZEND_ASSERT(end == hex + len); + RETURN_TOKEN(T_DNUMBER); + } +} +#line 4105 "Zend/zend_language_scanner.c" +yy303: + YYDEBUG(303, *YYCURSOR); + ++YYCURSOR; + YYFILL(2); + yych = *YYCURSOR; + YYDEBUG(304, *YYCURSOR); + if (yych <= '\'') { + if (yych <= ' ') { + if (yych == '\t') goto yy303; + if (yych <= 0x1F) goto yy166; + goto yy303; + } else { + if (yych == '"') goto yy393; + if (yych <= '&') goto yy166; + goto yy394; + } + } else { + if (yych <= '_') { + if (yych <= '@') goto yy166; + if (yych <= 'Z') goto yy395; + if (yych <= '^') goto yy166; + goto yy395; + } else { + if (yych <= '`') goto yy166; + if (yych <= 'z') goto yy395; + if (yych <= 0x7F) goto yy166; + goto yy395; + } + } +yy305: + YYDEBUG(305, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(306, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1528 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SL_EQUAL); +} +#line 4144 "Zend/zend_language_scanner.c" +yy307: + YYDEBUG(307, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(308, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1484 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SPACESHIP); +} +#line 4154 "Zend/zend_language_scanner.c" +yy309: + YYDEBUG(309, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(310, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1468 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IS_IDENTICAL); +} +#line 4164 "Zend/zend_language_scanner.c" +yy311: + YYDEBUG(311, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(312, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1532 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SR_EQUAL); +} +#line 4174 "Zend/zend_language_scanner.c" +yy313: + YYDEBUG(313, *YYCURSOR); + yych = *++YYCURSOR; + goto yy219; +yy314: + YYDEBUG(314, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy313; + goto yy219; +yy315: + YYDEBUG(315, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy397; + if (yych == 't') goto yy397; + goto yy128; +yy316: + YYDEBUG(316, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(317, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1560 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LOGICAL_AND); +} +#line 4202 "Zend/zend_language_scanner.c" +yy318: + YYDEBUG(318, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy398; + if (yych == 'a') goto yy398; + goto yy128; +yy319: + YYDEBUG(319, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '<') goto yy303; + goto yy166; +yy320: + YYDEBUG(320, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy399; + if (yych == 'a') goto yy399; + goto yy128; +yy321: + YYDEBUG(321, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy400; + if (yych == 'l') goto yy400; + goto yy128; +yy322: + YYDEBUG(322, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy401; + if (yych == 'e') goto yy401; + goto yy128; +yy323: + YYDEBUG(323, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy403; + if (yych == 'c') goto yy403; + goto yy128; +yy324: + YYDEBUG(324, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy404; + if (yych == 's') goto yy404; + goto yy128; +yy325: + YYDEBUG(325, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy405; + if (yych == 'n') goto yy405; + goto yy128; +yy326: + YYDEBUG(326, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'T') { + if (yych <= 'R') goto yy128; + if (yych <= 'S') goto yy406; + goto yy407; + } else { + if (yych <= 'r') goto yy128; + if (yych <= 's') goto yy406; + if (yych <= 't') goto yy407; + goto yy128; + } +yy327: + YYDEBUG(327, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy408; + if (yych == 'l') goto yy408; + goto yy128; +yy328: + YYDEBUG(328, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy409; + if (yych == 'a') goto yy409; + goto yy128; +yy329: + YYDEBUG(329, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(330, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1129 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_EXIT); +} +#line 4287 "Zend/zend_language_scanner.c" +yy331: + YYDEBUG(331, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy410; + if (yych == 'o') goto yy410; + goto yy128; +yy332: + YYDEBUG(332, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy412; + if (yych == 'e') goto yy412; + goto yy128; +yy333: + YYDEBUG(333, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy414; + if (yych == 't') goto yy414; + goto yy128; +yy334: + YYDEBUG(334, *YYCURSOR); + yych = *++YYCURSOR; + switch (yych) { + case 'D': + case 'd': goto yy415; + case 'F': + case 'f': goto yy416; + case 'I': + case 'i': goto yy417; + case 'S': + case 's': goto yy418; + case 'W': + case 'w': goto yy419; + default: goto yy128; + } +yy335: + YYDEBUG(335, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy420; + if (yych == 'l') goto yy420; + goto yy128; +yy336: + YYDEBUG(336, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy422; + if (yych == 't') goto yy422; + goto yy128; +yy337: + YYDEBUG(337, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy424; + if (yych == 'e') goto yy424; + goto yy128; +yy338: + YYDEBUG(338, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy425; + if (yych == 'a') goto yy425; + goto yy128; +yy339: + YYDEBUG(339, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy340; + if (yych <= '9') goto yy127; + } else { + if (yych == 'E') goto yy426; + if (yych <= 'Z') goto yy127; + } + } else { + if (yych <= 'd') { + if (yych != '`') goto yy127; + } else { + if (yych <= 'e') goto yy426; + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; + } + } +yy340: + YYDEBUG(340, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1198 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FOR); +} +#line 4373 "Zend/zend_language_scanner.c" +yy341: + YYDEBUG(341, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy427; + if (yych == 'c') goto yy427; + goto yy128; +yy342: + YYDEBUG(342, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy428; + if (yych == 'b') goto yy428; + goto yy128; +yy343: + YYDEBUG(343, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy429; + if (yych == 'o') goto yy429; + goto yy128; +yy344: + YYDEBUG(344, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy431; + if (yych == 'l') goto yy431; + goto yy128; +yy345: + YYDEBUG(345, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy432; + if (yych == 'l') goto yy432; + goto yy128; +yy346: + YYDEBUG(346, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy433; + if (yych == 't') goto yy433; + goto yy128; +yy347: + YYDEBUG(347, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy434; + if (yych == 'e') goto yy434; + goto yy128; +yy348: + YYDEBUG(348, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy435; + if (yych == 'e') goto yy435; + goto yy128; +yy349: + YYDEBUG(349, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy436; + if (yych == 't') goto yy436; + goto yy128; +yy350: + YYDEBUG(350, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy438; + if (yych == 'e') goto yy438; + goto yy128; +yy351: + YYDEBUG(351, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(352, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1328 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_NEW); +} +#line 4446 "Zend/zend_language_scanner.c" +yy353: + YYDEBUG(353, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'V') { + if (yych == 'N') goto yy439; + if (yych <= 'U') goto yy128; + goto yy440; + } else { + if (yych <= 'n') { + if (yych <= 'm') goto yy128; + goto yy439; + } else { + if (yych == 'v') goto yy440; + goto yy128; + } + } +yy354: + YYDEBUG(354, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy441; + if (yych == 't') goto yy441; + goto yy128; +yy355: + YYDEBUG(355, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy442; + if (yych == 'l') goto yy442; + goto yy128; +yy356: + YYDEBUG(356, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy443; + if (yych == 'u') goto yy443; + goto yy128; +yy357: + YYDEBUG(357, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy444; + if (yych == 'u') goto yy444; + goto yy128; +yy358: + YYDEBUG(358, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy445; + if (yych == 't') goto yy445; + goto yy128; +yy359: + YYDEBUG(359, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy446; + if (yych == 't') goto yy446; + goto yy128; +yy360: + YYDEBUG(360, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy447; + if (yych == 'o') goto yy447; + goto yy128; +yy361: + YYDEBUG(361, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy448; + if (yych == 'i') goto yy448; + goto yy128; +yy362: + YYDEBUG(362, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(363, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1154 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_TRY); +} +#line 4523 "Zend/zend_language_scanner.c" +yy364: + YYDEBUG(364, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy449; + if (yych == 'e') goto yy449; + goto yy128; +yy365: + YYDEBUG(365, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(366, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1392 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_USE); +} +#line 4542 "Zend/zend_language_scanner.c" +yy367: + YYDEBUG(367, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(368, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1336 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_VAR); +} +#line 4555 "Zend/zend_language_scanner.c" +yy369: + YYDEBUG(369, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy450; + if (yych == 'l') goto yy450; + goto yy128; +yy370: + YYDEBUG(370, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(371, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1564 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LOGICAL_XOR); +} +#line 4574 "Zend/zend_language_scanner.c" +yy372: + YYDEBUG(372, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy451; + if (yych == 'l') goto yy451; + goto yy128; +yy373: + YYDEBUG(373, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy452; + if (yych == 'l') goto yy452; + goto yy128; +yy374: + YYDEBUG(374, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy453; + if (yych == 'i') goto yy453; + goto yy128; +yy375: + YYDEBUG(375, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'I') goto yy454; + if (yych <= 'T') goto yy128; + goto yy455; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy128; + goto yy454; + } else { + if (yych == 'u') goto yy455; + goto yy128; + } + } +yy376: + YYDEBUG(376, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy456; + if (yych == 'a') goto yy456; + goto yy128; +yy377: + YYDEBUG(377, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy457; + if (yych == 'i') goto yy457; + goto yy128; +yy378: + YYDEBUG(378, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy458; + if (yych == 'e') goto yy458; + goto yy128; +yy379: + YYDEBUG(379, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy459; + if (yych == 'a') goto yy459; + goto yy128; +yy380: + YYDEBUG(380, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy460; + if (yych == 'r') goto yy460; + goto yy128; +yy381: + YYDEBUG(381, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy461; + if (yych == 'a') goto yy461; + goto yy166; +yy382: + YYDEBUG(382, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy462; + if (yych == 'a') goto yy462; + goto yy166; +yy383: + YYDEBUG(383, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy463; + if (yych == 'l') goto yy463; + goto yy166; +yy384: + YYDEBUG(384, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy464; + if (yych == 'b') goto yy464; + goto yy166; +yy385: + YYDEBUG(385, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy465; + if (yych == 'a') goto yy465; + goto yy166; +yy386: + YYDEBUG(386, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy470; + if (yych == 'e') goto yy470; + goto yy467; +yy387: + YYDEBUG(387, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy471; + if (yych == 'e') goto yy471; + goto yy166; +yy388: + YYDEBUG(388, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy472; + if (yych == 'l') goto yy472; + goto yy166; +yy389: + YYDEBUG(389, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy474; + if (yych == 'i') goto yy474; + goto yy166; +yy390: + YYDEBUG(390, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy475; + if (yych == 'e') goto yy475; + goto yy166; +yy391: + YYDEBUG(391, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(392, *YYCURSOR); + if (yych <= '\f') { + if (yych <= 0x08) goto yy197; + if (yych <= '\n') goto yy391; + goto yy197; + } else { + if (yych <= '\r') goto yy391; + if (yych == ' ') goto yy391; + goto yy197; + } +yy393: + YYDEBUG(393, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '"') goto yy166; + if (yych <= '/') goto yy477; + if (yych <= '9') goto yy166; + goto yy477; +yy394: + YYDEBUG(394, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\'') goto yy166; + if (yych <= '/') goto yy479; + if (yych <= '9') goto yy166; + goto yy479; +yy395: + YYDEBUG(395, *YYCURSOR); + ++YYCURSOR; + YYFILL(2); + yych = *YYCURSOR; + YYDEBUG(396, *YYCURSOR); + if (yych <= '@') { + if (yych <= '\f') { + if (yych == '\n') goto yy480; + goto yy166; + } else { + if (yych <= '\r') goto yy482; + if (yych <= '/') goto yy166; + if (yych <= '9') goto yy395; + goto yy166; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy395; + if (yych <= '^') goto yy166; + goto yy395; + } else { + if (yych <= '`') goto yy166; + if (yych <= 'z') goto yy395; + if (yych <= 0x7F) goto yy166; + goto yy395; + } + } +yy397: + YYDEBUG(397, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy483; + if (yych == 'r') goto yy483; + goto yy128; +yy398: + YYDEBUG(398, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy484; + if (yych == 'y') goto yy484; + goto yy128; +yy399: + YYDEBUG(399, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'K') goto yy486; + if (yych == 'k') goto yy486; + goto yy128; +yy400: + YYDEBUG(400, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy488; + if (yych == 'a') goto yy488; + goto yy128; +yy401: + YYDEBUG(401, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(402, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1238 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CASE); +} +#line 4792 "Zend/zend_language_scanner.c" +yy403: + YYDEBUG(403, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy489; + if (yych == 'h') goto yy489; + goto yy128; +yy404: + YYDEBUG(404, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy491; + if (yych == 's') goto yy491; + goto yy128; +yy405: + YYDEBUG(405, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy493; + if (yych == 'e') goto yy493; + goto yy128; +yy406: + YYDEBUG(406, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy495; + if (yych == 't') goto yy495; + goto yy128; +yy407: + YYDEBUG(407, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy497; + if (yych == 'i') goto yy497; + goto yy128; +yy408: + YYDEBUG(408, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy498; + if (yych == 'a') goto yy498; + goto yy128; +yy409: + YYDEBUG(409, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy499; + if (yych == 'u') goto yy499; + goto yy128; +yy410: + YYDEBUG(410, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(411, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1258 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ECHO); +} +#line 4847 "Zend/zend_language_scanner.c" +yy412: + YYDEBUG(412, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy413; + if (yych <= '9') goto yy127; + } else { + if (yych == 'I') goto yy500; + if (yych <= 'Z') goto yy127; + } + } else { + if (yych <= 'h') { + if (yych != '`') goto yy127; + } else { + if (yych <= 'i') goto yy500; + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; + } + } +yy413: + YYDEBUG(413, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1182 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ELSE); +} +#line 4875 "Zend/zend_language_scanner.c" +yy414: + YYDEBUG(414, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy501; + if (yych == 'y') goto yy501; + goto yy128; +yy415: + YYDEBUG(415, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy503; + if (yych == 'e') goto yy503; + goto yy128; +yy416: + YYDEBUG(416, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy504; + if (yych == 'o') goto yy504; + goto yy128; +yy417: + YYDEBUG(417, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'F') goto yy505; + if (yych == 'f') goto yy505; + goto yy128; +yy418: + YYDEBUG(418, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy507; + if (yych == 'w') goto yy507; + goto yy128; +yy419: + YYDEBUG(419, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy508; + if (yych == 'h') goto yy508; + goto yy128; +yy420: + YYDEBUG(420, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(421, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1368 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_EVAL); +} +#line 4924 "Zend/zend_language_scanner.c" +yy422: + YYDEBUG(422, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(423, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1125 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_EXIT); +} +#line 4937 "Zend/zend_language_scanner.c" +yy424: + YYDEBUG(424, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy509; + if (yych == 'n') goto yy509; + goto yy128; +yy425: + YYDEBUG(425, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy510; + if (yych == 'l') goto yy510; + goto yy128; +yy426: + YYDEBUG(426, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy512; + if (yych == 'a') goto yy512; + goto yy128; +yy427: + YYDEBUG(427, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy513; + if (yych == 't') goto yy513; + goto yy128; +yy428: + YYDEBUG(428, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy514; + if (yych == 'a') goto yy514; + goto yy128; +yy429: + YYDEBUG(429, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(430, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1254 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_GOTO); +} +#line 4980 "Zend/zend_language_scanner.c" +yy431: + YYDEBUG(431, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy515; + if (yych == 'e') goto yy515; + goto yy128; +yy432: + YYDEBUG(432, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy516; + if (yych == 'u') goto yy516; + goto yy128; +yy433: + YYDEBUG(433, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= 'E') { + if (yych == 'A') goto yy517; + if (yych <= 'D') goto yy128; + goto yy518; + } else { + if (yych <= 'a') { + if (yych <= '`') goto yy128; + goto yy517; + } else { + if (yych == 'e') goto yy518; + goto yy128; + } + } +yy434: + YYDEBUG(434, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy519; + if (yych == 'r') goto yy519; + goto yy128; +yy435: + YYDEBUG(435, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy520; + if (yych == 't') goto yy520; + goto yy128; +yy436: + YYDEBUG(436, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(437, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1448 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LIST); +} +#line 5033 "Zend/zend_language_scanner.c" +yy438: + YYDEBUG(438, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy522; + if (yych == 's') goto yy522; + goto yy128; +yy439: + YYDEBUG(439, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy523; + if (yych == 't') goto yy523; + goto yy128; +yy440: + YYDEBUG(440, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy525; + if (yych == 'a') goto yy525; + goto yy128; +yy441: + YYDEBUG(441, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy526; + if (yych == 'e') goto yy526; + goto yy128; +yy442: + YYDEBUG(442, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy527; + if (yych == 'i') goto yy527; + goto yy128; +yy443: + YYDEBUG(443, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy528; + if (yych == 'i') goto yy528; + goto yy128; +yy444: + YYDEBUG(444, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy529; + if (yych == 'r') goto yy529; + goto yy128; +yy445: + YYDEBUG(445, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy530; + if (yych == 'i') goto yy530; + goto yy128; +yy446: + YYDEBUG(446, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy531; + if (yych == 'c') goto yy531; + goto yy128; +yy447: + YYDEBUG(447, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy532; + if (yych == 'w') goto yy532; + goto yy128; +yy448: + YYDEBUG(448, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy534; + if (yych == 't') goto yy534; + goto yy128; +yy449: + YYDEBUG(449, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy536; + if (yych == 't') goto yy536; + goto yy128; +yy450: + YYDEBUG(450, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy538; + if (yych == 'e') goto yy538; + goto yy128; +yy451: + YYDEBUG(451, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy540; + if (yych == 'd') goto yy540; + goto yy128; +yy452: + YYDEBUG(452, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy542; + if (yych == 'a') goto yy542; + goto yy128; +yy453: + YYDEBUG(453, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy543; + if (yych == 'r') goto yy543; + goto yy128; +yy454: + YYDEBUG(454, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy544; + if (yych == 'l') goto yy544; + goto yy128; +yy455: + YYDEBUG(455, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy545; + if (yych == 'n') goto yy545; + goto yy128; +yy456: + YYDEBUG(456, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy546; + if (yych == 'l') goto yy546; + goto yy128; +yy457: + YYDEBUG(457, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy547; + if (yych == 'n') goto yy547; + goto yy128; +yy458: + YYDEBUG(458, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy548; + if (yych == 't') goto yy548; + goto yy128; +yy459: + YYDEBUG(459, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy549; + if (yych == 'm') goto yy549; + goto yy128; +yy460: + YYDEBUG(460, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy550; + if (yych == 'a') goto yy550; + goto yy128; +yy461: + YYDEBUG(461, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy551; + if (yych == 'y') goto yy551; + goto yy166; +yy462: + YYDEBUG(462, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy553; + if (yych == 'r') goto yy553; + goto yy166; +yy463: + YYDEBUG(463, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy558; + if (yych == 'e') goto yy558; + goto yy555; +yy464: + YYDEBUG(464, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy559; + if (yych == 'l') goto yy559; + goto yy166; +yy465: + YYDEBUG(465, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy472; + if (yych == 't') goto yy472; + goto yy166; +yy466: + YYDEBUG(466, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; +yy467: + YYDEBUG(467, *YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy466; + goto yy166; + } else { + if (yych <= ' ') goto yy466; + if (yych != ')') goto yy166; + } + YYDEBUG(468, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(469, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1340 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INT_CAST); +} +#line 5224 "Zend/zend_language_scanner.c" +yy470: + YYDEBUG(470, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy560; + if (yych == 'g') goto yy560; + goto yy166; +yy471: + YYDEBUG(471, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy561; + if (yych == 'c') goto yy561; + goto yy166; +yy472: + YYDEBUG(472, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(473, *YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy472; + goto yy166; + } else { + if (yych <= ' ') goto yy472; + if (yych == ')') goto yy562; + goto yy166; + } +yy474: + YYDEBUG(474, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy564; + if (yych == 'n') goto yy564; + goto yy166; +yy475: + YYDEBUG(475, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy565; + if (yych == 't') goto yy565; + goto yy166; +yy476: + YYDEBUG(476, *YYCURSOR); + ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; +yy477: + YYDEBUG(477, *YYCURSOR); + if (yych <= 'Z') { + if (yych <= '/') { + if (yych == '"') goto yy567; + goto yy166; + } else { + if (yych <= '9') goto yy476; + if (yych <= '@') goto yy166; + goto yy476; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy476; + goto yy166; + } else { + if (yych <= 'z') goto yy476; + if (yych <= 0x7F) goto yy166; + goto yy476; + } + } +yy478: + YYDEBUG(478, *YYCURSOR); + ++YYCURSOR; + YYFILL(3); + yych = *YYCURSOR; +yy479: + YYDEBUG(479, *YYCURSOR); + if (yych <= 'Z') { + if (yych <= '/') { + if (yych == '\'') goto yy567; + goto yy166; + } else { + if (yych <= '9') goto yy478; + if (yych <= '@') goto yy166; + goto yy478; + } + } else { + if (yych <= '`') { + if (yych == '_') goto yy478; + goto yy166; + } else { + if (yych <= 'z') goto yy478; + if (yych <= 0x7F) goto yy166; + goto yy478; + } + } +yy480: + YYDEBUG(480, *YYCURSOR); + ++YYCURSOR; +yy481: + YYDEBUG(481, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2077 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -3635,3471 +5364,1919 @@ yy229: RETURN_TOKEN(T_START_HEREDOC); } -#line 3639 "Zend/zend_language_scanner.c" -yy230: - YYDEBUG(230, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy228; - goto yy229; -yy231: - YYDEBUG(231, *YYCURSOR); - ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; -yy232: - YYDEBUG(232, *YYCURSOR); - if (yych <= 'Z') { - if (yych <= '/') { - if (yych == '\'') goto yy227; - goto yy157; - } else { - if (yych <= '9') goto yy231; - if (yych <= '@') goto yy157; - goto yy231; - } - } else { - if (yych <= '`') { - if (yych == '_') goto yy231; - goto yy157; - } else { - if (yych <= 'z') goto yy231; - if (yych <= 0x7F) goto yy157; - goto yy231; - } - } -yy233: - YYDEBUG(233, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '=') goto yy214; - YYDEBUG(234, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(235, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1470 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_NOT_IDENTICAL); -} -#line 3683 "Zend/zend_language_scanner.c" -yy236: - YYDEBUG(236, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(237, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1494 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PLUS_EQUAL); -} -#line 3693 "Zend/zend_language_scanner.c" -yy238: - YYDEBUG(238, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(239, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1458 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INC); -} -#line 3703 "Zend/zend_language_scanner.c" -yy240: - YYDEBUG(240, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy241; - if (yych != 's') goto yy150; -yy241: - YYDEBUG(241, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy242; - if (yych != 't') goto yy150; -yy242: - YYDEBUG(242, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(243, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1446 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LIST); -} -#line 3726 "Zend/zend_language_scanner.c" -yy244: - YYDEBUG(244, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy248; - YYDEBUG(245, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1474 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_EQUAL); -} -#line 3737 "Zend/zend_language_scanner.c" -yy246: - YYDEBUG(246, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(247, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1442 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DOUBLE_ARROW); -} -#line 3747 "Zend/zend_language_scanner.c" -yy248: - YYDEBUG(248, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(249, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1466 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_IDENTICAL); -} -#line 3757 "Zend/zend_language_scanner.c" -yy250: - YYDEBUG(250, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch (yych) { - case 'C': - case 'c': goto yy252; - case 'D': - case 'd': goto yy257; - case 'F': - case 'f': goto yy254; - case 'H': - case 'h': goto yy251; - case 'L': - case 'l': goto yy256; - case 'M': - case 'm': goto yy255; - case 'N': - case 'n': goto yy258; - case 'T': - case 't': goto yy253; - default: goto yy150; - } -yy251: - YYDEBUG(251, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy319; - if (yych == 'a') goto yy319; - goto yy150; -yy252: - YYDEBUG(252, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy312; - if (yych == 'l') goto yy312; - goto yy150; -yy253: - YYDEBUG(253, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy305; - if (yych == 'r') goto yy305; - goto yy150; -yy254: - YYDEBUG(254, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'I') goto yy289; - if (yych <= 'T') goto yy150; - goto yy290; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy150; - goto yy289; - } else { - if (yych == 'u') goto yy290; - goto yy150; - } - } -yy255: - YYDEBUG(255, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy281; - if (yych == 'e') goto yy281; - goto yy150; -yy256: - YYDEBUG(256, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy275; - if (yych == 'i') goto yy275; - goto yy150; -yy257: - YYDEBUG(257, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy270; - if (yych == 'i') goto yy270; - goto yy150; -yy258: - YYDEBUG(258, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy259; - if (yych != 'a') goto yy150; -yy259: - YYDEBUG(259, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy260; - if (yych != 'm') goto yy150; -yy260: - YYDEBUG(260, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy261; - if (yych != 'e') goto yy150; -yy261: - YYDEBUG(261, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy262; - if (yych != 's') goto yy150; -yy262: - YYDEBUG(262, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy263; - if (yych != 'p') goto yy150; -yy263: - YYDEBUG(263, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy264; - if (yych != 'a') goto yy150; -yy264: - YYDEBUG(264, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy265; - if (yych != 'c') goto yy150; -yy265: - YYDEBUG(265, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy266; - if (yych != 'e') goto yy150; -yy266: - YYDEBUG(266, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(267, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(268, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(269, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1775 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_NS_C); -} -#line 3891 "Zend/zend_language_scanner.c" -yy270: - YYDEBUG(270, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy271; - if (yych != 'r') goto yy150; -yy271: - YYDEBUG(271, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(272, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(273, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(274, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1771 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DIR); -} -#line 3915 "Zend/zend_language_scanner.c" -yy275: - YYDEBUG(275, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy276; - if (yych != 'n') goto yy150; -yy276: - YYDEBUG(276, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy277; - if (yych != 'e') goto yy150; -yy277: - YYDEBUG(277, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(278, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(279, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(280, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1763 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LINE); -} -#line 3944 "Zend/zend_language_scanner.c" -yy281: - YYDEBUG(281, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy282; - if (yych != 't') goto yy150; -yy282: - YYDEBUG(282, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy283; - if (yych != 'h') goto yy150; -yy283: - YYDEBUG(283, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy284; - if (yych != 'o') goto yy150; -yy284: - YYDEBUG(284, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy285; - if (yych != 'd') goto yy150; -yy285: - YYDEBUG(285, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(286, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(287, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(288, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1759 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_METHOD_C); -} -#line 3983 "Zend/zend_language_scanner.c" -yy289: - YYDEBUG(289, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy300; - if (yych == 'l') goto yy300; - goto yy150; -yy290: - YYDEBUG(290, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy291; - if (yych != 'n') goto yy150; -yy291: - YYDEBUG(291, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy292; - if (yych != 'c') goto yy150; -yy292: - YYDEBUG(292, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy293; - if (yych != 't') goto yy150; -yy293: - YYDEBUG(293, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy294; - if (yych != 'i') goto yy150; -yy294: - YYDEBUG(294, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy295; - if (yych != 'o') goto yy150; -yy295: - YYDEBUG(295, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy296; - if (yych != 'n') goto yy150; -yy296: - YYDEBUG(296, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(297, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(298, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(299, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1755 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FUNC_C); -} -#line 4038 "Zend/zend_language_scanner.c" -yy300: - YYDEBUG(300, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy301; - if (yych != 'e') goto yy150; -yy301: - YYDEBUG(301, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(302, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(303, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(304, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1767 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FILE); -} -#line 4062 "Zend/zend_language_scanner.c" -yy305: - YYDEBUG(305, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy306; - if (yych != 'a') goto yy150; -yy306: - YYDEBUG(306, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy307; - if (yych != 'i') goto yy150; -yy307: - YYDEBUG(307, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy308; - if (yych != 't') goto yy150; -yy308: - YYDEBUG(308, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(309, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(310, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(311, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1751 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_TRAIT_C); -} -#line 4096 "Zend/zend_language_scanner.c" -yy312: - YYDEBUG(312, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy313; - if (yych != 'a') goto yy150; -yy313: - YYDEBUG(313, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy314; - if (yych != 's') goto yy150; -yy314: - YYDEBUG(314, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy315; - if (yych != 's') goto yy150; -yy315: - YYDEBUG(315, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(316, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(317, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(318, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1747 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CLASS_C); -} -#line 4130 "Zend/zend_language_scanner.c" -yy319: - YYDEBUG(319, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy320; - if (yych != 'l') goto yy150; -yy320: - YYDEBUG(320, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy321; - if (yych != 't') goto yy150; -yy321: - YYDEBUG(321, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy150; - YYDEBUG(322, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy323; - if (yych != 'c') goto yy150; -yy323: - YYDEBUG(323, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy324; - if (yych != 'o') goto yy150; -yy324: - YYDEBUG(324, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy325; - if (yych != 'm') goto yy150; -yy325: - YYDEBUG(325, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy326; - if (yych != 'p') goto yy150; -yy326: - YYDEBUG(326, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy327; - if (yych != 'i') goto yy150; -yy327: - YYDEBUG(327, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy328; - if (yych != 'l') goto yy150; -yy328: - YYDEBUG(328, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy329; - if (yych != 'e') goto yy150; -yy329: - YYDEBUG(329, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy330; - if (yych != 'r') goto yy150; -yy330: - YYDEBUG(330, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(331, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1410 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_HALT_COMPILER); -} -#line 4196 "Zend/zend_language_scanner.c" -yy332: - YYDEBUG(332, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy336; - if (yych == 's') goto yy336; - goto yy150; -yy333: - YYDEBUG(333, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy334; - if (yych != 'e') goto yy150; -yy334: - YYDEBUG(334, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(335, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1390 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_USE); -} -#line 4220 "Zend/zend_language_scanner.c" -yy336: - YYDEBUG(336, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy337; - if (yych != 'e') goto yy150; -yy337: - YYDEBUG(337, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy338; - if (yych != 't') goto yy150; -yy338: - YYDEBUG(338, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(339, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1438 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_UNSET); -} -#line 4243 "Zend/zend_language_scanner.c" -yy340: - YYDEBUG(340, *YYCURSOR); - ++YYCURSOR; - YYFILL(7); - yych = *YYCURSOR; -yy341: - YYDEBUG(341, *YYCURSOR); - if (yych <= 'S') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy340; - if (yych <= 0x1F) goto yy157; - goto yy340; - } else { - if (yych <= 'A') { - if (yych <= '@') goto yy157; - goto yy345; - } else { - if (yych <= 'B') goto yy343; - if (yych <= 'C') goto yy157; - goto yy348; - } - } - } else { - if (yych <= 'I') { - if (yych == 'F') goto yy349; - if (yych <= 'H') goto yy157; - goto yy350; - } else { - if (yych <= 'O') { - if (yych <= 'N') goto yy157; - goto yy344; - } else { - if (yych <= 'Q') goto yy157; - if (yych <= 'R') goto yy347; - goto yy346; - } - } - } - } else { - if (yych <= 'f') { - if (yych <= 'a') { - if (yych == 'U') goto yy342; - if (yych <= '`') goto yy157; - goto yy345; - } else { - if (yych <= 'c') { - if (yych <= 'b') goto yy343; - goto yy157; - } else { - if (yych <= 'd') goto yy348; - if (yych <= 'e') goto yy157; - goto yy349; - } - } - } else { - if (yych <= 'q') { - if (yych <= 'i') { - if (yych <= 'h') goto yy157; - goto yy350; - } else { - if (yych == 'o') goto yy344; - goto yy157; - } - } else { - if (yych <= 's') { - if (yych <= 'r') goto yy347; - goto yy346; - } else { - if (yych != 'u') goto yy157; - } - } - } - } -yy342: - YYDEBUG(342, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy409; - if (yych == 'n') goto yy409; - goto yy157; -yy343: - YYDEBUG(343, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy396; - if (yych <= 'N') goto yy157; - goto yy397; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy157; - goto yy396; - } else { - if (yych == 'o') goto yy397; - goto yy157; - } - } -yy344: - YYDEBUG(344, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy388; - if (yych == 'b') goto yy388; - goto yy157; -yy345: - YYDEBUG(345, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy381; - if (yych == 'r') goto yy381; - goto yy157; -yy346: - YYDEBUG(346, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy373; - if (yych == 't') goto yy373; - goto yy157; -yy347: - YYDEBUG(347, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy371; - if (yych == 'e') goto yy371; - goto yy157; -yy348: - YYDEBUG(348, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy367; - if (yych == 'o') goto yy367; - goto yy157; -yy349: - YYDEBUG(349, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy360; - if (yych == 'l') goto yy360; - goto yy157; -yy350: - YYDEBUG(350, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy351; - if (yych != 'n') goto yy157; -yy351: - YYDEBUG(351, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy352; - if (yych != 't') goto yy157; -yy352: - YYDEBUG(352, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy353; - if (yych != 'e') goto yy355; -yy353: - YYDEBUG(353, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy358; - if (yych == 'g') goto yy358; - goto yy157; -yy354: - YYDEBUG(354, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy355: - YYDEBUG(355, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy354; - goto yy157; - } else { - if (yych <= ' ') goto yy354; - if (yych != ')') goto yy157; - } - YYDEBUG(356, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(357, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1338 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INT_CAST); -} -#line 4419 "Zend/zend_language_scanner.c" -yy358: - YYDEBUG(358, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy359; - if (yych != 'e') goto yy157; -yy359: - YYDEBUG(359, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy354; - if (yych == 'r') goto yy354; - goto yy157; -yy360: - YYDEBUG(360, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy361; - if (yych != 'o') goto yy157; -yy361: - YYDEBUG(361, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy362; - if (yych != 'a') goto yy157; -yy362: - YYDEBUG(362, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy363; - if (yych != 't') goto yy157; -yy363: - YYDEBUG(363, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(364, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy363; - goto yy157; - } else { - if (yych <= ' ') goto yy363; - if (yych != ')') goto yy157; - } - YYDEBUG(365, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(366, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1342 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DOUBLE_CAST); -} -#line 4467 "Zend/zend_language_scanner.c" -yy367: - YYDEBUG(367, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy368; - if (yych != 'u') goto yy157; -yy368: - YYDEBUG(368, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy369; - if (yych != 'b') goto yy157; -yy369: - YYDEBUG(369, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy370; - if (yych != 'l') goto yy157; -yy370: - YYDEBUG(370, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy363; - if (yych == 'e') goto yy363; - goto yy157; -yy371: - YYDEBUG(371, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy372; - if (yych != 'a') goto yy157; -yy372: - YYDEBUG(372, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy363; - if (yych == 'l') goto yy363; - goto yy157; -yy373: - YYDEBUG(373, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy374; - if (yych != 'r') goto yy157; -yy374: - YYDEBUG(374, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy375; - if (yych != 'i') goto yy157; -yy375: - YYDEBUG(375, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy376; - if (yych != 'n') goto yy157; -yy376: - YYDEBUG(376, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy377; - if (yych != 'g') goto yy157; -yy377: - YYDEBUG(377, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(378, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy377; - goto yy157; - } else { - if (yych <= ' ') goto yy377; - if (yych != ')') goto yy157; - } - YYDEBUG(379, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(380, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1346 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_STRING_CAST); -} -#line 4541 "Zend/zend_language_scanner.c" -yy381: - YYDEBUG(381, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy382; - if (yych != 'r') goto yy157; -yy382: - YYDEBUG(382, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy383; - if (yych != 'a') goto yy157; -yy383: - YYDEBUG(383, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy384; - if (yych != 'y') goto yy157; -yy384: - YYDEBUG(384, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(385, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy384; - goto yy157; - } else { - if (yych <= ' ') goto yy384; - if (yych != ')') goto yy157; - } - YYDEBUG(386, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(387, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1350 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ARRAY_CAST); -} -#line 4578 "Zend/zend_language_scanner.c" -yy388: - YYDEBUG(388, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'J') goto yy389; - if (yych != 'j') goto yy157; -yy389: - YYDEBUG(389, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy390; - if (yych != 'e') goto yy157; -yy390: - YYDEBUG(390, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy391; - if (yych != 'c') goto yy157; -yy391: - YYDEBUG(391, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy392; - if (yych != 't') goto yy157; -yy392: - YYDEBUG(392, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(393, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy392; - goto yy157; - } else { - if (yych <= ' ') goto yy392; - if (yych != ')') goto yy157; - } - YYDEBUG(394, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(395, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1354 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_OBJECT_CAST); -} -#line 4620 "Zend/zend_language_scanner.c" -yy396: - YYDEBUG(396, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy406; - if (yych == 'n') goto yy406; - goto yy157; -yy397: - YYDEBUG(397, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy398; - if (yych != 'o') goto yy157; -yy398: - YYDEBUG(398, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy399; - if (yych != 'l') goto yy157; -yy399: - YYDEBUG(399, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy404; - if (yych == 'e') goto yy404; - goto yy401; -yy400: - YYDEBUG(400, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy401: - YYDEBUG(401, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy400; - goto yy157; - } else { - if (yych <= ' ') goto yy400; - if (yych != ')') goto yy157; - } - YYDEBUG(402, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(403, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1358 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BOOL_CAST); -} -#line 4665 "Zend/zend_language_scanner.c" -yy404: - YYDEBUG(404, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy405; - if (yych != 'a') goto yy157; -yy405: - YYDEBUG(405, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy400; - if (yych == 'n') goto yy400; - goto yy157; -yy406: - YYDEBUG(406, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy407; - if (yych != 'a') goto yy157; -yy407: - YYDEBUG(407, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy408; - if (yych != 'r') goto yy157; -yy408: - YYDEBUG(408, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy377; - if (yych == 'y') goto yy377; - goto yy157; -yy409: - YYDEBUG(409, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy410; - if (yych != 's') goto yy157; -yy410: - YYDEBUG(410, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy411; - if (yych != 'e') goto yy157; -yy411: - YYDEBUG(411, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy412; - if (yych != 't') goto yy157; -yy412: - YYDEBUG(412, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(413, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy412; - goto yy157; - } else { - if (yych <= ' ') goto yy412; - if (yych != ')') goto yy157; - } - YYDEBUG(414, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(415, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1362 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_UNSET_CAST); -} -#line 4729 "Zend/zend_language_scanner.c" -yy416: - YYDEBUG(416, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy417; - if (yych != 'r') goto yy150; -yy417: - YYDEBUG(417, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(418, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1334 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_VAR); -} -#line 4747 "Zend/zend_language_scanner.c" -yy419: - YYDEBUG(419, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy423; - if (yych == 'm') goto yy423; - goto yy150; -yy420: - YYDEBUG(420, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy421; - if (yych != 'w') goto yy150; -yy421: - YYDEBUG(421, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(422, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1326 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_NEW); -} -#line 4771 "Zend/zend_language_scanner.c" -yy423: - YYDEBUG(423, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy424; - if (yych != 'e') goto yy150; -yy424: - YYDEBUG(424, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy425; - if (yych != 's') goto yy150; -yy425: - YYDEBUG(425, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy426; - if (yych != 'p') goto yy150; -yy426: - YYDEBUG(426, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy427; - if (yych != 'a') goto yy150; -yy427: - YYDEBUG(427, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy428; - if (yych != 'c') goto yy150; -yy428: - YYDEBUG(428, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy429; - if (yych != 'e') goto yy150; -yy429: - YYDEBUG(429, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(430, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1386 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_NAMESPACE); -} -#line 4814 "Zend/zend_language_scanner.c" -yy431: - YYDEBUG(431, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy435; - if (yych == '\r') goto yy436; -yy432: - YYDEBUG(432, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1958 "Zend/zend_language_scanner.l" - { - BEGIN(INITIAL); - RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ -} -#line 4828 "Zend/zend_language_scanner.c" -yy433: - YYDEBUG(433, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(434, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1322 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_COALESCE); -} -#line 4838 "Zend/zend_language_scanner.c" -yy435: - YYDEBUG(435, *YYCURSOR); - yych = *++YYCURSOR; - goto yy432; -yy436: - YYDEBUG(436, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy435; - goto yy432; -yy437: - YYDEBUG(437, *YYCURSOR); - yyaccept = 3; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(438, *YYCURSOR); - if (yych <= 'D') { - if (yych <= '/') goto yy153; - if (yych <= '9') goto yy437; - goto yy153; - } else { - if (yych <= 'E') goto yy156; - if (yych == 'e') goto yy156; - goto yy153; - } -yy439: - YYDEBUG(439, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(440, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1518 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CONCAT_EQUAL); -} -#line 4873 "Zend/zend_language_scanner.c" -yy441: - YYDEBUG(441, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '.') goto yy157; - YYDEBUG(442, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(443, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1318 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ELLIPSIS); -} -#line 4886 "Zend/zend_language_scanner.c" -yy444: - YYDEBUG(444, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(445, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1310 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); -} -#line 4896 "Zend/zend_language_scanner.c" -yy446: - YYDEBUG(446, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy447: - YYDEBUG(447, *YYCURSOR); - if (yych <= '\f') { - if (yych <= 0x08) goto yy104; - if (yych <= '\n') goto yy446; - goto yy104; - } else { - if (yych <= '\r') goto yy446; - if (yych == ' ') goto yy446; - goto yy104; - } -yy448: - YYDEBUG(448, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(449, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1498 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_MINUS_EQUAL); -} -#line 4922 "Zend/zend_language_scanner.c" -yy450: - YYDEBUG(450, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(451, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1462 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DEC); -} -#line 4932 "Zend/zend_language_scanner.c" -yy452: - YYDEBUG(452, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(453, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1284 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN(T_OBJECT_OPERATOR); -} -#line 4943 "Zend/zend_language_scanner.c" -yy454: - YYDEBUG(454, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy461; - if (yych <= 'N') goto yy150; - goto yy462; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy150; - goto yy461; - } else { - if (yych == 'o') goto yy462; - goto yy150; - } - } -yy455: - YYDEBUG(455, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy456; - if (yych != 'b') goto yy150; -yy456: - YYDEBUG(456, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy457; - if (yych != 'l') goto yy150; -yy457: - YYDEBUG(457, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy458; - if (yych != 'i') goto yy150; -yy458: - YYDEBUG(458, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy459; - if (yych != 'c') goto yy150; -yy459: - YYDEBUG(459, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(460, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1434 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PUBLIC); -} -#line 4992 "Zend/zend_language_scanner.c" -yy461: - YYDEBUG(461, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'V') { - if (yych == 'N') goto yy470; - if (yych <= 'U') goto yy150; - goto yy471; - } else { - if (yych <= 'n') { - if (yych <= 'm') goto yy150; - goto yy470; - } else { - if (yych == 'v') goto yy471; - goto yy150; - } - } -yy462: - YYDEBUG(462, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy463; - if (yych != 't') goto yy150; -yy463: - YYDEBUG(463, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy464; - if (yych != 'e') goto yy150; -yy464: - YYDEBUG(464, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy465; - if (yych != 'c') goto yy150; -yy465: - YYDEBUG(465, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy466; - if (yych != 't') goto yy150; -yy466: - YYDEBUG(466, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy467; - if (yych != 'e') goto yy150; -yy467: - YYDEBUG(467, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy468; - if (yych != 'd') goto yy150; -yy468: - YYDEBUG(468, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(469, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1430 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PROTECTED); -} -#line 5051 "Zend/zend_language_scanner.c" -yy470: - YYDEBUG(470, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy476; - if (yych == 't') goto yy476; - goto yy150; -yy471: - YYDEBUG(471, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy472; - if (yych != 'a') goto yy150; -yy472: - YYDEBUG(472, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy473; - if (yych != 't') goto yy150; -yy473: - YYDEBUG(473, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy474; - if (yych != 'e') goto yy150; -yy474: - YYDEBUG(474, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(475, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1426 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PRIVATE); -} -#line 5085 "Zend/zend_language_scanner.c" -yy476: - YYDEBUG(476, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(477, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1260 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PRINT); -} -#line 5098 "Zend/zend_language_scanner.c" -yy478: - YYDEBUG(478, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy483; - if (yych == 'o') goto yy483; - goto yy150; -yy479: - YYDEBUG(479, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy480; - if (yych != 't') goto yy150; -yy480: - YYDEBUG(480, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy481; - if (yych != 'o') goto yy150; -yy481: - YYDEBUG(481, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } +#line 5368 "Zend/zend_language_scanner.c" +yy482: YYDEBUG(482, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1252 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_GOTO); -} -#line 5127 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '\n') goto yy480; + goto yy481; yy483: YYDEBUG(483, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy484; - if (yych != 'b') goto yy150; + if (yych == 'A') goto yy568; + if (yych == 'a') goto yy568; + goto yy128; yy484: YYDEBUG(484, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy485; - if (yych != 'a') goto yy150; -yy485: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(485, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy486; - if (yych != 'l') goto yy150; -yy486: - YYDEBUG(486, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(487, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1398 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_GLOBAL); -} -#line 5155 "Zend/zend_language_scanner.c" -yy488: - YYDEBUG(488, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '<') goto yy496; - goto yy157; -yy489: - YYDEBUG(489, *YYCURSOR); - yych = *++YYCURSOR; - goto yy144; -yy490: - YYDEBUG(490, *YYCURSOR); - yych = *++YYCURSOR; - goto yy142; -yy491: - YYDEBUG(491, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy492; - if (yych != 'e') goto yy150; -yy492: - YYDEBUG(492, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy493; - if (yych != 'a') goto yy150; -yy493: - YYDEBUG(493, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'K') goto yy494; - if (yych != 'k') goto yy150; -yy494: - YYDEBUG(494, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(495, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1244 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BREAK); -} -#line 5196 "Zend/zend_language_scanner.c" -yy496: - YYDEBUG(496, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '<') goto yy219; - goto yy157; -yy497: - YYDEBUG(497, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy504; - if (yych == 'a') goto yy504; - goto yy150; -yy498: - YYDEBUG(498, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy499; - if (yych != 'i') goto yy150; -yy499: - YYDEBUG(499, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy500; - if (yych != 't') goto yy150; -yy500: - YYDEBUG(500, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy501; - if (yych != 'c') goto yy150; -yy501: - YYDEBUG(501, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy502; - if (yych != 'h') goto yy150; -yy502: - YYDEBUG(502, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(503, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1228 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SWITCH); -} -#line 5240 "Zend/zend_language_scanner.c" -yy504: - YYDEBUG(504, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy505; - if (yych != 't') goto yy150; -yy505: - YYDEBUG(505, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy506; - if (yych != 'i') goto yy150; -yy506: - YYDEBUG(506, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy507; - if (yych != 'c') goto yy150; -yy507: - YYDEBUG(507, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(508, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1414 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_STATIC); -} -#line 5268 "Zend/zend_language_scanner.c" -yy509: - YYDEBUG(509, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy520; - if (yych == 's') goto yy520; - goto yy150; -yy510: - YYDEBUG(510, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy518; - if (yych == 'd') goto yy518; - goto yy150; -yy511: - YYDEBUG(511, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy514; - if (yych == 'r') goto yy514; - goto yy150; -yy512: - YYDEBUG(512, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(513, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1224 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_AS); -} -#line 5299 "Zend/zend_language_scanner.c" -yy514: - YYDEBUG(514, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy515; - if (yych != 'a') goto yy150; -yy515: - YYDEBUG(515, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy516; - if (yych != 'y') goto yy150; -yy516: - YYDEBUG(516, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(517, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1450 "Zend/zend_language_scanner.l" +#line 1452 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY); } -#line 5322 "Zend/zend_language_scanner.c" -yy518: - YYDEBUG(518, *YYCURSOR); +#line 5392 "Zend/zend_language_scanner.c" +yy486: + YYDEBUG(486, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(519, *YYCURSOR); + YYDEBUG(487, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1558 "Zend/zend_language_scanner.l" +#line 1246 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_LOGICAL_AND); + RETURN_TOKEN(T_BREAK); } -#line 5335 "Zend/zend_language_scanner.c" -yy520: - YYDEBUG(520, *YYCURSOR); +#line 5405 "Zend/zend_language_scanner.c" +yy488: + YYDEBUG(488, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy521; - if (yych != 't') goto yy150; -yy521: - YYDEBUG(521, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy522; - if (yych != 'r') goto yy150; -yy522: - YYDEBUG(522, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy523; - if (yych != 'a') goto yy150; -yy523: - YYDEBUG(523, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy524; - if (yych != 'c') goto yy150; -yy524: - YYDEBUG(524, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy525; - if (yych != 't') goto yy150; -yy525: - YYDEBUG(525, *YYCURSOR); + if (yych == 'B') goto yy569; + if (yych == 'b') goto yy569; + goto yy128; +yy489: + YYDEBUG(489, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(526, *YYCURSOR); + YYDEBUG(490, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1418 "Zend/zend_language_scanner.l" +#line 1158 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ABSTRACT); + RETURN_TOKEN(T_CATCH); } -#line 5373 "Zend/zend_language_scanner.c" -yy527: - YYDEBUG(527, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy528; - if (yych != 'i') goto yy150; -yy528: - YYDEBUG(528, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy529; - if (yych != 'l') goto yy150; -yy529: - YYDEBUG(529, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy530; - if (yych != 'e') goto yy150; -yy530: - YYDEBUG(530, *YYCURSOR); +#line 5424 "Zend/zend_language_scanner.c" +yy491: + YYDEBUG(491, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(531, *YYCURSOR); + YYDEBUG(492, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1184 "Zend/zend_language_scanner.l" +#line 1266 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_WHILE); + RETURN_TOKEN(T_CLASS); } -#line 5401 "Zend/zend_language_scanner.c" -yy532: - YYDEBUG(532, *YYCURSOR); +#line 5437 "Zend/zend_language_scanner.c" +yy493: + YYDEBUG(493, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(533, *YYCURSOR); + YYDEBUG(494, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1168 "Zend/zend_language_scanner.l" +#line 1332 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_IF); + RETURN_TOKEN(T_CLONE); } -#line 5414 "Zend/zend_language_scanner.c" -yy534: - YYDEBUG(534, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy576; - if (yych == 'p') goto yy576; - goto yy150; -yy535: - YYDEBUG(535, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'C') { - if (yych <= 'B') goto yy150; - goto yy543; - } else { - if (yych <= 'R') goto yy150; - if (yych <= 'S') goto yy541; - goto yy542; - } - } else { - if (yych <= 'r') { - if (yych == 'c') goto yy543; - goto yy150; - } else { - if (yych <= 's') goto yy541; - if (yych <= 't') goto yy542; - goto yy150; - } - } -yy536: - YYDEBUG(536, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy537; - if (yych != 's') goto yy150; -yy537: - YYDEBUG(537, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy538; - if (yych != 'e') goto yy150; -yy538: - YYDEBUG(538, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy539; - if (yych != 't') goto yy150; -yy539: - YYDEBUG(539, *YYCURSOR); +#line 5450 "Zend/zend_language_scanner.c" +yy495: + YYDEBUG(495, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(540, *YYCURSOR); + YYDEBUG(496, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1402 "Zend/zend_language_scanner.l" +#line 1137 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ISSET); + RETURN_TOKEN(T_CONST); } -#line 5470 "Zend/zend_language_scanner.c" -yy541: - YYDEBUG(541, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy562; - if (yych == 't') goto yy562; - goto yy150; -yy542: - YYDEBUG(542, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy555; - if (yych == 'e') goto yy555; - goto yy150; -yy543: - YYDEBUG(543, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy544; - if (yych != 'l') goto yy150; -yy544: - YYDEBUG(544, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy545; - if (yych != 'u') goto yy150; -yy545: - YYDEBUG(545, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy546; - if (yych != 'd') goto yy150; -yy546: - YYDEBUG(546, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy547; - if (yych != 'e') goto yy150; -yy547: - YYDEBUG(547, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy149; - } else { - if (yych <= '@') goto yy548; - if (yych <= 'Z') goto yy149; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy549; - } else { - if (yych <= 'z') goto yy149; - if (yych >= 0x80) goto yy149; - } - } -yy548: - YYDEBUG(548, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1370 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INCLUDE); -} -#line 5528 "Zend/zend_language_scanner.c" -yy549: - YYDEBUG(549, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy550; - if (yych != 'o') goto yy150; -yy550: - YYDEBUG(550, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy551; - if (yych != 'n') goto yy150; -yy551: - YYDEBUG(551, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy552; - if (yych != 'c') goto yy150; -yy552: - YYDEBUG(552, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy553; - if (yych != 'e') goto yy150; -yy553: - YYDEBUG(553, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(554, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1374 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INCLUDE_ONCE); -} -#line 5561 "Zend/zend_language_scanner.c" -yy555: - YYDEBUG(555, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy556; - if (yych != 'r') goto yy150; -yy556: - YYDEBUG(556, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy557; - if (yych != 'f') goto yy150; -yy557: - YYDEBUG(557, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy558; - if (yych != 'a') goto yy150; -yy558: - YYDEBUG(558, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy559; - if (yych != 'c') goto yy150; -yy559: - YYDEBUG(559, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy560; - if (yych != 'e') goto yy150; -yy560: - YYDEBUG(560, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(561, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1268 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INTERFACE); -} -#line 5599 "Zend/zend_language_scanner.c" -yy562: - YYDEBUG(562, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych == 'A') goto yy563; - if (yych <= 'D') goto yy150; - goto yy564; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy150; - } else { - if (yych == 'e') goto yy564; - goto yy150; - } - } -yy563: - YYDEBUG(563, *YYCURSOR); +#line 5463 "Zend/zend_language_scanner.c" +yy497: + YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'N') goto yy570; if (yych == 'n') goto yy570; - goto yy150; -yy564: - YYDEBUG(564, *YYCURSOR); + goto yy128; +yy498: + YYDEBUG(498, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy565; - if (yych != 'a') goto yy150; -yy565: - YYDEBUG(565, *YYCURSOR); + if (yych == 'R') goto yy571; + if (yych == 'r') goto yy571; + goto yy128; +yy499: + YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy566; - if (yych != 'd') goto yy150; -yy566: - YYDEBUG(566, *YYCURSOR); + if (yych == 'L') goto yy572; + if (yych == 'l') goto yy572; + goto yy128; +yy500: + YYDEBUG(500, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy567; - if (yych != 'o') goto yy150; -yy567: - YYDEBUG(567, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy568; - if (yych != 'f') goto yy150; -yy568: - YYDEBUG(568, *YYCURSOR); + if (yych == 'F') goto yy573; + if (yych == 'f') goto yy573; + goto yy128; +yy501: + YYDEBUG(501, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(569, *YYCURSOR); + YYDEBUG(502, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1394 "Zend/zend_language_scanner.l" +#line 1408 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INSTEADOF); + RETURN_TOKEN(T_EMPTY); } -#line 5653 "Zend/zend_language_scanner.c" -yy570: - YYDEBUG(570, *YYCURSOR); +#line 5500 "Zend/zend_language_scanner.c" +yy503: + YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy571; - if (yych != 'c') goto yy150; -yy571: - YYDEBUG(571, *YYCURSOR); + if (yych == 'C') goto yy575; + if (yych == 'c') goto yy575; + goto yy128; +yy504: + YYDEBUG(504, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy572; - if (yych != 'e') goto yy150; -yy572: - YYDEBUG(572, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy573; - if (yych != 'o') goto yy150; -yy573: - YYDEBUG(573, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy574; - if (yych != 'f') goto yy150; -yy574: - YYDEBUG(574, *YYCURSOR); + if (yych == 'R') goto yy576; + if (yych == 'r') goto yy576; + goto yy128; +yy505: + YYDEBUG(505, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(575, *YYCURSOR); + YYDEBUG(506, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1220 "Zend/zend_language_scanner.l" +#line 1178 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_INSTANCEOF); + RETURN_TOKEN(T_ENDIF); } -#line 5686 "Zend/zend_language_scanner.c" -yy576: - YYDEBUG(576, *YYCURSOR); +#line 5525 "Zend/zend_language_scanner.c" +yy507: + YYDEBUG(507, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy577; - if (yych != 'l') goto yy150; -yy577: - YYDEBUG(577, *YYCURSOR); + if (yych == 'I') goto yy578; + if (yych == 'i') goto yy578; + goto yy128; +yy508: + YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy578; - if (yych != 'e') goto yy150; -yy578: - YYDEBUG(578, *YYCURSOR); + if (yych == 'I') goto yy579; + if (yych == 'i') goto yy579; + goto yy128; +yy509: + YYDEBUG(509, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy579; - if (yych != 'm') goto yy150; -yy579: - YYDEBUG(579, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy580; - if (yych != 'e') goto yy150; -yy580: - YYDEBUG(580, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy581; - if (yych != 'n') goto yy150; -yy581: - YYDEBUG(581, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy582; - if (yych != 't') goto yy150; -yy582: - YYDEBUG(582, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy583; - if (yych != 's') goto yy150; -yy583: - YYDEBUG(583, *YYCURSOR); + if (yych == 'D') goto yy580; + if (yych == 'd') goto yy580; + goto yy128; +yy510: + YYDEBUG(510, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(584, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1280 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IMPLEMENTS); -} -#line 5734 "Zend/zend_language_scanner.c" -yy585: - YYDEBUG(585, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy593; - if (yych == 'r') goto yy593; - goto yy150; -yy586: - YYDEBUG(586, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych == 'A') goto yy589; - if (yych <= 'X') goto yy150; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy150; - goto yy589; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy511; + if (yych <= '9') goto yy127; } else { - if (yych != 'y') goto yy150; + if (yych == 'L') goto yy581; + if (yych <= 'Z') goto yy127; + } + } else { + if (yych <= 'k') { + if (yych != '`') goto yy127; + } else { + if (yych <= 'l') goto yy581; + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; } } - YYDEBUG(587, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(588, *YYCURSOR); +yy511: + YYDEBUG(511, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1152 "Zend/zend_language_scanner.l" +#line 1424 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_TRY); + RETURN_TOKEN(T_FINAL); } -#line 5766 "Zend/zend_language_scanner.c" -yy589: - YYDEBUG(589, *YYCURSOR); +#line 5571 "Zend/zend_language_scanner.c" +yy512: + YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy590; - if (yych != 'i') goto yy150; -yy590: - YYDEBUG(590, *YYCURSOR); + if (yych == 'C') goto yy582; + if (yych == 'c') goto yy582; + goto yy128; +yy513: + YYDEBUG(513, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy591; - if (yych != 't') goto yy150; -yy591: - YYDEBUG(591, *YYCURSOR); + if (yych == 'I') goto yy583; + if (yych == 'i') goto yy583; + goto yy128; +yy514: + YYDEBUG(514, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy584; + if (yych == 'l') goto yy584; + goto yy128; +yy515: + YYDEBUG(515, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy586; + if (yych == 'm') goto yy586; + goto yy128; +yy516: + YYDEBUG(516, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy587; + if (yych == 'd') goto yy587; + goto yy128; +yy517: + YYDEBUG(517, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy588; + if (yych == 'n') goto yy588; + goto yy128; +yy518: + YYDEBUG(518, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy589; + if (yych == 'a') goto yy589; + goto yy128; +yy519: + YYDEBUG(519, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'F') goto yy590; + if (yych == 'f') goto yy590; + goto yy128; +yy520: + YYDEBUG(520, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(592, *YYCURSOR); + YYDEBUG(521, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1272 "Zend/zend_language_scanner.l" +#line 1404 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_TRAIT); + RETURN_TOKEN(T_ISSET); } -#line 5789 "Zend/zend_language_scanner.c" -yy593: - YYDEBUG(593, *YYCURSOR); +#line 5632 "Zend/zend_language_scanner.c" +yy522: + YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy594; - if (yych != 'o') goto yy150; -yy594: - YYDEBUG(594, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy595; - if (yych != 'w') goto yy150; -yy595: - YYDEBUG(595, *YYCURSOR); + if (yych == 'P') goto yy591; + if (yych == 'p') goto yy591; + goto yy128; +yy523: + YYDEBUG(523, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(596, *YYCURSOR); + YYDEBUG(524, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1164 "Zend/zend_language_scanner.l" +#line 1262 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PRINT); +} +#line 5651 "Zend/zend_language_scanner.c" +yy525: + YYDEBUG(525, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy592; + if (yych == 't') goto yy592; + goto yy128; +yy526: + YYDEBUG(526, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy593; + if (yych == 'c') goto yy593; + goto yy128; +yy527: + YYDEBUG(527, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy594; + if (yych == 'c') goto yy594; + goto yy128; +yy528: + YYDEBUG(528, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy596; + if (yych == 'r') goto yy596; + goto yy128; +yy529: + YYDEBUG(529, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy597; + if (yych == 'n') goto yy597; + goto yy128; +yy530: + YYDEBUG(530, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy599; + if (yych == 'c') goto yy599; + goto yy128; +yy531: + YYDEBUG(531, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy601; + if (yych == 'h') goto yy601; + goto yy128; +yy532: + YYDEBUG(532, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(533, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1166 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_THROW); } -#line 5812 "Zend/zend_language_scanner.c" -yy597: - YYDEBUG(597, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy598; - if (yych != 'e') goto yy150; -yy598: - YYDEBUG(598, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy599; - if (yych != 'l') goto yy150; -yy599: - YYDEBUG(599, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy600; - if (yych != 'd') goto yy150; -yy600: - YYDEBUG(600, *YYCURSOR); +#line 5706 "Zend/zend_language_scanner.c" +yy534: + YYDEBUG(534, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(535, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1274 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_TRAIT); +} +#line 5719 "Zend/zend_language_scanner.c" +yy536: + YYDEBUG(536, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(537, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1440 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_UNSET); +} +#line 5732 "Zend/zend_language_scanner.c" +yy538: + YYDEBUG(538, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(539, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1186 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_WHILE); +} +#line 5745 "Zend/zend_language_scanner.c" +yy540: + YYDEBUG(540, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy149; + if (yybm[0+yych] & 16) { + goto yy127; } if (yych <= '\f') { - if (yych <= 0x08) goto yy601; - if (yych <= '\n') goto yy602; + if (yych <= 0x08) goto yy541; + if (yych <= '\n') goto yy603; } else { - if (yych <= '\r') goto yy602; - if (yych == ' ') goto yy602; + if (yych <= '\r') goto yy603; + if (yych == ' ') goto yy603; } -yy601: - YYDEBUG(601, *YYCURSOR); +yy541: + YYDEBUG(541, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1148 "Zend/zend_language_scanner.l" +#line 1150 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_YIELD); } -#line 5849 "Zend/zend_language_scanner.c" -yy602: +#line 5767 "Zend/zend_language_scanner.c" +yy542: + YYDEBUG(542, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy605; + if (yych == 's') goto yy605; + goto yy128; +yy543: + YYDEBUG(543, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy606; + goto yy128; +yy544: + YYDEBUG(544, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy607; + if (yych == 'e') goto yy607; + goto yy128; +yy545: + YYDEBUG(545, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy608; + if (yych == 'c') goto yy608; + goto yy128; +yy546: + YYDEBUG(546, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy609; + if (yych == 't') goto yy609; + goto yy128; +yy547: + YYDEBUG(547, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy610; + if (yych == 'e') goto yy610; + goto yy128; +yy548: + YYDEBUG(548, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy611; + if (yych == 'h') goto yy611; + goto yy128; +yy549: + YYDEBUG(549, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy612; + if (yych == 'e') goto yy612; + goto yy128; +yy550: + YYDEBUG(550, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy613; + if (yych == 'i') goto yy613; + goto yy128; +yy551: + YYDEBUG(551, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(552, *YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy551; + goto yy166; + } else { + if (yych <= ' ') goto yy551; + if (yych == ')') goto yy614; + goto yy166; + } +yy553: + YYDEBUG(553, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy616; + if (yych == 'y') goto yy616; + goto yy166; +yy554: + YYDEBUG(554, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; +yy555: + YYDEBUG(555, *YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy554; + goto yy166; + } else { + if (yych <= ' ') goto yy554; + if (yych != ')') goto yy166; + } + YYDEBUG(556, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(557, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1360 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_BOOL_CAST); +} +#line 5863 "Zend/zend_language_scanner.c" +yy558: + YYDEBUG(558, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy618; + if (yych == 'a') goto yy618; + goto yy166; +yy559: + YYDEBUG(559, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy472; + if (yych == 'e') goto yy472; + goto yy166; +yy560: + YYDEBUG(560, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy619; + if (yych == 'e') goto yy619; + goto yy166; +yy561: + YYDEBUG(561, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy620; + if (yych == 't') goto yy620; + goto yy166; +yy562: + YYDEBUG(562, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(563, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1344 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DOUBLE_CAST); +} +#line 5897 "Zend/zend_language_scanner.c" +yy564: + YYDEBUG(564, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy616; + if (yych == 'g') goto yy616; + goto yy166; +yy565: + YYDEBUG(565, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(566, *YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy565; + goto yy166; + } else { + if (yych <= ' ') goto yy565; + if (yych == ')') goto yy622; + goto yy166; + } +yy567: + YYDEBUG(567, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy480; + if (yych == '\r') goto yy482; + goto yy166; +yy568: + YYDEBUG(568, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy624; + if (yych == 'c') goto yy624; + goto yy128; +yy569: + YYDEBUG(569, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy625; + if (yych == 'l') goto yy625; + goto yy128; +yy570: + YYDEBUG(570, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy626; + if (yych == 'u') goto yy626; + goto yy128; +yy571: + YYDEBUG(571, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy627; + if (yych == 'e') goto yy627; + goto yy128; +yy572: + YYDEBUG(572, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy629; + if (yych == 't') goto yy629; + goto yy128; +yy573: + YYDEBUG(573, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(574, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1174 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ELSEIF); +} +#line 5966 "Zend/zend_language_scanner.c" +yy575: + YYDEBUG(575, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy631; + if (yych == 'l') goto yy631; + goto yy128; +yy576: + YYDEBUG(576, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '@') { + if (yych <= '/') goto yy577; + if (yych <= '9') goto yy127; + } else { + if (yych == 'E') goto yy632; + if (yych <= 'Z') goto yy127; + } + } else { + if (yych <= 'd') { + if (yych != '`') goto yy127; + } else { + if (yych <= 'e') goto yy632; + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; + } + } +yy577: + YYDEBUG(577, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1202 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDFOR); +} +#line 6000 "Zend/zend_language_scanner.c" +yy578: + YYDEBUG(578, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy633; + if (yych == 't') goto yy633; + goto yy128; +yy579: + YYDEBUG(579, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy634; + if (yych == 'l') goto yy634; + goto yy128; +yy580: + YYDEBUG(580, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy635; + if (yych == 's') goto yy635; + goto yy128; +yy581: + YYDEBUG(581, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy637; + if (yych == 'y') goto yy637; + goto yy128; +yy582: + YYDEBUG(582, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy639; + if (yych == 'h') goto yy639; + goto yy128; +yy583: + YYDEBUG(583, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy641; + if (yych == 'o') goto yy641; + goto yy128; +yy584: + YYDEBUG(584, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(585, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1400 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_GLOBAL); +} +#line 6049 "Zend/zend_language_scanner.c" +yy586: + YYDEBUG(586, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy642; + if (yych == 'e') goto yy642; + goto yy128; +yy587: + YYDEBUG(587, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy643; + if (yych == 'e') goto yy643; + goto yy128; +yy588: + YYDEBUG(588, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy645; + if (yych == 'c') goto yy645; + goto yy128; +yy589: + YYDEBUG(589, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy646; + if (yych == 'd') goto yy646; + goto yy128; +yy590: + YYDEBUG(590, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy647; + if (yych == 'a') goto yy647; + goto yy128; +yy591: + YYDEBUG(591, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy648; + if (yych == 'a') goto yy648; + goto yy128; +yy592: + YYDEBUG(592, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy649; + if (yych == 'e') goto yy649; + goto yy128; +yy593: + YYDEBUG(593, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy651; + if (yych == 't') goto yy651; + goto yy128; +yy594: + YYDEBUG(594, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(595, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1436 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PUBLIC); +} +#line 6110 "Zend/zend_language_scanner.c" +yy596: + YYDEBUG(596, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy652; + if (yych == 'e') goto yy652; + goto yy128; +yy597: + YYDEBUG(597, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(598, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1141 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_RETURN); +} +#line 6129 "Zend/zend_language_scanner.c" +yy599: + YYDEBUG(599, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(600, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1416 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_STATIC); +} +#line 6142 "Zend/zend_language_scanner.c" +yy601: + YYDEBUG(601, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(602, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1230 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_SWITCH); +} +#line 6155 "Zend/zend_language_scanner.c" +yy603: + YYDEBUG(603, *YYCURSOR); ++YYCURSOR; YYFILL(4); yych = *YYCURSOR; - YYDEBUG(603, *YYCURSOR); + YYDEBUG(604, *YYCURSOR); if (yych <= 0x1F) { if (yych <= '\n') { - if (yych <= 0x08) goto yy157; - goto yy602; + if (yych <= 0x08) goto yy166; + goto yy603; } else { - if (yych == '\r') goto yy602; - goto yy157; + if (yych == '\r') goto yy603; + goto yy166; } } else { if (yych <= 'F') { - if (yych <= ' ') goto yy602; - if (yych <= 'E') goto yy157; + if (yych <= ' ') goto yy603; + if (yych <= 'E') goto yy166; + goto yy654; } else { - if (yych != 'f') goto yy157; + if (yych == 'f') goto yy654; + goto yy166; } } - YYDEBUG(604, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy605; - if (yych != 'r') goto yy157; yy605: YYDEBUG(605, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy606; - if (yych != 'o') goto yy157; + if (yych == 'S') goto yy655; + if (yych == 's') goto yy655; + goto yy128; yy606: YYDEBUG(606, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy607; - if (yych != 'm') goto yy157; + if (yych == '_') goto yy656; + goto yy128; yy607: YYDEBUG(607, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '_') goto yy658; + goto yy128; +yy608: YYDEBUG(608, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy659; + if (yych == 't') goto yy659; + goto yy128; +yy609: + YYDEBUG(609, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy660; + goto yy128; +yy610: + YYDEBUG(610, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy661; + goto yy128; +yy611: + YYDEBUG(611, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy662; + if (yych == 'o') goto yy662; + goto yy128; +yy612: + YYDEBUG(612, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy663; + if (yych == 's') goto yy663; + goto yy128; +yy613: + YYDEBUG(613, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy664; + if (yych == 't') goto yy664; + goto yy128; +yy614: + YYDEBUG(614, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(615, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1143 "Zend/zend_language_scanner.l" +#line 1352 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ARRAY_CAST); +} +#line 6239 "Zend/zend_language_scanner.c" +yy616: + YYDEBUG(616, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(617, *YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy616; + goto yy166; + } else { + if (yych <= ' ') goto yy616; + if (yych == ')') goto yy665; + goto yy166; + } +yy618: + YYDEBUG(618, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy554; + if (yych == 'n') goto yy554; + goto yy166; +yy619: + YYDEBUG(619, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy466; + if (yych == 'r') goto yy466; + goto yy166; +yy620: + YYDEBUG(620, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(621, *YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy620; + goto yy166; + } else { + if (yych <= ' ') goto yy620; + if (yych == ')') goto yy667; + goto yy166; + } +yy622: + YYDEBUG(622, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(623, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1364 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_UNSET_CAST); +} +#line 6289 "Zend/zend_language_scanner.c" +yy624: + YYDEBUG(624, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy669; + if (yych == 't') goto yy669; + goto yy128; +yy625: + YYDEBUG(625, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy671; + if (yych == 'e') goto yy671; + goto yy128; +yy626: + YYDEBUG(626, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy673; + if (yych == 'e') goto yy673; + goto yy128; +yy627: + YYDEBUG(627, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(628, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1214 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DECLARE); +} +#line 6320 "Zend/zend_language_scanner.c" +yy629: + YYDEBUG(629, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(630, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1242 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DEFAULT); +} +#line 6333 "Zend/zend_language_scanner.c" +yy631: + YYDEBUG(631, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy675; + if (yych == 'a') goto yy675; + goto yy128; +yy632: + YYDEBUG(632, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy676; + if (yych == 'a') goto yy676; + goto yy128; +yy633: + YYDEBUG(633, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy677; + if (yych == 'c') goto yy677; + goto yy128; +yy634: + YYDEBUG(634, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy678; + if (yych == 'e') goto yy678; + goto yy128; +yy635: + YYDEBUG(635, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(636, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1278 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_EXTENDS); +} +#line 6370 "Zend/zend_language_scanner.c" +yy637: + YYDEBUG(637, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(638, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1162 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FINALLY); +} +#line 6383 "Zend/zend_language_scanner.c" +yy639: + YYDEBUG(639, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(640, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1206 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FOREACH); +} +#line 6396 "Zend/zend_language_scanner.c" +yy641: + YYDEBUG(641, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy680; + if (yych == 'n') goto yy680; + goto yy128; +yy642: + YYDEBUG(642, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy682; + if (yych == 'n') goto yy682; + goto yy128; +yy643: + YYDEBUG(643, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy127; + } else { + if (yych <= '@') goto yy644; + if (yych <= 'Z') goto yy127; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy683; + } else { + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; + } + } +yy644: + YYDEBUG(644, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1372 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INCLUDE); +} +#line 6434 "Zend/zend_language_scanner.c" +yy645: + YYDEBUG(645, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy684; + if (yych == 'e') goto yy684; + goto yy128; +yy646: + YYDEBUG(646, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy685; + if (yych == 'o') goto yy685; + goto yy128; +yy647: + YYDEBUG(647, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy686; + if (yych == 'c') goto yy686; + goto yy128; +yy648: + YYDEBUG(648, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy687; + if (yych == 'c') goto yy687; + goto yy128; +yy649: + YYDEBUG(649, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(650, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1428 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PRIVATE); +} +#line 6471 "Zend/zend_language_scanner.c" +yy651: + YYDEBUG(651, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy688; + if (yych == 'e') goto yy688; + goto yy128; +yy652: + YYDEBUG(652, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy127; + } else { + if (yych <= '@') goto yy653; + if (yych <= 'Z') goto yy127; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy689; + } else { + if (yych <= 'z') goto yy127; + if (yych >= 0x80) goto yy127; + } + } +yy653: + YYDEBUG(653, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1380 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_REQUIRE); +} +#line 6503 "Zend/zend_language_scanner.c" +yy654: + YYDEBUG(654, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy690; + if (yych == 'r') goto yy690; + goto yy166; +yy655: + YYDEBUG(655, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy691; + goto yy128; +yy656: + YYDEBUG(656, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(657, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1773 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_DIR); +} +#line 6527 "Zend/zend_language_scanner.c" +yy658: + YYDEBUG(658, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy692; + goto yy128; +yy659: + YYDEBUG(659, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy694; + if (yych == 'i') goto yy694; + goto yy128; +yy660: + YYDEBUG(660, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy695; + if (yych == 'c') goto yy695; + goto yy128; +yy661: + YYDEBUG(661, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy696; + goto yy128; +yy662: + YYDEBUG(662, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy698; + if (yych == 'd') goto yy698; + goto yy128; +yy663: + YYDEBUG(663, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy699; + if (yych == 'p') goto yy699; + goto yy128; +yy664: + YYDEBUG(664, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy700; + goto yy128; +yy665: + YYDEBUG(665, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(666, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1348 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_STRING_CAST); +} +#line 6576 "Zend/zend_language_scanner.c" +yy667: + YYDEBUG(667, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(668, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1356 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_OBJECT_CAST); +} +#line 6586 "Zend/zend_language_scanner.c" +yy669: + YYDEBUG(669, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(670, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1420 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ABSTRACT); +} +#line 6599 "Zend/zend_language_scanner.c" +yy671: + YYDEBUG(671, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(672, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1456 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CALLABLE); +} +#line 6612 "Zend/zend_language_scanner.c" +yy673: + YYDEBUG(673, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(674, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1250 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CONTINUE); +} +#line 6625 "Zend/zend_language_scanner.c" +yy675: + YYDEBUG(675, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy701; + if (yych == 'r') goto yy701; + goto yy128; +yy676: + YYDEBUG(676, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy702; + if (yych == 'c') goto yy702; + goto yy128; +yy677: + YYDEBUG(677, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy703; + if (yych == 'h') goto yy703; + goto yy128; +yy678: + YYDEBUG(678, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(679, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1190 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDWHILE); +} +#line 6656 "Zend/zend_language_scanner.c" +yy680: + YYDEBUG(680, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(681, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1133 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FUNCTION); +} +#line 6669 "Zend/zend_language_scanner.c" +yy682: + YYDEBUG(682, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy705; + if (yych == 't') goto yy705; + goto yy128; +yy683: + YYDEBUG(683, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy706; + if (yych == 'o') goto yy706; + goto yy128; +yy684: + YYDEBUG(684, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy707; + if (yych == 'o') goto yy707; + goto yy128; +yy685: + YYDEBUG(685, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'F') goto yy708; + if (yych == 'f') goto yy708; + goto yy128; +yy686: + YYDEBUG(686, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy710; + if (yych == 'e') goto yy710; + goto yy128; +yy687: + YYDEBUG(687, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy712; + if (yych == 'e') goto yy712; + goto yy128; +yy688: + YYDEBUG(688, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy714; + if (yych == 'd') goto yy714; + goto yy128; +yy689: + YYDEBUG(689, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy716; + if (yych == 'o') goto yy716; + goto yy128; +yy690: + YYDEBUG(690, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy717; + if (yych == 'o') goto yy717; + goto yy166; +yy691: + YYDEBUG(691, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy718; + goto yy128; +yy692: + YYDEBUG(692, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(693, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1769 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FILE); +} +#line 6741 "Zend/zend_language_scanner.c" +yy694: + YYDEBUG(694, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy720; + if (yych == 'o') goto yy720; + goto yy128; +yy695: + YYDEBUG(695, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy721; + if (yych == 'o') goto yy721; + goto yy128; +yy696: + YYDEBUG(696, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(697, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1765 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_LINE); +} +#line 6766 "Zend/zend_language_scanner.c" +yy698: + YYDEBUG(698, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy722; + goto yy128; +yy699: + YYDEBUG(699, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy723; + if (yych == 'a') goto yy723; + goto yy128; +yy700: + YYDEBUG(700, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy724; + goto yy128; +yy701: + YYDEBUG(701, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy726; + if (yych == 'e') goto yy726; + goto yy128; +yy702: + YYDEBUG(702, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy728; + if (yych == 'h') goto yy728; + goto yy128; +yy703: + YYDEBUG(703, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(704, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1234 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDSWITCH); +} +#line 6807 "Zend/zend_language_scanner.c" +yy705: + YYDEBUG(705, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy730; + if (yych == 's') goto yy730; + goto yy128; +yy706: + YYDEBUG(706, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy732; + if (yych == 'n') goto yy732; + goto yy128; +yy707: + YYDEBUG(707, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'F') goto yy733; + if (yych == 'f') goto yy733; + goto yy128; +yy708: + YYDEBUG(708, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(709, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1396 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INSTEADOF); +} +#line 6838 "Zend/zend_language_scanner.c" +yy710: + YYDEBUG(710, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(711, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1270 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INTERFACE); +} +#line 6851 "Zend/zend_language_scanner.c" +yy712: + YYDEBUG(712, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(713, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1388 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_NAMESPACE); +} +#line 6864 "Zend/zend_language_scanner.c" +yy714: + YYDEBUG(714, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(715, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1432 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_PROTECTED); +} +#line 6877 "Zend/zend_language_scanner.c" +yy716: + YYDEBUG(716, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy735; + if (yych == 'n') goto yy735; + goto yy128; +yy717: + YYDEBUG(717, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy736; + if (yych == 'm') goto yy736; + goto yy166; +yy718: + YYDEBUG(718, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(719, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1749 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_CLASS_C); +} +#line 6902 "Zend/zend_language_scanner.c" +yy720: + YYDEBUG(720, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy738; + if (yych == 'n') goto yy738; + goto yy128; +yy721: + YYDEBUG(721, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy739; + if (yych == 'm') goto yy739; + goto yy128; +yy722: + YYDEBUG(722, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy740; + goto yy128; +yy723: + YYDEBUG(723, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy742; + if (yych == 'c') goto yy742; + goto yy128; +yy724: + YYDEBUG(724, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(725, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1753 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_TRAIT_C); +} +#line 6938 "Zend/zend_language_scanner.c" +yy726: + YYDEBUG(726, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(727, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1218 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDDECLARE); +} +#line 6951 "Zend/zend_language_scanner.c" +yy728: + YYDEBUG(728, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(729, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1210 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_ENDFOREACH); +} +#line 6964 "Zend/zend_language_scanner.c" +yy730: + YYDEBUG(730, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(731, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1282 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_IMPLEMENTS); +} +#line 6977 "Zend/zend_language_scanner.c" +yy732: + YYDEBUG(732, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy743; + if (yych == 'c') goto yy743; + goto yy128; +yy733: + YYDEBUG(733, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(734, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1222 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INSTANCEOF); +} +#line 6996 "Zend/zend_language_scanner.c" +yy735: + YYDEBUG(735, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy744; + if (yych == 'c') goto yy744; + goto yy128; +yy736: + YYDEBUG(736, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(737, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1145 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 5896 "Zend/zend_language_scanner.c" -yy609: - YYDEBUG(609, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'Q') goto yy611; - if (yych <= 'S') goto yy150; - } else { - if (yych <= 'q') { - if (yych <= 'p') goto yy150; - goto yy611; - } else { - if (yych != 't') goto yy150; - } - } - YYDEBUG(610, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy623; - if (yych == 'u') goto yy623; - goto yy150; -yy611: - YYDEBUG(611, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy612; - if (yych != 'u') goto yy150; -yy612: - YYDEBUG(612, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy613; - if (yych != 'i') goto yy150; -yy613: - YYDEBUG(613, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy614; - if (yych != 'r') goto yy150; -yy614: - YYDEBUG(614, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy615; - if (yych != 'e') goto yy150; -yy615: - YYDEBUG(615, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy149; - } else { - if (yych <= '@') goto yy616; - if (yych <= 'Z') goto yy149; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy617; - } else { - if (yych <= 'z') goto yy149; - if (yych >= 0x80) goto yy149; - } - } -yy616: - YYDEBUG(616, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1378 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_REQUIRE); -} -#line 5961 "Zend/zend_language_scanner.c" -yy617: - YYDEBUG(617, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy618; - if (yych != 'o') goto yy150; -yy618: - YYDEBUG(618, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy619; - if (yych != 'n') goto yy150; -yy619: - YYDEBUG(619, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy620; - if (yych != 'c') goto yy150; -yy620: - YYDEBUG(620, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy621; - if (yych != 'e') goto yy150; -yy621: - YYDEBUG(621, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(622, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1382 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_REQUIRE_ONCE); -} -#line 5994 "Zend/zend_language_scanner.c" -yy623: - YYDEBUG(623, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy624; - if (yych != 'r') goto yy150; -yy624: - YYDEBUG(624, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy625; - if (yych != 'n') goto yy150; -yy625: - YYDEBUG(625, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(626, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1139 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_RETURN); -} -#line 6017 "Zend/zend_language_scanner.c" -yy627: - YYDEBUG(627, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'L') { - if (yych <= 'K') goto yy150; - goto yy650; - } else { - if (yych <= 'R') goto yy150; - if (yych <= 'S') goto yy649; - goto yy648; - } - } else { - if (yych <= 'r') { - if (yych == 'l') goto yy650; - goto yy150; - } else { - if (yych <= 's') goto yy649; - if (yych <= 't') goto yy648; - goto yy150; - } - } -yy628: - YYDEBUG(628, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'A') goto yy640; - if (yych <= 'N') goto yy150; - goto yy641; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy150; - goto yy640; - } else { - if (yych == 'o') goto yy641; - goto yy150; - } - } -yy629: - YYDEBUG(629, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy630; - if (yych != 'n') goto yy150; -yy630: - YYDEBUG(630, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'R') goto yy150; - if (yych >= 'T') goto yy632; - } else { - if (yych <= 'r') goto yy150; - if (yych <= 's') goto yy631; - if (yych <= 't') goto yy632; - goto yy150; - } -yy631: - YYDEBUG(631, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy638; - if (yych == 't') goto yy638; - goto yy150; -yy632: - YYDEBUG(632, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy633; - if (yych != 'i') goto yy150; -yy633: - YYDEBUG(633, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy634; - if (yych != 'n') goto yy150; -yy634: - YYDEBUG(634, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy635; - if (yych != 'u') goto yy150; -yy635: - YYDEBUG(635, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy636; - if (yych != 'e') goto yy150; -yy636: - YYDEBUG(636, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(637, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1248 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CONTINUE); -} -#line 6111 "Zend/zend_language_scanner.c" -yy638: - YYDEBUG(638, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(639, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1135 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CONST); -} -#line 6124 "Zend/zend_language_scanner.c" -yy640: - YYDEBUG(640, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy645; - if (yych == 's') goto yy645; - goto yy150; -yy641: - YYDEBUG(641, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy642; - if (yych != 'n') goto yy150; -yy642: - YYDEBUG(642, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy643; - if (yych != 'e') goto yy150; -yy643: - YYDEBUG(643, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(644, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1330 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CLONE); -} -#line 6153 "Zend/zend_language_scanner.c" -yy645: - YYDEBUG(645, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy646; - if (yych != 's') goto yy150; -yy646: - YYDEBUG(646, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(647, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1264 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CLASS); -} -#line 6171 "Zend/zend_language_scanner.c" -yy648: - YYDEBUG(648, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy659; - if (yych == 'c') goto yy659; - goto yy150; -yy649: - YYDEBUG(649, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy657; - if (yych == 'e') goto yy657; - goto yy150; -yy650: - YYDEBUG(650, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy651; - if (yych != 'l') goto yy150; -yy651: - YYDEBUG(651, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy652; - if (yych != 'a') goto yy150; -yy652: - YYDEBUG(652, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy653; - if (yych != 'b') goto yy150; -yy653: - YYDEBUG(653, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy654; - if (yych != 'l') goto yy150; -yy654: - YYDEBUG(654, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy655; - if (yych != 'e') goto yy150; -yy655: - YYDEBUG(655, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(656, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1454 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CALLABLE); -} -#line 6221 "Zend/zend_language_scanner.c" -yy657: - YYDEBUG(657, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(658, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1236 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CASE); -} -#line 6234 "Zend/zend_language_scanner.c" -yy659: - YYDEBUG(659, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy660; - if (yych != 'h') goto yy150; -yy660: - YYDEBUG(660, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(661, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1156 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CATCH); -} -#line 6252 "Zend/zend_language_scanner.c" -yy662: - YYDEBUG(662, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy679; - if (yych == 'n') goto yy679; - goto yy150; -yy663: - YYDEBUG(663, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy672; - if (yych == 'r') goto yy672; - goto yy150; -yy664: - YYDEBUG(664, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy665; - if (yych != 'n') goto yy150; -yy665: - YYDEBUG(665, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy666; - if (yych != 'c') goto yy150; -yy666: - YYDEBUG(666, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy667; - if (yych != 't') goto yy150; -yy667: - YYDEBUG(667, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy668; - if (yych != 'i') goto yy150; -yy668: - YYDEBUG(668, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy669; - if (yych != 'o') goto yy150; -yy669: - YYDEBUG(669, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy670; - if (yych != 'n') goto yy150; -yy670: - YYDEBUG(670, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(671, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1131 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FUNCTION); -} -#line 6307 "Zend/zend_language_scanner.c" -yy672: - YYDEBUG(672, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy673; - if (yych <= '9') goto yy149; - } else { - if (yych == 'E') goto yy674; - if (yych <= 'Z') goto yy149; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy149; - } else { - if (yych <= 'e') goto yy674; - if (yych <= 'z') goto yy149; - if (yych >= 0x80) goto yy149; - } - } -yy673: - YYDEBUG(673, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1196 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FOR); -} -#line 6335 "Zend/zend_language_scanner.c" -yy674: - YYDEBUG(674, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy675; - if (yych != 'a') goto yy150; -yy675: - YYDEBUG(675, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy676; - if (yych != 'c') goto yy150; -yy676: - YYDEBUG(676, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy677; - if (yych != 'h') goto yy150; -yy677: - YYDEBUG(677, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(678, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1204 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FOREACH); -} -#line 6363 "Zend/zend_language_scanner.c" -yy679: - YYDEBUG(679, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy680; - if (yych != 'a') goto yy150; -yy680: - YYDEBUG(680, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy681; - if (yych != 'l') goto yy150; -yy681: - YYDEBUG(681, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy682; - if (yych <= '9') goto yy149; - } else { - if (yych == 'L') goto yy683; - if (yych <= 'Z') goto yy149; - } - } else { - if (yych <= 'k') { - if (yych != '`') goto yy149; - } else { - if (yych <= 'l') goto yy683; - if (yych <= 'z') goto yy149; - if (yych >= 0x80) goto yy149; - } - } -yy682: - YYDEBUG(682, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1422 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FINAL); -} -#line 6401 "Zend/zend_language_scanner.c" -yy683: - YYDEBUG(683, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy684; - if (yych != 'y') goto yy150; -yy684: - YYDEBUG(684, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(685, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1160 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FINALLY); -} -#line 6419 "Zend/zend_language_scanner.c" -yy686: - YYDEBUG(686, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'F') { - if (yych == 'C') goto yy692; - if (yych <= 'E') goto yy150; - goto yy693; - } else { - if (yych <= 'c') { - if (yych <= 'b') goto yy150; - goto yy692; - } else { - if (yych == 'f') goto yy693; - goto yy150; - } - } -yy687: - YYDEBUG(687, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy690; - if (yych == 'e') goto yy690; - goto yy150; -yy688: - YYDEBUG(688, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(689, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1192 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DO); -} -#line 6454 "Zend/zend_language_scanner.c" -yy690: - YYDEBUG(690, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(691, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1127 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EXIT); -} -#line 6467 "Zend/zend_language_scanner.c" -yy692: - YYDEBUG(692, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy699; - if (yych == 'l') goto yy699; - goto yy150; -yy693: - YYDEBUG(693, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy694; - if (yych != 'a') goto yy150; -yy694: - YYDEBUG(694, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy695; - if (yych != 'u') goto yy150; -yy695: - YYDEBUG(695, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy696; - if (yych != 'l') goto yy150; -yy696: - YYDEBUG(696, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy697; - if (yych != 't') goto yy150; -yy697: - YYDEBUG(697, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(698, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1240 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DEFAULT); -} -#line 6506 "Zend/zend_language_scanner.c" -yy699: - YYDEBUG(699, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy700; - if (yych != 'a') goto yy150; -yy700: - YYDEBUG(700, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy701; - if (yych != 'r') goto yy150; -yy701: - YYDEBUG(701, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy702; - if (yych != 'e') goto yy150; -yy702: - YYDEBUG(702, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(703, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1212 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DECLARE); -} -#line 6534 "Zend/zend_language_scanner.c" -yy704: - YYDEBUG(704, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy766; - if (yych == 'h') goto yy766; - goto yy150; -yy705: - YYDEBUG(705, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy760; - if (yych == 's') goto yy760; - goto yy150; -yy706: - YYDEBUG(706, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy756; - if (yych == 'p') goto yy756; - goto yy150; -yy707: - YYDEBUG(707, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy722; - if (yych == 'd') goto yy722; - goto yy150; -yy708: - YYDEBUG(708, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy719; - if (yych == 'a') goto yy719; - goto yy150; -yy709: - YYDEBUG(709, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'I') goto yy710; - if (yych <= 'S') goto yy150; - goto yy711; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy150; - } else { - if (yych == 't') goto yy711; - goto yy150; - } - } -yy710: - YYDEBUG(710, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy717; - if (yych == 't') goto yy717; - goto yy150; -yy711: - YYDEBUG(711, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy712; - if (yych != 'e') goto yy150; -yy712: - YYDEBUG(712, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy713; - if (yych != 'n') goto yy150; -yy713: - YYDEBUG(713, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy714; - if (yych != 'd') goto yy150; -yy714: - YYDEBUG(714, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy715; - if (yych != 's') goto yy150; -yy715: - YYDEBUG(715, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(716, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1276 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EXTENDS); -} -#line 6618 "Zend/zend_language_scanner.c" -yy717: - YYDEBUG(717, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(718, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1123 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EXIT); -} -#line 6631 "Zend/zend_language_scanner.c" -yy719: - YYDEBUG(719, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy720; - if (yych != 'l') goto yy150; -yy720: - YYDEBUG(720, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(721, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1366 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EVAL); -} -#line 6649 "Zend/zend_language_scanner.c" -yy722: - YYDEBUG(722, *YYCURSOR); - yych = *++YYCURSOR; - YYDEBUG(-1, yych); - switch (yych) { - case 'D': - case 'd': goto yy723; - case 'F': - case 'f': goto yy724; - case 'I': - case 'i': goto yy725; - case 'S': - case 's': goto yy726; - case 'W': - case 'w': goto yy727; - default: goto yy150; - } -yy723: - YYDEBUG(723, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy749; - if (yych == 'e') goto yy749; - goto yy150; -yy724: - YYDEBUG(724, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy741; - if (yych == 'o') goto yy741; - goto yy150; -yy725: - YYDEBUG(725, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy739; - if (yych == 'f') goto yy739; - goto yy150; -yy726: - YYDEBUG(726, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy733; - if (yych == 'w') goto yy733; - goto yy150; -yy727: - YYDEBUG(727, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy728; - if (yych != 'h') goto yy150; -yy728: - YYDEBUG(728, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy729; - if (yych != 'i') goto yy150; -yy729: - YYDEBUG(729, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy730; - if (yych != 'l') goto yy150; -yy730: - YYDEBUG(730, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy731; - if (yych != 'e') goto yy150; -yy731: - YYDEBUG(731, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(732, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1188 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDWHILE); -} -#line 6723 "Zend/zend_language_scanner.c" -yy733: - YYDEBUG(733, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy734; - if (yych != 'i') goto yy150; -yy734: - YYDEBUG(734, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy735; - if (yych != 't') goto yy150; -yy735: - YYDEBUG(735, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy736; - if (yych != 'c') goto yy150; -yy736: - YYDEBUG(736, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy737; - if (yych != 'h') goto yy150; -yy737: - YYDEBUG(737, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } +#line 7013 "Zend/zend_language_scanner.c" +yy738: YYDEBUG(738, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1232 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDSWITCH); -} -#line 6756 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '_') goto yy745; + goto yy128; yy739: YYDEBUG(739, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(740, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1176 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDIF); -} -#line 6769 "Zend/zend_language_scanner.c" -yy741: - YYDEBUG(741, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy742; - if (yych != 'r') goto yy150; + if (yych == 'P') goto yy746; + if (yych == 'p') goto yy746; + goto yy128; +yy740: + YYDEBUG(740, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(741, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1761 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_METHOD_C); +} +#line 7037 "Zend/zend_language_scanner.c" yy742: YYDEBUG(742, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy743; - if (yych <= '9') goto yy149; - } else { - if (yych == 'E') goto yy744; - if (yych <= 'Z') goto yy149; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy149; - } else { - if (yych <= 'e') goto yy744; - if (yych <= 'z') goto yy149; - if (yych >= 0x80) goto yy149; - } - } + yych = *++YYCURSOR; + if (yych == 'E') goto yy747; + if (yych == 'e') goto yy747; + goto yy128; yy743: YYDEBUG(743, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1200 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDFOR); -} -#line 6802 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy748; + if (yych == 'e') goto yy748; + goto yy128; yy744: YYDEBUG(744, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy745; - if (yych != 'a') goto yy150; + if (yych == 'E') goto yy750; + if (yych == 'e') goto yy750; + goto yy128; yy745: YYDEBUG(745, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy746; - if (yych != 'c') goto yy150; + if (yych == '_') goto yy752; + goto yy128; yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy747; - if (yych != 'h') goto yy150; + if (yych == 'I') goto yy754; + if (yych == 'i') goto yy754; + goto yy128; yy747: YYDEBUG(747, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(748, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1208 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDFOREACH); -} -#line 6830 "Zend/zend_language_scanner.c" -yy749: - YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy750; - if (yych != 'c') goto yy150; + if (yych == '_') goto yy755; + goto yy128; +yy748: + YYDEBUG(748, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } + YYDEBUG(749, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1376 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_INCLUDE_ONCE); +} +#line 7084 "Zend/zend_language_scanner.c" yy750: YYDEBUG(750, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy751; - if (yych != 'l') goto yy150; -yy751: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(751, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy752; - if (yych != 'a') goto yy150; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1384 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_REQUIRE_ONCE); +} +#line 7097 "Zend/zend_language_scanner.c" yy752: YYDEBUG(752, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy753; - if (yych != 'r') goto yy150; -yy753: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(753, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy754; - if (yych != 'e') goto yy150; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1757 "Zend/zend_language_scanner.l" + { + RETURN_TOKEN(T_FUNC_C); +} +#line 7110 "Zend/zend_language_scanner.c" yy754: YYDEBUG(754, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } + yych = *++YYCURSOR; + if (yych == 'L') goto yy756; + if (yych == 'l') goto yy756; + goto yy128; +yy755: YYDEBUG(755, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1216 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDDECLARE); -} -#line 6868 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == '_') goto yy757; + goto yy128; yy756: YYDEBUG(756, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy757; - if (yych != 't') goto yy150; + if (yych == 'E') goto yy759; + if (yych == 'e') goto yy759; + goto yy128; yy757: YYDEBUG(757, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy758; - if (yych != 'y') goto yy150; -yy758: - YYDEBUG(758, *YYCURSOR); ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; } - YYDEBUG(759, *YYCURSOR); + YYDEBUG(758, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1406 "Zend/zend_language_scanner.l" +#line 1777 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_EMPTY); + RETURN_TOKEN(T_NS_C); } -#line 6891 "Zend/zend_language_scanner.c" +#line 7140 "Zend/zend_language_scanner.c" +yy759: + YYDEBUG(759, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy760; + if (yych != 'r') goto yy128; yy760: YYDEBUG(760, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy761; - if (yych != 'e') goto yy150; -yy761: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 16) { + goto yy127; + } YYDEBUG(761, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy762; - if (yych <= '9') goto yy149; - } else { - if (yych == 'I') goto yy763; - if (yych <= 'Z') goto yy149; - } - } else { - if (yych <= 'h') { - if (yych != '`') goto yy149; - } else { - if (yych <= 'i') goto yy763; - if (yych <= 'z') goto yy149; - if (yych >= 0x80) goto yy149; - } - } -yy762: - YYDEBUG(762, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1180 "Zend/zend_language_scanner.l" +#line 1412 "Zend/zend_language_scanner.l" { - RETURN_TOKEN(T_ELSE); + RETURN_TOKEN(T_HALT_COMPILER); } -#line 6924 "Zend/zend_language_scanner.c" -yy763: - YYDEBUG(763, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy764; - if (yych != 'f') goto yy150; -yy764: - YYDEBUG(764, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(765, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1172 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ELSEIF); -} -#line 6942 "Zend/zend_language_scanner.c" -yy766: - YYDEBUG(766, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy767; - if (yych != 'o') goto yy150; -yy767: - YYDEBUG(767, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; - } - YYDEBUG(768, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1256 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ECHO); -} -#line 6960 "Zend/zend_language_scanner.c" +#line 7158 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: { static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 0, 0, 128, 0, 0, + 0, 64, 64, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, + 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 0, 0, 0, 0, 0, 0, - 0, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 0, 0, 0, 0, 64, - 0, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 0, 0, 0, 0, 0, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 0, 0, 0, 0, 0, 0, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 128, + 0, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 0, 0, 0, 0, 0, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(769, *YYCURSOR); + YYDEBUG(762, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; - if (yych <= '-') { - if (yych <= '\r') { - if (yych <= 0x08) goto yy777; - if (yych <= '\n') goto yy771; - if (yych <= '\f') goto yy777; + if (yybm[0+yych] & 64) { + goto yy766; + } + if (yych <= '^') { + if (yych <= '-') { + if (yych >= '-') goto yy769; } else { - if (yych == ' ') goto yy771; - if (yych <= ',') goto yy777; - goto yy773; + if (yych <= '@') goto yy764; + if (yych <= 'Z') goto yy770; } } else { - if (yych <= '_') { - if (yych <= '@') goto yy777; - if (yych <= 'Z') goto yy775; - if (yych <= '^') goto yy777; - goto yy775; + if (yych <= '`') { + if (yych <= '_') goto yy770; } else { - if (yych <= '`') goto yy777; - if (yych <= 'z') goto yy775; - if (yych <= 0x7F) goto yy777; - goto yy775; + if (yych <= 'z') goto yy770; + if (yych >= 0x80) goto yy770; } } -yy771: - YYDEBUG(771, *YYCURSOR); +yy764: + YYDEBUG(764, *YYCURSOR); ++YYCURSOR; - yych = *YYCURSOR; - goto yy783; -yy772: - YYDEBUG(772, *YYCURSOR); +yy765: + YYDEBUG(765, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1289 "Zend/zend_language_scanner.l" - { - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN(T_WHITESPACE); -} -#line 7038 "Zend/zend_language_scanner.c" -yy773: - YYDEBUG(773, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '>') goto yy780; -yy774: - YYDEBUG(774, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1304 "Zend/zend_language_scanner.l" +#line 1306 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); goto restart; } -#line 7052 "Zend/zend_language_scanner.c" -yy775: - YYDEBUG(775, *YYCURSOR); +#line 7230 "Zend/zend_language_scanner.c" +yy766: + YYDEBUG(766, *YYCURSOR); ++YYCURSOR; + YYFILL(1); yych = *YYCURSOR; - goto yy779; -yy776: - YYDEBUG(776, *YYCURSOR); + YYDEBUG(767, *YYCURSOR); + if (yybm[0+yych] & 64) { + goto yy766; + } + YYDEBUG(768, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1298 "Zend/zend_language_scanner.l" +#line 1291 "Zend/zend_language_scanner.l" + { + HANDLE_NEWLINES(yytext, yyleng); + RETURN_TOKEN(T_WHITESPACE); +} +#line 7247 "Zend/zend_language_scanner.c" +yy769: + YYDEBUG(769, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '>') goto yy773; + goto yy765; +yy770: + YYDEBUG(770, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(771, *YYCURSOR); + if (yybm[0+yych] & 128) { + goto yy770; + } + YYDEBUG(772, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1300 "Zend/zend_language_scanner.l" { yy_pop_state(); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 7067 "Zend/zend_language_scanner.c" -yy777: - YYDEBUG(777, *YYCURSOR); - yych = *++YYCURSOR; - goto yy774; -yy778: - YYDEBUG(778, *YYCURSOR); +#line 7270 "Zend/zend_language_scanner.c" +yy773: + YYDEBUG(773, *YYCURSOR); ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy779: - YYDEBUG(779, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy778; - } - goto yy776; -yy780: - YYDEBUG(780, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(781, *YYCURSOR); + YYDEBUG(774, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1294 "Zend/zend_language_scanner.l" +#line 1296 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7092 "Zend/zend_language_scanner.c" -yy782: - YYDEBUG(782, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy783: - YYDEBUG(783, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy782; - } - goto yy772; +#line 7280 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7138,75 +7315,79 @@ yyc_ST_LOOKING_FOR_VARNAME: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(784, *YYCURSOR); + YYDEBUG(775, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy788; - if (yych <= 'Z') goto yy786; - if (yych <= '^') goto yy788; + if (yych <= '@') goto yy777; + if (yych <= 'Z') goto yy779; + if (yych >= '_') goto yy779; } else { - if (yych <= '`') goto yy788; - if (yych <= 'z') goto yy786; - if (yych <= 0x7F) goto yy788; + if (yych <= '`') goto yy777; + if (yych <= 'z') goto yy779; + if (yych >= 0x80) goto yy779; } -yy786: - YYDEBUG(786, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '_') { - if (yych <= '@') { - if (yych <= '/') goto yy787; - if (yych <= '9') goto yy790; - } else { - if (yych <= '[') goto yy790; - if (yych >= '_') goto yy790; - } - } else { - if (yych <= '|') { - if (yych <= '`') goto yy787; - if (yych <= 'z') goto yy790; - } else { - if (yych <= '}') goto yy790; - if (yych >= 0x80) goto yy790; - } - } -yy787: - YYDEBUG(787, *YYCURSOR); +yy777: + YYDEBUG(777, *YYCURSOR); + ++YYCURSOR; +yy778: + YYDEBUG(778, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1609 "Zend/zend_language_scanner.l" +#line 1611 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7185 "Zend/zend_language_scanner.c" -yy788: - YYDEBUG(788, *YYCURSOR); - yych = *++YYCURSOR; - goto yy787; -yy789: - YYDEBUG(789, *YYCURSOR); +#line 7344 "Zend/zend_language_scanner.c" +yy779: + YYDEBUG(779, *YYCURSOR); + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '_') { + if (yych <= '@') { + if (yych <= '/') goto yy778; + if (yych <= '9') goto yy781; + goto yy778; + } else { + if (yych <= '[') goto yy781; + if (yych <= '^') goto yy778; + goto yy781; + } + } else { + if (yych <= '|') { + if (yych <= '`') goto yy778; + if (yych <= 'z') goto yy781; + goto yy778; + } else { + if (yych <= '}') goto yy781; + if (yych <= 0x7F) goto yy778; + goto yy781; + } + } +yy780: + YYDEBUG(780, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy790: - YYDEBUG(790, *YYCURSOR); +yy781: + YYDEBUG(781, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy789; + goto yy780; } - if (yych == '[') goto yy792; - if (yych == '}') goto yy792; - YYDEBUG(791, *YYCURSOR); + if (yych <= '@') goto yy782; + if (yych <= '[') goto yy783; + if (yych == '}') goto yy783; +yy782: + YYDEBUG(782, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy787; -yy792: - YYDEBUG(792, *YYCURSOR); + goto yy778; +yy783: + YYDEBUG(783, *YYCURSOR); ++YYCURSOR; - YYDEBUG(793, *YYCURSOR); + YYDEBUG(784, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1600 "Zend/zend_language_scanner.l" +#line 1602 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); zend_copy_value(zendlval, yytext, yyleng); @@ -7214,18 +7395,18 @@ yy792: yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN(T_STRING_VARNAME); } -#line 7218 "Zend/zend_language_scanner.c" +#line 7399 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: - YYDEBUG(794, *YYCURSOR); + YYDEBUG(785, *YYCURSOR); YYFILL(1); yych = *YYCURSOR; - YYDEBUG(796, *YYCURSOR); + YYDEBUG(787, *YYCURSOR); ++YYCURSOR; - YYDEBUG(797, *YYCURSOR); + YYDEBUG(788, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2328 "Zend/zend_language_scanner.l" +#line 2330 "Zend/zend_language_scanner.l" { int newline = 0; @@ -7281,7 +7462,7 @@ nowdoc_scan_done: HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7285 "Zend/zend_language_scanner.c" +#line 7466 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7292,101 +7473,154 @@ yyc_ST_VAR_OFFSET: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 240, 240, 112, 112, 112, 112, 112, 112, - 112, 112, 0, 0, 0, 0, 0, 0, - 0, 80, 80, 80, 80, 80, 80, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 0, 0, 0, 0, 16, - 0, 80, 80, 80, 80, 80, 80, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 0, 0, 0, 0, 0, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, + 240, 240, 176, 176, 176, 176, 176, 176, + 176, 176, 0, 0, 0, 0, 0, 0, + 0, 160, 160, 160, 160, 160, 160, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 0, 0, 0, 0, 32, + 0, 160, 160, 160, 160, 160, 160, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 0, 0, 0, 0, 0, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, }; - YYDEBUG(798, *YYCURSOR); + YYDEBUG(789, *YYCURSOR); YYFILL(3); yych = *YYCURSOR; if (yych <= '0') { if (yych <= ' ') { if (yych <= '\f') { - if (yych <= 0x08) goto yy812; - if (yych <= '\n') goto yy808; - goto yy812; + if (yych <= 0x08) goto yy791; + if (yych <= '\n') goto yy793; } else { - if (yych <= '\r') goto yy808; - if (yych <= 0x1F) goto yy812; - goto yy808; + if (yych <= '\r') goto yy793; + if (yych >= ' ') goto yy793; } } else { if (yych <= '$') { - if (yych <= '"') goto yy807; - if (yych <= '#') goto yy808; - goto yy803; + if (yych <= '"') goto yy795; + if (yych <= '#') goto yy793; + goto yy797; } else { - if (yych == '\'') goto yy808; - if (yych <= '/') goto yy807; + if (yych == '\'') goto yy793; + if (yych <= '/') goto yy795; + goto yy798; } } } else { if (yych <= ']') { if (yych <= 'Z') { - if (yych <= '9') goto yy802; - if (yych <= '@') goto yy807; - goto yy810; + if (yych <= '9') goto yy800; + if (yych <= '@') goto yy795; + goto yy802; } else { - if (yych <= '[') goto yy807; - if (yych <= '\\') goto yy808; + if (yych <= '[') goto yy795; + if (yych <= '\\') goto yy793; goto yy805; } } else { if (yych <= '`') { - if (yych == '_') goto yy810; - goto yy807; + if (yych == '_') goto yy802; + goto yy795; } else { - if (yych <= 'z') goto yy810; - if (yych <= '~') goto yy807; - if (yych <= 0x7F) goto yy812; - goto yy810; + if (yych <= 'z') goto yy802; + if (yych <= '~') goto yy795; + if (yych >= 0x80) goto yy802; } } } - YYDEBUG(800, *YYCURSOR); - yyaccept = 0; +yy791: + YYDEBUG(791, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(792, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2387 "Zend/zend_language_scanner.l" + { + if (YYCURSOR > YYLIMIT) { + RETURN_TOKEN(END); + } + + zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); + goto restart; +} +#line 7563 "Zend/zend_language_scanner.c" +yy793: + YYDEBUG(793, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(794, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1884 "Zend/zend_language_scanner.l" + { + /* Invalid rule to return a more explicit parse error with proper line number */ + yyless(0); + yy_pop_state(); + ZVAL_NULL(zendlval); + RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); +} +#line 7577 "Zend/zend_language_scanner.c" +yy795: + YYDEBUG(795, *YYCURSOR); + ++YYCURSOR; +yy796: + YYDEBUG(796, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1879 "Zend/zend_language_scanner.l" + { + /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ + RETURN_TOKEN(yytext[0]); +} +#line 7589 "Zend/zend_language_scanner.c" +yy797: + YYDEBUG(797, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '_') { + if (yych <= '@') goto yy796; + if (yych <= 'Z') goto yy807; + if (yych <= '^') goto yy796; + goto yy807; + } else { + if (yych <= '`') goto yy796; + if (yych <= 'z') goto yy807; + if (yych <= 0x7F) goto yy796; + goto yy807; + } +yy798: + YYDEBUG(798, *YYCURSOR); yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'W') { if (yych <= '9') { - if (yych >= '0') goto yy824; + if (yych >= '0') goto yy810; } else { - if (yych == 'B') goto yy821; + if (yych == 'B') goto yy813; } } else { if (yych <= 'b') { - if (yych <= 'X') goto yy823; - if (yych >= 'b') goto yy821; + if (yych <= 'X') goto yy815; + if (yych >= 'b') goto yy813; } else { - if (yych == 'x') goto yy823; + if (yych == 'x') goto yy815; } } -yy801: - YYDEBUG(801, *YYCURSOR); +yy799: + YYDEBUG(799, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1717 "Zend/zend_language_scanner.l" +#line 1719 "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)) { char *end; @@ -7402,198 +7636,131 @@ string: } RETURN_TOKEN(T_NUM_STRING); } -#line 7406 "Zend/zend_language_scanner.c" +#line 7640 "Zend/zend_language_scanner.c" +yy800: + YYDEBUG(800, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(801, *YYCURSOR); + if (yybm[0+yych] & 16) { + goto yy800; + } + goto yy799; yy802: YYDEBUG(802, *YYCURSOR); - yych = *++YYCURSOR; - goto yy820; -yy803: - YYDEBUG(803, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy804; - if (yych <= 'Z') goto yy816; - if (yych >= '_') goto yy816; - } else { - if (yych <= '`') goto yy804; - if (yych <= 'z') goto yy816; - if (yych >= 0x80) goto yy816; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(803, *YYCURSOR); + if (yybm[0+yych] & 32) { + goto yy802; } -yy804: YYDEBUG(804, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1877 "Zend/zend_language_scanner.l" +#line 1892 "Zend/zend_language_scanner.l" { - /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ - RETURN_TOKEN(yytext[0]); + zend_copy_value(zendlval, yytext, yyleng); + RETURN_TOKEN(T_STRING); } -#line 7431 "Zend/zend_language_scanner.c" +#line 7667 "Zend/zend_language_scanner.c" yy805: YYDEBUG(805, *YYCURSOR); ++YYCURSOR; YYDEBUG(806, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1872 "Zend/zend_language_scanner.l" +#line 1874 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN(']'); } -#line 7442 "Zend/zend_language_scanner.c" +#line 7678 "Zend/zend_language_scanner.c" yy807: YYDEBUG(807, *YYCURSOR); - yych = *++YYCURSOR; - goto yy804; -yy808: - YYDEBUG(808, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(809, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1882 "Zend/zend_language_scanner.l" - { - /* Invalid rule to return a more explicit parse error with proper line number */ - yyless(0); - yy_pop_state(); - ZVAL_NULL(zendlval); - RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); -} -#line 7460 "Zend/zend_language_scanner.c" -yy810: - YYDEBUG(810, *YYCURSOR); - ++YYCURSOR; - yych = *YYCURSOR; - goto yy815; -yy811: - YYDEBUG(811, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1890 "Zend/zend_language_scanner.l" - { - zend_copy_value(zendlval, yytext, yyleng); - RETURN_TOKEN(T_STRING); -} -#line 7474 "Zend/zend_language_scanner.c" -yy812: - YYDEBUG(812, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(813, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2385 "Zend/zend_language_scanner.l" - { - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - - zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); - goto restart; -} -#line 7489 "Zend/zend_language_scanner.c" -yy814: - YYDEBUG(814, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; + YYDEBUG(808, *YYCURSOR); + if (yych <= '^') { + if (yych <= '9') { + if (yych >= '0') goto yy807; + } else { + if (yych <= '@') goto yy809; + if (yych <= 'Z') goto yy807; + } + } else { + if (yych <= '`') { + if (yych <= '_') goto yy807; + } else { + if (yych <= 'z') goto yy807; + if (yych >= 0x80) goto yy807; + } + } +yy809: + YYDEBUG(809, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1869 "Zend/zend_language_scanner.l" + { + zend_copy_value(zendlval, (yytext+1), (yyleng-1)); + RETURN_TOKEN(T_VARIABLE); +} +#line 7708 "Zend/zend_language_scanner.c" +yy810: + YYDEBUG(810, *YYCURSOR); + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; + YYDEBUG(811, *YYCURSOR); + if (yych <= '/') goto yy812; + if (yych <= '9') goto yy810; +yy812: + YYDEBUG(812, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1735 "Zend/zend_language_scanner.l" + { /* Offset must be treated as a string */ + ZVAL_STRINGL(zendlval, yytext, yyleng); + RETURN_TOKEN(T_NUM_STRING); +} +#line 7725 "Zend/zend_language_scanner.c" +yy813: + YYDEBUG(813, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 64) { + goto yy816; + } +yy814: + YYDEBUG(814, *YYCURSOR); + YYCURSOR = YYMARKER; + goto yy799; yy815: YYDEBUG(815, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy814; + yych = *++YYCURSOR; + if (yybm[0+yych] & 128) { + goto yy818; } - goto yy811; + goto yy814; yy816: YYDEBUG(816, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; YYDEBUG(817, *YYCURSOR); - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy816; - } else { - if (yych <= '@') goto yy818; - if (yych <= 'Z') goto yy816; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy816; - } else { - if (yych <= 'z') goto yy816; - if (yych >= 0x80) goto yy816; - } + if (yybm[0+yych] & 64) { + goto yy816; } + goto yy812; yy818: YYDEBUG(818, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1867 "Zend/zend_language_scanner.l" - { - zend_copy_value(zendlval, (yytext+1), (yyleng-1)); - RETURN_TOKEN(T_VARIABLE); -} -#line 7530 "Zend/zend_language_scanner.c" -yy819: + ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; YYDEBUG(819, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy820: - YYDEBUG(820, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy819; - } - goto yy801; -yy821: - YYDEBUG(821, *YYCURSOR); - yych = *++YYCURSOR; if (yybm[0+yych] & 128) { - goto yy829; + goto yy818; } -yy822: - YYDEBUG(822, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy801; -yy823: - YYDEBUG(823, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy827; - } - goto yy822; -yy824: - YYDEBUG(824, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(825, *YYCURSOR); - if (yych <= '/') goto yy826; - if (yych <= '9') goto yy824; -yy826: - YYDEBUG(826, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1733 "Zend/zend_language_scanner.l" - { /* Offset must be treated as a string */ - ZVAL_STRINGL(zendlval, yytext, yyleng); - RETURN_TOKEN(T_NUM_STRING); -} -#line 7575 "Zend/zend_language_scanner.c" -yy827: - YYDEBUG(827, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(828, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy827; - } - goto yy826; -yy829: - YYDEBUG(829, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(830, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy829; - } - goto yy826; + goto yy812; } } -#line 2394 "Zend/zend_language_scanner.l" +#line 2396 "Zend/zend_language_scanner.l" } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index fbe9ef775f8..b627a89fcbb 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -583,6 +583,7 @@ static zend_op_array *zend_compile(int type) CG(ast_arena) = zend_arena_create(1024 * 32); if (!zendparse()) { + int last_lineno = CG(zend_lineno); zend_file_context original_file_context; zend_oparray_context original_oparray_context; zend_op_array *original_active_op_array = CG(active_op_array); @@ -598,9 +599,10 @@ static zend_op_array *zend_compile(int type) zend_file_context_begin(&original_file_context); zend_oparray_context_begin(&original_oparray_context); zend_compile_top_stmt(CG(ast)); + CG(zend_lineno) = last_lineno; zend_emit_final_return(type == ZEND_USER_FUNCTION); op_array->line_start = 1; - op_array->line_end = CG(zend_lineno); + op_array->line_end = last_lineno; pass_two(op_array); zend_oparray_context_end(&original_oparray_context); zend_file_context_end(&original_file_context); diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index 5926e3c61d9..c89b1bba457 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 */ +/* Generated by re2c 0.16 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { From 6baaccc9b630daf4a8afd618b725cfa9450dda45 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 12 Oct 2016 22:43:01 +0200 Subject: [PATCH 32/47] Merge branch 'PHP-7.0' into PHP-7.1 (cherry picked from commit 9669ec707ab99d33404d3132792a24ebd1130fcf) --- sapi/phpdbg/tests/exceptions_003.phpt | 4 ++-- sapi/phpdbg/tests/next_001.phpt | 4 ++-- sapi/phpdbg/tests/print_001.phpt | 4 ++-- sapi/phpdbg/tests/stepping_001.phpt | 6 ++---- sapi/phpdbg/tests/watch_001.phpt | 3 +-- sapi/phpdbg/tests/watch_002.phpt | 3 +-- sapi/phpdbg/tests/watch_003.phpt | 3 +-- sapi/phpdbg/tests/watch_004.phpt | 3 +-- sapi/phpdbg/tests/watch_006.phpt | 3 +-- 9 files changed, 13 insertions(+), 20 deletions(-) diff --git a/sapi/phpdbg/tests/exceptions_003.phpt b/sapi/phpdbg/tests/exceptions_003.phpt index 2a982bcbe30..ab26bb4b9dd 100644 --- a/sapi/phpdbg/tests/exceptions_003.phpt +++ b/sapi/phpdbg/tests/exceptions_003.phpt @@ -35,8 +35,8 @@ prompt> [L10 %s ECHO "caught " 00011: } 00012: prompt> caught -[L10 %s RETURN 1 %s] -[Script ended normally] +[L14 %s RETURN 1 %s] +>00014: prompt> --FILE-- [L8 %s ECHO 1 >00008: echo 1; 00009: prompt> 1 -[L8 %s RETURN 1 %s] -[Script ended normally] +[L9 %s RETURN 1 %s] +>00009: prompt> --FILE-- [Not Executing!] prompt> [Context %s (11 ops)] -L1-19 {main}() %s - %s + 11 ops +L1-21 {main}() %s - %s + 11 ops L4 #0 NOP L14 #1 NOP L18 #2 NEW "Foo\\Bar" @1 @@ -42,7 +42,7 @@ L1-19 {main}() %s - %s + 11 ops L19 #7 INIT_FCALL%s %d %s "foo" L19 #8 SEND_VAL "test" 1 L19 #9 DO_FCALL - L19 #10 RETURN 1 + L21 #10 RETURN 1 prompt> --FILE-- ... ok >00011: } finally { 00012: echo " ... ok"; 00013: } -prompt> [L12 %s RETURN 1 %s] ->00012: echo " ... ok"; - 00013: } - 00014: +prompt> [L14 %s RETURN 1 %s] +>00014: prompt> --FILE-- [Breaking on watchpoint $b] Old value: New value: 2 ->00007: $b = 2; - 00008: +>00008: prompt> [$b has been removed, removing watchpoint recursively] [Script ended normally] prompt> diff --git a/sapi/phpdbg/tests/watch_002.phpt b/sapi/phpdbg/tests/watch_002.phpt index a12400e153d..b57ca0a1d4d 100644 --- a/sapi/phpdbg/tests/watch_002.phpt +++ b/sapi/phpdbg/tests/watch_002.phpt @@ -17,8 +17,7 @@ prompt> [Breakpoint #0 at %s:6, hits: 1] prompt> [Added watchpoint #0 for $a[]] prompt> [Breaking on watchpoint $a[]] 1 elements were added to the array ->00008: $a = [0 => 3, 1 => 4]; - 00009: +>00009: prompt> [$a[] has been removed, removing watchpoint] [Script ended normally] prompt> diff --git a/sapi/phpdbg/tests/watch_003.phpt b/sapi/phpdbg/tests/watch_003.phpt index cb09bd47924..08868aedc3e 100644 --- a/sapi/phpdbg/tests/watch_003.phpt +++ b/sapi/phpdbg/tests/watch_003.phpt @@ -24,8 +24,7 @@ New value: 2 prompt> [Breaking on watchpoint $a[0]] Old value: 2 New value: 3 ->00008: $a = [0 => 3, 1 => 4]; - 00009: +>00009: prompt> [$a[0] has been removed, removing watchpoint] [Script ended normally] prompt> diff --git a/sapi/phpdbg/tests/watch_004.phpt b/sapi/phpdbg/tests/watch_004.phpt index 98c8afd0856..878542937be 100644 --- a/sapi/phpdbg/tests/watch_004.phpt +++ b/sapi/phpdbg/tests/watch_004.phpt @@ -26,8 +26,7 @@ New value: aa prompt> [Breaking on watchpoint $a] Old value: aa New value: ab ->00005: $a[1] = "b"; - 00006: +>00006: prompt> [$a has been removed, removing watchpoint] [Script ended normally] prompt> diff --git a/sapi/phpdbg/tests/watch_006.phpt b/sapi/phpdbg/tests/watch_006.phpt index b8f6206e56d..bf38b8eff1f 100644 --- a/sapi/phpdbg/tests/watch_006.phpt +++ b/sapi/phpdbg/tests/watch_006.phpt @@ -54,8 +54,7 @@ New value (reference): Array ([0] => 2,[1] => 3) prompt> [Breaking on watchpoint $b] Old value inaccessible or destroyed New value (reference): Array ([0] => 1) ->00009: $b = &$c; - 00010: +>00010: prompt> [$b has been removed, removing watchpoint recursively] [$a[0] has been removed, removing watchpoint] [Script ended normally] From f40c03168ef1ac9517560947ea63d9d54c3dc82c Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Wed, 12 Oct 2016 22:57:41 +0200 Subject: [PATCH 33/47] Merge remote-tracking branch 'origin/PHP-7.0' into PHP-7.1 (cherry picked from commit 457e68626257e8b5c891f2edf20d31907080063a) --- sapi/phpdbg/phpdbg.c | 12 ++++++------ sapi/phpdbg/tests/include.inc | 3 +++ 2 files changed, 9 insertions(+), 6 deletions(-) create mode 100644 sapi/phpdbg/tests/include.inc diff --git a/sapi/phpdbg/phpdbg.c b/sapi/phpdbg/phpdbg.c index f4b42733023..361b2c5bc17 100644 --- a/sapi/phpdbg/phpdbg.c +++ b/sapi/phpdbg/phpdbg.c @@ -2062,6 +2062,12 @@ phpdbg_out: php_request_shutdown(NULL); } zend_end_try(); + if (PHPDBG_G(exec) && !memcmp("-", PHPDBG_G(exec), 2)) { /* i.e. execution context has been read from stdin - back it up */ + phpdbg_file_source *data = zend_hash_str_find_ptr(&PHPDBG_G(file_sources), PHPDBG_G(exec), PHPDBG_G(exec_len)); + backup_phpdbg_compile = zend_string_alloc(data->len + 2, 1); + sprintf(ZSTR_VAL(backup_phpdbg_compile), "?>%.*s", (int) data->len, data->buf); + } + /* backup globals when cleaning */ if ((cleaning > 0 || remote) && !quit_immediately) { settings = calloc(1, sizeof(zend_phpdbg_globals)); @@ -2114,12 +2120,6 @@ phpdbg_out: wrapper->wops->stream_opener = PHPDBG_G(orig_url_wrap_php); } - if (PHPDBG_G(exec) && !memcmp("-", PHPDBG_G(exec), 2)) { /* i.e. execution context has been read from stdin - back it up */ - phpdbg_file_source *data = zend_hash_str_find_ptr(&PHPDBG_G(file_sources), PHPDBG_G(exec), PHPDBG_G(exec_len)); - backup_phpdbg_compile = zend_string_alloc(data->len + 2, 1); - sprintf(ZSTR_VAL(backup_phpdbg_compile), "?>%.*s", (int) data->len, data->buf); - } - zend_try { php_module_shutdown(); } zend_end_try(); diff --git a/sapi/phpdbg/tests/include.inc b/sapi/phpdbg/tests/include.inc new file mode 100644 index 00000000000..fb1b7ca8418 --- /dev/null +++ b/sapi/phpdbg/tests/include.inc @@ -0,0 +1,3 @@ + Date: Tue, 11 Oct 2016 20:18:59 -0500 Subject: [PATCH 34/47] Fixed bug in zend_accel_error() and cleaned up kill_all_lockers() 1. zend_accel_error was only executing clean up if log_verbosity_level is high enough to log 2. Cleaned up kill_all_lockers function and fixed comments. (cherry picked from commit bcee2fdbec4f4bba59d4134003cfaf5b1f9b67ab) --- ext/opcache/ZendAccelerator.c | 27 +++++++--- ext/opcache/tests/log_verbosity_bug.phpt | 19 +++++++ ext/opcache/zend_accelerator_debug.c | 68 ++++++++++++------------ 3 files changed, 75 insertions(+), 39 deletions(-) create mode 100644 ext/opcache/tests/log_verbosity_bug.phpt diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index 769ce920496..2f549cc011c 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -622,27 +622,42 @@ static void accel_use_shm_interned_strings(void) #ifndef ZEND_WIN32 static inline void kill_all_lockers(struct flock *mem_usage_check) { - int tries = 10; - + int success, tries; /* so that other process won't try to force while we are busy cleaning up */ ZCSG(force_restart_time) = 0; while (mem_usage_check->l_pid > 0) { + /* Clear previous errno, reset success and tries */ + errno = 0; + success = 0; + tries = 10; + while (tries--) { - zend_accel_error(ACCEL_LOG_WARNING, "Killed locker %d", mem_usage_check->l_pid); + zend_accel_error(ACCEL_LOG_WARNING, "Attempting to kill locker %d", mem_usage_check->l_pid); if (kill(mem_usage_check->l_pid, SIGKILL)) { + if (errno == ESRCH) { + /* Process died before the signal was sent */ + success = 1; + zend_accel_error(ACCEL_LOG_WARNING, "Process %d died before SIGKILL was sent", mem_usage_check->l_pid); + } break; } /* give it a chance to die */ usleep(20000); if (kill(mem_usage_check->l_pid, 0)) { - /* can't kill it */ + if (errno == ESRCH) { + /* successfully killed locker, process no longer exists */ + success = 1; + zend_accel_error(ACCEL_LOG_WARNING, "Killed locker %d", mem_usage_check->l_pid); + } break; } usleep(10000); } - if (!tries) { - zend_accel_error(ACCEL_LOG_WARNING, "Can't kill %d after 10 tries!", mem_usage_check->l_pid); + if (!success) { + /* errno is not ESRCH or we ran out of tries to kill the locker */ ZCSG(force_restart_time) = time(NULL); /* restore forced restart request */ + /* cannot kill the locker, bail out with error */ + zend_accel_error(ACCEL_LOG_ERROR, "Cannot kill process %d: %s!", mem_usage_check->l_pid, strerror(errno)); } mem_usage_check->l_type = F_WRLCK; diff --git a/ext/opcache/tests/log_verbosity_bug.phpt b/ext/opcache/tests/log_verbosity_bug.phpt new file mode 100644 index 00000000000..725b8889f4f --- /dev/null +++ b/ext/opcache/tests/log_verbosity_bug.phpt @@ -0,0 +1,19 @@ +--TEST-- +Test ACCEL_LOG_FATAL will cause the process to die even if not logged +--DESCRIPTION-- +This test forces the opcache to error by setting memory_comsumption very large. +The resulting ACCEL_LOG_FATAL should cause php to die. +The process should die regardless of the log_verbosity_level. +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.memory_consumption=999999999 +opcache.log_verbosity_level=-1 +--SKIPIF-- + +--FILE-- + +--EXPECTF-- + diff --git a/ext/opcache/zend_accelerator_debug.c b/ext/opcache/zend_accelerator_debug.c index 8fcc01b4d4e..12f80ab79b8 100644 --- a/ext/opcache/zend_accelerator_debug.c +++ b/ext/opcache/zend_accelerator_debug.c @@ -30,22 +30,20 @@ void zend_accel_error(int type, const char *format, ...) { - va_list args; + va_list args; time_t timestamp; char *time_string; FILE * fLog = NULL; - if (type > ZCG(accel_directives).log_verbosity_level) { - return; - } + if (type <= ZCG(accel_directives).log_verbosity_level) { timestamp = time(NULL); time_string = asctime(localtime(×tamp)); time_string[24] = 0; if (!ZCG(accel_directives).error_log || - !*ZCG(accel_directives).error_log || - strcmp(ZCG(accel_directives).error_log, "stderr") == 0) { + !*ZCG(accel_directives).error_log || + strcmp(ZCG(accel_directives).error_log, "stderr") == 0) { fLog = stderr; } else { @@ -56,33 +54,40 @@ void zend_accel_error(int type, const char *format, ...) } #ifdef ZTS - fprintf(fLog, "%s (" ZEND_ULONG_FMT "): ", time_string, (zend_ulong)tsrm_thread_id()); + fprintf(fLog, "%s (" ZEND_ULONG_FMT "): ", time_string, (zend_ulong)tsrm_thread_id()); #else - fprintf(fLog, "%s (%d): ", time_string, getpid()); + fprintf(fLog, "%s (%d): ", time_string, getpid()); #endif - switch (type) { - case ACCEL_LOG_FATAL: - fprintf(fLog, "Fatal Error "); - break; - case ACCEL_LOG_ERROR: - fprintf(fLog, "Error "); - break; - case ACCEL_LOG_WARNING: - fprintf(fLog, "Warning "); - break; - case ACCEL_LOG_INFO: - fprintf(fLog, "Message "); - break; - case ACCEL_LOG_DEBUG: - fprintf(fLog, "Debug "); - break; - } + switch (type) { + case ACCEL_LOG_FATAL: + fprintf(fLog, "Fatal Error "); + break; + case ACCEL_LOG_ERROR: + fprintf(fLog, "Error "); + break; + case ACCEL_LOG_WARNING: + fprintf(fLog, "Warning "); + break; + case ACCEL_LOG_INFO: + fprintf(fLog, "Message "); + break; + case ACCEL_LOG_DEBUG: + fprintf(fLog, "Debug "); + break; + } - va_start(args, format); - vfprintf(fLog, format, args); - va_end(args); - fprintf(fLog, "\n"); + va_start(args, format); + vfprintf(fLog, format, args); + va_end(args); + fprintf(fLog, "\n"); + + fflush(fLog); + if (fLog != stderr) { + fclose(fLog); + } + } + /* perform error handling even without logging the error */ switch (type) { case ACCEL_LOG_ERROR: zend_bailout(); @@ -91,8 +96,5 @@ void zend_accel_error(int type, const char *format, ...) exit(-2); break; } - fflush(fLog); - if (fLog != stderr) { - fclose(fLog); - } + } From b4ddf4e575f19c08447808f513e5d53df671ce71 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 12 Oct 2016 23:07:37 +0200 Subject: [PATCH 35/47] fix another mistake (cherry picked from commit bec0121733cc5777c4d3fde8e9ff56fe68c039d3) --- Zend/zend_exceptions.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c index f3143b942da..6e4962dbf2e 100644 --- a/Zend/zend_exceptions.c +++ b/Zend/zend_exceptions.c @@ -306,7 +306,7 @@ ZEND_METHOD(exception, __construct) #define CHECK_EXC_TYPE(id, type) \ pvalue = zend_read_property_ex(i_get_exception_base(object), (object), CG(known_strings)[id], 1, &value); \ if (Z_TYPE_P(pvalue) != IS_NULL && Z_TYPE_P(pvalue) != type) { \ - zend_unset_property(i_get_exception_base(object), object, "previous", sizeof("previous")-1); \ + zend_unset_property(i_get_exception_base(object), object, ZSTR_VAL(CG(known_strings)[id]), ZSTR_LEN(CG(known_strings)[id])); \ } ZEND_METHOD(exception, __wakeup) From ddaf04053beec2c9bbb63e1d9b99efdb6aabbf4e Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Mon, 27 Jun 2016 14:23:15 -0400 Subject: [PATCH 36/47] Fixed bug #73237 If the response includes both fields with simple types (which get concatenated into an XML string) and a complex type (which is parsed into an object), then the object will parsed into the same zval as the simple types and will overwrite the string. (cherry picked from commit 26287132c0c48e52dbaf1ac44c1d2f0d0d9b0cf7) --- ext/soap/php_encoding.c | 6 ++- ext/soap/tests/bugs/bug73237.phpt | 65 ++++++++++++++++++++++++++ ext/soap/tests/bugs/bug73237.wsdl | 78 +++++++++++++++++++++++++++++++ 3 files changed, 147 insertions(+), 2 deletions(-) create mode 100644 ext/soap/tests/bugs/bug73237.phpt create mode 100644 ext/soap/tests/bugs/bug73237.wsdl diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c index a8f28fbf1ec..c0e22d741bd 100644 --- a/ext/soap/php_encoding.c +++ b/ext/soap/php_encoding.c @@ -1225,7 +1225,7 @@ static void unset_zval_property(zval* object, char* name) static void model_to_zval_any(zval *ret, xmlNodePtr node) { - zval rv, arr, val; + zval rv, arr, val, keepVal; zval* any = NULL; char* name = NULL; @@ -1254,6 +1254,7 @@ static void model_to_zval_any(zval *ret, xmlNodePtr node) ZVAL_NULL(&val2); master_to_zval(&val2, get_conversion(XSD_ANYXML), node->next); if (Z_TYPE(val2) != IS_STRING || *Z_STRVAL(val) != '<') { + Z_TRY_DELREF(val2); break; } concat_function(&val, &val, &val2); @@ -1272,7 +1273,8 @@ static void model_to_zval_any(zval *ret, xmlNodePtr node) any = &arr; name = NULL; } else { - any = &val; + ZVAL_COPY_VALUE(&keepVal, &val); + any = &keepVal; } } else { /* Add array element */ diff --git a/ext/soap/tests/bugs/bug73237.phpt b/ext/soap/tests/bugs/bug73237.phpt new file mode 100644 index 00000000000..e97345fdaab --- /dev/null +++ b/ext/soap/tests/bugs/bug73237.phpt @@ -0,0 +1,65 @@ +--TEST-- +Bug #73237 "Any" data missing when result includes a struct +--SKIPIF-- + +--INI-- +soap.wsdl_cache_enabled=0 +--FILE-- +trueCampaignMember00vi0000011VMgeAAG00vi0000011VMgeAAG701i0000001lreeAAASent00Qi000001UrbYFEAZLeadangela.lansbury@cbs.com1 +EOF; + } +} +$client = new LocalSoapClient(dirname(__FILE__)."/bug73237.wsdl"); +var_dump($client->query("")); +?> +--EXPECT-- +object(stdClass)#2 (1) { + ["result"]=> + object(stdClass)#3 (4) { + ["done"]=> + string(4) "true" + ["queryLocator"]=> + NULL + ["records"]=> + object(SoapVar)#6 (4) { + ["enc_type"]=> + int(0) + ["enc_value"]=> + object(stdClass)#4 (3) { + ["type"]=> + string(14) "CampaignMember" + ["Id"]=> + array(2) { + [0]=> + string(18) "00vi0000011VMgeAAG" + [1]=> + string(18) "00vi0000011VMgeAAG" + } + ["any"]=> + array(2) { + [0]=> + string(175) "701i0000001lreeAAASent00Qi000001UrbYFEAZ" + ["Lead"]=> + object(stdClass)#5 (3) { + ["type"]=> + string(4) "Lead" + ["Id"]=> + NULL + ["any"]=> + string(44) "angela.lansbury@cbs.com" + } + } + } + ["enc_stype"]=> + string(13) "genericObject" + ["enc_ns"]=> + string(27) "urn:object.test.example.org" + } + ["size"]=> + string(1) "1" + } +} diff --git a/ext/soap/tests/bugs/bug73237.wsdl b/ext/soap/tests/bugs/bug73237.wsdl new file mode 100644 index 00000000000..230338c2858 --- /dev/null +++ b/ext/soap/tests/bugs/bug73237.wsdl @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create a Query Cursor + + + + + + + + + + + + + + + + + + + + + + + + From 0362d61ab75c4b6faa99ca57d49cd800530b482f Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Wed, 12 Oct 2016 23:07:47 -0700 Subject: [PATCH 37/47] Fix potential overflows in php_pcre_replace_impl (cherry picked from commit 9c50ba42d6503a5fcfffad6c6823a9bee0e033c0) --- Zend/zend_alloc.c | 17 ++--------------- Zend/zend_multiply.h | 12 ++++++++++++ ext/pcre/php_pcre.c | 34 ++++++++++++++++------------------ 3 files changed, 30 insertions(+), 33 deletions(-) diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c index 439801f3ddc..8dd77ff67bf 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -1427,7 +1427,7 @@ static void *zend_mm_realloc_heap(zend_mm_heap *heap, void *ptr, size_t size, si #endif #ifdef ZEND_WIN32 /* On Windows we don't have ability to extend huge blocks in-place. - * We allocate them with 2MB size granularity, to avoid many + * We allocate them with 2MB size granularity, to avoid many * reallocations when they are extended by small pieces */ new_size = ZEND_MM_ALIGNED_SIZE_EX(size, MAX(REAL_PAGE_SIZE, ZEND_MM_CHUNK_SIZE)); @@ -1695,7 +1695,7 @@ static void *zend_mm_alloc_huge(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_D { #ifdef ZEND_WIN32 /* On Windows we don't have ability to extend huge blocks in-place. - * We allocate them with 2MB size granularity, to avoid many + * We allocate them with 2MB size granularity, to avoid many * reallocations when they are extended by small pieces */ size_t new_size = ZEND_MM_ALIGNED_SIZE_EX(size, MAX(REAL_PAGE_SIZE, ZEND_MM_CHUNK_SIZE)); @@ -2456,19 +2456,6 @@ ZEND_API size_t ZEND_FASTCALL _zend_mem_block_size(void *ptr ZEND_FILE_LINE_DC Z return zend_mm_size(AG(mm_heap), ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); } -static zend_always_inline size_t safe_address(size_t nmemb, size_t size, size_t offset) -{ - int overflow; - size_t ret = zend_safe_address(nmemb, size, offset, &overflow); - - if (UNEXPECTED(overflow)) { - zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset); - return 0; - } - return ret; -} - - ZEND_API void* ZEND_FASTCALL _safe_emalloc(size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { return emalloc_rel(safe_address(nmemb, size, offset)); diff --git a/Zend/zend_multiply.h b/Zend/zend_multiply.h index dfd21f7da35..0c23071a7f1 100644 --- a/Zend/zend_multiply.h +++ b/Zend/zend_multiply.h @@ -266,6 +266,18 @@ static zend_always_inline size_t zend_safe_address(size_t nmemb, size_t size, si } #endif +static zend_always_inline size_t safe_address(size_t nmemb, size_t size, size_t offset) +{ + int overflow; + size_t ret = zend_safe_address(nmemb, size, offset, &overflow); + + if (UNEXPECTED(overflow)) { + zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset); + return 0; + } + return ret; +} + #endif /* ZEND_MULTIPLY_H */ /* diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c index 56d1f44293c..066d5cc51ef 100644 --- a/ext/pcre/php_pcre.c +++ b/ext/pcre/php_pcre.c @@ -88,7 +88,7 @@ static void pcre_handle_exec_error(int pcre_code) /* {{{ */ case PCRE_ERROR_BADUTF8_OFFSET: preg_code = PHP_PCRE_BAD_UTF8_OFFSET_ERROR; break; - + #ifdef HAVE_PCRE_JIT_SUPPORT case PCRE_ERROR_JIT_STACKLIMIT: preg_code = PHP_PCRE_JIT_STACKLIMIT_ERROR; @@ -925,7 +925,7 @@ PHPAPI void php_pcre_match_impl(pcre_cache_entry *pce, char *subject, int subjec to achieve this, unless we're already at the end of the string. */ if (g_notempty != 0 && start_offset < subject_len) { int unit_len = calculate_unit_length(pce, subject + start_offset); - + offsets[0] = (int)start_offset; offsets[1] = (int)(start_offset + unit_len); } else @@ -1125,7 +1125,6 @@ PHPAPI zend_string *php_pcre_replace_impl(pcre_cache_entry *pce, zend_string *su int backref; /* Backreference number */ int start_offset; /* Where the new search starts */ int g_notempty=0; /* If the match should not be empty */ - int replace_len=0; /* Length of replacement string */ char *replace=NULL, /* Replacement string */ *walkbuf, /* Location of current replacement in the result */ *walk, /* Used to walk the replacement string */ @@ -1133,7 +1132,7 @@ PHPAPI zend_string *php_pcre_replace_impl(pcre_cache_entry *pce, zend_string *su *piece, /* The current piece of subject */ *replace_end=NULL, /* End of replacement string */ walk_last; /* Last walked character */ - int result_len; /* Length of result */ + size_t result_len; /* Length of result */ unsigned char *mark = NULL; /* Target for MARK name */ zend_string *result; /* Result of replacement */ zend_string *eval_result=NULL; /* Result of custom function */ @@ -1155,8 +1154,7 @@ PHPAPI zend_string *php_pcre_replace_impl(pcre_cache_entry *pce, zend_string *su if (!is_callable_replace) { replace = Z_STRVAL_P(replace_val); - replace_len = (int)Z_STRLEN_P(replace_val); - replace_end = replace + replace_len; + replace_end = replace + Z_STRLEN_P(replace_val); } /* Calculate the size of the offsets array, and allocate memory for it. */ @@ -1224,7 +1222,7 @@ PHPAPI zend_string *php_pcre_replace_impl(pcre_cache_entry *pce, zend_string *su match = subject + offsets[0]; new_len = result_len + offsets[0] - start_offset; /* part before the match */ - + /* if (!is_callable_replace) */ if (EXPECTED(replace)) { /* do regular substitution */ @@ -1250,7 +1248,7 @@ PHPAPI zend_string *php_pcre_replace_impl(pcre_cache_entry *pce, zend_string *su } if (new_len >= alloc_len) { - alloc_len = alloc_len + 2 * new_len; + alloc_len = safe_address(2, new_len, alloc_len); if (result == NULL) { result = zend_string_alloc(alloc_len, 0); } else { @@ -1260,7 +1258,7 @@ PHPAPI zend_string *php_pcre_replace_impl(pcre_cache_entry *pce, zend_string *su /* copy the part of the string before the match */ memcpy(&ZSTR_VAL(result)[result_len], piece, match-piece); - result_len += (int)(match-piece); + result_len += (match-piece); /* copy replacement and backrefs */ walkbuf = ZSTR_VAL(result) + result_len; @@ -1288,14 +1286,14 @@ PHPAPI zend_string *php_pcre_replace_impl(pcre_cache_entry *pce, zend_string *su } *walkbuf = '\0'; /* increment the result length by how much we've added to the string */ - result_len += (int)(walkbuf - (ZSTR_VAL(result) + result_len)); + result_len += (walkbuf - (ZSTR_VAL(result) + result_len)); } else { /* Use custom function to get replacement string and its length. */ eval_result = preg_do_repl_func(replace_val, subject, offsets, subpat_names, count, mark); ZEND_ASSERT(eval_result); - new_len += (int)ZSTR_LEN(eval_result); + new_len = safe_address(1, ZSTR_LEN(eval_result), new_len); if (new_len >= alloc_len) { - alloc_len = alloc_len + 2 * new_len; + alloc_len = safe_address(2, new_len, alloc_len); if (result == NULL) { result = zend_string_alloc(alloc_len, 0); } else { @@ -1517,7 +1515,7 @@ static int preg_replace_impl(zval *return_value, zval *regex, zval *replace, zva } } } ZEND_HASH_FOREACH_END(); - } else { + } else { /* if subject is not an array */ old_replace_count = replace_count; if ((result = php_replace_in_subject(regex, replace, subject, limit_val, is_callable_replace, &replace_count)) != NULL) { @@ -1528,7 +1526,7 @@ static int preg_replace_impl(zval *return_value, zval *regex, zval *replace, zva } } } - + return replace_count; } /* }}} */ @@ -1617,7 +1615,7 @@ static PHP_FUNCTION(preg_replace_callback_array) Z_PARAM_LONG(limit) Z_PARAM_ZVAL_EX(zcount, 0, 1) ZEND_PARSE_PARAMETERS_END(); - + ZVAL_UNDEF(&zv); ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(pattern), str_idx, replace) { if (str_idx) { @@ -1626,7 +1624,7 @@ static PHP_FUNCTION(preg_replace_callback_array) php_error_docref(NULL, E_WARNING, "Delimiter must not be alphanumeric or backslash"); zval_ptr_dtor(return_value); RETURN_NULL(); - } + } if (!zend_is_callable(replace, 0, &callback_name)) { php_error_docref(NULL, E_WARNING, "'%s' is not a valid callback", ZSTR_VAL(callback_name)); @@ -1648,14 +1646,14 @@ static PHP_FUNCTION(preg_replace_callback_array) zval_ptr_dtor(®ex); if (Z_ISUNDEF(zv)) { - RETURN_NULL(); + RETURN_NULL(); } ZVAL_COPY_VALUE(return_value, &zv); if (UNEXPECTED(EG(exception))) { zval_ptr_dtor(return_value); - RETURN_NULL(); + RETURN_NULL(); } } ZEND_HASH_FOREACH_END(); From 94b7ab185c589c61b16a172376c386ad82ae7be7 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Wed, 12 Oct 2016 23:08:30 -0700 Subject: [PATCH 38/47] Syncronize with 5.6 - __toString should return "" (cherry picked from commit 2301608736c82183f8210053a45f78eeef5b0c74) --- ext/spl/spl_iterators.c | 2 +- ext/spl/tests/spl_cachingiterator___toString_basic.phpt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c index 6af40af39bb..af458dae4a7 100644 --- a/ext/spl/spl_iterators.c +++ b/ext/spl/spl_iterators.c @@ -2801,7 +2801,7 @@ SPL_METHOD(CachingIterator, __toString) if (Z_TYPE(intern->u.caching.zstr) == IS_STRING) { RETURN_STR_COPY(Z_STR_P(&intern->u.caching.zstr)); } else { - RETURN_NULL(); + RETURN_EMPTY_STRING(); } } /* }}} */ diff --git a/ext/spl/tests/spl_cachingiterator___toString_basic.phpt b/ext/spl/tests/spl_cachingiterator___toString_basic.phpt index 0395b3794d8..57ca5152ed7 100644 --- a/ext/spl/tests/spl_cachingiterator___toString_basic.phpt +++ b/ext/spl/tests/spl_cachingiterator___toString_basic.phpt @@ -13,4 +13,4 @@ $ci->__toString() // if conversion to string is done by echo, for example, an ex ); ?> --EXPECTF-- -NULL +string(0) "" From 177e6adca7349bf97c3c543fd0aea577583129cb Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Wed, 12 Oct 2016 23:26:15 -0700 Subject: [PATCH 39/47] Merge branch 'PHP-7.0' into PHP-7.1 * PHP-7.0: Fix outlen for openssl function Syncronize with 5.6 - __toString should return "" Fix potential overflows in php_pcre_replace_impl (cherry picked from commit ff75665663045a96d6f182e24283e6bebb8537fa) --- ext/openssl/openssl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index 1aa59ad43ad..3bad7170887 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -6342,7 +6342,7 @@ PHP_FUNCTION(openssl_decrypt) const EVP_CIPHER *cipher_type; EVP_CIPHER_CTX *cipher_ctx; struct php_openssl_cipher_mode mode; - int outlen, i = 0; + int i = 0, outlen; zend_string *outbuf; zend_string *base64_str = NULL; zend_bool free_iv = 0, free_password = 0; @@ -6377,7 +6377,7 @@ PHP_FUNCTION(openssl_decrypt) php_openssl_load_cipher_mode(&mode, cipher_type); if (!(options & OPENSSL_RAW_DATA)) { - base64_str = php_base64_decode_ex((unsigned char*)data, (int)data_len, 1); + base64_str = php_base64_decode((unsigned char*)data, data_len); if (!base64_str) { php_error_docref(NULL, E_WARNING, "Failed to base64 decode the input"); EVP_CIPHER_CTX_free(cipher_ctx); From ee425297506cb7248085b2bfcddf264af3953d6f Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Thu, 13 Oct 2016 09:50:32 +0200 Subject: [PATCH 40/47] Revert "export symbol missing by phpdbg" This reverts commit 611ab7fe5b9fe41de56c25b1d348a866794b1fb1. Overseen strpprintf is there (cherry picked from commit 3104882cf873308c43dca20bdfd698dd3470a246) --- Zend/zend_exceptions.c | 12 ++++++++++++ Zend/zend_string.c | 12 ------------ Zend/zend_string.h | 2 -- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c index 6e4962dbf2e..331213d8e64 100644 --- a/Zend/zend_exceptions.c +++ b/Zend/zend_exceptions.c @@ -661,6 +661,18 @@ size_t zend_spprintf(char **message, size_t max_len, const char *format, ...) /* } /* }}} */ +zend_string *zend_strpprintf(size_t max_len, const char *format, ...) /* {{{ */ +{ + va_list arg; + zend_string *str; + + va_start(arg, format); + str = zend_vstrpprintf(max_len, format, arg); + va_end(arg); + return str; +} +/* }}} */ + /* {{{ proto string Exception|Error::__toString() Obtain the string representation of the Exception object */ ZEND_METHOD(exception, __toString) diff --git a/Zend/zend_string.c b/Zend/zend_string.c index 194170db0ba..612c8049ef8 100644 --- a/Zend/zend_string.c +++ b/Zend/zend_string.c @@ -243,18 +243,6 @@ static void zend_interned_strings_restore_int(void) #endif } -ZEND_API zend_string *zend_strpprintf(size_t max_len, const char *format, ...) /* {{{ */ -{ - va_list arg; - zend_string *str; - - va_start(arg, format); - str = zend_vstrpprintf(max_len, format, arg); - va_end(arg); - return str; -} -/* }}} */ - /* * Local variables: * tab-width: 4 diff --git a/Zend/zend_string.h b/Zend/zend_string.h index 1bc3c863056..8a1ac6f506d 100644 --- a/Zend/zend_string.h +++ b/Zend/zend_string.h @@ -34,8 +34,6 @@ void zend_interned_strings_init(void); void zend_interned_strings_dtor(void); void zend_known_interned_strings_init(zend_string ***, uint32_t *); -ZEND_API zend_string *zend_strpprintf(size_t max_len, const char *format, ...); - END_EXTERN_C() /* Shortcuts */ From 5ce223026649cf6de1fdd20bb973d034885b7295 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Thu, 13 Oct 2016 09:55:37 +0200 Subject: [PATCH 41/47] use already exported symbol (cherry picked from commit ce3e792c2c4c251fd5963a36af5ad4a9dd875085) --- sapi/phpdbg/phpdbg_prompt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sapi/phpdbg/phpdbg_prompt.c b/sapi/phpdbg/phpdbg_prompt.c index c6115e7d004..35ee4332cd8 100644 --- a/sapi/phpdbg/phpdbg_prompt.c +++ b/sapi/phpdbg/phpdbg_prompt.c @@ -543,7 +543,7 @@ int phpdbg_compile_stdin(zend_string *code) { PHPDBG_G(exec_len) = 1; { /* remove leading ?> from source */ int i; - zend_string *source_path = zend_strpprintf(0, "-%c%p", 0, PHPDBG_G(ops)->opcodes); + zend_string *source_path = strpprintf(0, "-%c%p", 0, PHPDBG_G(ops)->opcodes); phpdbg_file_source *data = zend_hash_find_ptr(&PHPDBG_G(file_sources), source_path); dtor_func_t dtor = PHPDBG_G(file_sources).pDestructor; PHPDBG_G(file_sources).pDestructor = NULL; From 20b63996c07f4a53ace391db9d6d1b3b57af2030 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Thu, 13 Oct 2016 10:08:23 +0200 Subject: [PATCH 42/47] fix test (cherry picked from commit 57354e0313cba1186fd05f74e1c418525269e7f2) --- ext/openssl/tests/bug61124.phpt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/openssl/tests/bug61124.phpt b/ext/openssl/tests/bug61124.phpt index 2fc192d4340..9b21da50484 100644 --- a/ext/openssl/tests/bug61124.phpt +++ b/ext/openssl/tests/bug61124.phpt @@ -8,5 +8,5 @@ if (!extension_loaded("openssl")) die("skip"); var_dump(openssl_decrypt('kzo w2RMExUTYQXW2Xzxmg==', 'aes-128-cbc', 'pass', false, 'pass')); --EXPECTF-- -Warning: openssl_decrypt(): Failed to base64 decode the input in %s on line %s -bool(false) \ No newline at end of file +Warning: openssl_decrypt(): IV passed is only 4 bytes long, cipher expects an IV of precisely 16 bytes, padding with \0 in %s on line %d +bool(false) From 086491555022b3b0ec59d26c6442a302171666ba Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Thu, 13 Oct 2016 11:10:02 +0200 Subject: [PATCH 43/47] Fix #73280: Stack Buffer Overflow in GD dynamicGetbuf We make sure to never pass a negative `rlen` as size to memcpy(). Cf. . (cherry picked from commit cc08cbc84d46933c1e9e0149633f1ed5d19e45e9) --- ext/gd/libgd/gd_io_dp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/gd/libgd/gd_io_dp.c b/ext/gd/libgd/gd_io_dp.c index bfeb4cb4bb9..4dcedde8ccb 100644 --- a/ext/gd/libgd/gd_io_dp.c +++ b/ext/gd/libgd/gd_io_dp.c @@ -237,7 +237,7 @@ static int dynamicGetbuf (gdIOCtxPtr ctx, void *buf, int len) if (remain >= len) { rlen = len; } else { - if (remain == 0) { + if (remain <= 0) { return EOF; } rlen = remain; From c79f9a4e49d1e51a5569e60d66d3b7c6014e6135 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Thu, 13 Oct 2016 13:08:16 +0200 Subject: [PATCH 44/47] fix gettimeofday proto availability (cherry picked from commit 79f7d174d07dee4dde1f8eddaba6c741b26edeb3) --- ext/date/php_date.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ext/date/php_date.c b/ext/date/php_date.c index aed0dc94b23..67805c1f023 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -29,7 +29,11 @@ #include "php_date.h" #include "zend_interfaces.h" #include "lib/timelib.h" +#ifndef PHP_WIN32 #include +#else +#include "win32/time.h" +#endif #ifdef PHP_WIN32 static __inline __int64 php_date_llabs( __int64 i ) { return i >= 0? i: -i; } From 990e2ce2a0abf2f4227f526a47abd2825c633a89 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Thu, 13 Oct 2016 14:09:12 +0200 Subject: [PATCH 45/47] Ignore non-executable opcodes in line mode of phpdbg_end_oplog() (cherry picked from commit d14498a475642642cfeee21630058941c33a6dfb) --- sapi/phpdbg/phpdbg.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/sapi/phpdbg/phpdbg.c b/sapi/phpdbg/phpdbg.c index 361b2c5bc17..0722ed94d45 100644 --- a/sapi/phpdbg/phpdbg.c +++ b/sapi/phpdbg/phpdbg.c @@ -476,6 +476,16 @@ static PHP_FUNCTION(phpdbg_start_oplog) PHPDBG_G(oplog_list)->start = PHPDBG_G(oplog_cur); } +static zend_always_inline zend_bool phpdbg_is_ignored_opcode(zend_uchar opcode) { + return + opcode == ZEND_NOP || opcode == ZEND_OP_DATA || opcode == ZEND_FE_FREE || opcode == ZEND_FREE || opcode == ZEND_ASSERT_CHECK || opcode == ZEND_VERIFY_RETURN_TYPE + || opcode == ZEND_DECLARE_CONST || opcode == ZEND_DECLARE_CLASS || opcode == ZEND_DECLARE_INHERITED_CLASS || opcode == ZEND_DECLARE_FUNCTION + || opcode == ZEND_DECLARE_INHERITED_CLASS_DELAYED || opcode == ZEND_VERIFY_ABSTRACT_CLASS || opcode == ZEND_ADD_TRAIT || opcode == ZEND_BIND_TRAITS + || opcode == ZEND_DECLARE_ANON_CLASS || opcode == ZEND_DECLARE_ANON_INHERITED_CLASS || opcode == ZEND_FAST_RET || opcode == ZEND_TICKS + || opcode == ZEND_EXT_STMT || opcode == ZEND_EXT_FCALL_BEGIN || opcode == ZEND_EXT_FCALL_END || opcode == ZEND_EXT_NOP || opcode == ZEND_BIND_GLOBAL + ; +} + static void phpdbg_oplog_fill_executable(zend_op_array *op_array, HashTable *insert_ht, zend_bool by_opcode) { /* ignore RECV_* opcodes */ zend_op *cur = op_array->opcodes + op_array->num_args + !!(op_array->fn_flags & ZEND_ACC_VARIADIC); @@ -493,11 +503,8 @@ static void phpdbg_oplog_fill_executable(zend_op_array *op_array, HashTable *ins } for (; cur < end; cur++) { - if (cur->opcode == ZEND_NOP || cur->opcode == ZEND_OP_DATA || cur->opcode == ZEND_FE_FREE || cur->opcode == ZEND_FREE || cur->opcode == ZEND_ASSERT_CHECK || cur->opcode == ZEND_VERIFY_RETURN_TYPE - || cur->opcode == ZEND_DECLARE_CONST || cur->opcode == ZEND_DECLARE_CLASS || cur->opcode == ZEND_DECLARE_INHERITED_CLASS || cur->opcode == ZEND_DECLARE_FUNCTION - || cur->opcode == ZEND_DECLARE_INHERITED_CLASS_DELAYED || cur->opcode == ZEND_VERIFY_ABSTRACT_CLASS || cur->opcode == ZEND_ADD_TRAIT || cur->opcode == ZEND_BIND_TRAITS - || cur->opcode == ZEND_DECLARE_ANON_CLASS || cur->opcode == ZEND_DECLARE_ANON_INHERITED_CLASS || cur->opcode == ZEND_FAST_RET || cur->opcode == ZEND_TICKS - || cur->opcode == ZEND_EXT_STMT || cur->opcode == ZEND_EXT_FCALL_BEGIN || cur->opcode == ZEND_EXT_FCALL_END || cur->opcode == ZEND_EXT_NOP || cur->opcode == ZEND_BIND_GLOBAL) { + zend_uchar opcode = cur->opcode; + if (phpdbg_is_ignored_opcode(opcode)) { continue; } @@ -507,7 +514,7 @@ static void phpdbg_oplog_fill_executable(zend_op_array *op_array, HashTable *ins insert_idx = cur->lineno; } - if (cur->opcode == ZEND_NEW && (cur + 1)->opcode == ZEND_DO_FCALL) { + if (opcode == ZEND_NEW && cur[1].opcode == ZEND_DO_FCALL) { cur++; } @@ -525,7 +532,7 @@ static inline HashTable* phpdbg_add_empty_array(HashTable *ht, zend_string *name return Z_ARR_P(ht_zv); } -/* {{{ proto void phpdbg_end_oplog() */ +/* {{{ proto void phpdbg_get_executable() */ static PHP_FUNCTION(phpdbg_get_executable) { HashTable *options = NULL; @@ -702,6 +709,10 @@ static PHP_FUNCTION(phpdbg_end_oplog) if (by_opcode) { insert_idx = cur->op - cur->opcodes; } else { + if (phpdbg_is_ignored_opcode(cur->op->opcode)) { + continue; + } + insert_idx = cur->op->lineno; } @@ -713,8 +724,7 @@ static PHP_FUNCTION(phpdbg_end_oplog) Z_LVAL_P(num)++; } - cur = cur->next; - } while (cur != NULL); + } while ((cur = cur->next)); } if (!prev) { From dd604015bebc34396ad15c4f65a73f3f4cc326a9 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Thu, 13 Oct 2016 15:23:15 +0200 Subject: [PATCH 46/47] rename publicly exposed symbol to avoid name conflicts (cherry picked from commit 730288ae41fe0d40d00b27174b558cf260b1a7df) --- Zend/zend_multiply.h | 2 +- ext/pcre/php_pcre.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Zend/zend_multiply.h b/Zend/zend_multiply.h index 0c23071a7f1..8a93990466d 100644 --- a/Zend/zend_multiply.h +++ b/Zend/zend_multiply.h @@ -266,7 +266,7 @@ static zend_always_inline size_t zend_safe_address(size_t nmemb, size_t size, si } #endif -static zend_always_inline size_t safe_address(size_t nmemb, size_t size, size_t offset) +static zend_always_inline size_t zend_safe_address_guarded(size_t nmemb, size_t size, size_t offset) { int overflow; size_t ret = zend_safe_address(nmemb, size, offset, &overflow); diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c index 066d5cc51ef..ef9569b8605 100644 --- a/ext/pcre/php_pcre.c +++ b/ext/pcre/php_pcre.c @@ -1248,7 +1248,7 @@ PHPAPI zend_string *php_pcre_replace_impl(pcre_cache_entry *pce, zend_string *su } if (new_len >= alloc_len) { - alloc_len = safe_address(2, new_len, alloc_len); + alloc_len = zend_safe_address_guarded(2, new_len, alloc_len); if (result == NULL) { result = zend_string_alloc(alloc_len, 0); } else { @@ -1291,9 +1291,9 @@ PHPAPI zend_string *php_pcre_replace_impl(pcre_cache_entry *pce, zend_string *su /* Use custom function to get replacement string and its length. */ eval_result = preg_do_repl_func(replace_val, subject, offsets, subpat_names, count, mark); ZEND_ASSERT(eval_result); - new_len = safe_address(1, ZSTR_LEN(eval_result), new_len); + new_len = zend_safe_address_guarded(1, ZSTR_LEN(eval_result), new_len); if (new_len >= alloc_len) { - alloc_len = safe_address(2, new_len, alloc_len); + alloc_len = zend_safe_address_guarded(2, new_len, alloc_len); if (result == NULL) { result = zend_string_alloc(alloc_len, 0); } else { From d35d9d1d0e42c9717714540b075b67fc2d33ca0d Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Thu, 13 Oct 2016 15:39:02 +0200 Subject: [PATCH 47/47] missed piece for renaming (cherry picked from commit 5ba9eab4361cf9d0d9085f969acc2e96b8af3241) --- Zend/zend_alloc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c index 8dd77ff67bf..f52ce7985eb 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -2458,22 +2458,22 @@ ZEND_API size_t ZEND_FASTCALL _zend_mem_block_size(void *ptr ZEND_FILE_LINE_DC Z ZEND_API void* ZEND_FASTCALL _safe_emalloc(size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { - return emalloc_rel(safe_address(nmemb, size, offset)); + return emalloc_rel(zend_safe_address_guarded(nmemb, size, offset)); } ZEND_API void* ZEND_FASTCALL _safe_malloc(size_t nmemb, size_t size, size_t offset) { - return pemalloc(safe_address(nmemb, size, offset), 1); + return pemalloc(zend_safe_address_guarded(nmemb, size, offset), 1); } ZEND_API void* ZEND_FASTCALL _safe_erealloc(void *ptr, size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) { - return erealloc_rel(ptr, safe_address(nmemb, size, offset)); + return erealloc_rel(ptr, zend_safe_address_guarded(nmemb, size, offset)); } ZEND_API void* ZEND_FASTCALL _safe_realloc(void *ptr, size_t nmemb, size_t size, size_t offset) { - return perealloc(ptr, safe_address(nmemb, size, offset), 1); + return perealloc(ptr, zend_safe_address_guarded(nmemb, size, offset), 1); }