diff options
| author | Ondřej Surý <ondrej@sury.org> | 2013-02-25 16:29:09 +0100 |
|---|---|---|
| committer | Ondřej Surý <ondrej@sury.org> | 2013-02-25 16:29:09 +0100 |
| commit | 7ad1f708d5748e36de4b51088b377907e5ea01e7 (patch) | |
| tree | 3f8a4c034747c921baf3b4118e2cc6ccc875fe43 /Zend | |
| parent | 54098cf044025ec5965b8ea9c84750f9631d85b6 (diff) | |
| download | php-7ad1f708d5748e36de4b51088b377907e5ea01e7.tar.gz | |
Imported Upstream version 5.5.0~alpha5upstream/5.5.0_alpha5
Diffstat (limited to 'Zend')
| -rw-r--r-- | Zend/tests/bug51394.phpt | 8 | ||||
| -rw-r--r-- | Zend/tests/bug60833.phpt | 40 | ||||
| -rw-r--r-- | Zend/tests/bug61767.phpt | 12 | ||||
| -rw-r--r-- | Zend/tests/bug64135.phpt | 17 | ||||
| -rw-r--r-- | Zend/tests/exception_before_fatal.phpt | 64 | ||||
| -rw-r--r-- | Zend/tests/generators/clone_with_properties.phpt | 18 | ||||
| -rw-r--r-- | Zend/tests/generators/finally/run_on_dtor.phpt | 22 | ||||
| -rw-r--r-- | Zend/tests/generators/nested_calls_with_die.phpt | 30 | ||||
| -rw-r--r-- | Zend/tests/traits/bug64070.phpt | 36 | ||||
| -rw-r--r-- | Zend/zend_API.h | 6 | ||||
| -rw-r--r-- | Zend/zend_alloc.c | 55 | ||||
| -rw-r--r-- | Zend/zend_compile.c | 206 | ||||
| -rw-r--r-- | Zend/zend_generators.c | 117 | ||||
| -rw-r--r-- | Zend/zend_ini.h | 2 | ||||
| -rw-r--r-- | Zend/zend_ini_parser.c | 835 | ||||
| -rw-r--r-- | Zend/zend_ini_parser.h | 54 | ||||
| -rw-r--r-- | Zend/zend_ini_parser.output | 6 | ||||
| -rw-r--r-- | Zend/zend_language_parser.c | 956 | ||||
| -rw-r--r-- | Zend/zend_language_parser.h | 54 | ||||
| -rw-r--r-- | Zend/zend_language_parser.output | 2401 | ||||
| -rw-r--r-- | Zend/zend_multiply.h | 45 | ||||
| -rw-r--r-- | Zend/zend_operators.h | 95 | ||||
| -rw-r--r-- | Zend/zend_vm_def.h | 41 | ||||
| -rw-r--r-- | Zend/zend_vm_execute.h | 272 |
24 files changed, 3025 insertions, 2367 deletions
diff --git a/Zend/tests/bug51394.phpt b/Zend/tests/bug51394.phpt index 406de13a9..b0dddffaf 100644 --- a/Zend/tests/bug51394.phpt +++ b/Zend/tests/bug51394.phpt @@ -13,10 +13,8 @@ function eh() set_error_handler("eh"); $a = $empty($b); --EXPECTF-- -Warning: Uncaught exception 'Exception' with message 'error!' in %sbug51394.php:4 +Fatal error: Uncaught exception 'Exception' with message 'error!' in %sbug51394.php:%d Stack trace: -#0 %sbug51394.php(9): eh(8, 'Undefined varia...', '%s', 9, Array) +#0 %sbug51394.php(%d): eh(8, 'Undefined varia%s', '%s', %d, Array) #1 {main} - thrown in %sbug51394.php on line 4 - -Fatal error: Function name must be a string in %sbug51394.php on line 9
\ No newline at end of file + thrown in %sbug51394.php on line %d diff --git a/Zend/tests/bug60833.phpt b/Zend/tests/bug60833.phpt new file mode 100644 index 000000000..deb6c0f69 --- /dev/null +++ b/Zend/tests/bug60833.phpt @@ -0,0 +1,40 @@ +--TEST-- +Bug #60833 (self, parent, static behave inconsistently case-sensitive) +--FILE-- +<?php +class A { + static $x = "A"; + function testit() { + $this->v1 = new sELF; + $this->v2 = new SELF; + } +} + +class B extends A { + static $x = "B"; + function testit() { + PARENT::testit(); + $this->v3 = new sELF; + $this->v4 = new PARENT; + $this->v4 = STATIC::$x; + } +} +$t = new B(); +$t->testit(); +var_dump($t); +?> +--EXPECTF-- +object(B)#%d (4) { + ["v1"]=> + object(A)#%d (0) { + } + ["v2"]=> + object(A)#%d (0) { + } + ["v3"]=> + object(B)#%d (0) { + } + ["v4"]=> + string(1) "B" +} + diff --git a/Zend/tests/bug61767.phpt b/Zend/tests/bug61767.phpt index 5270872e5..9bd9c907b 100644 --- a/Zend/tests/bug61767.phpt +++ b/Zend/tests/bug61767.phpt @@ -17,18 +17,16 @@ $undefined->foo(); --EXPECTF-- Error handler called (Undefined variable: undefined) -Warning: Uncaught exception 'ErrorException' with message 'Undefined variable: undefined' in %sbug61767.php:13 +Fatal error: Uncaught exception 'ErrorException' with message 'Undefined variable: undefined' in %sbug61767.php:%d Stack trace: -#0 %sbug61767.php(13): {closure}(8, 'Undefined varia...', '%s', 13, Array) +#0 %sbug61767.php(%d): {closure}(%s, 'Undefined varia...', '%s', %d, Array) #1 {main} - thrown in %sbug61767.php on line 13 - -Fatal error: Call to a member function foo() on a non-object in %sbug61767.php on line 13 + thrown in %sbug61767.php on line %d Shutting down Array ( [type] => 1 - [message] => Call to a member function foo() on a non-object + [message] => %a [file] => %sbug61767.php - [line] => 13 + [line] => %d ) diff --git a/Zend/tests/bug64135.phpt b/Zend/tests/bug64135.phpt new file mode 100644 index 000000000..1c7b1500a --- /dev/null +++ b/Zend/tests/bug64135.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug #64135 (Exceptions from set_error_handler are not always propagated) +--FILE-- +<?php + +function exception_error_handler() { + throw new Exception(); +} + +set_error_handler("exception_error_handler"); +try { + $undefined->undefined(); +} catch(Exception $e) { + echo "Exception is thrown"; +} +--EXPECT-- +Exception is thrown diff --git a/Zend/tests/exception_before_fatal.phpt b/Zend/tests/exception_before_fatal.phpt new file mode 100644 index 000000000..608d65094 --- /dev/null +++ b/Zend/tests/exception_before_fatal.phpt @@ -0,0 +1,64 @@ +--TEST-- +Exceptions before fatal error +--FILE-- +<?php +function exception_error_handler($code, $msg) { + throw new Exception($msg); +} + +set_error_handler("exception_error_handler"); + +try { + $foo->a(); +} catch(Exception $e) { + var_dump($e->getMessage()); +} + +try { + new $foo(); +} catch(Exception $e) { + var_dump($e->getMessage()); +} + +try { + throw $foo; +} catch(Exception $e) { + var_dump($e->getMessage()); +} + +try { + $foo(); +} catch(Exception $e) { + var_dump($e->getMessage()); +} + +try { + $foo::b(); +} catch(Exception $e) { + var_dump($e->getMessage()); +} + + +try { + $b = clone $foo; +} catch(Exception $e) { + var_dump($e->getMessage()); +} + +class b { +} + +try { + b::$foo(); +} catch(Exception $e) { + var_dump($e->getMessage()); +} +?> +--EXPECT-- +string(23) "Undefined variable: foo" +string(23) "Undefined variable: foo" +string(23) "Undefined variable: foo" +string(23) "Undefined variable: foo" +string(23) "Undefined variable: foo" +string(23) "Undefined variable: foo" +string(23) "Undefined variable: foo" diff --git a/Zend/tests/generators/clone_with_properties.phpt b/Zend/tests/generators/clone_with_properties.phpt new file mode 100644 index 000000000..900253c68 --- /dev/null +++ b/Zend/tests/generators/clone_with_properties.phpt @@ -0,0 +1,18 @@ +--TEST-- +Tests cloning a generator with properties +--FILE-- +<?php + +function gen() { yield; } + +$g1 = gen(); +$g1->prop = 'val'; + +$g2 = clone $g1; +unset($g1); + +var_dump($g2->prop); + +?> +--EXPECT-- +string(3) "val" diff --git a/Zend/tests/generators/finally/run_on_dtor.phpt b/Zend/tests/generators/finally/run_on_dtor.phpt new file mode 100644 index 000000000..35f8f4e0d --- /dev/null +++ b/Zend/tests/generators/finally/run_on_dtor.phpt @@ -0,0 +1,22 @@ +--TEST-- +finally is run on object dtor, not free +--FILE-- +<?php + +function gen() { + try { + yield; + } finally { + var_dump($_GET); + } +} + +$gen = gen(); +$gen->rewind(); + +set_error_handler(function() use($gen) {}); + +?> +--EXPECT-- +array(0) { +} diff --git a/Zend/tests/generators/nested_calls_with_die.phpt b/Zend/tests/generators/nested_calls_with_die.phpt new file mode 100644 index 000000000..f43d89ba2 --- /dev/null +++ b/Zend/tests/generators/nested_calls_with_die.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test nested calls with die() in a generator +--FILE-- +<?php + +function gen() { + die('Test'); + yield; // force generator +} + +function function_with_3_args() { + $gen = gen(); + $gen->rewind(); +} + +function function_with_4_args() { + function_with_3_args(4, 5, 6); +} + +function outerGen() { + function_with_4_args(0, 1, 2, 3); + yield; // force generator +} + +$outerGen = outerGen(); +$outerGen->rewind(); + +?> +--EXPECT-- +Test diff --git a/Zend/tests/traits/bug64070.phpt b/Zend/tests/traits/bug64070.phpt new file mode 100644 index 000000000..a5ee3b6a5 --- /dev/null +++ b/Zend/tests/traits/bug64070.phpt @@ -0,0 +1,36 @@ +--TEST-- +Bug #64070 (Inheritance with Traits failed with error) +--FILE-- +<?php +trait first_trait +{ + function first_function() + { + echo "From First Trait\n"; + } +} + +trait second_trait +{ + use first_trait { + first_trait::first_function as second_function; + } + + function first_function() + { + echo "From Second Trait\n"; + } +} + +class first_class +{ + use second_trait; +} + +$obj = new first_class(); +$obj->first_function(); +$obj->second_function(); +?> +--EXPECT-- +From Second Trait +From First Trait diff --git a/Zend/zend_API.h b/Zend/zend_API.h index 8574f90eb..fb642c147 100644 --- a/Zend/zend_API.h +++ b/Zend/zend_API.h @@ -60,7 +60,7 @@ typedef struct _zend_fcall_info_cache { zval *object_ptr; } zend_fcall_info_cache; -#define ZEND_NS_NAME(ns, name) ns"\\"name +#define ZEND_NS_NAME(ns, name) ns "\\" name #define ZEND_FN(name) zif_##name #define ZEND_MN(name) zim_##name @@ -281,9 +281,9 @@ ZEND_API void zend_class_implements(zend_class_entry *class_entry TSRMLS_DC, int ZEND_API int zend_register_class_alias_ex(const char *name, int name_len, zend_class_entry *ce TSRMLS_DC); #define zend_register_class_alias(name, ce) \ - zend_register_class_alias_ex(name, sizeof(name)-1, ce TSRMLS_DC) + zend_register_class_alias_ex(name, sizeof(name)-1, ce TSRMLS_CC) #define zend_register_ns_class_alias(ns, name, ce) \ - zend_register_class_alias_ex(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name))-1, ce TSRMLS_DC) + zend_register_class_alias_ex(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name))-1, ce TSRMLS_CC) ZEND_API int zend_disable_function(char *function_name, uint function_name_length TSRMLS_DC); ZEND_API int zend_disable_class(char *class_name, uint class_name_length TSRMLS_DC); diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c index 1cc2c6783..1c76bd403 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -667,17 +667,19 @@ static inline unsigned int zend_mm_high_bit(size_t _size) #if defined(__GNUC__) && (defined(__native_client__) || defined(i386)) unsigned int n; - __asm__("bsrl %1,%0\n\t" : "=r" (n) : "rm" (_size)); + __asm__("bsrl %1,%0\n\t" : "=r" (n) : "rm" (_size) : "cc"); return n; #elif defined(__GNUC__) && defined(__x86_64__) unsigned long n; - __asm__("bsrq %1,%0\n\t" : "=r" (n) : "rm" (_size)); + __asm__("bsrq %1,%0\n\t" : "=r" (n) : "rm" (_size) : "cc"); return (unsigned int)n; #elif defined(_MSC_VER) && defined(_M_IX86) __asm { bsr eax, _size } +#elif defined(__GNUC__) && (defined(__arm__) || defined(__aarch64__)) + return (8 * SIZEOF_SIZE_T - 1) - __builtin_clzl(_size); #else unsigned int n = 0; while (_size != 0) { @@ -693,17 +695,19 @@ static inline unsigned int zend_mm_low_bit(size_t _size) #if defined(__GNUC__) && (defined(__native_client__) || defined(i386)) unsigned int n; - __asm__("bsfl %1,%0\n\t" : "=r" (n) : "rm" (_size)); + __asm__("bsfl %1,%0\n\t" : "=r" (n) : "rm" (_size) : "cc"); return n; #elif defined(__GNUC__) && defined(__x86_64__) unsigned long n; - __asm__("bsfq %1,%0\n\t" : "=r" (n) : "rm" (_size)); + __asm__("bsfq %1,%0\n\t" : "=r" (n) : "rm" (_size) : "cc"); return (unsigned int)n; #elif defined(_MSC_VER) && defined(_M_IX86) __asm { bsf eax, _size - } + } +#elif defined(__GNUC__) && (defined(__arm__) || defined(__aarch64__)) + return __builtin_ctzl(_size); #else static const int offset[16] = {4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0}; unsigned int n; @@ -2494,6 +2498,47 @@ static inline size_t safe_address(size_t nmemb, size_t size, size_t offset) return res; } +#elif defined(__GNUC__) && defined(__arm__) + +static inline size_t safe_address(size_t nmemb, size_t size, size_t offset) +{ + size_t res; + unsigned long overflow; + + __asm__ ("umlal %0,%1,%2,%3" + : "=r"(res), "=r"(overflow) + : "r"(nmemb), + "r"(size), + "0"(offset), + "1"(0)); + + if (UNEXPECTED(overflow)) { + zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset); + return 0; + } + return res; +} + +#elif defined(__GNUC__) && defined(__aarch64__) + +static inline size_t safe_address(size_t nmemb, size_t size, size_t offset) +{ + size_t res; + unsigned long overflow; + + __asm__ ("mul %0,%2,%3\n\tumulh %1,%2,%3\n\tadds %0,%0,%4\n\tadc %1,%1,%1" + : "=&r"(res), "=&r"(overflow) + : "r"(nmemb), + "r"(size), + "r"(offset)); + + if (UNEXPECTED(overflow)) { + zend_error_noreturn(E_ERROR, "Possible integer overflow in memory allocation (%zu * %zu + %zu)", nmemb, size, offset); + return 0; + } + return res; +} + #elif SIZEOF_SIZE_T == 4 && defined(HAVE_ZEND_LONG64) static inline size_t safe_address(size_t nmemb, size_t size, size_t offset) diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 10eac2d94..701151106 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -5,7 +5,7 @@ | Copyright (c) 1998-2013 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | + | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | @@ -107,7 +107,7 @@ ZEND_API zend_executor_globals executor_globals; static void zend_duplicate_property_info(zend_property_info *property_info) /* {{{ */ { - if (!IS_INTERNED(property_info->name)) { + if (!IS_INTERNED(property_info->name)) { property_info->name = estrndup(property_info->name, property_info->name_length); } if (property_info->doc_comment) { @@ -118,7 +118,7 @@ static void zend_duplicate_property_info(zend_property_info *property_info) /* { static void zend_duplicate_property_info_internal(zend_property_info *property_info) /* {{{ */ { - if (!IS_INTERNED(property_info->name)) { + if (!IS_INTERNED(property_info->name)) { property_info->name = zend_strndup(property_info->name, property_info->name_length); } } @@ -383,7 +383,7 @@ int zend_add_func_name_literal(zend_op_array *op_array, const zval *zv TSRMLS_DC zval c; int lc_literal; - if (op_array->last_literal > 0 && + if (op_array->last_literal > 0 && &op_array->literals[op_array->last_literal - 1].constant == zv && op_array->literals[op_array->last_literal - 1].cache_slot == -1) { /* we already have function name as last literal (do nothing) */ @@ -391,7 +391,7 @@ int zend_add_func_name_literal(zend_op_array *op_array, const zval *zv TSRMLS_DC } else { ret = zend_add_literal(op_array, zv TSRMLS_CC); } - + lc_name = zend_str_tolower_dup(Z_STRVAL_P(zv), Z_STRLEN_P(zv)); ZVAL_STRINGL(&c, lc_name, Z_STRLEN_P(zv), 0); lc_literal = zend_add_literal(CG(active_op_array), &c TSRMLS_CC); @@ -410,7 +410,7 @@ int zend_add_ns_func_name_literal(zend_op_array *op_array, const zval *zv TSRMLS zval c; int lc_literal; - if (op_array->last_literal > 0 && + if (op_array->last_literal > 0 && &op_array->literals[op_array->last_literal - 1].constant == zv && op_array->literals[op_array->last_literal - 1].cache_slot == -1) { /* we already have function name as last literal (do nothing) */ @@ -443,7 +443,7 @@ int zend_add_class_name_literal(zend_op_array *op_array, const zval *zv TSRMLS_D zval c; int lc_literal; - if (op_array->last_literal > 0 && + if (op_array->last_literal > 0 && &op_array->literals[op_array->last_literal - 1].constant == zv && op_array->literals[op_array->last_literal - 1].cache_slot == -1) { /* we already have function name as last literal (do nothing) */ @@ -477,7 +477,7 @@ int zend_add_const_name_literal(zend_op_array *op_array, const zval *zv, int unq int name_len, ns_len; zval c; - if (op_array->last_literal > 0 && + if (op_array->last_literal > 0 && &op_array->literals[op_array->last_literal - 1].constant == zv && op_array->literals[op_array->last_literal - 1].cache_slot == -1) { /* we already have function name as last literal (do nothing) */ @@ -486,7 +486,7 @@ int zend_add_const_name_literal(zend_op_array *op_array, const zval *zv, int unq ret = zend_add_literal(op_array, zv TSRMLS_CC); } - /* skip leading '\\' */ + /* skip leading '\\' */ if (Z_STRVAL_P(zv)[0] == '\\') { name_len = Z_STRLEN_P(zv) - 1; name = Z_STRVAL_P(zv) + 1; @@ -816,7 +816,7 @@ void fetch_array_dim(znode *result, const znode *parent, const znode *dim TSRMLS opline.result.var = opline.op1.var; zend_llist_add_element(fetch_list_ptr, &opline); } - + init_op(&opline TSRMLS_CC); opline.opcode = ZEND_FETCH_DIM_W; /* the backpatching routine assumes W */ opline.result_type = IS_VAR; @@ -830,12 +830,12 @@ void fetch_array_dim(znode *result, const znode *parent, const znode *dim TSRMLS ZEND_HANDLE_NUMERIC_EX(Z_STRVAL(CONSTANT(opline.op2.constant)), Z_STRLEN(CONSTANT(opline.op2.constant))+1, index, numeric = 1); if (numeric) { zval_dtor(&CONSTANT(opline.op2.constant)); - ZVAL_LONG(&CONSTANT(opline.op2.constant), index); + ZVAL_LONG(&CONSTANT(opline.op2.constant), index); } else { CALCULATE_LITERAL_HASH(opline.op2.constant); } } - + GET_NODE(result, opline.result); zend_llist_add_element(fetch_list_ptr, &opline); @@ -940,7 +940,7 @@ void zend_do_assign(znode *result, znode *variable, znode *value TSRMLS_DC) /* { opline->result.var = get_temporary_variable(CG(active_op_array)); opline->op1_type = IS_CONST; LITERAL_STRINGL(opline->op1, - CG(active_op_array)->vars[value->u.op.var].name, + CG(active_op_array)->vars[value->u.op.var].name, CG(active_op_array)->vars[value->u.op.var].name_len, 1); CALCULATE_LITERAL_HASH(opline->op1.constant); SET_UNUSED(opline->op2); @@ -1569,7 +1569,7 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n if (is_method) { int result; - + lcname = zend_new_interned_string(zend_str_tolower_dup(name, name_len), name_len + 1, 1 TSRMLS_CC); if (IS_INTERNED(lcname)) { @@ -1624,7 +1624,7 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n } } else { char *class_lcname; - + class_lcname = do_alloca(CG(active_class_entry)->name_length + 1, use_heap); zend_str_tolower_copy(class_lcname, CG(active_class_entry)->name, CG(active_class_entry)->name_length); /* Improve after RC: cache the lowercase class name */ @@ -1675,7 +1675,7 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n } else if ((name_len == sizeof(ZEND_TOSTRING_FUNC_NAME)-1) && (!memcmp(lcname, ZEND_TOSTRING_FUNC_NAME, sizeof(ZEND_TOSTRING_FUNC_NAME)-1))) { if (fn_flags & ((ZEND_ACC_PPP_MASK | ZEND_ACC_STATIC) ^ ZEND_ACC_PUBLIC)) { zend_error(E_WARNING, "The magic method __toString() must have public visibility and cannot be static"); - } + } CG(active_class_entry)->__tostring = (zend_function *) CG(active_op_array); } else if (!(fn_flags & ZEND_ACC_STATIC)) { CG(active_op_array)->fn_flags |= ZEND_ACC_ALLOW_STATIC; @@ -1806,14 +1806,14 @@ void zend_do_end_function_declaration(const znode *function_token TSRMLS_DC) /* if (CG(active_class_entry)) { zend_check_magic_method_implementation(CG(active_class_entry), (zend_function*)CG(active_op_array), E_COMPILE_ERROR TSRMLS_CC); } else { - /* we don't care if the function name is longer, in fact lowercasing only + /* we don't care if the function name is longer, in fact lowercasing only * the beginning of the name speeds up the check process */ name_len = strlen(CG(active_op_array)->function_name); zend_str_tolower_copy(lcname, CG(active_op_array)->function_name, MIN(name_len, sizeof(lcname)-1)); lcname[sizeof(lcname)-1] = '\0'; /* zend_str_tolower_copy won't necessarily set the zero byte */ if (name_len == sizeof(ZEND_AUTOLOAD_FUNC_NAME) - 1 && !memcmp(lcname, ZEND_AUTOLOAD_FUNC_NAME, sizeof(ZEND_AUTOLOAD_FUNC_NAME)) && CG(active_op_array)->num_args != 1) { zend_error(E_COMPILE_ERROR, "%s() must take exactly 1 argument", ZEND_AUTOLOAD_FUNC_NAME); - } + } } CG(active_op_array)->line_end = zend_get_compiled_lineno(TSRMLS_C); @@ -1939,7 +1939,7 @@ int zend_do_begin_function_call(znode *function_name, zend_bool check_namespace internal function with short name */ zend_do_begin_dynamic_function_call(function_name, 1 TSRMLS_CC); return 1; - } + } lcname = zend_str_tolower_dup(function_name->u.constant.value.str.val, function_name->u.constant.value.str.len); if ((zend_hash_find(CG(function_table), lcname, function_name->u.constant.value.str.len+1, (void **) &function)==FAILURE) || @@ -1948,10 +1948,10 @@ int zend_do_begin_function_call(znode *function_name, zend_bool check_namespace zend_do_begin_dynamic_function_call(function_name, 0 TSRMLS_CC); efree(lcname); return 1; /* Dynamic */ - } + } efree(function_name->u.constant.value.str.val); function_name->u.constant.value.str.val = lcname; - + zend_stack_push(&CG(function_call_stack), (void *) &function, sizeof(zend_function *)); if (CG(context).nested_calls + 1 > CG(active_op_array)->nested_calls) { CG(active_op_array)->nested_calls = CG(context).nested_calls + 1; @@ -1984,7 +1984,7 @@ void zend_do_begin_method_call(znode *left_bracket TSRMLS_DC) /* {{{ */ name = CONSTANT(last_op->op2.constant); if (Z_TYPE(name) != IS_STRING) { zend_error(E_COMPILE_ERROR, "Method name must be a string"); - } + } if (!IS_INTERNED(Z_STRVAL(name))) { Z_STRVAL(name) = estrndup(Z_STRVAL(name), Z_STRLEN(name)); } @@ -2188,7 +2188,7 @@ void zend_resolve_class_name(znode *class_name, ulong fetch_type, int check_ns_n if (ZEND_FETCH_CLASS_DEFAULT != zend_get_class_fetch_type(Z_STRVAL(class_name->u.constant), Z_STRLEN(class_name->u.constant))) { zend_error(E_COMPILE_ERROR, "'\\%s' is an invalid class name", Z_STRVAL(class_name->u.constant)); } - } else { + } else { if (CG(current_import)) { len = compound - Z_STRVAL(class_name->u.constant); lcname = zend_str_tolower_dup(Z_STRVAL(class_name->u.constant), len); @@ -2553,8 +2553,8 @@ void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC) /* {{ zend_error(E_COMPILE_ERROR, "Call-time pass-by-reference has been removed"); } return; - } - + } + if (function_ptr) { if (ARG_MAY_BE_SENT_BY_REF(function_ptr, (zend_uint) offset)) { if (param->op_type & (IS_VAR|IS_CV) && original_op != ZEND_SEND_VAL) { @@ -2725,7 +2725,7 @@ void zend_do_return(znode *expr, int do_end_vparse TSRMLS_DC) /* {{{ */ SET_UNUSED(opline->op1); SET_UNUSED(opline->op2); } - + opline = get_next_op(CG(active_op_array) TSRMLS_CC); opline->opcode = returns_reference ? ZEND_RETURN_BY_REF : ZEND_RETURN; @@ -2940,10 +2940,10 @@ void zend_do_end_finally(znode *try_token, znode* catch_token, znode *finally_to { if (catch_token->op_type == IS_UNUSED && finally_token->op_type == IS_UNUSED) { zend_error(E_COMPILE_ERROR, "Cannot use try without catch or finally"); - } + } if (finally_token->op_type != IS_UNUSED) { zend_op *opline; - + CG(active_op_array)->try_catch_array[try_token->u.op.opline_num].finally_op = finally_token->u.op.opline_num + 1; CG(active_op_array)->try_catch_array[try_token->u.op.opline_num].finally_end = get_next_op_number(CG(active_op_array)); CG(active_op_array)->has_finally_block = 1; @@ -2952,11 +2952,11 @@ void zend_do_end_finally(znode *try_token, znode* catch_token, znode *finally_to opline->opcode = ZEND_FAST_RET; SET_UNUSED(opline->op1); SET_UNUSED(opline->op2); - + CG(active_op_array)->opcodes[finally_token->u.op.opline_num].op1.opline_num = get_next_op_number(CG(active_op_array)); CG(context).in_finally--; - } + } } /* }}} */ @@ -3063,7 +3063,7 @@ static void do_inherit_parent_constructor(zend_class_entry *ce) /* {{{ */ lc_class_name = zend_str_tolower_dup(ce->name, ce->name_length); if (!zend_hash_exists(&ce->function_table, lc_class_name, ce->name_length+1)) { lc_parent_class_name = zend_str_tolower_dup(ce->parent->name, ce->parent->name_length); - if (!zend_hash_exists(&ce->function_table, lc_parent_class_name, ce->parent->name_length+1) && + if (!zend_hash_exists(&ce->function_table, lc_parent_class_name, ce->parent->name_length+1) && zend_hash_find(&ce->parent->function_table, lc_parent_class_name, ce->parent->name_length+1, (void **)&function)==SUCCESS) { if (function->common.fn_flags & ZEND_ACC_CTOR) { /* inherit parent's constructor */ @@ -3202,8 +3202,8 @@ static zend_bool zend_do_perform_implementation_check(const zend_function *fe, c return 0; } } - } - } + } + } if (fe->common.arg_info[i].type_hint != proto->common.arg_info[i].type_hint) { /* Incompatible type hint */ return 0; @@ -3232,7 +3232,7 @@ static zend_bool zend_do_perform_implementation_check(const zend_function *fe, c buf = erealloc(buf, length); \ } -static char * zend_get_function_declaration(zend_function *fptr TSRMLS_DC) /* {{{ */ +static char * zend_get_function_declaration(zend_function *fptr TSRMLS_DC) /* {{{ */ { char *offset, *buf; zend_uint length = 1024; @@ -3249,7 +3249,7 @@ static char * zend_get_function_declaration(zend_function *fptr TSRMLS_DC) /* {{ *(offset++) = ':'; *(offset++) = ':'; } - + { size_t name_len = strlen(fptr->common.function_name); REALLOC_BUF_IF_EXCEED(buf, offset, length, name_len); @@ -3290,7 +3290,7 @@ static char * zend_get_function_declaration(zend_function *fptr TSRMLS_DC) /* {{ offset += type_name_len; *(offset++) = ' '; } - + if (arg_info->pass_by_reference) { *(offset++) = '&'; } @@ -3392,7 +3392,7 @@ static char * zend_get_function_declaration(zend_function *fptr TSRMLS_DC) /* {{ *offset = '\0'; return buf; -} +} /* }}} */ static void do_inheritance_check_on_method(zend_function *child, zend_function *parent TSRMLS_DC) /* {{{ */ @@ -3404,7 +3404,7 @@ static void do_inheritance_check_on_method(zend_function *child, zend_function * && parent->common.fn_flags & ZEND_ACC_ABSTRACT && parent->common.scope != (child->common.prototype ? child->common.prototype->common.scope : child->common.scope) && child->common.fn_flags & (ZEND_ACC_ABSTRACT|ZEND_ACC_IMPLEMENTED_ABSTRACT)) { - zend_error(E_COMPILE_ERROR, "Can't inherit abstract function %s::%s() (previously declared abstract in %s)", + zend_error(E_COMPILE_ERROR, "Can't inherit abstract function %s::%s() (previously declared abstract in %s)", parent->common.scope->name, child->common.function_name, child->common.prototype ? child->common.prototype->common.scope->name : child->common.scope->name); @@ -3444,7 +3444,7 @@ static void do_inheritance_check_on_method(zend_function *child, zend_function * } if (parent_flags & ZEND_ACC_PRIVATE) { - child->common.prototype = NULL; + child->common.prototype = NULL; } else if (parent_flags & ZEND_ACC_ABSTRACT) { child->common.fn_flags |= ZEND_ACC_IMPLEMENTED_ABSTRACT; child->common.prototype = parent; @@ -3455,12 +3455,12 @@ static void do_inheritance_check_on_method(zend_function *child, zend_function * if (child->common.prototype && (child->common.prototype->common.fn_flags & ZEND_ACC_ABSTRACT)) { if (!zend_do_perform_implementation_check(child, child->common.prototype TSRMLS_CC)) { - zend_error(E_COMPILE_ERROR, "Declaration of %s::%s() must be compatible with %s", ZEND_FN_SCOPE_NAME(child), child->common.function_name, zend_get_function_declaration(child->common.prototype? child->common.prototype : parent TSRMLS_CC)); + zend_error(E_COMPILE_ERROR, "Declaration of %s::%s() must be compatible with %s", ZEND_FN_SCOPE_NAME(child), child->common.function_name, zend_get_function_declaration(child->common.prototype? child->common.prototype : parent TSRMLS_CC)); } } else if (EG(error_reporting) & E_STRICT || EG(user_error_handler)) { /* Check E_STRICT (or custom error handler) before the check so that we save some time */ if (!zend_do_perform_implementation_check(child, parent TSRMLS_CC)) { char *method_prototype = zend_get_function_declaration(child->common.prototype? child->common.prototype : parent TSRMLS_CC); - zend_error(E_STRICT, "Declaration of %s::%s() should be compatible with %s", ZEND_FN_SCOPE_NAME(child), child->common.function_name, method_prototype); + zend_error(E_STRICT, "Declaration of %s::%s() should be compatible with %s", ZEND_FN_SCOPE_NAME(child), child->common.function_name, method_prototype); efree(method_prototype); } } @@ -3479,9 +3479,9 @@ static zend_bool do_inherit_method_check(HashTable *child_function_table, zend_f } return 1; /* method doesn't exist in child, copy from parent */ } - + do_inheritance_check_on_method(child, parent TSRMLS_CC); - + return 0; } /* }}} */ @@ -3512,7 +3512,7 @@ static zend_bool do_inherit_property_access_check(HashTable *target_ht, zend_pro zend_error(E_COMPILE_ERROR, "Cannot redeclare %s%s::$%s as %s%s::$%s", (parent_info->flags & ZEND_ACC_STATIC) ? "static " : "non static ", parent_ce->name, hash_key->arKey, (child_info->flags & ZEND_ACC_STATIC) ? "static " : "non static ", ce->name, hash_key->arKey); - + } if(parent_info->flags & ZEND_ACC_CHANGED) { @@ -3778,10 +3778,10 @@ ZEND_API void zend_do_implement_interface(zend_class_entry *ce, zend_class_entry } } ce->interfaces[ce->num_interfaces++] = iface; - + zend_hash_merge_ex(&ce->constants_table, &iface->constants_table, (copy_ctor_func_t) zval_add_ref, sizeof(zval *), (merge_checker_func_t) do_inherit_constant_check, iface); zend_hash_merge_ex(&ce->function_table, &iface->function_table, (copy_ctor_func_t) do_inherit_method, sizeof(zend_function), (merge_checker_func_t) do_inherit_method_check, ce); - + do_implement_interface(ce, iface TSRMLS_CC); zend_do_inherit_interfaces(ce, iface TSRMLS_CC); } @@ -3821,10 +3821,10 @@ static zend_bool zend_traits_method_compatibility_check(zend_function *fn, zend_ { zend_uint fn_flags = fn->common.scope->ce_flags; zend_uint other_flags = other_fn->common.scope->ce_flags; - + return zend_do_perform_implementation_check(fn, other_fn TSRMLS_CC) && zend_do_perform_implementation_check(other_fn, fn TSRMLS_CC) - && ((fn_flags & (ZEND_ACC_FINAL|ZEND_ACC_STATIC)) == + && ((fn_flags & (ZEND_ACC_FINAL|ZEND_ACC_STATIC)) == (other_flags & (ZEND_ACC_FINAL|ZEND_ACC_STATIC))); /* equal final and static qualifier */ } /* }}} */ @@ -3837,7 +3837,7 @@ static void zend_add_magic_methods(zend_class_entry* ce, const char* mname, uint if (ce->constructor) { zend_error(E_COMPILE_ERROR, "%s has colliding constructor definitions coming from traits", ce->name); } - ce->constructor = fe; fe->common.fn_flags |= ZEND_ACC_CTOR; + ce->constructor = fe; fe->common.fn_flags |= ZEND_ACC_CTOR; } else if (!strncmp(mname, ZEND_DESTRUCTOR_FUNC_NAME, mname_len)) { ce->destructor = fe; fe->common.fn_flags |= ZEND_ACC_DTOR; } else if (!strncmp(mname, ZEND_GET_FUNC_NAME, mname_len)) { @@ -3974,8 +3974,8 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args, ce = va_arg(args, zend_class_entry*); overriden = va_arg(args, HashTable**); exclude_table = va_arg(args, HashTable*); - - fnname_len = strlen(fn->common.function_name); + + fnname_len = hash_key->nKeyLength - 1; /* apply aliases which are qualified with a class name, there should not be any ambiguity */ if (ce->trait_aliases) { @@ -3986,11 +3986,11 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args, if (alias->alias != NULL && (!alias->trait_method->ce || fn->common.scope == alias->trait_method->ce) && alias->trait_method->mname_len == fnname_len - && (zend_binary_strcasecmp(alias->trait_method->method_name, alias->trait_method->mname_len, fn->common.function_name, fnname_len) == 0)) { + && (zend_binary_strcasecmp(alias->trait_method->method_name, alias->trait_method->mname_len, hash_key->arKey, fnname_len) == 0)) { fn_copy = *fn; - + /* if it is 0, no modifieres has been changed */ - if (alias->modifiers) { + if (alias->modifiers) { fn_copy.common.fn_flags = alias->modifiers | (fn->common.fn_flags ^ (fn->common.fn_flags & ZEND_ACC_PPP_MASK)); } @@ -4008,7 +4008,7 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args, } } - lcname = zend_str_tolower_dup(fn->common.function_name, fnname_len); + lcname = hash_key->arKey; if (exclude_table == NULL || zend_hash_find(exclude_table, lcname, fnname_len, &dummy) == FAILURE) { /* is not in hashtable, thus, function is not to be excluded */ @@ -4023,7 +4023,7 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args, if (alias->alias == NULL && alias->modifiers != 0 && (!alias->trait_method->ce || fn->common.scope == alias->trait_method->ce) && (alias->trait_method->mname_len == fnname_len) - && (zend_binary_strcasecmp(alias->trait_method->method_name, alias->trait_method->mname_len, fn->common.function_name, fnname_len) == 0)) { + && (zend_binary_strcasecmp(alias->trait_method->method_name, alias->trait_method->mname_len, lcname, fnname_len) == 0)) { fn_copy.common.fn_flags = alias->modifiers | (fn->common.fn_flags ^ (fn->common.fn_flags & ZEND_ACC_PPP_MASK)); @@ -4040,8 +4040,6 @@ static int zend_traits_copy_functions(zend_function *fn TSRMLS_DC, int num_args, zend_add_trait_method(ce, fn->common.function_name, lcname, fnname_len+1, &fn_copy, overriden TSRMLS_CC); } - efree(lcname); - return ZEND_HASH_APPLY_KEEP; } /* }}} */ @@ -4093,7 +4091,7 @@ static void zend_traits_init_trait_structures(zend_class_entry *ce TSRMLS_DC) /* cur_method_ref->ce->name, cur_method_ref->method_name); } - + /** With the other traits, we are more permissive. We do not give errors for those. This allows to be more defensive in such definitions. @@ -4107,20 +4105,20 @@ static void zend_traits_init_trait_structures(zend_class_entry *ce TSRMLS_DC) /* if (!(cur_precedence->exclude_from_classes[j] = zend_fetch_class(class_name, name_length, ZEND_FETCH_CLASS_TRAIT |ZEND_FETCH_CLASS_NO_AUTOLOAD TSRMLS_CC))) { zend_error(E_COMPILE_ERROR, "Could not find trait %s", class_name); - } + } zend_check_trait_usage(ce, cur_precedence->exclude_from_classes[j] TSRMLS_CC); /* make sure that the trait method is not from a class mentioned in exclude_from_classes, for consistency */ if (cur_precedence->trait_method->ce == cur_precedence->exclude_from_classes[i]) { zend_error(E_COMPILE_ERROR, - "Inconsistent insteadof definition. " + "Inconsistent insteadof definition. " "The method %s is to be used from %s, but %s is also on the exclude list", cur_method_ref->method_name, cur_precedence->trait_method->ce->name, cur_precedence->trait_method->ce->name); } - + efree(class_name); j++; } @@ -4160,7 +4158,7 @@ static void zend_traits_init_trait_structures(zend_class_entry *ce TSRMLS_DC) /* static void zend_traits_compile_exclude_table(HashTable* exclude_table, zend_trait_precedence **precedences, zend_class_entry *trait) /* {{{ */ { size_t i = 0, j; - + if (!precedences) { return; } @@ -4171,7 +4169,7 @@ static void zend_traits_compile_exclude_table(HashTable* exclude_table, zend_tra if (precedences[i]->exclude_from_classes[j] == trait) { zend_uint lcname_len = precedences[i]->trait_method->mname_len; char *lcname = zend_str_tolower_dup(precedences[i]->trait_method->method_name, lcname_len); - + if (zend_hash_add(exclude_table, lcname, lcname_len, NULL, 0, NULL) == FAILURE) { efree(lcname); zend_error(E_COMPILE_ERROR, "Failed to evaluate a trait precedence (%s). Method of trait %s was defined to be excluded multiple times", precedences[i]->trait_method->method_name, trait->name); @@ -4208,7 +4206,7 @@ static void zend_do_traits_method_binding(zend_class_entry *ce TSRMLS_DC) /* {{{ zend_hash_apply_with_arguments(&ce->traits[i]->function_table TSRMLS_CC, (apply_func_args_t)zend_traits_copy_functions, 3, ce, &overriden, NULL); } } - + zend_hash_apply_with_argument(&ce->function_table, (apply_func_arg_t)zend_fixup_trait_method, ce TSRMLS_CC); if (overriden) { @@ -4246,7 +4244,7 @@ static void zend_do_traits_property_binding(zend_class_entry *ce TSRMLS_DC) /* { const char* class_name_unused; zend_bool not_compatible; zval* prop_value; - char* doc_comment; + char* doc_comment; zend_uint flags; /* In the following steps the properties are inserted into the property table @@ -4275,10 +4273,10 @@ static void zend_do_traits_property_binding(zend_class_entry *ce TSRMLS_DC) /* { /* next: check for conflicts with current class */ if (zend_hash_quick_find(&ce->properties_info, prop_name, prop_name_length+1, prop_hash, (void **) &coliding_prop) == SUCCESS) { - if (coliding_prop->flags & ZEND_ACC_SHADOW) { + if (coliding_prop->flags & ZEND_ACC_SHADOW) { zend_hash_quick_del(&ce->properties_info, prop_name, prop_name_length+1, prop_hash); flags |= ZEND_ACC_CHANGED; - } else { + } else { if ((coliding_prop->flags & (ZEND_ACC_PPP_MASK | ZEND_ACC_STATIC)) == (flags & (ZEND_ACC_PPP_MASK | ZEND_ACC_STATIC))) { /* flags are identical, now the value needs to be checked */ @@ -4299,14 +4297,14 @@ static void zend_do_traits_property_binding(zend_class_entry *ce TSRMLS_DC) /* { } if (not_compatible) { - zend_error(E_COMPILE_ERROR, + zend_error(E_COMPILE_ERROR, "%s and %s define the same property ($%s) in the composition of %s. However, the definition differs and is considered incompatible. Class was composed", find_first_definition(ce, i, prop_name, prop_name_length, prop_hash, coliding_prop->ce)->name, property_info->ce->name, prop_name, ce->name); } else { - zend_error(E_STRICT, + zend_error(E_STRICT, "%s and %s define the same property ($%s) in the composition of %s. This might be incompatible, to improve maintainability consider using accessor methods in traits instead. Class was composed", find_first_definition(ce, i, prop_name, prop_name_length, prop_hash, coliding_prop->ce)->name, property_info->ce->name, @@ -4326,8 +4324,8 @@ static void zend_do_traits_property_binding(zend_class_entry *ce TSRMLS_DC) /* { Z_ADDREF_P(prop_value); doc_comment = property_info->doc_comment ? estrndup(property_info->doc_comment, property_info->doc_comment_len) : NULL; - zend_declare_property_ex(ce, prop_name, prop_name_length, - prop_value, flags, + zend_declare_property_ex(ce, prop_name, prop_name_length, + prop_value, flags, doc_comment, property_info->doc_comment_len TSRMLS_CC); } } @@ -4339,7 +4337,7 @@ static void zend_do_check_for_inconsistent_traits_aliasing(zend_class_entry *ce int i = 0; zend_trait_alias* cur_alias; char* lc_method_name; - + if (ce->trait_aliases) { while (ce->trait_aliases[i]) { cur_alias = ce->trait_aliases[i]; @@ -4360,7 +4358,7 @@ static void zend_do_check_for_inconsistent_traits_aliasing(zend_class_entry *ce we check against it and abort. 2) it is just a plain old inconsitency/typo/bug as in the case where alias is set. */ - + lc_method_name = zend_str_tolower_dup(cur_alias->trait_method->method_name, cur_alias->trait_method->mname_len); if (zend_hash_exists(&ce->function_table, @@ -4397,7 +4395,7 @@ ZEND_API void zend_do_bind_traits(zend_class_entry *ce TSRMLS_DC) /* {{{ */ /* first care about all methods to be flattened into the class */ zend_do_traits_method_binding(ce TSRMLS_CC); - + /* Aliases which have not been applied indicate typos/bugs. */ zend_do_check_for_inconsistent_traits_aliasing(ce TSRMLS_CC); @@ -4406,7 +4404,7 @@ ZEND_API void zend_do_bind_traits(zend_class_entry *ce TSRMLS_DC) /* {{{ */ /* verify that all abstract methods from traits have been implemented */ zend_verify_abstract_class(ce TSRMLS_CC); - + /* now everything should be fine and an added ZEND_ACC_IMPLICIT_ABSTRACT_CLASS should be removed */ if (ce->ce_flags & ZEND_ACC_IMPLICIT_ABSTRACT_CLASS) { ce->ce_flags -= ZEND_ACC_IMPLICIT_ABSTRACT_CLASS; @@ -4456,7 +4454,7 @@ void zend_prepare_reference(znode *result, znode *class_name, znode *method_name zend_trait_method_reference *method_ref = emalloc(sizeof(zend_trait_method_reference)); method_ref->ce = NULL; - /* REM: There should not be a need for copying, + /* REM: There should not be a need for copying, zend_do_begin_class_declaration is also just using that string */ if (class_name) { zend_resolve_class_name(class_name, ZEND_FETCH_CLASS_GLOBAL, 1 TSRMLS_CC); @@ -5030,7 +5028,7 @@ void zend_do_begin_class_declaration(const znode *class_token, znode *class_name build_runtime_defined_function_key(&key, lcname, new_class_entry->name_length TSRMLS_CC); opline->op1.constant = zend_add_literal(CG(active_op_array), &key TSRMLS_CC); Z_HASH_P(&CONSTANT(opline->op1.constant)) = zend_hash_func(Z_STRVAL(CONSTANT(opline->op1.constant)), Z_STRLEN(CONSTANT(opline->op1.constant))); - + opline->op2_type = IS_CONST; if (doing_inheritance) { @@ -5047,7 +5045,7 @@ void zend_do_begin_class_declaration(const znode *class_token, znode *class_name LITERAL_STRINGL(opline->op2, lcname, new_class_entry->name_length, 0); CALCULATE_LITERAL_HASH(opline->op2.constant); - + zend_hash_quick_update(CG(class_table), Z_STRVAL(key), Z_STRLEN(key), Z_HASH_P(&CONSTANT(opline->op1.constant)), &new_class_entry, sizeof(zend_class_entry *), NULL); CG(active_class_entry) = new_class_entry; @@ -5098,7 +5096,7 @@ void zend_do_end_class_declaration(const znode *class_token, const znode *parent } ce->info.user.line_end = zend_get_compiled_lineno(TSRMLS_C); - + /* Check for traits and proceed like with interfaces. * The only difference will be a combined handling of them in the end. * Thus, we need another opcode here. */ @@ -5123,7 +5121,7 @@ void zend_do_end_class_declaration(const znode *class_token, const znode *parent } } /* Inherit interfaces; reset number to zero, we need it for above check and - * will restore it during actual implementation. + * will restore it during actual implementation. * The ZEND_ACC_IMPLEMENT_INTERFACES flag disables double call to * zend_verify_abstract_class() */ if (ce->num_interfaces > 0) { @@ -5325,7 +5323,7 @@ void zend_do_declare_class_constant(znode *var_name, const znode *value TSRMLS_D ALLOC_ZVAL(property); *property = value->u.constant; - + cname = zend_new_interned_string(var_name->u.constant.value.str.val, var_name->u.constant.value.str.len+1, 0 TSRMLS_CC); if (IS_INTERNED(cname)) { @@ -5338,7 +5336,7 @@ void zend_do_declare_class_constant(znode *var_name, const znode *value TSRMLS_D zend_error(E_COMPILE_ERROR, "Cannot redefine class constant %s::%s", CG(active_class_entry)->name, var_name->u.constant.value.str.val); } FREE_PNODE(var_name); - + if (CG(doc_comment)) { efree(CG(doc_comment)); CG(doc_comment) = NULL; @@ -5427,17 +5425,17 @@ void zend_do_halt_compiler_register(TSRMLS_D) /* {{{ */ char *name, *cfilename; char haltoff[] = "__COMPILER_HALT_OFFSET__"; int len, clen; - + if (CG(has_bracketed_namespaces) && CG(in_namespace)) { zend_error(E_COMPILE_ERROR, "__HALT_COMPILER() can only be used from the outermost scope"); } - + cfilename = zend_get_compiled_filename(TSRMLS_C); clen = strlen(cfilename); zend_mangle_property_name(&name, &len, haltoff, sizeof(haltoff) - 1, cfilename, clen, 0); zend_register_long_constant(name, len+1, zend_get_scanned_file_offset(TSRMLS_C), CONST_CS, 0 TSRMLS_CC); pefree(name, 0); - + if (CG(in_namespace)) { zend_do_end_namespace(TSRMLS_C); } @@ -5514,7 +5512,7 @@ static zend_constant* zend_get_ct_const(const zval *const_name, int all_internal } } else if (zend_hash_find(EG(zend_constants), Z_STRVAL_P(const_name), Z_STRLEN_P(const_name)+1, (void **) &c) == FAILURE) { char *lookup_name = zend_str_tolower_dup(Z_STRVAL_P(const_name), Z_STRLEN_P(const_name)); - + if (zend_hash_find(EG(zend_constants), lookup_name, Z_STRLEN_P(const_name)+1, (void **) &c)==SUCCESS) { if ((c->flags & CONST_CT_SUBST) && !(c->flags & CONST_CS)) { efree(lookup_name); @@ -5567,7 +5565,7 @@ void zend_do_fetch_constant(znode *result, znode *constant_container, znode *con case ZEND_CT: /* this is a class constant */ type = zend_get_class_fetch_type(Z_STRVAL(constant_container->u.constant), Z_STRLEN(constant_container->u.constant)); - + if (ZEND_FETCH_CLASS_STATIC == type) { zend_error(E_ERROR, "\"static::\" is not allowed in compile-time constants"); } else if (ZEND_FETCH_CLASS_DEFAULT == type) { @@ -5631,7 +5629,7 @@ void zend_do_fetch_constant(znode *result, znode *constant_container, znode *con compound = memchr(Z_STRVAL(constant_name->u.constant), '\\', Z_STRLEN(constant_name->u.constant)); zend_resolve_non_class_name(constant_name, check_namespace TSRMLS_CC); - + if(zend_constant_ct_subst(result, &constant_name->u.constant, 1 TSRMLS_CC)) { break; } @@ -5647,7 +5645,7 @@ void zend_do_fetch_constant(znode *result, znode *constant_container, znode *con /* the name is unambiguous */ opline->extended_value = 0; opline->op2.constant = zend_add_const_name_literal(CG(active_op_array), &constant_name->u.constant, 0 TSRMLS_CC); - } else { + } else { opline->extended_value = IS_CONSTANT_UNQUALIFIED; if (CG(current_namespace)) { opline->extended_value |= IS_CONSTANT_IN_NAMESPACE; @@ -5721,7 +5719,7 @@ void zend_do_init_array(znode *result, const znode *expr, const znode *offset, z ZEND_HANDLE_NUMERIC_EX(Z_STRVAL(CONSTANT(opline->op2.constant)), Z_STRLEN(CONSTANT(opline->op2.constant))+1, index, numeric = 1); if (numeric) { zval_dtor(&CONSTANT(opline->op2.constant)); - ZVAL_LONG(&CONSTANT(opline->op2.constant), index); + ZVAL_LONG(&CONSTANT(opline->op2.constant), index); } else { CALCULATE_LITERAL_HASH(opline->op2.constant); } @@ -5753,7 +5751,7 @@ void zend_do_add_array_element(znode *result, const znode *expr, const znode *of ZEND_HANDLE_NUMERIC_EX(Z_STRVAL(CONSTANT(opline->op2.constant)), Z_STRLEN(CONSTANT(opline->op2.constant))+1, index, numeric = 1); if (numeric) { zval_dtor(&CONSTANT(opline->op2.constant)); - ZVAL_LONG(&CONSTANT(opline->op2.constant), index); + ZVAL_LONG(&CONSTANT(opline->op2.constant), index); } else { CALCULATE_LITERAL_HASH(opline->op2.constant); } @@ -6013,7 +6011,7 @@ void zend_do_fetch_lexical_variable(znode *varname, zend_bool is_ref TSRMLS_DC) Z_TYPE(value.u.constant) |= is_ref ? IS_LEXICAL_REF : IS_LEXICAL_VAR; Z_SET_REFCOUNT_P(&value.u.constant, 1); Z_UNSET_ISREF_P(&value.u.constant); - + zend_do_fetch_static_variable(varname, &value, is_ref ? ZEND_FETCH_STATIC : ZEND_FETCH_LEXICAL TSRMLS_CC); } /* }}} */ @@ -6529,7 +6527,7 @@ void zend_do_jmp_set(const znode *value, znode *jmp_token, znode *colon_token TS opline->result.var = get_temporary_variable(CG(active_op_array)); SET_NODE(opline->op1, value); SET_UNUSED(opline->op2); - + GET_NODE(colon_token, opline->result); jmp_token->u.op.opline_num = op_number; @@ -6558,11 +6556,11 @@ void zend_do_jmp_set_else(znode *result, const znode *false_value, const znode * opline->extended_value = 0; SET_NODE(opline->op1, false_value); SET_UNUSED(opline->op2); - + GET_NODE(result, opline->result); CG(active_op_array)->opcodes[jmp_token->u.op.opline_num].op2.opline_num = get_next_op_number(CG(active_op_array)); - + DEC_BPC(CG(active_op_array)); } /* }}} */ @@ -6775,7 +6773,7 @@ again: CG(increment_lineno) = 1; } if (CG(has_bracketed_namespaces) && !CG(in_namespace)) { - goto again; + goto again; } retval = ';'; /* implicit ; */ break; @@ -6865,13 +6863,13 @@ ZEND_API void zend_initialize_class_data(zend_class_entry *ce, zend_bool nullify int zend_get_class_fetch_type(const char *class_name, uint class_name_len) /* {{{ */ { if ((class_name_len == sizeof("self")-1) && - !memcmp(class_name, "self", sizeof("self")-1)) { - return ZEND_FETCH_CLASS_SELF; + !strncasecmp(class_name, "self", sizeof("self")-1)) { + return ZEND_FETCH_CLASS_SELF; } else if ((class_name_len == sizeof("parent")-1) && - !memcmp(class_name, "parent", sizeof("parent")-1)) { + !strncasecmp(class_name, "parent", sizeof("parent")-1)) { return ZEND_FETCH_CLASS_PARENT; } else if ((class_name_len == sizeof("static")-1) && - !memcmp(class_name, "static", sizeof("static")-1)) { + !strncasecmp(class_name, "static", sizeof("static")-1)) { return ZEND_FETCH_CLASS_STATIC; } else { return ZEND_FETCH_CLASS_DEFAULT; @@ -6984,7 +6982,7 @@ void zend_do_begin_namespace(const znode *name, zend_bool with_bracket TSRMLS_DC efree(CG(current_import)); CG(current_import) = NULL; } - + if (CG(doc_comment)) { efree(CG(doc_comment)); CG(doc_comment) = NULL; @@ -7156,7 +7154,7 @@ ZEND_API size_t zend_dirname(char *path, size_t len) len_adjust += 2; if (2 == len) { /* Return "c:" on Win32 for dirname("c:"). - * It would be more consistent to return "c:." + * It would be more consistent to return "c:." * but that would require making the string *longer*. */ return len; @@ -7164,7 +7162,7 @@ ZEND_API size_t zend_dirname(char *path, size_t len) } #elif defined(NETWARE) /* - * Find the first occurence of : from the left + * Find the first occurence of : from the left * move the path pointer to the position just after : * increment the len_adjust to the length of path till colon character(inclusive) * If there is no character beyond : simple return len diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c index c6c18a707..c1dbee124 100644 --- a/Zend/zend_generators.c +++ b/Zend/zend_generators.c @@ -27,6 +27,8 @@ ZEND_API zend_class_entry *zend_ce_generator; static zend_object_handlers zend_generator_handlers; +static zend_object_value zend_generator_create(zend_class_entry *class_type TSRMLS_DC); + ZEND_API void zend_generator_close(zend_generator *generator, zend_bool finished_execution TSRMLS_DC) /* {{{ */ { if (generator->value) { @@ -43,41 +45,6 @@ ZEND_API void zend_generator_close(zend_generator *generator, zend_bool finished zend_execute_data *execute_data = generator->execute_data; zend_op_array *op_array = execute_data->op_array; - if (!finished_execution) { - if (op_array->has_finally_block) { - /* -1 required because we want the last run opcode, not the - * next to-be-run one. */ - zend_uint op_num = execute_data->opline - op_array->opcodes - 1; - zend_uint finally_op_num = 0; - - /* Find next finally block */ - int i; - for (i = 0; i < op_array->last_try_catch; i++) { - zend_try_catch_element *try_catch = &op_array->try_catch_array[i]; - - if (op_num < try_catch->try_op) { - break; - } - - if (op_num < try_catch->finally_op) { - finally_op_num = try_catch->finally_op; - } - } - - /* If a finally block was found we jump directly to it and - * resume the generator. Furthermore we abort this close call - * because the generator will already be closed somewhere in - * the resume. */ - if (finally_op_num) { - execute_data->opline = &op_array->opcodes[finally_op_num]; - execute_data->fast_ret = NULL; - generator->flags |= ZEND_GENERATOR_FORCED_CLOSE; - zend_generator_resume(generator TSRMLS_CC); - return; - } - } - } - if (!execute_data->symbol_table) { zend_free_compiled_variables(execute_data); } else { @@ -127,10 +94,16 @@ ZEND_API void zend_generator_close(zend_generator *generator, zend_bool finished /* Clear any backed up stack arguments */ if (generator->stack != EG(argument_stack)) { - void **stack_frame = zend_vm_stack_frame_base(execute_data); - while (generator->stack->top != stack_frame) { - zval_ptr_dtor((zval**)stack_frame); - stack_frame++; + void **ptr = generator->stack->top - 1; + void **end = zend_vm_stack_frame_base(execute_data); + + /* If the top stack element is the argument count, skip it */ + if (execute_data->function_state.arguments) { + ptr--; + } + + for (; ptr >= end; --ptr) { + zval_ptr_dtor((zval**) ptr); } } @@ -175,6 +148,45 @@ ZEND_API void zend_generator_close(zend_generator *generator, zend_bool finished } /* }}} */ +static void zend_generator_dtor_storage(zend_generator *generator, zend_object_handle handle TSRMLS_DC) /* {{{ */ +{ + zend_execute_data *ex = generator->execute_data; + zend_uint op_num, finally_op_num; + int i; + + if (!ex || !ex->op_array->has_finally_block) { + return; + } + + /* -1 required because we want the last run opcode, not the + * next to-be-run one. */ + op_num = ex->opline - ex->op_array->opcodes - 1; + + /* Find next finally block */ + finally_op_num = 0; + for (i = 0; i < ex->op_array->last_try_catch; i++) { + zend_try_catch_element *try_catch = &ex->op_array->try_catch_array[i]; + + if (op_num < try_catch->try_op) { + break; + } + + if (op_num < try_catch->finally_op) { + finally_op_num = try_catch->finally_op; + } + } + + /* If a finally block was found we jump directly to it and + * resume the generator. */ + if (finally_op_num) { + ex->opline = &ex->op_array->opcodes[finally_op_num]; + ex->fast_ret = NULL; + generator->flags |= ZEND_GENERATOR_FORCED_CLOSE; + zend_generator_resume(generator TSRMLS_CC); + } +} +/* }}} */ + static void zend_generator_free_storage(zend_generator *generator TSRMLS_DC) /* {{{ */ { zend_generator_close(generator, 0 TSRMLS_CC); @@ -184,10 +196,19 @@ static void zend_generator_free_storage(zend_generator *generator TSRMLS_DC) /* } /* }}} */ -static void zend_generator_clone_storage(zend_generator *orig, zend_generator **clone_ptr TSRMLS_DC) /* {{{ */ +static zend_object_value zend_generator_clone(zval *object TSRMLS_DC) /* {{{ */ { - zend_generator *clone = emalloc(sizeof(zend_generator)); - memcpy(clone, orig, sizeof(zend_generator)); + zend_generator *orig = zend_object_store_get_object(object TSRMLS_CC); + zend_object_value clone_val = zend_generator_create(Z_OBJCE_P(object) TSRMLS_CC); + zend_generator *clone = zend_object_store_get_object_by_handle(clone_val.handle TSRMLS_CC); + + zend_objects_clone_members( + &clone->std, clone_val, &orig->std, Z_OBJ_HANDLE_P(object) TSRMLS_CC + ); + + clone->execute_data = orig->execute_data; + clone->largest_used_integer_key = orig->largest_used_integer_key; + clone->flags = orig->flags; if (orig->execute_data) { /* Create a few shorter aliases to the old execution data */ @@ -331,14 +352,16 @@ static void zend_generator_clone_storage(zend_generator *orig, zend_generator ** /* The value and key are known not to be references, so simply add refs */ if (orig->value) { + clone->value = orig->value; Z_ADDREF_P(orig->value); } if (orig->key) { + clone->key = orig->key; Z_ADDREF_P(orig->key); } - *clone_ptr = clone; + return clone_val; } /* }}} */ @@ -355,10 +378,10 @@ static zend_object_value zend_generator_create(zend_class_entry *class_type TSRM zend_object_std_init(&generator->std, class_type TSRMLS_CC); - object.handle = zend_objects_store_put(generator, NULL, + object.handle = zend_objects_store_put(generator, + (zend_objects_store_dtor_t) zend_generator_dtor_storage, (zend_objects_free_object_storage_t) zend_generator_free_storage, - (zend_objects_store_clone_t) zend_generator_clone_storage - TSRMLS_CC + NULL TSRMLS_CC ); object.handlers = &zend_generator_handlers; @@ -858,7 +881,7 @@ void zend_register_generator_ce(TSRMLS_D) /* {{{ */ memcpy(&zend_generator_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); zend_generator_handlers.get_constructor = zend_generator_get_constructor; - zend_generator_handlers.clone_obj = zend_objects_store_clone_obj; + zend_generator_handlers.clone_obj = zend_generator_clone; } /* }}} */ diff --git a/Zend/zend_ini.h b/Zend/zend_ini.h index 2773ebb6c..b27d3d4ad 100644 --- a/Zend/zend_ini.h +++ b/Zend/zend_ini.h @@ -28,7 +28,7 @@ #define ZEND_INI_ALL (ZEND_INI_USER|ZEND_INI_PERDIR|ZEND_INI_SYSTEM) #ifndef XtOffsetOf -# if defined(CRAY) || (defined(__arm) && !defined(LINUX)) +# if defined(CRAY) || (defined(__ARMCC_VERSION) && !defined(LINUX)) # ifdef __STDC__ # define XtOffset(p_type, field) _Offsetof(p_type, field) # else diff --git a/Zend/zend_ini_parser.c b/Zend/zend_ini_parser.c index 4db9027cc..6270c6c86 100644 --- a/Zend/zend_ini_parser.c +++ b/Zend/zend_ini_parser.c @@ -1,24 +1,21 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 2.6.1. */ -/* Skeleton implementation for Bison's Yacc-like parsers in C - - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -29,7 +26,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -47,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.3" +#define YYBISON_VERSION "2.6.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -55,59 +52,21 @@ /* Pure parsers. */ #define YYPURE 1 -/* Using locations. */ -#define YYLSP_NEEDED 0 - -/* Substitute the variable and function names. */ -#define yyparse ini_parse -#define yylex ini_lex -#define yyerror ini_error -#define yylval ini_lval -#define yychar ini_char -#define yydebug ini_debug -#define yynerrs ini_nerrs - - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - TC_SECTION = 258, - TC_RAW = 259, - TC_CONSTANT = 260, - TC_NUMBER = 261, - TC_STRING = 262, - TC_WHITESPACE = 263, - TC_LABEL = 264, - TC_OFFSET = 265, - TC_DOLLAR_CURLY = 266, - TC_VARNAME = 267, - TC_QUOTED_STRING = 268, - BOOL_TRUE = 269, - BOOL_FALSE = 270, - END_OF_LINE = 271 - }; -#endif -/* Tokens. */ -#define TC_SECTION 258 -#define TC_RAW 259 -#define TC_CONSTANT 260 -#define TC_NUMBER 261 -#define TC_STRING 262 -#define TC_WHITESPACE 263 -#define TC_LABEL 264 -#define TC_OFFSET 265 -#define TC_DOLLAR_CURLY 266 -#define TC_VARNAME 267 -#define TC_QUOTED_STRING 268 -#define BOOL_TRUE 269 -#define BOOL_FALSE 270 -#define END_OF_LINE 271 +/* Push parsers. */ +#define YYPUSH 0 +/* Pull parsers. */ +#define YYPULL 1 +/* Substitute the variable and function names. */ +#define yyparse ini_parse +#define yylex ini_lex +#define yyerror ini_error +#define yylval ini_lval +#define yychar ini_char +#define yydebug ini_debug +#define yynerrs ini_nerrs /* Copy the first part of user declarations. */ @@ -359,10 +318,14 @@ ZEND_API int zend_parse_ini_string(char *str, zend_bool unbuffered_errors, int s -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif + +# ifndef YY_NULL +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULL nullptr +# else +# define YY_NULL 0 +# endif +# endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE @@ -372,25 +335,85 @@ ZEND_API int zend_parse_ini_string(char *str, zend_bool unbuffered_errors, int s # define YYERROR_VERBOSE 0 #endif -/* Enabling the token table. */ -#ifndef YYTOKEN_TABLE -# define YYTOKEN_TABLE 0 +/* In a future release of Bison, this section will be replaced + by #include "zend_ini_parser.h". */ +#ifndef INI_ZEND_ZEND_INI_PARSER_H +# define INI_ZEND_ZEND_INI_PARSER_H +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int ini_debug; +#endif + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + TC_SECTION = 258, + TC_RAW = 259, + TC_CONSTANT = 260, + TC_NUMBER = 261, + TC_STRING = 262, + TC_WHITESPACE = 263, + TC_LABEL = 264, + TC_OFFSET = 265, + TC_DOLLAR_CURLY = 266, + TC_VARNAME = 267, + TC_QUOTED_STRING = 268, + BOOL_TRUE = 269, + BOOL_FALSE = 270, + END_OF_LINE = 271 + }; #endif +/* Tokens. */ +#define TC_SECTION 258 +#define TC_RAW 259 +#define TC_CONSTANT 260 +#define TC_NUMBER 261 +#define TC_STRING 262 +#define TC_WHITESPACE 263 +#define TC_LABEL 264 +#define TC_OFFSET 265 +#define TC_DOLLAR_CURLY 266 +#define TC_VARNAME 267 +#define TC_QUOTED_STRING 268 +#define BOOL_TRUE 269 +#define BOOL_FALSE 270 +#define END_OF_LINE 271 + + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef int YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 #endif +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int ini_parse (void *YYPARSE_PARAM); +#else +int ini_parse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int ini_parse (void); +#else +int ini_parse (); +#endif +#endif /* ! YYPARSE_PARAM */ + +#endif /* !INI_ZEND_ZEND_INI_PARSER_H */ /* Copy the second part of user declarations. */ -/* Line 216 of yacc.c. */ - #ifdef short # undef short @@ -440,7 +463,7 @@ typedef short int yytype_int16; #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ -# if YYENABLE_NLS +# if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) @@ -465,14 +488,14 @@ typedef short int yytype_int16; #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int -YYID (int i) +YYID (int yyi) #else static int -YYID (i) - int i; +YYID (yyi) + int yyi; #endif { - return i; + return yyi; } #endif @@ -493,11 +516,12 @@ YYID (i) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # endif @@ -520,24 +544,24 @@ YYID (i) # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif -# if (defined __cplusplus && ! defined _STDLIB_H \ +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif @@ -553,9 +577,9 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss; - YYSTYPE yyvs; - }; + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; +}; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) @@ -566,35 +590,19 @@ union yyalloc ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (YYID (0)) -# endif -# endif +# define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack) \ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ @@ -602,6 +610,26 @@ union yyalloc #endif +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ @@ -697,7 +725,7 @@ static const yytype_uint16 yyrline[] = }; #endif -#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +#if YYDEBUG || YYERROR_VERBOSE || 0 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = @@ -705,13 +733,13 @@ static const char *const yytname[] = "$end", "error", "$undefined", "TC_SECTION", "TC_RAW", "TC_CONSTANT", "TC_NUMBER", "TC_STRING", "TC_WHITESPACE", "TC_LABEL", "TC_OFFSET", "TC_DOLLAR_CURLY", "TC_VARNAME", "TC_QUOTED_STRING", "BOOL_TRUE", - "BOOL_FALSE", "END_OF_LINE", "'='", "':'", "','", "'.'", "'\"'", "'''", + "BOOL_FALSE", "END_OF_LINE", "'='", "':'", "','", "'.'", "'\"'", "'\\''", "'^'", "'+'", "'-'", "'/'", "'*'", "'%'", "'$'", "'~'", "'<'", "'>'", "'?'", "'@'", "'{'", "'}'", "'|'", "'&'", "'!'", "']'", "'('", "')'", "$accept", "statement_list", "statement", "section_string_or_value", "string_or_value", "option_offset", "encapsed_list", "var_string_list_section", "var_string_list", "expr", "cfg_var_ref", - "constant_literal", "constant_string", 0 + "constant_literal", "constant_string", YY_NULL }; #endif @@ -748,8 +776,8 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1 }; -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when YYTABLE doesn't specify something else to do. Zero +/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { @@ -792,8 +820,7 @@ static const yytype_int8 yypgoto[] = /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which - number is the opposite. If zero, do what YYDEFACT says. - If YYTABLE_NINF, syntax error. */ + number is the opposite. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -1 static const yytype_uint8 yytable[] = { @@ -810,6 +837,12 @@ static const yytype_uint8 yytable[] = 0, 0, 4, 5, 0, 47, 0, 68, 0, 6 }; +#define yypact_value_is_default(yystate) \ + ((yystate) == (-36)) + +#define yytable_value_is_error(yytable_value) \ + YYID (0) + static const yytype_int8 yycheck[] = { 3, 25, 37, 38, 4, 5, 6, 7, 8, 33, @@ -850,24 +883,33 @@ static const yytype_uint8 yystos[] = /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ + Once GCC version 2 has supplanted version 1, this can go. However, + YYFAIL appears to be in use. Nevertheless, it is formally deprecated + in Bison 2.4.2's NEWS entry, where a plan to phase it out is + discussed. */ #define YYFAIL goto yyerrlab +#if defined YYFAIL + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ +#endif #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ - YYPOPSTACK (1); \ - goto yybackup; \ - } \ - else \ - { \ +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ @@ -877,46 +919,38 @@ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 - /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (YYID (N)) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ while (YYID (0)) #endif +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) + + -/* YY_LOCATION_PRINT -- Print the location on the stream. - This macro was not mandated originally: define only if we know - we won't break user code: when these are the locations we know. */ +/* This macro is provided for backward compatibility. */ #ifndef YY_LOCATION_PRINT -# if YYLTYPE_IS_TRIVIAL -# define YY_LOCATION_PRINT(File, Loc) \ - fprintf (File, "%d.%d-%d.%d", \ - (Loc).first_line, (Loc).first_column, \ - (Loc).last_line, (Loc).last_column) -# else -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif @@ -971,6 +1005,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) YYSTYPE const * const yyvaluep; #endif { + FILE *yyo = yyoutput; + YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT @@ -1020,17 +1056,20 @@ yy_symbol_print (yyoutput, yytype, yyvaluep) #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void -yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) #else static void -yy_stack_print (bottom, top) - yytype_int16 *bottom; - yytype_int16 *top; +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; #endif { YYFPRINTF (stderr, "Stack now"); - for (; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } YYFPRINTF (stderr, "\n"); } @@ -1064,11 +1103,11 @@ yy_reduce_print (yyvsp, yyrule) /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { - fprintf (stderr, " $%d = ", yyi + 1); + YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); - fprintf (stderr, "\n"); + YYFPRINTF (stderr, "\n"); } } @@ -1105,7 +1144,6 @@ int yydebug; # define YYMAXDEPTH 10000 #endif - #if YYERROR_VERBOSE @@ -1208,115 +1246,142 @@ yytnamerr (char *yyres, const char *yystr) } # endif -/* Copy into YYRESULT an error message about the unexpected token - YYCHAR while in state YYSTATE. Return the number of bytes copied, - including the terminating null byte. If YYRESULT is null, do not - copy anything; just return the number of bytes that would be - copied. As a special case, return 0 if an ordinary "syntax error" - message will do. Return YYSIZE_MAXIMUM if overflow occurs during - size calculation. */ -static YYSIZE_T -yysyntax_error (char *yyresult, int yystate, int yychar) -{ - int yyn = yypact[yystate]; +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. - if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) - return 0; - else + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULL; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - Assume YYFAIL is not used. It's too flawed to consider. See + <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html> + for details. YYERROR is fine as it does not invoke this + function. + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) { - int yytype = YYTRANSLATE (yychar); - YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); - YYSIZE_T yysize = yysize0; - YYSIZE_T yysize1; - int yysize_overflow = 0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - int yyx; - -# if 0 - /* This is so xgettext sees the translatable formats that are - constructed on the fly. */ - YY_("syntax error, unexpected %s"); - YY_("syntax error, unexpected %s, expecting %s"); - YY_("syntax error, unexpected %s, expecting %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); -# endif - char *yyfmt; - char const *yyf; - static char const yyunexpected[] = "syntax error, unexpected %s"; - static char const yyexpecting[] = ", expecting %s"; - static char const yyor[] = " or %s"; - char yyformat[sizeof yyunexpected - + sizeof yyexpecting - 1 - + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) - * (sizeof yyor - 1))]; - char const *yyprefix = yyexpecting; - - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yycount = 1; - - yyarg[0] = yytname[yytype]; - yyfmt = yystpcpy (yyformat, yyunexpected); - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - yyformat[sizeof yyunexpected - 1] = '\0'; - break; - } - yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (0, yytname[yyx]); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; - yyfmt = yystpcpy (yyfmt, yyprefix); - yyprefix = yyor; - } + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } - yyf = YY_(yyformat); - yysize1 = yysize + yystrlen (yyf); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } - if (yysize_overflow) - return YYSIZE_MAXIMUM; + yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; - if (yyresult) - { - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - char *yyp = yyresult; - int yyi = 0; - while ((*yyp = *yyf) != '\0') - { - if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyf += 2; - } - else - { - yyp++; - yyf++; - } - } - } - return yysize; + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; } #endif /* YYERROR_VERBOSE */ - /*-----------------------------------------------. | Release the memory associated to this symbol. | @@ -1348,25 +1413,6 @@ yydestruct (yymsg, yytype, yyvaluep) break; } } - - -/* Prevent warnings from -Wmissing-prototypes. */ - -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus -int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ - - @@ -1397,77 +1443,77 @@ yyparse () #endif #endif { - /* The look-ahead symbol. */ +/* The lookahead symbol. */ int yychar; -/* The semantic value of the look-ahead symbol. */ +/* The semantic value of the lookahead symbol. */ YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; - - int yystate; - int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Look-ahead token as an internal (translated) token number. */ - int yytoken = 0; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ + /* Number of syntax errors so far. */ + int yynerrs; - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss = yyssa; - yytype_int16 *yyssp; + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp; + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; - YYSIZE_T yystacksize = YYINITDEPTH; + YYSIZE_T yystacksize; + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; + yytoken = 0; + yyss = yyssa; + yyvs = yyvsa; + yystacksize = YYINITDEPTH; + YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ + yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ - yyssp = yyss; yyvsp = yyvs; - goto yysetstate; /*------------------------------------------------------------. @@ -1494,7 +1540,6 @@ int yynerrs; YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; - /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might @@ -1502,7 +1547,6 @@ int yynerrs; yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); yyss = yyss1; @@ -1525,9 +1569,8 @@ int yynerrs; (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); @@ -1538,7 +1581,6 @@ int yynerrs; yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); @@ -1548,6 +1590,9 @@ int yynerrs; YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + if (yystate == YYFINAL) + YYACCEPT; + goto yybackup; /*-----------. @@ -1556,16 +1601,16 @@ int yynerrs; yybackup: /* Do appropriate processing given the current state. Read a - look-ahead token if we need one and don't already have one. */ + lookahead token if we need one and don't already have one. */ - /* First try to decide what to do without reference to look-ahead token. */ + /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) + if (yypact_value_is_default (yyn)) goto yydefault; - /* Not known => get a look-ahead token if don't already have one. */ + /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); @@ -1591,26 +1636,22 @@ yybackup: yyn = yytable[yyn]; if (yyn <= 0) { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; + if (yytable_value_is_error (yyn)) + goto yyerrlab; yyn = -yyn; goto yyreduce; } - if (yyn == YYFINAL) - YYACCEPT; - /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; - /* Shift the look-ahead token. */ + /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - /* Discard the shifted token unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; + /* Discard the shifted token. */ + yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; @@ -1891,10 +1932,20 @@ yyreduce: break; -/* Line 1267 of yacc.c. */ default: break; } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); @@ -1903,7 +1954,6 @@ yyreduce: *++yyvsp = yyval; - /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -1923,6 +1973,10 @@ yyreduce: | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { @@ -1930,37 +1984,36 @@ yyerrlab: #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) { - YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); - if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) - { - YYSIZE_T yyalloc = 2 * yysize; - if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) - yyalloc = YYSTACK_ALLOC_MAXIMUM; - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yyalloc); - if (yymsg) - yymsg_alloc = yyalloc; - else - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - } - } - - if (0 < yysize && yysize <= yymsg_alloc) - { - (void) yysyntax_error (yymsg, yystate, yychar); - yyerror (yymsg); - } - else - { - yyerror (YY_("syntax error")); - if (yysize != 0) - goto yyexhaustedlab; - } + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; } +# undef YYSYNTAX_ERROR #endif } @@ -1968,7 +2021,7 @@ yyerrlab: if (yyerrstatus == 3) { - /* If just tried and failed to reuse look-ahead token after an + /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) @@ -1985,7 +2038,7 @@ yyerrlab: } } - /* Else will try to reuse look-ahead token after shifting the error + /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; @@ -2019,7 +2072,7 @@ yyerrlab1: for (;;) { yyn = yypact[yystate]; - if (yyn != YYPACT_NINF) + if (!yypact_value_is_default (yyn)) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) @@ -2042,9 +2095,6 @@ yyerrlab1: YY_STACK_PRINT (yyss, yyssp); } - if (yyn == YYFINAL) - YYACCEPT; - *++yyvsp = yylval; @@ -2069,7 +2119,7 @@ yyabortlab: yyresult = 1; goto yyreturn; -#ifndef yyoverflow +#if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -2080,9 +2130,14 @@ yyexhaustedlab: #endif yyreturn: - if (yychar != YYEOF && yychar != YYEMPTY) - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); diff --git a/Zend/zend_ini_parser.h b/Zend/zend_ini_parser.h index d883f9d40..870799a6e 100644 --- a/Zend/zend_ini_parser.h +++ b/Zend/zend_ini_parser.h @@ -1,24 +1,21 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 2.6.1. */ -/* Skeleton interface for Bison's Yacc-like parsers in C - - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -29,10 +26,20 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ +#ifndef INI_ZEND_ZEND_INI_PARSER_H +# define INI_ZEND_ZEND_INI_PARSER_H +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int ini_debug; +#endif + /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE @@ -73,13 +80,26 @@ - #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef int YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 #endif +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int ini_parse (void *YYPARSE_PARAM); +#else +int ini_parse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int ini_parse (void); +#else +int ini_parse (); +#endif +#endif /* ! YYPARSE_PARAM */ +#endif /* !INI_ZEND_ZEND_INI_PARSER_H */ diff --git a/Zend/zend_ini_parser.output b/Zend/zend_ini_parser.output index 9f7bcda21..fc6468a7f 100644 --- a/Zend/zend_ini_parser.output +++ b/Zend/zend_ini_parser.output @@ -1,9 +1,9 @@ -Terminals which are not used +Terminals unused in grammar ':' ',' '.' - ''' + '\'' '^' '+' '-' @@ -90,7 +90,7 @@ $end (0) 0 '$' (36) '%' (37) '&' (38) 33 -''' (39) +'\'' (39) '(' (40) 36 ')' (41) 36 '*' (42) diff --git a/Zend/zend_language_parser.c b/Zend/zend_language_parser.c index aaf670b0d..e348dcb0f 100644 --- a/Zend/zend_language_parser.c +++ b/Zend/zend_language_parser.c @@ -1,24 +1,21 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 2.6.1. */ -/* Skeleton implementation for Bison's Yacc-like parsers in C - - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -29,7 +26,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -47,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.3" +#define YYBISON_VERSION "2.6.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -55,19 +52,104 @@ /* Pure parsers. */ #define YYPURE 1 -/* Using locations. */ -#define YYLSP_NEEDED 0 +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + /* Substitute the variable and function names. */ -#define yyparse zendparse -#define yylex zendlex -#define yyerror zenderror -#define yylval zendlval -#define yychar zendchar -#define yydebug zenddebug -#define yynerrs zendnerrs +#define yyparse zendparse +#define yylex zendlex +#define yyerror zenderror +#define yylval zendlval +#define yychar zendchar +#define yydebug zenddebug +#define yynerrs zendnerrs + +/* Copy the first part of user declarations. */ +/* + +----------------------------------------------------------------------+ + | Zend Engine | + +----------------------------------------------------------------------+ + | Copyright (c) 1998-2013 Zend Technologies Ltd. (http://www.zend.com) | + +----------------------------------------------------------------------+ + | This source file is subject to version 2.00 of the Zend license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.zend.com/license/2_00.txt. | + | If you did not receive a copy of the Zend license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@zend.com so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Authors: Andi Gutmans <andi@zend.com> | + | Zeev Suraski <zeev@zend.com> | + +----------------------------------------------------------------------+ +*/ + +/* $Id$ */ + +/* + * LALR shift/reduce conflicts and how they are resolved: + * + * - 2 shift/reduce conflicts due to the dangling elseif/else ambiguity. Solved by shift. + * + */ + + +#include "zend_compile.h" +#include "zend.h" +#include "zend_list.h" +#include "zend_globals.h" +#include "zend_API.h" +#include "zend_constants.h" + +#define YYSIZE_T size_t +#define yytnamerr zend_yytnamerr +static YYSIZE_T zend_yytnamerr(char*, const char*); + +#define YYERROR_VERBOSE +#define YYSTYPE znode +#ifdef ZTS +# define YYPARSE_PARAM tsrm_ls +# define YYLEX_PARAM tsrm_ls +#endif + + + + + +# ifndef YY_NULL +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULL nullptr +# else +# define YY_NULL 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* In a future release of Bison, this section will be replaced + by #include "zend_language_parser.h". */ +#ifndef ZEND_ZEND_ZEND_LANGUAGE_PARSER_H +# define ZEND_ZEND_ZEND_LANGUAGE_PARSER_H +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int zenddebug; +#endif + /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE @@ -340,91 +422,32 @@ - -/* Copy the first part of user declarations. */ - - -/* - +----------------------------------------------------------------------+ - | Zend Engine | - +----------------------------------------------------------------------+ - | Copyright (c) 1998-2013 Zend Technologies Ltd. (http://www.zend.com) | - +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Authors: Andi Gutmans <andi@zend.com> | - | Zeev Suraski <zeev@zend.com> | - +----------------------------------------------------------------------+ -*/ - -/* $Id$ */ - -/* - * LALR shift/reduce conflicts and how they are resolved: - * - * - 2 shift/reduce conflicts due to the dangling elseif/else ambiguity. Solved by shift. - * - */ - - -#include "zend_compile.h" -#include "zend.h" -#include "zend_list.h" -#include "zend_globals.h" -#include "zend_API.h" -#include "zend_constants.h" - -#define YYSIZE_T size_t -#define yytnamerr zend_yytnamerr -static YYSIZE_T zend_yytnamerr(char*, const char*); - -#define YYERROR_VERBOSE -#define YYSTYPE znode -#ifdef ZTS -# define YYPARSE_PARAM tsrm_ls -# define YYLEX_PARAM tsrm_ls -#endif - - - - -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -/* Enabling the token table. */ -#ifndef YYTOKEN_TABLE -# define YYTOKEN_TABLE 0 -#endif - #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef int YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 #endif +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int zendparse (void *YYPARSE_PARAM); +#else +int zendparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int zendparse (void); +#else +int zendparse (); +#endif +#endif /* ! YYPARSE_PARAM */ -/* Copy the second part of user declarations. */ +#endif /* !ZEND_ZEND_ZEND_LANGUAGE_PARSER_H */ +/* Copy the second part of user declarations. */ -/* Line 216 of yacc.c. */ #ifdef short @@ -475,7 +498,7 @@ typedef short int yytype_int16; #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ -# if YYENABLE_NLS +# if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) @@ -500,14 +523,14 @@ typedef short int yytype_int16; #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int -YYID (int i) +YYID (int yyi) #else static int -YYID (i) - int i; +YYID (yyi) + int yyi; #endif { - return i; + return yyi; } #endif @@ -528,11 +551,12 @@ YYID (i) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # endif @@ -555,24 +579,24 @@ YYID (i) # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif -# if (defined __cplusplus && ! defined _STDLIB_H \ +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif @@ -588,9 +612,9 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss; - YYSTYPE yyvs; - }; + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; +}; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) @@ -601,35 +625,19 @@ union yyalloc ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (YYID (0)) -# endif -# endif +# define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack) \ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ @@ -637,6 +645,26 @@ union yyalloc #endif +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ @@ -1004,7 +1032,7 @@ static const yytype_uint16 yyrline[] = }; #endif -#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +#if YYDEBUG || YYERROR_VERBOSE || 0 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = @@ -1071,28 +1099,29 @@ static const char *const yytname[] = "\":: (T_PAAMAYIM_NEKUDOTAYIM)\"", "\"namespace (T_NAMESPACE)\"", "\"__NAMESPACE__ (T_NS_C)\"", "\"__DIR__ (T_DIR)\"", "\"\\\\ (T_NS_SEPARATOR)\"", "'('", "')'", "';'", "'{'", "'}'", "'$'", - "']'", "'`'", "'\"'", "$accept", "start", "top_statement_list", "@1", - "namespace_name", "top_statement", "@2", "@3", "use_declarations", - "use_declaration", "constant_declaration", "inner_statement_list", "@4", - "inner_statement", "statement", "unticked_statement", "@5", "@6", "@7", - "@8", "@9", "@10", "@11", "@12", "@13", "@14", "@15", "@16", "@17", - "@18", "@19", "@20", "@21", "@22", "@23", "catch_statement", "@24", - "@25", "@26", "@27", "finally_statement", "@28", "additional_catches", - "non_empty_additional_catches", "additional_catch", "@29", "@30", - "unset_variables", "unset_variable", "function_declaration_statement", - "class_declaration_statement", "is_reference", - "unticked_function_declaration_statement", "@31", - "unticked_class_declaration_statement", "@32", "@33", "class_entry_type", - "extends_from", "interface_entry", "interface_extends_list", - "implements_list", "interface_list", "foreach_optional_arg", - "foreach_variable", "@34", "for_statement", "foreach_statement", - "declare_statement", "declare_list", "switch_case_list", "case_list", - "@35", "@36", "case_separator", "while_statement", "elseif_list", "@37", - "new_elseif_list", "@38", "else_single", "new_else_single", - "parameter_list", "non_empty_parameter_list", "optional_class_type", + "']'", "'`'", "'\"'", "$accept", "start", "top_statement_list", "$@1", + "namespace_name", "top_statement", "$@2", "$@3", "use_declarations", + "use_declaration", "constant_declaration", "inner_statement_list", "$@4", + "inner_statement", "statement", "unticked_statement", "$@5", "$@6", + "$@7", "$@8", "$@9", "@10", "$@11", "$@12", "$@13", "$@14", "$@15", + "$@16", "$@17", "$@18", "$@19", "$@20", "$@21", "$@22", "$@23", + "catch_statement", "$@24", "$@25", "$@26", "$@27", "finally_statement", + "$@28", "additional_catches", "non_empty_additional_catches", + "additional_catch", "@29", "$@30", "unset_variables", "unset_variable", + "function_declaration_statement", "class_declaration_statement", + "is_reference", "unticked_function_declaration_statement", "$@31", + "unticked_class_declaration_statement", "$@32", "$@33", + "class_entry_type", "extends_from", "interface_entry", + "interface_extends_list", "implements_list", "interface_list", + "foreach_optional_arg", "foreach_variable", "$@34", "for_statement", + "foreach_statement", "declare_statement", "declare_list", + "switch_case_list", "case_list", "$@35", "$@36", "case_separator", + "while_statement", "elseif_list", "$@37", "new_elseif_list", "$@38", + "else_single", "new_else_single", "parameter_list", + "non_empty_parameter_list", "optional_class_type", "function_call_parameter_list", "non_empty_function_call_parameter_list", "global_var_list", "global_var", "static_var_list", - "class_statement_list", "class_statement", "@39", "@40", + "class_statement_list", "class_statement", "$@39", "$@40", "trait_use_statement", "trait_list", "trait_adaptations", "trait_adaptation_list", "non_empty_trait_adaptation_list", "trait_adaptation_statement", "trait_precedence", "trait_reference_list", @@ -1100,33 +1129,35 @@ static const char *const yytname[] = "trait_alias", "trait_modifiers", "method_body", "variable_modifiers", "method_modifiers", "non_empty_member_modifiers", "member_modifier", "class_variable_declaration", "class_constant_declaration", - "echo_expr_list", "for_expr", "non_empty_for_expr", "@41", + "echo_expr_list", "for_expr", "non_empty_for_expr", "$@41", "chaining_method_or_property", "chaining_dereference", - "chaining_instance_call", "@42", "instance_call", "@43", "new_expr", - "@44", "expr_without_variable", "@45", "@46", "@47", "@48", "@49", "@50", - "@51", "@52", "@53", "@54", "@55", "@56", "@57", "yield_expr", - "combined_scalar_offset", "combined_scalar", "function", "lexical_vars", - "lexical_var_list", "function_call", "@58", "@59", "@60", "@61", "@62", - "@63", "@64", "@65", "class_name", "fully_qualified_class_name", - "class_name_reference", "dynamic_class_name_reference", "@66", "@67", + "chaining_instance_call", "$@42", "instance_call", "$@43", "new_expr", + "$@44", "expr_without_variable", "$@45", "$@46", "$@47", "$@48", "$@49", + "$@50", "@51", "$@52", "$@53", "$@54", "$@55", "@56", "@57", + "yield_expr", "combined_scalar_offset", "combined_scalar", "function", + "lexical_vars", "lexical_var_list", "function_call", "@58", "@59", "@60", + "@61", "$@62", "$@63", "$@64", "$@65", "class_name", + "fully_qualified_class_name", "class_name_reference", + "dynamic_class_name_reference", "$@66", "$@67", "dynamic_class_name_variable_properties", "dynamic_class_name_variable_property", "exit_expr", "backticks_expr", "ctor_arguments", "common_scalar", "static_scalar", "static_class_constant", "scalar", "static_array_pair_list", "possible_comma", "non_empty_static_array_pair_list", "expr", "parenthesis_expr", "r_variable", "w_variable", "rw_variable", - "variable", "@68", "@69", "variable_properties", "variable_property", - "@70", "array_method_dereference", "method", "@71", "method_or_not", + "variable", "$@68", "$@69", "variable_properties", "variable_property", + "$@70", "array_method_dereference", "method", "@71", "method_or_not", "variable_without_objects", "static_member", "variable_class_name", - "array_function_dereference", "@72", "base_variable_with_function_calls", - "base_variable", "reference_variable", "compound_variable", "dim_offset", - "object_property", "@73", "object_dim_list", "variable_name", + "array_function_dereference", "$@72", + "base_variable_with_function_calls", "base_variable", + "reference_variable", "compound_variable", "dim_offset", + "object_property", "$@73", "object_dim_list", "variable_name", "simple_indirect_reference", "assignment_list", - "assignment_list_element", "@74", "array_pair_list", - "non_empty_array_pair_list", "encaps_list", "encaps_var", "@75", + "assignment_list_element", "$@74", "array_pair_list", + "non_empty_array_pair_list", "encaps_list", "encaps_var", "$@75", "encaps_var_offset", "internal_functions_in_yacc", "isset_variables", - "@76", "isset_variable", "class_constant", "static_class_name_scalar", - "class_name_scalar", 0 + "$@76", "isset_variable", "class_constant", "static_class_name_scalar", + "class_name_scalar", YY_NULL }; #endif @@ -1274,8 +1305,8 @@ static const yytype_uint8 yyr2[] = 1, 1, 3, 3, 3, 3 }; -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when YYTABLE doesn't specify something else to do. Zero +/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint16 yydefact[] = { @@ -1546,8 +1577,7 @@ static const yytype_int16 yypgoto[] = /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which - number is the opposite. If zero, do what YYDEFACT says. - If YYTABLE_NINF, syntax error. */ + number is the opposite. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -542 static const yytype_int16 yytable[] = { @@ -2066,6 +2096,12 @@ static const yytype_int16 yytable[] = 272, 273, 274, 275, 276, 0, 277 }; +#define yypact_value_is_default(yystate) \ + ((yystate) == (-770)) + +#define yytable_value_is_error(yytable_value) \ + ((yytable_value) == (-542)) + static const yytype_int16 yycheck[] = { 24, 25, 4, 126, 28, 24, 25, 4, 11, 28, @@ -2702,24 +2738,33 @@ static const yytype_uint16 yystos[] = /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ + Once GCC version 2 has supplanted version 1, this can go. However, + YYFAIL appears to be in use. Nevertheless, it is formally deprecated + in Bison 2.4.2's NEWS entry, where a plan to phase it out is + discussed. */ #define YYFAIL goto yyerrlab +#if defined YYFAIL + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ +#endif #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ - YYPOPSTACK (1); \ - goto yybackup; \ - } \ - else \ - { \ +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ @@ -2729,46 +2774,38 @@ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 - /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (YYID (N)) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ while (YYID (0)) #endif +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) + + -/* YY_LOCATION_PRINT -- Print the location on the stream. - This macro was not mandated originally: define only if we know - we won't break user code: when these are the locations we know. */ +/* This macro is provided for backward compatibility. */ #ifndef YY_LOCATION_PRINT -# if YYLTYPE_IS_TRIVIAL -# define YY_LOCATION_PRINT(File, Loc) \ - fprintf (File, "%d.%d-%d.%d", \ - (Loc).first_line, (Loc).first_column, \ - (Loc).last_line, (Loc).last_column) -# else -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif @@ -2823,6 +2860,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) YYSTYPE const * const yyvaluep; #endif { + FILE *yyo = yyoutput; + YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT @@ -2872,17 +2911,20 @@ yy_symbol_print (yyoutput, yytype, yyvaluep) #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void -yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) #else static void -yy_stack_print (bottom, top) - yytype_int16 *bottom; - yytype_int16 *top; +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; #endif { YYFPRINTF (stderr, "Stack now"); - for (; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } YYFPRINTF (stderr, "\n"); } @@ -2916,11 +2958,11 @@ yy_reduce_print (yyvsp, yyrule) /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { - fprintf (stderr, " $%d = ", yyi + 1); + YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); - fprintf (stderr, "\n"); + YYFPRINTF (stderr, "\n"); } } @@ -2957,7 +2999,6 @@ int yydebug; # define YYMAXDEPTH 10000 #endif - #if YYERROR_VERBOSE @@ -3060,115 +3101,142 @@ yytnamerr (char *yyres, const char *yystr) } # endif -/* Copy into YYRESULT an error message about the unexpected token - YYCHAR while in state YYSTATE. Return the number of bytes copied, - including the terminating null byte. If YYRESULT is null, do not - copy anything; just return the number of bytes that would be - copied. As a special case, return 0 if an ordinary "syntax error" - message will do. Return YYSIZE_MAXIMUM if overflow occurs during - size calculation. */ -static YYSIZE_T -yysyntax_error (char *yyresult, int yystate, int yychar) -{ - int yyn = yypact[yystate]; +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. - if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) - return 0; - else + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULL; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - Assume YYFAIL is not used. It's too flawed to consider. See + <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html> + for details. YYERROR is fine as it does not invoke this + function. + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) { - int yytype = YYTRANSLATE (yychar); - YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); - YYSIZE_T yysize = yysize0; - YYSIZE_T yysize1; - int yysize_overflow = 0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - int yyx; - -# if 0 - /* This is so xgettext sees the translatable formats that are - constructed on the fly. */ - YY_("syntax error, unexpected %s"); - YY_("syntax error, unexpected %s, expecting %s"); - YY_("syntax error, unexpected %s, expecting %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); -# endif - char *yyfmt; - char const *yyf; - static char const yyunexpected[] = "syntax error, unexpected %s"; - static char const yyexpecting[] = ", expecting %s"; - static char const yyor[] = " or %s"; - char yyformat[sizeof yyunexpected - + sizeof yyexpecting - 1 - + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) - * (sizeof yyor - 1))]; - char const *yyprefix = yyexpecting; - - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yycount = 1; - - yyarg[0] = yytname[yytype]; - yyfmt = yystpcpy (yyformat, yyunexpected); - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - yyformat[sizeof yyunexpected - 1] = '\0'; - break; - } - yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (0, yytname[yyx]); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; - yyfmt = yystpcpy (yyfmt, yyprefix); - yyprefix = yyor; - } + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } - yyf = YY_(yyformat); - yysize1 = yysize + yystrlen (yyf); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } - if (yysize_overflow) - return YYSIZE_MAXIMUM; + yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; - if (yyresult) - { - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - char *yyp = yyresult; - int yyi = 0; - while ((*yyp = *yyf) != '\0') - { - if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyf += 2; - } - else - { - yyp++; - yyf++; - } - } - } - return yysize; + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; } #endif /* YYERROR_VERBOSE */ - /*-----------------------------------------------. | Release the memory associated to this symbol. | @@ -3200,25 +3268,6 @@ yydestruct (yymsg, yytype, yyvaluep) break; } } - - -/* Prevent warnings from -Wmissing-prototypes. */ - -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus -int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ - - @@ -3249,77 +3298,77 @@ yyparse () #endif #endif { - /* The look-ahead symbol. */ +/* The lookahead symbol. */ int yychar; -/* The semantic value of the look-ahead symbol. */ +/* The semantic value of the lookahead symbol. */ YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; + /* Number of syntax errors so far. */ + int yynerrs; - int yystate; - int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Look-ahead token as an internal (translated) token number. */ - int yytoken = 0; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss = yyssa; - yytype_int16 *yyssp; + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp; + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; - YYSIZE_T yystacksize = YYINITDEPTH; + YYSIZE_T yystacksize; + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; + yytoken = 0; + yyss = yyssa; + yyvs = yyvsa; + yystacksize = YYINITDEPTH; + YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ + yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ - yyssp = yyss; yyvsp = yyvs; - goto yysetstate; /*------------------------------------------------------------. @@ -3346,7 +3395,6 @@ int yynerrs; YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; - /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might @@ -3354,7 +3402,6 @@ int yynerrs; yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); yyss = yyss1; @@ -3377,9 +3424,8 @@ int yynerrs; (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); @@ -3390,7 +3436,6 @@ int yynerrs; yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); @@ -3400,6 +3445,9 @@ int yynerrs; YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + if (yystate == YYFINAL) + YYACCEPT; + goto yybackup; /*-----------. @@ -3408,16 +3456,16 @@ int yynerrs; yybackup: /* Do appropriate processing given the current state. Read a - look-ahead token if we need one and don't already have one. */ + lookahead token if we need one and don't already have one. */ - /* First try to decide what to do without reference to look-ahead token. */ + /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) + if (yypact_value_is_default (yyn)) goto yydefault; - /* Not known => get a look-ahead token if don't already have one. */ + /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); @@ -3443,26 +3491,22 @@ yybackup: yyn = yytable[yyn]; if (yyn <= 0) { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; + if (yytable_value_is_error (yyn)) + goto yyerrlab; yyn = -yyn; goto yyreduce; } - if (yyn == YYFINAL) - YYACCEPT; - /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; - /* Shift the look-ahead token. */ + /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - /* Discard the shifted token unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; + /* Discard the shifted token. */ + yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; @@ -5929,10 +5973,20 @@ yyreduce: break; -/* Line 1267 of yacc.c. */ default: break; } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); @@ -5941,7 +5995,6 @@ yyreduce: *++yyvsp = yyval; - /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -5961,6 +6014,10 @@ yyreduce: | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { @@ -5968,37 +6025,36 @@ yyerrlab: #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) { - YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); - if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) - { - YYSIZE_T yyalloc = 2 * yysize; - if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) - yyalloc = YYSTACK_ALLOC_MAXIMUM; - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yyalloc); - if (yymsg) - yymsg_alloc = yyalloc; - else - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - } - } - - if (0 < yysize && yysize <= yymsg_alloc) - { - (void) yysyntax_error (yymsg, yystate, yychar); - yyerror (yymsg); - } - else - { - yyerror (YY_("syntax error")); - if (yysize != 0) - goto yyexhaustedlab; - } + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; } +# undef YYSYNTAX_ERROR #endif } @@ -6006,7 +6062,7 @@ yyerrlab: if (yyerrstatus == 3) { - /* If just tried and failed to reuse look-ahead token after an + /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) @@ -6023,7 +6079,7 @@ yyerrlab: } } - /* Else will try to reuse look-ahead token after shifting the error + /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; @@ -6057,7 +6113,7 @@ yyerrlab1: for (;;) { yyn = yypact[yystate]; - if (yyn != YYPACT_NINF) + if (!yypact_value_is_default (yyn)) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) @@ -6080,9 +6136,6 @@ yyerrlab1: YY_STACK_PRINT (yyss, yyssp); } - if (yyn == YYFINAL) - YYACCEPT; - *++yyvsp = yylval; @@ -6107,7 +6160,7 @@ yyabortlab: yyresult = 1; goto yyreturn; -#ifndef yyoverflow +#if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -6118,9 +6171,14 @@ yyexhaustedlab: #endif yyreturn: - if (yychar != YYEOF && yychar != YYEMPTY) - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); diff --git a/Zend/zend_language_parser.h b/Zend/zend_language_parser.h index 0918b80f3..074c954b8 100644 --- a/Zend/zend_language_parser.h +++ b/Zend/zend_language_parser.h @@ -1,24 +1,21 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 2.6.1. */ -/* Skeleton interface for Bison's Yacc-like parsers in C - - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -29,10 +26,20 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ +#ifndef ZEND_ZEND_ZEND_LANGUAGE_PARSER_H +# define ZEND_ZEND_ZEND_LANGUAGE_PARSER_H +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int zenddebug; +#endif + /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE @@ -305,13 +312,26 @@ - #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef int YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 #endif +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int zendparse (void *YYPARSE_PARAM); +#else +int zendparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int zendparse (void); +#else +int zendparse (); +#endif +#endif /* ! YYPARSE_PARAM */ +#endif /* !ZEND_ZEND_ZEND_LANGUAGE_PARSER_H */ diff --git a/Zend/zend_language_parser.output b/Zend/zend_language_parser.output index 85387cb58..62983f56b 100644 --- a/Zend/zend_language_parser.output +++ b/Zend/zend_language_parser.output @@ -1,4 +1,4 @@ -Terminals which are not used +Terminals unused in grammar T_CHARACTER T_BAD_CHARACTER @@ -20,9 +20,9 @@ Grammar 1 start: top_statement_list - 2 @1: /* empty */ + 2 $@1: /* empty */ - 3 top_statement_list: top_statement_list @1 top_statement + 3 top_statement_list: top_statement_list $@1 top_statement 4 | /* empty */ 5 namespace_name: "identifier (T_STRING)" @@ -34,13 +34,13 @@ Grammar 10 | "__halt_compiler (T_HALT_COMPILER)" '(' ')' ';' 11 | "namespace (T_NAMESPACE)" namespace_name ';' - 12 @2: /* empty */ + 12 $@2: /* empty */ - 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' @2 top_statement_list '}' + 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' $@2 top_statement_list '}' - 14 @3: /* empty */ + 14 $@3: /* empty */ - 15 top_statement: "namespace (T_NAMESPACE)" '{' @3 top_statement_list '}' + 15 top_statement: "namespace (T_NAMESPACE)" '{' $@3 top_statement_list '}' 16 | "use (T_USE)" use_declarations ';' 17 | constant_declaration ';' @@ -55,9 +55,9 @@ Grammar 24 constant_declaration: constant_declaration ',' "identifier (T_STRING)" '=' static_scalar 25 | "const (T_CONST)" "identifier (T_STRING)" '=' static_scalar - 26 @4: /* empty */ + 26 $@4: /* empty */ - 27 inner_statement_list: inner_statement_list @4 inner_statement + 27 inner_statement_list: inner_statement_list $@4 inner_statement 28 | /* empty */ 29 inner_statement: statement @@ -70,41 +70,41 @@ Grammar 35 unticked_statement: '{' inner_statement_list '}' - 36 @5: /* empty */ + 36 $@5: /* empty */ - 37 @6: /* empty */ + 37 $@6: /* empty */ - 38 unticked_statement: "if (T_IF)" parenthesis_expr @5 statement @6 elseif_list else_single + 38 unticked_statement: "if (T_IF)" parenthesis_expr $@5 statement $@6 elseif_list else_single - 39 @7: /* empty */ + 39 $@7: /* empty */ - 40 @8: /* empty */ + 40 $@8: /* empty */ - 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' + 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' - 42 @9: /* empty */ + 42 $@9: /* empty */ 43 @10: /* empty */ - 44 unticked_statement: "while (T_WHILE)" @9 parenthesis_expr @10 while_statement + 44 unticked_statement: "while (T_WHILE)" $@9 parenthesis_expr @10 while_statement - 45 @11: /* empty */ + 45 $@11: /* empty */ - 46 @12: /* empty */ + 46 $@12: /* empty */ - 47 unticked_statement: "do (T_DO)" @11 statement "while (T_WHILE)" @12 parenthesis_expr ';' + 47 unticked_statement: "do (T_DO)" $@11 statement "while (T_WHILE)" $@12 parenthesis_expr ';' - 48 @13: /* empty */ + 48 $@13: /* empty */ - 49 @14: /* empty */ + 49 $@14: /* empty */ - 50 @15: /* empty */ + 50 $@15: /* empty */ - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement - 52 @16: /* empty */ + 52 $@16: /* empty */ - 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr @16 switch_case_list + 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr $@16 switch_case_list 54 | "break (T_BREAK)" ';' 55 | "break (T_BREAK)" expr ';' 56 | "continue (T_CONTINUE)" ';' @@ -120,48 +120,48 @@ Grammar 66 | expr ';' 67 | "unset (T_UNSET)" '(' unset_variables ')' ';' - 68 @17: /* empty */ + 68 $@17: /* empty */ - 69 @18: /* empty */ + 69 $@18: /* empty */ - 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement + 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement - 71 @19: /* empty */ + 71 $@19: /* empty */ - 72 @20: /* empty */ + 72 $@20: /* empty */ - 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 foreach_variable foreach_optional_arg ')' @20 foreach_statement + 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" $@19 foreach_variable foreach_optional_arg ')' $@20 foreach_statement - 74 @21: /* empty */ + 74 $@21: /* empty */ - 75 unticked_statement: "declare (T_DECLARE)" @21 '(' declare_list ')' declare_statement + 75 unticked_statement: "declare (T_DECLARE)" $@21 '(' declare_list ')' declare_statement 76 | ';' - 77 @22: /* empty */ + 77 $@22: /* empty */ - 78 @23: /* empty */ + 78 $@23: /* empty */ - 79 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' catch_statement @23 finally_statement + 79 unticked_statement: "try (T_TRY)" $@22 '{' inner_statement_list '}' catch_statement $@23 finally_statement 80 | "throw (T_THROW)" expr ';' 81 | "goto (T_GOTO)" "identifier (T_STRING)" ';' 82 catch_statement: /* empty */ - 83 @24: /* empty */ + 83 $@24: /* empty */ - 84 @25: /* empty */ + 84 $@25: /* empty */ - 85 @26: /* empty */ + 85 $@26: /* empty */ - 86 @27: /* empty */ + 86 $@27: /* empty */ - 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' @27 additional_catches + 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 additional_catches 88 finally_statement: /* empty */ - 89 @28: /* empty */ + 89 $@28: /* empty */ - 90 finally_statement: "finally (T_FINALLY)" @28 '{' inner_statement_list '}' + 90 finally_statement: "finally (T_FINALLY)" $@28 '{' inner_statement_list '}' 91 additional_catches: non_empty_additional_catches 92 | /* empty */ @@ -171,9 +171,9 @@ Grammar 95 @29: /* empty */ - 96 @30: /* empty */ + 96 $@30: /* empty */ - 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' @30 '{' inner_statement_list '}' + 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list '}' 98 unset_variables: unset_variable 99 | unset_variables ',' unset_variable @@ -187,17 +187,17 @@ Grammar 103 is_reference: /* empty */ 104 | '&' - 105 @31: /* empty */ + 105 $@31: /* empty */ - 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @31 '(' parameter_list ')' '{' inner_statement_list '}' + 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' parameter_list ')' '{' inner_statement_list '}' - 107 @32: /* empty */ + 107 $@32: /* empty */ - 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @32 implements_list '{' class_statement_list '}' + 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 implements_list '{' class_statement_list '}' - 109 @33: /* empty */ + 109 $@33: /* empty */ - 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @33 interface_extends_list '{' class_statement_list '}' + 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" $@33 interface_extends_list '{' class_statement_list '}' 111 class_entry_type: "class (T_CLASS)" 112 | "abstract (T_ABSTRACT)" "class (T_CLASS)" @@ -224,9 +224,9 @@ Grammar 126 foreach_variable: variable 127 | '&' variable - 128 @34: /* empty */ + 128 $@34: /* empty */ - 129 foreach_variable: "list (T_LIST)" '(' @34 assignment_list ')' + 129 foreach_variable: "list (T_LIST)" '(' $@34 assignment_list ')' 130 for_statement: statement 131 | ':' inner_statement_list "endfor (T_ENDFOR)" ';' @@ -247,13 +247,13 @@ Grammar 142 case_list: /* empty */ - 143 @35: /* empty */ + 143 $@35: /* empty */ - 144 case_list: case_list "case (T_CASE)" expr case_separator @35 inner_statement_list + 144 case_list: case_list "case (T_CASE)" expr case_separator $@35 inner_statement_list - 145 @36: /* empty */ + 145 $@36: /* empty */ - 146 case_list: case_list "default (T_DEFAULT)" case_separator @36 inner_statement_list + 146 case_list: case_list "default (T_DEFAULT)" case_separator $@36 inner_statement_list 147 case_separator: ':' 148 | ';' @@ -263,15 +263,15 @@ Grammar 151 elseif_list: /* empty */ - 152 @37: /* empty */ + 152 $@37: /* empty */ - 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr @37 statement + 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr $@37 statement 154 new_elseif_list: /* empty */ - 155 @38: /* empty */ + 155 $@38: /* empty */ - 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' @38 inner_statement_list + 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' $@38 inner_statement_list 157 else_single: /* empty */ 158 | "else (T_ELSE)" statement @@ -322,15 +322,15 @@ Grammar 193 class_statement_list: class_statement_list class_statement 194 | /* empty */ - 195 @39: /* empty */ + 195 $@39: /* empty */ - 196 class_statement: variable_modifiers @39 class_variable_declaration ';' + 196 class_statement: variable_modifiers $@39 class_variable_declaration ';' 197 | class_constant_declaration ';' 198 | trait_use_statement - 199 @40: /* empty */ + 199 $@40: /* empty */ - 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @40 '(' parameter_list ')' method_body + 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 '(' parameter_list ')' method_body 201 trait_use_statement: "use (T_USE)" trait_list trait_adaptations @@ -398,9 +398,9 @@ Grammar 244 for_expr: /* empty */ 245 | non_empty_for_expr - 246 @41: /* empty */ + 246 $@41: /* empty */ - 247 non_empty_for_expr: non_empty_for_expr ',' @41 expr + 247 non_empty_for_expr: non_empty_for_expr ',' $@41 expr 248 | expr 249 chaining_method_or_property: chaining_method_or_property variable_property @@ -409,31 +409,31 @@ Grammar 251 chaining_dereference: chaining_dereference '[' dim_offset ']' 252 | '[' dim_offset ']' - 253 @42: /* empty */ + 253 $@42: /* empty */ - 254 chaining_instance_call: chaining_dereference @42 chaining_method_or_property + 254 chaining_instance_call: chaining_dereference $@42 chaining_method_or_property 255 | chaining_dereference 256 | chaining_method_or_property 257 instance_call: /* empty */ - 258 @43: /* empty */ + 258 $@43: /* empty */ - 259 instance_call: @43 chaining_instance_call + 259 instance_call: $@43 chaining_instance_call - 260 @44: /* empty */ + 260 $@44: /* empty */ - 261 new_expr: "new (T_NEW)" class_name_reference @44 ctor_arguments + 261 new_expr: "new (T_NEW)" class_name_reference $@44 ctor_arguments - 262 @45: /* empty */ + 262 $@45: /* empty */ - 263 expr_without_variable: "list (T_LIST)" '(' @45 assignment_list ')' '=' expr + 263 expr_without_variable: "list (T_LIST)" '(' $@45 assignment_list ')' '=' expr 264 | variable '=' expr 265 | variable '=' '&' variable - 266 @46: /* empty */ + 266 $@46: /* empty */ - 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments + 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments 268 | "clone (T_CLONE)" expr 269 | variable "+= (T_PLUS_EQUAL)" expr 270 | variable "-= (T_MINUS_EQUAL)" expr @@ -451,21 +451,21 @@ Grammar 282 | rw_variable "-- (T_DEC)" 283 | "-- (T_DEC)" rw_variable - 284 @47: /* empty */ + 284 $@47: /* empty */ - 285 expr_without_variable: expr "|| (T_BOOLEAN_OR)" @47 expr + 285 expr_without_variable: expr "|| (T_BOOLEAN_OR)" $@47 expr - 286 @48: /* empty */ + 286 $@48: /* empty */ - 287 expr_without_variable: expr "&& (T_BOOLEAN_AND)" @48 expr + 287 expr_without_variable: expr "&& (T_BOOLEAN_AND)" $@48 expr - 288 @49: /* empty */ + 288 $@49: /* empty */ - 289 expr_without_variable: expr "or (T_LOGICAL_OR)" @49 expr + 289 expr_without_variable: expr "or (T_LOGICAL_OR)" $@49 expr - 290 @50: /* empty */ + 290 $@50: /* empty */ - 291 expr_without_variable: expr "and (T_LOGICAL_AND)" @50 expr + 291 expr_without_variable: expr "and (T_LOGICAL_AND)" $@50 expr 292 | expr "xor (T_LOGICAL_XOR)" expr 293 | expr '|' expr 294 | expr '&' expr @@ -498,15 +498,15 @@ Grammar 320 expr_without_variable: '(' new_expr ')' @51 instance_call - 321 @52: /* empty */ + 321 $@52: /* empty */ - 322 @53: /* empty */ + 322 $@53: /* empty */ - 323 expr_without_variable: expr '?' @52 expr ':' @53 expr + 323 expr_without_variable: expr '?' $@52 expr ':' $@53 expr - 324 @54: /* empty */ + 324 $@54: /* empty */ - 325 expr_without_variable: expr '?' ':' @54 expr + 325 expr_without_variable: expr '?' ':' $@54 expr 326 | internal_functions_in_yacc 327 | "(int) (T_INT_CAST)" expr 328 | "(double) (T_DOUBLE_CAST)" expr @@ -517,9 +517,9 @@ Grammar 333 | "(unset) (T_UNSET_CAST)" expr 334 | "exit (T_EXIT)" exit_expr - 335 @55: /* empty */ + 335 $@55: /* empty */ - 336 expr_without_variable: '@' @55 expr + 336 expr_without_variable: '@' $@55 expr 337 | scalar 338 | combined_scalar_offset 339 | combined_scalar @@ -573,21 +573,21 @@ Grammar 370 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @61 function_call_parameter_list - 371 @62: /* empty */ + 371 $@62: /* empty */ - 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @62 function_call_parameter_list + 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@62 function_call_parameter_list - 373 @63: /* empty */ + 373 $@63: /* empty */ - 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @63 function_call_parameter_list + 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name $@63 function_call_parameter_list - 375 @64: /* empty */ + 375 $@64: /* empty */ - 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @64 function_call_parameter_list + 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@64 function_call_parameter_list - 377 @65: /* empty */ + 377 $@65: /* empty */ - 378 function_call: variable_without_objects @65 function_call_parameter_list + 378 function_call: variable_without_objects $@65 function_call_parameter_list 379 class_name: "static (T_STATIC)" 380 | namespace_name @@ -601,11 +601,11 @@ Grammar 386 class_name_reference: class_name 387 | dynamic_class_name_reference - 388 @66: /* empty */ + 388 $@66: /* empty */ - 389 @67: /* empty */ + 389 $@67: /* empty */ - 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" @66 object_property @67 dynamic_class_name_variable_properties + 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" $@66 object_property $@67 dynamic_class_name_variable_properties 391 | base_variable 392 dynamic_class_name_variable_properties: dynamic_class_name_variable_properties dynamic_class_name_variable_property @@ -685,19 +685,19 @@ Grammar 451 rw_variable: variable - 452 @68: /* empty */ + 452 $@68: /* empty */ - 453 @69: /* empty */ + 453 $@69: /* empty */ - 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @68 object_property @69 method_or_not variable_properties + 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 object_property $@69 method_or_not variable_properties 455 | base_variable_with_function_calls 456 variable_properties: variable_properties variable_property 457 | /* empty */ - 458 @70: /* empty */ + 458 $@70: /* empty */ - 459 variable_property: "-> (T_OBJECT_OPERATOR)" object_property @70 method_or_not + 459 variable_property: "-> (T_OBJECT_OPERATOR)" object_property $@70 method_or_not 460 array_method_dereference: array_method_dereference '[' dim_offset ']' 461 | method '[' dim_offset ']' @@ -720,9 +720,9 @@ Grammar 472 array_function_dereference: array_function_dereference '[' dim_offset ']' - 473 @72: /* empty */ + 473 $@72: /* empty */ - 474 array_function_dereference: function_call @72 '[' dim_offset ']' + 474 array_function_dereference: function_call $@72 '[' dim_offset ']' 475 base_variable_with_function_calls: base_variable 476 | array_function_dereference @@ -744,9 +744,9 @@ Grammar 488 object_property: object_dim_list - 489 @73: /* empty */ + 489 $@73: /* empty */ - 490 object_property: variable_without_objects @73 + 490 object_property: variable_without_objects $@73 491 object_dim_list: object_dim_list '[' dim_offset ']' 492 | object_dim_list '{' expr '}' @@ -763,9 +763,9 @@ Grammar 500 assignment_list_element: variable - 501 @74: /* empty */ + 501 $@74: /* empty */ - 502 assignment_list_element: "list (T_LIST)" '(' @74 assignment_list ')' + 502 assignment_list_element: "list (T_LIST)" '(' $@74 assignment_list ')' 503 | /* empty */ 504 array_pair_list: /* empty */ @@ -787,9 +787,9 @@ Grammar 518 encaps_var: "variable (T_VARIABLE)" - 519 @75: /* empty */ + 519 $@75: /* empty */ - 520 encaps_var: "variable (T_VARIABLE)" '[' @75 encaps_var_offset ']' + 520 encaps_var: "variable (T_VARIABLE)" '[' $@75 encaps_var_offset ']' 521 | "variable (T_VARIABLE)" "-> (T_OBJECT_OPERATOR)" "identifier (T_STRING)" 522 | "${ (T_DOLLAR_OPEN_CURLY_BRACES)" expr '}' 523 | "${ (T_DOLLAR_OPEN_CURLY_BRACES)" "variable name (T_STRING_VARNAME)" '[' expr ']' '}' @@ -810,9 +810,9 @@ Grammar 536 isset_variables: isset_variable - 537 @76: /* empty */ + 537 $@76: /* empty */ - 538 isset_variables: isset_variables ',' @76 isset_variable + 538 isset_variables: isset_variables ',' $@76 isset_variable 539 isset_variable: variable 540 | expr_without_variable @@ -927,8 +927,8 @@ error (256) T_INLINE_HTML (312) 65 T_CHARACTER (313) T_BAD_CHARACTER (314) -"quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" - (315) 399 413 515 517 +"quoted-string and whitespace (T_ENCAPSED_AND_WHITESPACE)" (315) 399 + 413 515 517 "quoted-string (T_CONSTANT_ENCAPSED_STRING)" (316) 353 405 "echo (T_ECHO)" (317) 64 "do (T_DO)" (318) 47 @@ -1012,16 +1012,16 @@ start (161) on left: 1, on right: 0 top_statement_list (162) on left: 3 4, on right: 1 3 13 15 -@1 (163) +$@1 (163) on left: 2, on right: 3 namespace_name (164) on left: 5 6, on right: 6 11 13 20 21 22 23 364 366 368 380 381 382 383 384 385 417 418 419 430 431 432 top_statement (165) on left: 7 8 9 10 11 13 15 16 17, on right: 3 -@2 (166) +$@2 (166) on left: 12, on right: 13 -@3 (167) +$@3 (167) on left: 14, on right: 15 use_declarations (168) on left: 18 19, on right: 16 18 @@ -1032,7 +1032,7 @@ constant_declaration (170) inner_statement_list (171) on left: 27 28, on right: 27 35 41 79 87 90 97 106 131 133 135 144 146 150 156 160 223 344 346 -@4 (172) +$@4 (172) on left: 26, on right: 27 inner_statement (173) on left: 29 30 31 32, on right: 27 @@ -1041,57 +1041,57 @@ statement (174) unticked_statement (175) on left: 35 38 41 44 47 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 70 73 75 76 79 80 81, on right: 33 -@5 (176) +$@5 (176) on left: 36, on right: 38 -@6 (177) +$@6 (177) on left: 37, on right: 38 -@7 (178) +$@7 (178) on left: 39, on right: 41 -@8 (179) +$@8 (179) on left: 40, on right: 41 -@9 (180) +$@9 (180) on left: 42, on right: 44 @10 (181) on left: 43, on right: 44 -@11 (182) +$@11 (182) on left: 45, on right: 47 -@12 (183) +$@12 (183) on left: 46, on right: 47 -@13 (184) +$@13 (184) on left: 48, on right: 51 -@14 (185) +$@14 (185) on left: 49, on right: 51 -@15 (186) +$@15 (186) on left: 50, on right: 51 -@16 (187) +$@16 (187) on left: 52, on right: 53 -@17 (188) +$@17 (188) on left: 68, on right: 70 -@18 (189) +$@18 (189) on left: 69, on right: 70 -@19 (190) +$@19 (190) on left: 71, on right: 73 -@20 (191) +$@20 (191) on left: 72, on right: 73 -@21 (192) +$@21 (192) on left: 74, on right: 75 -@22 (193) +$@22 (193) on left: 77, on right: 79 -@23 (194) +$@23 (194) on left: 78, on right: 79 catch_statement (195) on left: 82 87, on right: 79 -@24 (196) +$@24 (196) on left: 83, on right: 87 -@25 (197) +$@25 (197) on left: 84, on right: 87 -@26 (198) +$@26 (198) on left: 85, on right: 87 -@27 (199) +$@27 (199) on left: 86, on right: 87 finally_statement (200) on left: 88 90, on right: 79 -@28 (201) +$@28 (201) on left: 89, on right: 90 additional_catches (202) on left: 91 92, on right: 87 @@ -1101,7 +1101,7 @@ additional_catch (204) on left: 97, on right: 93 94 @29 (205) on left: 95, on right: 97 -@30 (206) +$@30 (206) on left: 96, on right: 97 unset_variables (207) on left: 98 99, on right: 67 99 @@ -1115,13 +1115,13 @@ is_reference (211) on left: 103 104, on right: 106 200 344 346 unticked_function_declaration_statement (212) on left: 106, on right: 101 -@31 (213) +$@31 (213) on left: 105, on right: 106 unticked_class_declaration_statement (214) on left: 108 110, on right: 102 -@32 (215) +$@32 (215) on left: 107, on right: 108 -@33 (216) +$@33 (216) on left: 109, on right: 110 class_entry_type (217) on left: 111 112 113 114, on right: 108 @@ -1139,7 +1139,7 @@ foreach_optional_arg (223) on left: 124 125, on right: 70 73 foreach_variable (224) on left: 126 127 129, on right: 70 73 125 -@34 (225) +$@34 (225) on left: 128, on right: 129 for_statement (226) on left: 130 131, on right: 51 @@ -1153,9 +1153,9 @@ switch_case_list (230) on left: 138 139 140 141, on right: 53 case_list (231) on left: 142 144 146, on right: 138 139 140 141 144 146 -@35 (232) +$@35 (232) on left: 143, on right: 144 -@36 (233) +$@36 (233) on left: 145, on right: 146 case_separator (234) on left: 147 148, on right: 144 146 @@ -1163,11 +1163,11 @@ while_statement (235) on left: 149 150, on right: 44 elseif_list (236) on left: 151 153, on right: 38 153 -@37 (237) +$@37 (237) on left: 152, on right: 153 new_elseif_list (238) on left: 154 156, on right: 41 156 -@38 (239) +$@38 (239) on left: 155, on right: 156 else_single (240) on left: 157 158, on right: 38 @@ -1196,9 +1196,9 @@ class_statement_list (250) on left: 193 194, on right: 108 110 193 class_statement (251) on left: 196 197 198 200, on right: 193 -@39 (252) +$@39 (252) on left: 195, on right: 196 -@40 (253) +$@40 (253) on left: 199, on right: 200 trait_use_statement (254) on left: 201, on right: 198 @@ -1244,7 +1244,7 @@ for_expr (274) on left: 244 245, on right: 51 non_empty_for_expr (275) on left: 247 248, on right: 245 247 -@41 (276) +$@41 (276) on left: 246, on right: 247 chaining_method_or_property (277) on left: 249 250, on right: 249 254 256 @@ -1252,15 +1252,15 @@ chaining_dereference (278) on left: 251 252, on right: 251 254 255 chaining_instance_call (279) on left: 254 255 256, on right: 259 -@42 (280) +$@42 (280) on left: 253, on right: 254 instance_call (281) on left: 257 259, on right: 320 -@43 (282) +$@43 (282) on left: 258, on right: 259 new_expr (283) on left: 261, on right: 318 320 -@44 (284) +$@44 (284) on left: 260, on right: 261 expr_without_variable (285) on left: 263 264 265 267 268 269 270 271 272 273 274 275 276 277 @@ -1269,27 +1269,27 @@ expr_without_variable (285) 314 315 316 317 318 320 323 325 326 327 328 329 330 331 332 333 334 336 337 338 339 340 341 342 344 346, on right: 59 73 178 181 347 349 446 530 540 -@45 (286) +$@45 (286) on left: 262, on right: 263 -@46 (287) +$@46 (287) on left: 266, on right: 267 -@47 (288) +$@47 (288) on left: 284, on right: 285 -@48 (289) +$@48 (289) on left: 286, on right: 287 -@49 (290) +$@49 (290) on left: 288, on right: 289 -@50 (291) +$@50 (291) on left: 290, on right: 291 @51 (292) on left: 319, on right: 320 -@52 (293) +$@52 (293) on left: 321, on right: 323 -@53 (294) +$@53 (294) on left: 322, on right: 323 -@54 (295) +$@54 (295) on left: 324, on right: 325 -@55 (296) +$@55 (296) on left: 335, on right: 336 @56 (297) on left: 343, on right: 344 @@ -1317,13 +1317,13 @@ function_call (305) on left: 367, on right: 368 @61 (309) on left: 369, on right: 370 -@62 (310) +$@62 (310) on left: 371, on right: 372 -@63 (311) +$@63 (311) on left: 373, on right: 374 -@64 (312) +$@64 (312) on left: 375, on right: 376 -@65 (313) +$@65 (313) on left: 377, on right: 378 class_name (314) on left: 379 380 381 382, on right: 370 372 386 426 469 541 543 @@ -1335,9 +1335,9 @@ class_name_reference (316) on left: 386 387, on right: 261 267 316 dynamic_class_name_reference (317) on left: 390 391, on right: 387 -@66 (318) +$@66 (318) on left: 388, on right: 390 -@67 (319) +$@67 (319) on left: 389, on right: 390 dynamic_class_name_variable_properties (320) on left: 392 393, on right: 390 392 @@ -1350,17 +1350,16 @@ backticks_expr (323) ctor_arguments (324) on left: 401 402, on right: 261 267 common_scalar (325) - on left: 403 404 405 406 407 408 409 410 411 412 413 414, - on right: 415 433 + on left: 403 404 405 406 407 408 409 410 411 412 413 414, on right: + 415 433 static_scalar (326) - on left: 415 416 417 418 419 420 421 422 423 424 425, - on right: 24 25 136 137 165 166 169 170 190 192 237 239 240 241 - 420 421 441 442 443 444 + on left: 415 416 417 418 419 420 421 422 423 424 425, on right: + 24 25 136 137 165 166 169 170 190 192 237 239 240 241 420 421 441 + 442 443 444 static_class_constant (327) on left: 426, on right: 424 scalar (328) - on left: 427 428 429 430 431 432 433 434 435 436, - on right: 337 + on left: 427 428 429 430 431 432 433 434 435 436, on right: 337 static_array_pair_list (329) on left: 437 438, on right: 422 423 possible_comma (330) @@ -1386,15 +1385,15 @@ variable (337) on left: 454 455, on right: 60 70 100 126 127 179 182 264 265 267 269 270 271 272 273 274 275 276 277 278 279 348 350 449 450 451 500 524 529 539 -@68 (338) +$@68 (338) on left: 452, on right: 454 -@69 (339) +$@69 (339) on left: 453, on right: 454 variable_properties (340) on left: 456 457, on right: 454 456 variable_property (341) on left: 459, on right: 249 250 456 -@70 (342) +$@70 (342) on left: 458, on right: 459 array_method_dereference (343) on left: 460 461, on right: 460 465 @@ -1412,7 +1411,7 @@ variable_class_name (349) on left: 471, on right: 374 376 470 542 array_function_dereference (350) on left: 472 474, on right: 472 476 -@72 (351) +$@72 (351) on left: 473, on right: 474 base_variable_with_function_calls (352) on left: 475 476 477, on right: 454 455 @@ -1427,7 +1426,7 @@ dim_offset (356) 481 491 object_property (357) on left: 488 490, on right: 390 394 454 459 -@73 (358) +$@73 (358) on left: 489, on right: 490 object_dim_list (359) on left: 491 492 493, on right: 488 491 492 @@ -1439,7 +1438,7 @@ assignment_list (362) on left: 498 499, on right: 129 263 498 502 assignment_list_element (363) on left: 500 502 503, on right: 498 499 -@74 (364) +$@74 (364) on left: 501, on right: 502 array_pair_list (365) on left: 504 505, on right: 354 355 @@ -1450,7 +1449,7 @@ encaps_list (367) on left: 514 515 516 517, on right: 400 434 435 514 515 encaps_var (368) on left: 518 520 521 522 523 524, on right: 514 516 517 -@75 (369) +$@75 (369) on left: 519, on right: 520 encaps_var_offset (370) on left: 525 526 527, on right: 520 @@ -1458,7 +1457,7 @@ internal_functions_in_yacc (371) on left: 528 529 530 531 532 533 534 535, on right: 326 isset_variables (372) on left: 536 538, on right: 528 538 -@76 (373) +$@76 (373) on left: 537, on right: 538 isset_variable (374) on left: 539 540, on right: 536 538 @@ -1490,12 +1489,12 @@ state 1 state 2 1 start: top_statement_list . - 3 top_statement_list: top_statement_list . @1 top_statement + 3 top_statement_list: top_statement_list . $@1 top_statement "end of file" reduce using rule 1 (start) - $default reduce using rule 2 (@1) + $default reduce using rule 2 ($@1) - @1 go to state 4 + $@1 go to state 4 state 3 @@ -1507,7 +1506,7 @@ state 3 state 4 - 3 top_statement_list: top_statement_list @1 . top_statement + 3 top_statement_list: top_statement_list $@1 . top_statement "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -2504,11 +2503,11 @@ state 15 state 16 - 336 expr_without_variable: '@' . @55 expr + 336 expr_without_variable: '@' . $@55 expr - $default reduce using rule 335 (@55) + $default reduce using rule 335 ($@55) - @55 go to state 140 + $@55 go to state 140 state 17 @@ -3346,7 +3345,7 @@ state 27 state 28 - 261 new_expr: "new (T_NEW)" . class_name_reference @44 ctor_arguments + 261 new_expr: "new (T_NEW)" . class_name_reference $@44 ctor_arguments "identifier (T_STRING)" shift, and go to state 123 "variable (T_VARIABLE)" shift, and go to state 35 @@ -3381,8 +3380,8 @@ state 29 state 30 - 38 unticked_statement: "if (T_IF)" . parenthesis_expr @5 statement @6 elseif_list else_single - 41 | "if (T_IF)" . parenthesis_expr ':' @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' + 38 unticked_statement: "if (T_IF)" . parenthesis_expr $@5 statement $@6 elseif_list else_single + 41 | "if (T_IF)" . parenthesis_expr ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' '(' shift, and go to state 175 @@ -3533,49 +3532,49 @@ state 38 state 39 - 47 unticked_statement: "do (T_DO)" . @11 statement "while (T_WHILE)" @12 parenthesis_expr ';' + 47 unticked_statement: "do (T_DO)" . $@11 statement "while (T_WHILE)" $@12 parenthesis_expr ';' - $default reduce using rule 45 (@11) + $default reduce using rule 45 ($@11) - @11 go to state 181 + $@11 go to state 181 state 40 - 44 unticked_statement: "while (T_WHILE)" . @9 parenthesis_expr @10 while_statement + 44 unticked_statement: "while (T_WHILE)" . $@9 parenthesis_expr @10 while_statement - $default reduce using rule 42 (@9) + $default reduce using rule 42 ($@9) - @9 go to state 182 + $@9 go to state 182 state 41 - 51 unticked_statement: "for (T_FOR)" . '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement + 51 unticked_statement: "for (T_FOR)" . '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement '(' shift, and go to state 183 state 42 - 70 unticked_statement: "foreach (T_FOREACH)" . '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement - 73 | "foreach (T_FOREACH)" . '(' expr_without_variable "as (T_AS)" @19 foreach_variable foreach_optional_arg ')' @20 foreach_statement + 70 unticked_statement: "foreach (T_FOREACH)" . '(' variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement + 73 | "foreach (T_FOREACH)" . '(' expr_without_variable "as (T_AS)" $@19 foreach_variable foreach_optional_arg ')' $@20 foreach_statement '(' shift, and go to state 184 state 43 - 75 unticked_statement: "declare (T_DECLARE)" . @21 '(' declare_list ')' declare_statement + 75 unticked_statement: "declare (T_DECLARE)" . $@21 '(' declare_list ')' declare_statement - $default reduce using rule 74 (@21) + $default reduce using rule 74 ($@21) - @21 go to state 185 + $@21 go to state 185 state 44 - 53 unticked_statement: "switch (T_SWITCH)" . parenthesis_expr @16 switch_case_list + 53 unticked_statement: "switch (T_SWITCH)" . parenthesis_expr $@16 switch_case_list '(' shift, and go to state 175 @@ -3870,11 +3869,11 @@ state 50 state 51 - 79 unticked_statement: "try (T_TRY)" . @22 '{' inner_statement_list '}' catch_statement @23 finally_statement + 79 unticked_statement: "try (T_TRY)" . $@22 '{' inner_statement_list '}' catch_statement $@23 finally_statement - $default reduce using rule 77 (@22) + $default reduce using rule 77 ($@22) - @22 go to state 197 + $@22 go to state 197 state 52 @@ -4067,7 +4066,7 @@ state 64 state 65 - 263 expr_without_variable: "list (T_LIST)" . '(' @45 assignment_list ')' '=' expr + 263 expr_without_variable: "list (T_LIST)" . '(' $@45 assignment_list ')' '=' expr '(' shift, and go to state 216 @@ -4140,8 +4139,8 @@ state 73 state 74 11 top_statement: "namespace (T_NAMESPACE)" . namespace_name ';' - 13 | "namespace (T_NAMESPACE)" . namespace_name '{' @2 top_statement_list '}' - 15 | "namespace (T_NAMESPACE)" . '{' @3 top_statement_list '}' + 13 | "namespace (T_NAMESPACE)" . namespace_name '{' $@2 top_statement_list '}' + 15 | "namespace (T_NAMESPACE)" . '{' $@3 top_statement_list '}' 366 function_call: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name @59 function_call_parameter_list 381 class_name: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name 431 scalar: "namespace (T_NAMESPACE)" . "\\ (T_NS_SEPARATOR)" namespace_name @@ -4340,7 +4339,7 @@ state 84 state 85 - 3 top_statement_list: top_statement_list @1 top_statement . + 3 top_statement_list: top_statement_list $@1 top_statement . $default reduce using rule 3 (top_statement_list) @@ -4398,14 +4397,14 @@ state 92 state 93 - 108 unticked_class_declaration_statement: class_entry_type . "identifier (T_STRING)" extends_from @32 implements_list '{' class_statement_list '}' + 108 unticked_class_declaration_statement: class_entry_type . "identifier (T_STRING)" extends_from $@32 implements_list '{' class_statement_list '}' "identifier (T_STRING)" shift, and go to state 243 state 94 - 110 unticked_class_declaration_statement: interface_entry . "identifier (T_STRING)" @33 interface_extends_list '{' class_statement_list '}' + 110 unticked_class_declaration_statement: interface_entry . "identifier (T_STRING)" $@33 interface_extends_list '{' class_statement_list '}' "identifier (T_STRING)" shift, and go to state 244 @@ -4453,7 +4452,7 @@ state 99 state 100 - 106 unticked_function_declaration_statement: function . is_reference "identifier (T_STRING)" @31 '(' parameter_list ')' '{' inner_statement_list '}' + 106 unticked_function_declaration_statement: function . is_reference "identifier (T_STRING)" $@31 '(' parameter_list ')' '{' inner_statement_list '}' 344 expr_without_variable: function . is_reference @56 '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' '&' shift, and go to state 248 @@ -4465,19 +4464,19 @@ state 100 state 101 - 474 array_function_dereference: function_call . @72 '[' dim_offset ']' + 474 array_function_dereference: function_call . $@72 '[' dim_offset ']' 477 base_variable_with_function_calls: function_call . - '[' reduce using rule 473 (@72) + '[' reduce using rule 473 ($@72) $default reduce using rule 477 (base_variable_with_function_calls) - @72 go to state 250 + $@72 go to state 250 state 102 370 function_call: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @61 function_call_parameter_list - 372 | class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @62 function_call_parameter_list + 372 | class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@62 function_call_parameter_list 469 static_member: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects 541 class_constant: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" 544 class_name_scalar: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" "class (T_CLASS)" @@ -4502,10 +4501,10 @@ state 104 state 105 66 unticked_statement: expr . ';' - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -4527,8 +4526,8 @@ state 105 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "or (T_LOGICAL_OR)" shift, and go to state 252 "xor (T_LOGICAL_XOR)" shift, and go to state 253 @@ -4586,7 +4585,7 @@ state 109 264 expr_without_variable: variable . '=' expr 265 | variable . '=' '&' variable - 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments + 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments 269 | variable . "+= (T_PLUS_EQUAL)" expr 270 | variable . "-= (T_MINUS_EQUAL)" expr 271 | variable . "*= (T_MUL_EQUAL)" expr @@ -4621,11 +4620,11 @@ state 109 state 110 - 378 function_call: variable_without_objects . @65 function_call_parameter_list + 378 function_call: variable_without_objects . $@65 function_call_parameter_list - $default reduce using rule 377 (@65) + $default reduce using rule 377 ($@65) - @65 go to state 293 + $@65 go to state 293 state 111 @@ -4637,8 +4636,8 @@ state 111 state 112 - 374 function_call: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @63 function_call_parameter_list - 376 | variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @64 function_call_parameter_list + 374 function_call: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name $@63 function_call_parameter_list + 376 | variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@64 function_call_parameter_list 470 static_member: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects 542 class_constant: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" "identifier (T_STRING)" @@ -4657,7 +4656,7 @@ state 113 state 114 - 454 variable: base_variable_with_function_calls . "-> (T_OBJECT_OPERATOR)" @68 object_property @69 method_or_not variable_properties + 454 variable: base_variable_with_function_calls . "-> (T_OBJECT_OPERATOR)" $@68 object_property $@69 method_or_not variable_properties 455 | base_variable_with_function_calls . "-> (T_OBJECT_OPERATOR)" shift, and go to state 296 @@ -4777,10 +4776,10 @@ state 126 state 127 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -4802,8 +4801,8 @@ state 127 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 535 internal_functions_in_yacc: "require_once (T_REQUIRE_ONCE)" expr . "or (T_LOGICAL_OR)" shift, and go to state 252 @@ -4838,10 +4837,10 @@ state 127 state 128 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -4863,8 +4862,8 @@ state 128 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 534 internal_functions_in_yacc: "require (T_REQUIRE)" expr . "or (T_LOGICAL_OR)" shift, and go to state 252 @@ -4985,10 +4984,10 @@ state 129 state 130 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5010,8 +5009,8 @@ state 130 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 532 internal_functions_in_yacc: "include_once (T_INCLUDE_ONCE)" expr . "or (T_LOGICAL_OR)" shift, and go to state 252 @@ -5046,10 +5045,10 @@ state 130 state 131 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5071,8 +5070,8 @@ state 131 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 531 internal_functions_in_yacc: "include (T_INCLUDE)" expr . "or (T_LOGICAL_OR)" shift, and go to state 252 @@ -5107,10 +5106,10 @@ state 131 state 132 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5132,8 +5131,8 @@ state 132 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 341 | "print (T_PRINT)" expr . '?' shift, and go to state 255 @@ -5175,10 +5174,10 @@ state 133 state 134 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5200,8 +5199,8 @@ state 134 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 349 yield_expr: "yield (T_YIELD)" expr . "=> (T_DOUBLE_ARROW)" expr_without_variable 350 | "yield (T_YIELD)" expr . "=> (T_DOUBLE_ARROW)" variable @@ -5238,7 +5237,7 @@ state 135 264 expr_without_variable: variable . '=' expr 265 | variable . '=' '&' variable - 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments + 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments 269 | variable . "+= (T_PLUS_EQUAL)" expr 270 | variable . "-= (T_MINUS_EQUAL)" expr 271 | variable . "*= (T_MUL_EQUAL)" expr @@ -5276,10 +5275,10 @@ state 135 state 136 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5302,18 +5301,18 @@ state 136 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr $default reduce using rule 304 (expr_without_variable) state 137 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5336,18 +5335,18 @@ state 137 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr $default reduce using rule 305 (expr_without_variable) state 138 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5370,8 +5369,8 @@ state 138 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "instanceof (T_INSTANCEOF)" shift, and go to state 277 @@ -5380,10 +5379,10 @@ state 138 state 139 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5406,15 +5405,15 @@ state 139 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr $default reduce using rule 307 (expr_without_variable) state 140 - 336 expr_without_variable: '@' @55 . expr + 336 expr_without_variable: '@' $@55 . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -5500,10 +5499,10 @@ state 140 state 141 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5525,8 +5524,8 @@ state 141 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 333 | "(unset) (T_UNSET_CAST)" expr . $default reduce using rule 333 (expr_without_variable) @@ -5534,10 +5533,10 @@ state 141 state 142 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5559,8 +5558,8 @@ state 142 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 332 | "(bool) (T_BOOL_CAST)" expr . $default reduce using rule 332 (expr_without_variable) @@ -5568,10 +5567,10 @@ state 142 state 143 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5593,8 +5592,8 @@ state 143 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 331 | "(object) (T_OBJECT_CAST)" expr . $default reduce using rule 331 (expr_without_variable) @@ -5602,10 +5601,10 @@ state 143 state 144 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5627,8 +5626,8 @@ state 144 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 330 | "(array) (T_ARRAY_CAST)" expr . $default reduce using rule 330 (expr_without_variable) @@ -5636,10 +5635,10 @@ state 144 state 145 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5661,8 +5660,8 @@ state 145 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 329 | "(string) (T_STRING_CAST)" expr . $default reduce using rule 329 (expr_without_variable) @@ -5670,10 +5669,10 @@ state 145 state 146 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5695,8 +5694,8 @@ state 146 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 328 | "(double) (T_DOUBLE_CAST)" expr . $default reduce using rule 328 (expr_without_variable) @@ -5704,10 +5703,10 @@ state 146 state 147 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5729,8 +5728,8 @@ state 147 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 327 | "(int) (T_INT_CAST)" expr . $default reduce using rule 327 (expr_without_variable) @@ -5778,7 +5777,7 @@ state 151 state 152 370 function_call: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @61 function_call_parameter_list - 372 | class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @62 function_call_parameter_list + 372 | class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@62 function_call_parameter_list 469 static_member: class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 307 @@ -5800,8 +5799,8 @@ state 154 state 155 - 374 function_call: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @63 function_call_parameter_list - 376 | variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @64 function_call_parameter_list + 374 function_call: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name $@63 function_call_parameter_list + 376 | variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@64 function_call_parameter_list 470 static_member: variable_class_name . ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects ":: (T_PAAMAYIM_NEKUDOTAYIM)" shift, and go to state 308 @@ -5843,10 +5842,10 @@ state 157 state 158 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5868,8 +5867,8 @@ state 158 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 508 non_empty_array_pair_list: expr . "=> (T_DOUBLE_ARROW)" expr 509 | expr . 512 | expr . "=> (T_DOUBLE_ARROW)" '&' w_variable @@ -5930,10 +5929,10 @@ state 160 state 161 268 expr_without_variable: "clone (T_CLONE)" expr . - 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -5955,8 +5954,8 @@ state 161 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr $default reduce using rule 268 (expr_without_variable) @@ -5999,11 +5998,11 @@ state 165 state 166 - 261 new_expr: "new (T_NEW)" class_name_reference . @44 ctor_arguments + 261 new_expr: "new (T_NEW)" class_name_reference . $@44 ctor_arguments - $default reduce using rule 260 (@44) + $default reduce using rule 260 ($@44) - @44 go to state 318 + $@44 go to state 318 state 167 @@ -6022,7 +6021,7 @@ state 168 state 169 - 390 dynamic_class_name_reference: base_variable . "-> (T_OBJECT_OPERATOR)" @66 object_property @67 dynamic_class_name_variable_properties + 390 dynamic_class_name_reference: base_variable . "-> (T_OBJECT_OPERATOR)" $@66 object_property $@67 dynamic_class_name_variable_properties 391 | base_variable . "-> (T_OBJECT_OPERATOR)" shift, and go to state 320 @@ -6250,14 +6249,14 @@ state 175 state 176 - 38 unticked_statement: "if (T_IF)" parenthesis_expr . @5 statement @6 elseif_list else_single - 41 | "if (T_IF)" parenthesis_expr . ':' @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' + 38 unticked_statement: "if (T_IF)" parenthesis_expr . $@5 statement $@6 elseif_list else_single + 41 | "if (T_IF)" parenthesis_expr . ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' ':' shift, and go to state 323 - $default reduce using rule 36 (@5) + $default reduce using rule 36 ($@5) - @5 go to state 324 + $@5 go to state 324 state 177 @@ -6368,10 +6367,10 @@ state 179 state 180 243 echo_expr_list: expr . - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -6393,8 +6392,8 @@ state 180 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "or (T_LOGICAL_OR)" shift, and go to state 252 "xor (T_LOGICAL_XOR)" shift, and go to state 253 @@ -6428,7 +6427,7 @@ state 180 state 181 - 47 unticked_statement: "do (T_DO)" @11 . statement "while (T_WHILE)" @12 parenthesis_expr ';' + 47 unticked_statement: "do (T_DO)" $@11 . statement "while (T_WHILE)" $@12 parenthesis_expr ';' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -6536,7 +6535,7 @@ state 181 state 182 - 44 unticked_statement: "while (T_WHILE)" @9 . parenthesis_expr @10 while_statement + 44 unticked_statement: "while (T_WHILE)" $@9 . parenthesis_expr @10 while_statement '(' shift, and go to state 175 @@ -6545,7 +6544,7 @@ state 182 state 183 - 51 unticked_statement: "for (T_FOR)" '(' . for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement + 51 unticked_statement: "for (T_FOR)" '(' . for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -6635,8 +6634,8 @@ state 183 state 184 - 70 unticked_statement: "foreach (T_FOREACH)" '(' . variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement - 73 | "foreach (T_FOREACH)" '(' . expr_without_variable "as (T_AS)" @19 foreach_variable foreach_optional_arg ')' @20 foreach_statement + 70 unticked_statement: "foreach (T_FOREACH)" '(' . variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement + 73 | "foreach (T_FOREACH)" '(' . expr_without_variable "as (T_AS)" $@19 foreach_variable foreach_optional_arg ')' $@20 foreach_statement "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -6722,18 +6721,18 @@ state 184 state 185 - 75 unticked_statement: "declare (T_DECLARE)" @21 . '(' declare_list ')' declare_statement + 75 unticked_statement: "declare (T_DECLARE)" $@21 . '(' declare_list ')' declare_statement '(' shift, and go to state 336 state 186 - 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr . @16 switch_case_list + 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr . $@16 switch_case_list - $default reduce using rule 52 (@16) + $default reduce using rule 52 ($@16) - @16 go to state 337 + $@16 go to state 337 state 187 @@ -6746,10 +6745,10 @@ state 187 state 188 55 unticked_statement: "break (T_BREAK)" expr . ';' - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -6771,8 +6770,8 @@ state 188 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "or (T_LOGICAL_OR)" shift, and go to state 252 "xor (T_LOGICAL_XOR)" shift, and go to state 253 @@ -6813,10 +6812,10 @@ state 189 state 190 57 unticked_statement: "continue (T_CONTINUE)" expr . ';' - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -6838,8 +6837,8 @@ state 190 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "or (T_LOGICAL_OR)" shift, and go to state 252 "xor (T_LOGICAL_XOR)" shift, and go to state 253 @@ -6903,10 +6902,10 @@ state 194 state 195 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -6928,8 +6927,8 @@ state 195 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "or (T_LOGICAL_OR)" shift, and go to state 252 "xor (T_LOGICAL_XOR)" shift, and go to state 253 @@ -6964,7 +6963,7 @@ state 196 60 unticked_statement: "return (T_RETURN)" variable . ';' 264 expr_without_variable: variable . '=' expr 265 | variable . '=' '&' variable - 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments + 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments 269 | variable . "+= (T_PLUS_EQUAL)" expr 270 | variable . "-= (T_MINUS_EQUAL)" expr 271 | variable . "*= (T_MUL_EQUAL)" expr @@ -7000,7 +6999,7 @@ state 196 state 197 - 79 unticked_statement: "try (T_TRY)" @22 . '{' inner_statement_list '}' catch_statement @23 finally_statement + 79 unticked_statement: "try (T_TRY)" $@22 . '{' inner_statement_list '}' catch_statement $@23 finally_statement '{' shift, and go to state 344 @@ -7008,10 +7007,10 @@ state 197 state 198 80 unticked_statement: "throw (T_THROW)" expr . ';' - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -7033,8 +7032,8 @@ state 198 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "or (T_LOGICAL_OR)" shift, and go to state 252 "xor (T_LOGICAL_XOR)" shift, and go to state 253 @@ -7412,11 +7411,11 @@ state 215 state 216 - 263 expr_without_variable: "list (T_LIST)" '(' . @45 assignment_list ')' '=' expr + 263 expr_without_variable: "list (T_LIST)" '(' . $@45 assignment_list ')' '=' expr - $default reduce using rule 262 (@45) + $default reduce using rule 262 ($@45) - @45 go to state 369 + $@45 go to state 369 state 217 @@ -7513,7 +7512,7 @@ state 217 state 218 518 encaps_var: "variable (T_VARIABLE)" . - 520 | "variable (T_VARIABLE)" . '[' @75 encaps_var_offset ']' + 520 | "variable (T_VARIABLE)" . '[' $@75 encaps_var_offset ']' 521 | "variable (T_VARIABLE)" . "-> (T_OBJECT_OPERATOR)" "identifier (T_STRING)" '[' shift, and go to state 371 @@ -7690,18 +7689,18 @@ state 225 state 226 - 15 top_statement: "namespace (T_NAMESPACE)" '{' . @3 top_statement_list '}' + 15 top_statement: "namespace (T_NAMESPACE)" '{' . $@3 top_statement_list '}' - $default reduce using rule 14 (@3) + $default reduce using rule 14 ($@3) - @3 go to state 382 + $@3 go to state 382 state 227 6 namespace_name: namespace_name . "\\ (T_NS_SEPARATOR)" "identifier (T_STRING)" 11 top_statement: "namespace (T_NAMESPACE)" namespace_name . ';' - 13 | "namespace (T_NAMESPACE)" namespace_name . '{' @2 top_statement_list '}' + 13 | "namespace (T_NAMESPACE)" namespace_name . '{' $@2 top_statement_list '}' "\\ (T_NS_SEPARATOR)" shift, and go to state 239 ';' shift, and go to state 383 @@ -7744,10 +7743,10 @@ state 230 state 231 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -7769,8 +7768,8 @@ state 231 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 447 parenthesis_expr: '(' expr . ')' "or (T_LOGICAL_OR)" shift, and go to state 252 @@ -7804,14 +7803,14 @@ state 231 state 232 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 35 unticked_statement: '{' inner_statement_list . '}' '}' shift, and go to state 389 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 233 @@ -7995,7 +7994,7 @@ state 242 state 243 - 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" . extends_from @32 implements_list '{' class_statement_list '}' + 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" . extends_from $@32 implements_list '{' class_statement_list '}' "extends (T_EXTENDS)" shift, and go to state 398 @@ -8006,11 +8005,11 @@ state 243 state 244 - 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" . @33 interface_extends_list '{' class_statement_list '}' + 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" . $@33 interface_extends_list '{' class_statement_list '}' - $default reduce using rule 109 (@33) + $default reduce using rule 109 ($@33) - @33 go to state 400 + $@33 go to state 400 state 245 @@ -8207,7 +8206,7 @@ state 248 state 249 - 106 unticked_function_declaration_statement: function is_reference . "identifier (T_STRING)" @31 '(' parameter_list ')' '{' inner_statement_list '}' + 106 unticked_function_declaration_statement: function is_reference . "identifier (T_STRING)" $@31 '(' parameter_list ')' '{' inner_statement_list '}' 344 expr_without_variable: function is_reference . @56 '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' "identifier (T_STRING)" shift, and go to state 403 @@ -8219,7 +8218,7 @@ state 249 state 250 - 474 array_function_dereference: function_call @72 . '[' dim_offset ']' + 474 array_function_dereference: function_call $@72 . '[' dim_offset ']' '[' shift, and go to state 405 @@ -8227,7 +8226,7 @@ state 250 state 251 370 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_name @61 function_call_parameter_list - 372 | class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects @62 function_call_parameter_list + 372 | class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects $@62 function_call_parameter_list 469 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects 541 class_constant: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . "identifier (T_STRING)" 544 class_name_scalar: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . "class (T_CLASS)" @@ -8247,11 +8246,11 @@ state 251 state 252 - 289 expr_without_variable: expr "or (T_LOGICAL_OR)" . @49 expr + 289 expr_without_variable: expr "or (T_LOGICAL_OR)" . $@49 expr - $default reduce using rule 288 (@49) + $default reduce using rule 288 ($@49) - @49 go to state 413 + $@49 go to state 413 state 253 @@ -8342,41 +8341,41 @@ state 253 state 254 - 291 expr_without_variable: expr "and (T_LOGICAL_AND)" . @50 expr + 291 expr_without_variable: expr "and (T_LOGICAL_AND)" . $@50 expr - $default reduce using rule 290 (@50) + $default reduce using rule 290 ($@50) - @50 go to state 415 + $@50 go to state 415 state 255 - 323 expr_without_variable: expr '?' . @52 expr ':' @53 expr - 325 | expr '?' . ':' @54 expr + 323 expr_without_variable: expr '?' . $@52 expr ':' $@53 expr + 325 | expr '?' . ':' $@54 expr ':' shift, and go to state 416 - $default reduce using rule 321 (@52) + $default reduce using rule 321 ($@52) - @52 go to state 417 + $@52 go to state 417 state 256 - 285 expr_without_variable: expr "|| (T_BOOLEAN_OR)" . @47 expr + 285 expr_without_variable: expr "|| (T_BOOLEAN_OR)" . $@47 expr - $default reduce using rule 284 (@47) + $default reduce using rule 284 ($@47) - @47 go to state 418 + $@47 go to state 418 state 257 - 287 expr_without_variable: expr "&& (T_BOOLEAN_AND)" . @48 expr + 287 expr_without_variable: expr "&& (T_BOOLEAN_AND)" . $@48 expr - $default reduce using rule 286 (@48) + $default reduce using rule 286 ($@48) - @48 go to state 419 + $@48 go to state 419 state 258 @@ -10061,7 +10060,7 @@ state 281 264 expr_without_variable: variable '=' . expr 265 | variable '=' . '&' variable - 267 | variable '=' . '&' "new (T_NEW)" class_name_reference @46 ctor_arguments + 267 | variable '=' . '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -11094,7 +11093,7 @@ state 292 state 293 - 378 function_call: variable_without_objects @65 . function_call_parameter_list + 378 function_call: variable_without_objects $@65 . function_call_parameter_list '(' shift, and go to state 395 @@ -11103,8 +11102,8 @@ state 293 state 294 - 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_name @63 function_call_parameter_list - 376 | variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects @64 function_call_parameter_list + 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_name $@63 function_call_parameter_list + 376 | variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects $@64 function_call_parameter_list 470 static_member: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects 542 class_constant: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . "identifier (T_STRING)" @@ -11211,11 +11210,11 @@ state 295 state 296 - 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" . @68 object_property @69 method_or_not variable_properties + 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" . $@68 object_property $@69 method_or_not variable_properties - $default reduce using rule 452 (@68) + $default reduce using rule 452 ($@68) - @68 go to state 458 + $@68 go to state 458 state 297 @@ -11428,10 +11427,10 @@ state 301 state 302 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -11453,8 +11452,8 @@ state 302 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 533 internal_functions_in_yacc: "eval (T_EVAL)" '(' expr . ')' "or (T_LOGICAL_OR)" shift, and go to state 252 @@ -11575,10 +11574,10 @@ state 303 state 304 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -11600,9 +11599,9 @@ state 304 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr - 336 | '@' @55 expr . + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr + 336 | '@' $@55 expr . $default reduce using rule 336 (expr_without_variable) @@ -11634,7 +11633,7 @@ state 306 state 307 370 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_name @61 function_call_parameter_list - 372 | class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects @62 function_call_parameter_list + 372 | class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects $@62 function_call_parameter_list 469 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects "identifier (T_STRING)" shift, and go to state 465 @@ -11651,8 +11650,8 @@ state 307 state 308 - 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_name @63 function_call_parameter_list - 376 | variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects @64 function_call_parameter_list + 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_name $@63 function_call_parameter_list + 376 | variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects $@64 function_call_parameter_list 470 static_member: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" . variable_without_objects "identifier (T_STRING)" shift, and go to state 465 @@ -11910,7 +11909,7 @@ state 317 state 318 - 261 new_expr: "new (T_NEW)" class_name_reference @44 . ctor_arguments + 261 new_expr: "new (T_NEW)" class_name_reference $@44 . ctor_arguments '(' shift, and go to state 395 @@ -11935,11 +11934,11 @@ state 319 state 320 - 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" . @66 object_property @67 dynamic_class_name_variable_properties + 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" . $@66 object_property $@67 dynamic_class_name_variable_properties - $default reduce using rule 388 (@66) + $default reduce using rule 388 ($@66) - @66 go to state 475 + $@66 go to state 475 state 321 @@ -11963,16 +11962,16 @@ state 322 state 323 - 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' . @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' + 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' . $@7 inner_statement_list $@8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' - $default reduce using rule 39 (@7) + $default reduce using rule 39 ($@7) - @7 go to state 476 + $@7 go to state 476 state 324 - 38 unticked_statement: "if (T_IF)" parenthesis_expr @5 . statement @6 elseif_list else_single + 38 unticked_statement: "if (T_IF)" parenthesis_expr $@5 . statement $@6 elseif_list else_single "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -12080,10 +12079,10 @@ state 324 state 325 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -12105,8 +12104,8 @@ state 325 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 487 dim_offset: expr . "or (T_LOGICAL_OR)" shift, and go to state 252 @@ -12241,14 +12240,14 @@ state 328 state 329 - 47 unticked_statement: "do (T_DO)" @11 statement . "while (T_WHILE)" @12 parenthesis_expr ';' + 47 unticked_statement: "do (T_DO)" $@11 statement . "while (T_WHILE)" $@12 parenthesis_expr ';' "while (T_WHILE)" shift, and go to state 480 state 330 - 44 unticked_statement: "while (T_WHILE)" @9 parenthesis_expr . @10 while_statement + 44 unticked_statement: "while (T_WHILE)" $@9 parenthesis_expr . @10 while_statement $default reduce using rule 43 (@10) @@ -12257,7 +12256,7 @@ state 330 state 331 - 51 unticked_statement: "for (T_FOR)" '(' for_expr . ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement + 51 unticked_statement: "for (T_FOR)" '(' for_expr . ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement ';' shift, and go to state 482 @@ -12265,7 +12264,7 @@ state 331 state 332 245 for_expr: non_empty_for_expr . - 247 non_empty_for_expr: non_empty_for_expr . ',' @41 expr + 247 non_empty_for_expr: non_empty_for_expr . ',' $@41 expr ',' shift, and go to state 483 @@ -12275,10 +12274,10 @@ state 332 state 333 248 non_empty_for_expr: expr . - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -12300,8 +12299,8 @@ state 333 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "or (T_LOGICAL_OR)" shift, and go to state 252 "xor (T_LOGICAL_XOR)" shift, and go to state 253 @@ -12335,7 +12334,7 @@ state 333 state 334 - 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable . "as (T_AS)" @19 foreach_variable foreach_optional_arg ')' @20 foreach_statement + 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable . "as (T_AS)" $@19 foreach_variable foreach_optional_arg ')' $@20 foreach_statement 446 expr: expr_without_variable . "as (T_AS)" shift, and go to state 484 @@ -12345,10 +12344,10 @@ state 334 state 335 - 70 unticked_statement: "foreach (T_FOREACH)" '(' variable . "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement + 70 unticked_statement: "foreach (T_FOREACH)" '(' variable . "as (T_AS)" $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement 264 expr_without_variable: variable . '=' expr 265 | variable . '=' '&' variable - 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments + 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments 269 | variable . "+= (T_PLUS_EQUAL)" expr 270 | variable . "-= (T_MINUS_EQUAL)" expr 271 | variable . "*= (T_MUL_EQUAL)" expr @@ -12384,7 +12383,7 @@ state 335 state 336 - 75 unticked_statement: "declare (T_DECLARE)" @21 '(' . declare_list ')' declare_statement + 75 unticked_statement: "declare (T_DECLARE)" $@21 '(' . declare_list ')' declare_statement "identifier (T_STRING)" shift, and go to state 486 @@ -12393,7 +12392,7 @@ state 336 state 337 - 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr @16 . switch_case_list + 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr $@16 . switch_case_list ':' shift, and go to state 488 '{' shift, and go to state 489 @@ -12471,7 +12470,7 @@ state 343 state 344 - 79 unticked_statement: "try (T_TRY)" @22 '{' . inner_statement_list '}' catch_statement @23 finally_statement + 79 unticked_statement: "try (T_TRY)" $@22 '{' . inner_statement_list '}' catch_statement $@23 finally_statement $default reduce using rule 28 (inner_statement_list) @@ -12733,7 +12732,7 @@ state 363 264 expr_without_variable: variable . '=' expr 265 | variable . '=' '&' variable - 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments + 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments 269 | variable . "+= (T_PLUS_EQUAL)" expr 270 | variable . "-= (T_MINUS_EQUAL)" expr 271 | variable . "*= (T_MUL_EQUAL)" expr @@ -12772,7 +12771,7 @@ state 363 state 364 528 internal_functions_in_yacc: "isset (T_ISSET)" '(' isset_variables . ')' - 538 isset_variables: isset_variables . ',' @76 isset_variable + 538 isset_variables: isset_variables . ',' $@76 isset_variable ',' shift, and go to state 517 ')' shift, and go to state 518 @@ -12799,7 +12798,7 @@ state 367 264 expr_without_variable: variable . '=' expr 265 | variable . '=' '&' variable - 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments + 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments 269 | variable . "+= (T_PLUS_EQUAL)" expr 270 | variable . "-= (T_MINUS_EQUAL)" expr 271 | variable . "*= (T_MUL_EQUAL)" expr @@ -12843,7 +12842,7 @@ state 368 state 369 - 263 expr_without_variable: "list (T_LIST)" '(' @45 . assignment_list ')' '=' expr + 263 expr_without_variable: "list (T_LIST)" '(' $@45 . assignment_list ')' '=' expr "identifier (T_STRING)" shift, and go to state 123 "variable (T_VARIABLE)" shift, and go to state 35 @@ -12881,11 +12880,11 @@ state 370 state 371 - 520 encaps_var: "variable (T_VARIABLE)" '[' . @75 encaps_var_offset ']' + 520 encaps_var: "variable (T_VARIABLE)" '[' . $@75 encaps_var_offset ']' - $default reduce using rule 519 (@75) + $default reduce using rule 519 ($@75) - @75 go to state 527 + $@75 go to state 527 state 372 @@ -12921,10 +12920,10 @@ state 375 state 376 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -12946,8 +12945,8 @@ state 376 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 522 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" expr . '}' "or (T_LOGICAL_OR)" shift, and go to state 252 @@ -13025,7 +13024,7 @@ state 381 state 382 - 15 top_statement: "namespace (T_NAMESPACE)" '{' @3 . top_statement_list '}' + 15 top_statement: "namespace (T_NAMESPACE)" '{' $@3 . top_statement_list '}' $default reduce using rule 4 (top_statement_list) @@ -13041,11 +13040,11 @@ state 383 state 384 - 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' . @2 top_statement_list '}' + 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' . $@2 top_statement_list '}' - $default reduce using rule 12 (@2) + $default reduce using rule 12 ($@2) - @2 go to state 534 + $@2 go to state 534 state 385 @@ -13089,7 +13088,7 @@ state 389 state 390 - 27 inner_statement_list: inner_statement_list @4 . inner_statement + 27 inner_statement_list: inner_statement_list $@4 . inner_statement "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -13210,10 +13209,10 @@ state 390 state 391 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -13235,8 +13234,8 @@ state 391 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 485 compound_variable: '$' '{' expr . '}' "or (T_LOGICAL_OR)" shift, and go to state 252 @@ -13409,16 +13408,16 @@ state 398 state 399 - 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from . @32 implements_list '{' class_statement_list '}' + 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from . $@32 implements_list '{' class_statement_list '}' - $default reduce using rule 107 (@32) + $default reduce using rule 107 ($@32) - @32 go to state 554 + $@32 go to state 554 state 400 - 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @33 . interface_extends_list '{' class_statement_list '}' + 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" $@33 . interface_extends_list '{' class_statement_list '}' "extends (T_EXTENDS)" shift, and go to state 555 @@ -13443,11 +13442,11 @@ state 402 state 403 - 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" . @31 '(' parameter_list ')' '{' inner_statement_list '}' + 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" . $@31 '(' parameter_list ')' '{' inner_statement_list '}' - $default reduce using rule 105 (@31) + $default reduce using rule 105 ($@31) - @31 go to state 559 + $@31 go to state 559 state 404 @@ -13459,7 +13458,7 @@ state 404 state 405 - 474 array_function_dereference: function_call @72 '[' . dim_offset ']' + 474 array_function_dereference: function_call $@72 '[' . dim_offset ']' "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -13650,13 +13649,13 @@ state 408 state 409 - 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . @62 function_call_parameter_list + 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . $@62 function_call_parameter_list 469 static_member: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . - '(' reduce using rule 371 (@62) + '(' reduce using rule 371 ($@62) $default reduce using rule 469 (static_member) - @62 go to state 563 + $@62 go to state 563 state 410 @@ -13694,7 +13693,7 @@ state 412 state 413 - 289 expr_without_variable: expr "or (T_LOGICAL_OR)" @49 . expr + 289 expr_without_variable: expr "or (T_LOGICAL_OR)" $@49 . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -13780,10 +13779,10 @@ state 413 state 414 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 292 | expr "xor (T_LOGICAL_XOR)" expr . 293 | expr . '|' expr @@ -13806,8 +13805,8 @@ state 414 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "and (T_LOGICAL_AND)" shift, and go to state 254 '?' shift, and go to state 255 @@ -13839,7 +13838,7 @@ state 414 state 415 - 291 expr_without_variable: expr "and (T_LOGICAL_AND)" @50 . expr + 291 expr_without_variable: expr "and (T_LOGICAL_AND)" $@50 . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -13925,16 +13924,16 @@ state 415 state 416 - 325 expr_without_variable: expr '?' ':' . @54 expr + 325 expr_without_variable: expr '?' ':' . $@54 expr - $default reduce using rule 324 (@54) + $default reduce using rule 324 ($@54) - @54 go to state 568 + $@54 go to state 568 state 417 - 323 expr_without_variable: expr '?' @52 . expr ':' @53 expr + 323 expr_without_variable: expr '?' $@52 . expr ':' $@53 expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -14020,7 +14019,7 @@ state 417 state 418 - 285 expr_without_variable: expr "|| (T_BOOLEAN_OR)" @47 . expr + 285 expr_without_variable: expr "|| (T_BOOLEAN_OR)" $@47 . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -14106,7 +14105,7 @@ state 418 state 419 - 287 expr_without_variable: expr "&& (T_BOOLEAN_AND)" @48 . expr + 287 expr_without_variable: expr "&& (T_BOOLEAN_AND)" $@48 . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -14192,10 +14191,10 @@ state 419 state 420 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 293 | expr '|' expr . @@ -14218,8 +14217,8 @@ state 420 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '^' shift, and go to state 259 '&' shift, and go to state 260 @@ -14246,10 +14245,10 @@ state 420 state 421 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -14272,8 +14271,8 @@ state 421 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '&' shift, and go to state 260 "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 261 @@ -14299,10 +14298,10 @@ state 421 state 422 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -14325,8 +14324,8 @@ state 422 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "!== (T_IS_NOT_IDENTICAL)" shift, and go to state 261 "=== (T_IS_IDENTICAL)" shift, and go to state 262 @@ -14351,10 +14350,10 @@ state 422 state 423 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -14377,8 +14376,8 @@ state 423 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '<' shift, and go to state 265 '>' shift, and go to state 266 @@ -14404,10 +14403,10 @@ state 423 state 424 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -14430,8 +14429,8 @@ state 424 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '<' shift, and go to state 265 '>' shift, and go to state 266 @@ -14457,10 +14456,10 @@ state 424 state 425 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -14483,8 +14482,8 @@ state 425 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '<' shift, and go to state 265 '>' shift, and go to state 266 @@ -14510,10 +14509,10 @@ state 425 state 426 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -14536,8 +14535,8 @@ state 426 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '<' shift, and go to state 265 '>' shift, and go to state 266 @@ -14563,10 +14562,10 @@ state 426 state 427 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -14589,8 +14588,8 @@ state 427 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr ">> (T_SR)" shift, and go to state 269 "<< (T_SL)" shift, and go to state 270 @@ -14612,10 +14611,10 @@ state 427 state 428 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -14638,8 +14637,8 @@ state 428 314 | expr '>' expr . 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr ">> (T_SR)" shift, and go to state 269 "<< (T_SL)" shift, and go to state 270 @@ -14661,10 +14660,10 @@ state 428 state 429 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -14687,8 +14686,8 @@ state 429 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 315 | expr ">= (T_IS_GREATER_OR_EQUAL)" expr . 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr ">> (T_SR)" shift, and go to state 269 "<< (T_SL)" shift, and go to state 270 @@ -14710,10 +14709,10 @@ state 429 state 430 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -14736,8 +14735,8 @@ state 430 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr ">> (T_SR)" shift, and go to state 269 "<< (T_SL)" shift, and go to state 270 @@ -14759,10 +14758,10 @@ state 430 state 431 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -14785,8 +14784,8 @@ state 431 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '+' shift, and go to state 271 '-' shift, and go to state 272 @@ -14801,10 +14800,10 @@ state 431 state 432 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -14827,8 +14826,8 @@ state 432 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '+' shift, and go to state 271 '-' shift, and go to state 272 @@ -14843,10 +14842,10 @@ state 432 state 433 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -14869,8 +14868,8 @@ state 433 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '*' shift, and go to state 274 '/' shift, and go to state 275 @@ -14882,10 +14881,10 @@ state 433 state 434 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -14908,8 +14907,8 @@ state 434 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '*' shift, and go to state 274 '/' shift, and go to state 275 @@ -14921,10 +14920,10 @@ state 434 state 435 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -14947,8 +14946,8 @@ state 435 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '*' shift, and go to state 274 '/' shift, and go to state 275 @@ -14960,10 +14959,10 @@ state 435 state 436 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -14986,8 +14985,8 @@ state 436 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "instanceof (T_INSTANCEOF)" shift, and go to state 277 @@ -14996,10 +14995,10 @@ state 436 state 437 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -15022,8 +15021,8 @@ state 437 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "instanceof (T_INSTANCEOF)" shift, and go to state 277 @@ -15032,10 +15031,10 @@ state 437 state 438 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -15058,8 +15057,8 @@ state 438 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "instanceof (T_INSTANCEOF)" shift, and go to state 277 @@ -15076,7 +15075,7 @@ state 439 state 440 265 expr_without_variable: variable '=' '&' . variable - 267 | variable '=' '&' . "new (T_NEW)" class_name_reference @46 ctor_arguments + 267 | variable '=' '&' . "new (T_NEW)" class_name_reference $@46 ctor_arguments "new (T_NEW)" shift, and go to state 572 "identifier (T_STRING)" shift, and go to state 123 @@ -15104,10 +15103,10 @@ state 440 state 441 264 expr_without_variable: variable '=' expr . - 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -15129,8 +15128,8 @@ state 441 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '?' shift, and go to state 255 "|| (T_BOOLEAN_OR)" shift, and go to state 256 @@ -15162,10 +15161,10 @@ state 441 state 442 279 expr_without_variable: variable ">>= (T_SR_EQUAL)" expr . - 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -15187,8 +15186,8 @@ state 442 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '?' shift, and go to state 255 "|| (T_BOOLEAN_OR)" shift, and go to state 256 @@ -15220,10 +15219,10 @@ state 442 state 443 278 expr_without_variable: variable "<<= (T_SL_EQUAL)" expr . - 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -15245,8 +15244,8 @@ state 443 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '?' shift, and go to state 255 "|| (T_BOOLEAN_OR)" shift, and go to state 256 @@ -15278,10 +15277,10 @@ state 443 state 444 277 expr_without_variable: variable "^= (T_XOR_EQUAL)" expr . - 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -15303,8 +15302,8 @@ state 444 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '?' shift, and go to state 255 "|| (T_BOOLEAN_OR)" shift, and go to state 256 @@ -15336,10 +15335,10 @@ state 444 state 445 276 expr_without_variable: variable "|= (T_OR_EQUAL)" expr . - 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -15361,8 +15360,8 @@ state 445 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '?' shift, and go to state 255 "|| (T_BOOLEAN_OR)" shift, and go to state 256 @@ -15394,10 +15393,10 @@ state 445 state 446 275 expr_without_variable: variable "&= (T_AND_EQUAL)" expr . - 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -15419,8 +15418,8 @@ state 446 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '?' shift, and go to state 255 "|| (T_BOOLEAN_OR)" shift, and go to state 256 @@ -15452,10 +15451,10 @@ state 446 state 447 274 expr_without_variable: variable "%= (T_MOD_EQUAL)" expr . - 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -15477,8 +15476,8 @@ state 447 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '?' shift, and go to state 255 "|| (T_BOOLEAN_OR)" shift, and go to state 256 @@ -15510,10 +15509,10 @@ state 447 state 448 273 expr_without_variable: variable ".= (T_CONCAT_EQUAL)" expr . - 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -15535,8 +15534,8 @@ state 448 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '?' shift, and go to state 255 "|| (T_BOOLEAN_OR)" shift, and go to state 256 @@ -15568,10 +15567,10 @@ state 448 state 449 272 expr_without_variable: variable "/= (T_DIV_EQUAL)" expr . - 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -15593,8 +15592,8 @@ state 449 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '?' shift, and go to state 255 "|| (T_BOOLEAN_OR)" shift, and go to state 256 @@ -15626,10 +15625,10 @@ state 449 state 450 271 expr_without_variable: variable "*= (T_MUL_EQUAL)" expr . - 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -15651,8 +15650,8 @@ state 450 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '?' shift, and go to state 255 "|| (T_BOOLEAN_OR)" shift, and go to state 256 @@ -15684,10 +15683,10 @@ state 450 state 451 270 expr_without_variable: variable "-= (T_MINUS_EQUAL)" expr . - 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -15709,8 +15708,8 @@ state 451 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '?' shift, and go to state 255 "|| (T_BOOLEAN_OR)" shift, and go to state 256 @@ -15742,10 +15741,10 @@ state 451 state 452 269 expr_without_variable: variable "+= (T_PLUS_EQUAL)" expr . - 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -15767,8 +15766,8 @@ state 452 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '?' shift, and go to state 255 "|| (T_BOOLEAN_OR)" shift, and go to state 256 @@ -15799,7 +15798,7 @@ state 452 state 453 - 378 function_call: variable_without_objects @65 function_call_parameter_list . + 378 function_call: variable_without_objects $@65 function_call_parameter_list . $default reduce using rule 378 (function_call) @@ -15815,22 +15814,22 @@ state 454 state 455 - 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . @64 function_call_parameter_list + 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . $@64 function_call_parameter_list 470 static_member: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects . - '(' reduce using rule 375 (@64) + '(' reduce using rule 375 ($@64) $default reduce using rule 470 (static_member) - @64 go to state 574 + $@64 go to state 574 state 456 - 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name . @63 function_call_parameter_list + 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name . $@63 function_call_parameter_list - $default reduce using rule 373 (@63) + $default reduce using rule 373 ($@63) - @63 go to state 575 + $@63 go to state 575 state 457 @@ -15842,7 +15841,7 @@ state 457 state 458 - 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @68 . object_property @69 method_or_not variable_properties + 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 . object_property $@69 method_or_not variable_properties "identifier (T_STRING)" shift, and go to state 465 "variable (T_VARIABLE)" shift, and go to state 35 @@ -15867,10 +15866,10 @@ state 459 state 460 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -15892,8 +15891,8 @@ state 460 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 482 reference_variable: reference_variable '{' expr . '}' "or (T_LOGICAL_OR)" shift, and go to state 252 @@ -15946,7 +15945,7 @@ state 463 264 expr_without_variable: variable . '=' expr 265 | variable . '=' '&' variable - 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments + 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments 269 | variable . "+= (T_PLUS_EQUAL)" expr 270 | variable . "-= (T_MINUS_EQUAL)" expr 271 | variable . "*= (T_MUL_EQUAL)" expr @@ -16032,10 +16031,10 @@ state 466 state 467 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -16057,8 +16056,8 @@ state 467 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 508 non_empty_array_pair_list: expr "=> (T_DOUBLE_ARROW)" expr . "or (T_LOGICAL_OR)" shift, and go to state 252 @@ -16120,10 +16119,10 @@ state 468 state 469 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -16145,8 +16144,8 @@ state 469 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 506 non_empty_array_pair_list: non_empty_array_pair_list ',' expr . "=> (T_DOUBLE_ARROW)" expr 507 | non_empty_array_pair_list ',' expr . 510 | non_empty_array_pair_list ',' expr . "=> (T_DOUBLE_ARROW)" '&' w_variable @@ -16208,7 +16207,7 @@ state 472 state 473 - 261 new_expr: "new (T_NEW)" class_name_reference @44 ctor_arguments . + 261 new_expr: "new (T_NEW)" class_name_reference $@44 ctor_arguments . $default reduce using rule 261 (new_expr) @@ -16222,7 +16221,7 @@ state 474 state 475 - 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" @66 . object_property @67 dynamic_class_name_variable_properties + 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" $@66 . object_property $@67 dynamic_class_name_variable_properties "identifier (T_STRING)" shift, and go to state 465 "variable (T_VARIABLE)" shift, and go to state 35 @@ -16240,7 +16239,7 @@ state 475 state 476 - 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' @7 . inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' + 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' $@7 . inner_statement_list $@8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' $default reduce using rule 28 (inner_statement_list) @@ -16249,11 +16248,11 @@ state 476 state 477 - 38 unticked_statement: "if (T_IF)" parenthesis_expr @5 statement . @6 elseif_list else_single + 38 unticked_statement: "if (T_IF)" parenthesis_expr $@5 statement . $@6 elseif_list else_single - $default reduce using rule 37 (@6) + $default reduce using rule 37 ($@6) - @6 go to state 588 + $@6 go to state 588 state 478 @@ -16266,10 +16265,10 @@ state 478 state 479 242 echo_expr_list: echo_expr_list ',' expr . - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -16291,8 +16290,8 @@ state 479 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "or (T_LOGICAL_OR)" shift, and go to state 252 "xor (T_LOGICAL_XOR)" shift, and go to state 253 @@ -16326,16 +16325,16 @@ state 479 state 480 - 47 unticked_statement: "do (T_DO)" @11 statement "while (T_WHILE)" . @12 parenthesis_expr ';' + 47 unticked_statement: "do (T_DO)" $@11 statement "while (T_WHILE)" . $@12 parenthesis_expr ';' - $default reduce using rule 46 (@12) + $default reduce using rule 46 ($@12) - @12 go to state 589 + $@12 go to state 589 state 481 - 44 unticked_statement: "while (T_WHILE)" @9 parenthesis_expr @10 . while_statement + 44 unticked_statement: "while (T_WHILE)" $@9 parenthesis_expr @10 . while_statement "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -16445,38 +16444,38 @@ state 481 state 482 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' . @13 for_expr ';' @14 for_expr ')' @15 for_statement + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' . $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement - $default reduce using rule 48 (@13) + $default reduce using rule 48 ($@13) - @13 go to state 593 + $@13 go to state 593 state 483 - 247 non_empty_for_expr: non_empty_for_expr ',' . @41 expr + 247 non_empty_for_expr: non_empty_for_expr ',' . $@41 expr - $default reduce using rule 246 (@41) + $default reduce using rule 246 ($@41) - @41 go to state 594 + $@41 go to state 594 state 484 - 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" . @19 foreach_variable foreach_optional_arg ')' @20 foreach_statement + 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" . $@19 foreach_variable foreach_optional_arg ')' $@20 foreach_statement - $default reduce using rule 71 (@19) + $default reduce using rule 71 ($@19) - @19 go to state 595 + $@19 go to state 595 state 485 - 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" . @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement + 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" . $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement - $default reduce using rule 68 (@17) + $default reduce using rule 68 ($@17) - @17 go to state 596 + $@17 go to state 596 state 486 @@ -16488,7 +16487,7 @@ state 486 state 487 - 75 unticked_statement: "declare (T_DECLARE)" @21 '(' declare_list . ')' declare_statement + 75 unticked_statement: "declare (T_DECLARE)" $@21 '(' declare_list . ')' declare_statement 137 declare_list: declare_list . ',' "identifier (T_STRING)" '=' static_scalar ',' shift, and go to state 598 @@ -16521,7 +16520,7 @@ state 489 state 490 - 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr @16 switch_case_list . + 53 unticked_statement: "switch (T_SWITCH)" parenthesis_expr $@16 switch_case_list . $default reduce using rule 53 (unticked_statement) @@ -16727,14 +16726,14 @@ state 505 state 506 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 79 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list . '}' catch_statement @23 finally_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 79 unticked_statement: "try (T_TRY)" $@22 '{' inner_statement_list . '}' catch_statement $@23 finally_statement '}' shift, and go to state 614 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 507 @@ -16761,10 +16760,10 @@ state 509 state 510 188 global_var: '$' '{' expr . '}' - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -16786,8 +16785,8 @@ state 510 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "or (T_LOGICAL_OR)" shift, and go to state 252 "xor (T_LOGICAL_XOR)" shift, and go to state 253 @@ -16885,11 +16884,11 @@ state 516 state 517 - 538 isset_variables: isset_variables ',' . @76 isset_variable + 538 isset_variables: isset_variables ',' . $@76 isset_variable - $default reduce using rule 537 (@76) + $default reduce using rule 537 ($@76) - @76 go to state 621 + $@76 go to state 621 state 518 @@ -16922,7 +16921,7 @@ state 521 state 522 - 502 assignment_list_element: "list (T_LIST)" . '(' @74 assignment_list ')' + 502 assignment_list_element: "list (T_LIST)" . '(' $@74 assignment_list ')' '(' shift, and go to state 622 @@ -16936,7 +16935,7 @@ state 523 state 524 - 263 expr_without_variable: "list (T_LIST)" '(' @45 assignment_list . ')' '=' expr + 263 expr_without_variable: "list (T_LIST)" '(' $@45 assignment_list . ')' '=' expr 498 assignment_list: assignment_list . ',' assignment_list_element ',' shift, and go to state 623 @@ -16959,7 +16958,7 @@ state 526 state 527 - 520 encaps_var: "variable (T_VARIABLE)" '[' @75 . encaps_var_offset ']' + 520 encaps_var: "variable (T_VARIABLE)" '[' $@75 . encaps_var_offset ']' "identifier (T_STRING)" shift, and go to state 625 "variable (T_VARIABLE)" shift, and go to state 626 @@ -17086,19 +17085,19 @@ state 532 state 533 - 3 top_statement_list: top_statement_list . @1 top_statement - 15 top_statement: "namespace (T_NAMESPACE)" '{' @3 top_statement_list . '}' + 3 top_statement_list: top_statement_list . $@1 top_statement + 15 top_statement: "namespace (T_NAMESPACE)" '{' $@3 top_statement_list . '}' '}' shift, and go to state 631 - $default reduce using rule 2 (@1) + $default reduce using rule 2 ($@1) - @1 go to state 4 + $@1 go to state 4 state 534 - 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' @2 . top_statement_list '}' + 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' $@2 . top_statement_list '}' $default reduce using rule 4 (top_statement_list) @@ -17116,12 +17115,12 @@ state 536 320 expr_without_variable: '(' new_expr ')' @51 . instance_call - '[' reduce using rule 258 (@43) - "-> (T_OBJECT_OPERATOR)" reduce using rule 258 (@43) + '[' reduce using rule 258 ($@43) + "-> (T_OBJECT_OPERATOR)" reduce using rule 258 ($@43) $default reduce using rule 257 (instance_call) instance_call go to state 633 - @43 go to state 634 + $@43 go to state 634 state 537 @@ -17133,7 +17132,7 @@ state 537 state 538 - 27 inner_statement_list: inner_statement_list @4 inner_statement . + 27 inner_statement_list: inner_statement_list $@4 inner_statement . $default reduce using rule 27 (inner_statement_list) @@ -17233,7 +17232,7 @@ state 548 179 non_empty_function_call_parameter_list: variable . 264 expr_without_variable: variable . '=' expr 265 | variable . '=' '&' variable - 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments + 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments 269 | variable . "+= (T_PLUS_EQUAL)" expr 270 | variable . "-= (T_MINUS_EQUAL)" expr 271 | variable . "*= (T_MUL_EQUAL)" expr @@ -17336,7 +17335,7 @@ state 553 state 554 - 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @32 . implements_list '{' class_statement_list '}' + 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 . implements_list '{' class_statement_list '}' "implements (T_IMPLEMENTS)" shift, and go to state 643 @@ -17360,7 +17359,7 @@ state 555 state 556 - 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @33 interface_extends_list . '{' class_statement_list '}' + 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" $@33 interface_extends_list . '{' class_statement_list '}' '{' shift, and go to state 647 @@ -17381,7 +17380,7 @@ state 558 state 559 - 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @31 . '(' parameter_list ')' '{' inner_statement_list '}' + 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 . '(' parameter_list ')' '{' inner_statement_list '}' '(' shift, and go to state 648 @@ -17408,17 +17407,17 @@ state 560 state 561 - 474 array_function_dereference: function_call @72 '[' dim_offset . ']' + 474 array_function_dereference: function_call $@72 '[' dim_offset . ']' ']' shift, and go to state 655 state 562 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -17440,8 +17439,8 @@ state 562 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 495 variable_name: '{' expr . '}' "or (T_LOGICAL_OR)" shift, and go to state 252 @@ -17475,7 +17474,7 @@ state 562 state 563 - 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @62 . function_call_parameter_list + 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@62 . function_call_parameter_list '(' shift, and go to state 395 @@ -17505,11 +17504,11 @@ state 565 state 566 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 289 | expr "or (T_LOGICAL_OR)" @49 expr . - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 289 | expr "or (T_LOGICAL_OR)" $@49 expr . + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -17531,8 +17530,8 @@ state 566 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "xor (T_LOGICAL_XOR)" shift, and go to state 253 "and (T_LOGICAL_AND)" shift, and go to state 254 @@ -17565,11 +17564,11 @@ state 566 state 567 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr - 291 | expr "and (T_LOGICAL_AND)" @50 expr . + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr + 291 | expr "and (T_LOGICAL_AND)" $@50 expr . 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -17591,8 +17590,8 @@ state 567 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '?' shift, and go to state 255 "|| (T_BOOLEAN_OR)" shift, and go to state 256 @@ -17623,7 +17622,7 @@ state 567 state 568 - 325 expr_without_variable: expr '?' ':' @54 . expr + 325 expr_without_variable: expr '?' ':' $@54 . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -17709,10 +17708,10 @@ state 568 state 569 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -17734,9 +17733,9 @@ state 569 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 323 | expr '?' @52 expr . ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 323 | expr '?' $@52 expr . ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "or (T_LOGICAL_OR)" shift, and go to state 252 "xor (T_LOGICAL_XOR)" shift, and go to state 253 @@ -17769,11 +17768,11 @@ state 569 state 570 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 285 | expr "|| (T_BOOLEAN_OR)" @47 expr . - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 285 | expr "|| (T_BOOLEAN_OR)" $@47 expr . + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -17795,8 +17794,8 @@ state 570 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "&& (T_BOOLEAN_AND)" shift, and go to state 257 '|' shift, and go to state 258 @@ -17825,11 +17824,11 @@ state 570 state 571 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 287 | expr "&& (T_BOOLEAN_AND)" @48 expr . - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 287 | expr "&& (T_BOOLEAN_AND)" $@48 expr . + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -17851,8 +17850,8 @@ state 571 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '|' shift, and go to state 258 '^' shift, and go to state 259 @@ -17880,7 +17879,7 @@ state 571 state 572 - 267 expr_without_variable: variable '=' '&' "new (T_NEW)" . class_name_reference @46 ctor_arguments + 267 expr_without_variable: variable '=' '&' "new (T_NEW)" . class_name_reference $@46 ctor_arguments "identifier (T_STRING)" shift, and go to state 123 "variable (T_VARIABLE)" shift, and go to state 35 @@ -17910,7 +17909,7 @@ state 573 state 574 - 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @64 . function_call_parameter_list + 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@64 . function_call_parameter_list '(' shift, and go to state 395 @@ -17919,7 +17918,7 @@ state 574 state 575 - 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @63 . function_call_parameter_list + 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name $@63 . function_call_parameter_list '(' shift, and go to state 395 @@ -17935,20 +17934,20 @@ state 576 state 577 - 490 object_property: variable_without_objects . @73 + 490 object_property: variable_without_objects . $@73 - $default reduce using rule 489 (@73) + $default reduce using rule 489 ($@73) - @73 go to state 664 + $@73 go to state 664 state 578 - 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @68 object_property . @69 method_or_not variable_properties + 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 object_property . $@69 method_or_not variable_properties - $default reduce using rule 453 (@69) + $default reduce using rule 453 ($@69) - @69 go to state 665 + $@69 go to state 665 state 579 @@ -18088,30 +18087,30 @@ state 585 state 586 - 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" @66 object_property . @67 dynamic_class_name_variable_properties + 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" $@66 object_property . $@67 dynamic_class_name_variable_properties - $default reduce using rule 389 (@67) + $default reduce using rule 389 ($@67) - @67 go to state 670 + $@67 go to state 670 state 587 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' @7 inner_statement_list . @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' $@7 inner_statement_list . $@8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' - "elseif (T_ELSEIF)" reduce using rule 40 (@8) - "else (T_ELSE)" reduce using rule 40 (@8) - "endif (T_ENDIF)" reduce using rule 40 (@8) - $default reduce using rule 26 (@4) + "elseif (T_ELSEIF)" reduce using rule 40 ($@8) + "else (T_ELSE)" reduce using rule 40 ($@8) + "endif (T_ENDIF)" reduce using rule 40 ($@8) + $default reduce using rule 26 ($@4) - @4 go to state 390 - @8 go to state 671 + $@4 go to state 390 + $@8 go to state 671 state 588 - 38 unticked_statement: "if (T_IF)" parenthesis_expr @5 statement @6 . elseif_list else_single + 38 unticked_statement: "if (T_IF)" parenthesis_expr $@5 statement $@6 . elseif_list else_single $default reduce using rule 151 (elseif_list) @@ -18120,7 +18119,7 @@ state 588 state 589 - 47 unticked_statement: "do (T_DO)" @11 statement "while (T_WHILE)" @12 . parenthesis_expr ';' + 47 unticked_statement: "do (T_DO)" $@11 statement "while (T_WHILE)" $@12 . parenthesis_expr ';' '(' shift, and go to state 175 @@ -18145,14 +18144,14 @@ state 591 state 592 - 44 unticked_statement: "while (T_WHILE)" @9 parenthesis_expr @10 while_statement . + 44 unticked_statement: "while (T_WHILE)" $@9 parenthesis_expr @10 while_statement . $default reduce using rule 44 (unticked_statement) state 593 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 . for_expr ';' @14 for_expr ')' @15 for_statement + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 . for_expr ';' $@14 for_expr ')' $@15 for_statement "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -18242,7 +18241,7 @@ state 593 state 594 - 247 non_empty_for_expr: non_empty_for_expr ',' @41 . expr + 247 non_empty_for_expr: non_empty_for_expr ',' $@41 . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -18328,7 +18327,7 @@ state 594 state 595 - 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 . foreach_variable foreach_optional_arg ')' @20 foreach_statement + 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" $@19 . foreach_variable foreach_optional_arg ')' $@20 foreach_statement '&' shift, and go to state 677 "identifier (T_STRING)" shift, and go to state 123 @@ -18357,7 +18356,7 @@ state 595 state 596 - 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 . foreach_variable foreach_optional_arg ')' @18 foreach_statement + 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 . foreach_variable foreach_optional_arg ')' $@18 foreach_statement '&' shift, and go to state 677 "identifier (T_STRING)" shift, and go to state 123 @@ -18426,7 +18425,7 @@ state 598 state 599 - 75 unticked_statement: "declare (T_DECLARE)" @21 '(' declare_list ')' . declare_statement + 75 unticked_statement: "declare (T_DECLARE)" $@21 '(' declare_list ')' . declare_statement "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -18546,8 +18545,8 @@ state 600 state 601 140 switch_case_list: ':' case_list . "endswitch (T_ENDSWITCH)" ';' - 144 case_list: case_list . "case (T_CASE)" expr case_separator @35 inner_statement_list - 146 | case_list . "default (T_DEFAULT)" case_separator @36 inner_statement_list + 144 case_list: case_list . "case (T_CASE)" expr case_separator $@35 inner_statement_list + 146 | case_list . "default (T_DEFAULT)" case_separator $@36 inner_statement_list "endswitch (T_ENDSWITCH)" shift, and go to state 688 "case (T_CASE)" shift, and go to state 689 @@ -18566,8 +18565,8 @@ state 602 state 603 138 switch_case_list: '{' case_list . '}' - 144 case_list: case_list . "case (T_CASE)" expr case_separator @35 inner_statement_list - 146 | case_list . "default (T_DEFAULT)" case_separator @36 inner_statement_list + 144 case_list: case_list . "case (T_CASE)" expr case_separator $@35 inner_statement_list + 146 | case_list . "default (T_DEFAULT)" case_separator $@36 inner_statement_list "case (T_CASE)" shift, and go to state 689 "default (T_DEFAULT)" shift, and go to state 690 @@ -18695,7 +18694,7 @@ state 613 state 614 - 79 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' . catch_statement @23 finally_statement + 79 unticked_statement: "try (T_TRY)" $@22 '{' inner_statement_list '}' . catch_statement $@23 finally_statement "catch (T_CATCH)" shift, and go to state 701 @@ -18787,7 +18786,7 @@ state 620 state 621 - 538 isset_variables: isset_variables ',' @76 . isset_variable + 538 isset_variables: isset_variables ',' $@76 . isset_variable "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -18874,11 +18873,11 @@ state 621 state 622 - 502 assignment_list_element: "list (T_LIST)" '(' . @74 assignment_list ')' + 502 assignment_list_element: "list (T_LIST)" '(' . $@74 assignment_list ')' - $default reduce using rule 501 (@74) + $default reduce using rule 501 ($@74) - @74 go to state 706 + $@74 go to state 706 state 623 @@ -18913,7 +18912,7 @@ state 623 state 624 - 263 expr_without_variable: "list (T_LIST)" '(' @45 assignment_list ')' . '=' expr + 263 expr_without_variable: "list (T_LIST)" '(' $@45 assignment_list ')' . '=' expr '=' shift, and go to state 708 @@ -18941,17 +18940,17 @@ state 627 state 628 - 520 encaps_var: "variable (T_VARIABLE)" '[' @75 encaps_var_offset . ']' + 520 encaps_var: "variable (T_VARIABLE)" '[' $@75 encaps_var_offset . ']' ']' shift, and go to state 709 state 629 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -18973,8 +18972,8 @@ state 629 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 523 encaps_var: "${ (T_DOLLAR_OPEN_CURLY_BRACES)" "variable name (T_STRING_VARNAME)" '[' expr . ']' '}' "or (T_LOGICAL_OR)" shift, and go to state 252 @@ -19015,21 +19014,21 @@ state 630 state 631 - 15 top_statement: "namespace (T_NAMESPACE)" '{' @3 top_statement_list '}' . + 15 top_statement: "namespace (T_NAMESPACE)" '{' $@3 top_statement_list '}' . $default reduce using rule 15 (top_statement) state 632 - 3 top_statement_list: top_statement_list . @1 top_statement - 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' @2 top_statement_list . '}' + 3 top_statement_list: top_statement_list . $@1 top_statement + 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' $@2 top_statement_list . '}' '}' shift, and go to state 711 - $default reduce using rule 2 (@1) + $default reduce using rule 2 ($@1) - @1 go to state 4 + $@1 go to state 4 state 633 @@ -19041,7 +19040,7 @@ state 633 state 634 - 259 instance_call: @43 . chaining_instance_call + 259 instance_call: $@43 . chaining_instance_call '[' shift, and go to state 712 "-> (T_OBJECT_OPERATOR)" shift, and go to state 713 @@ -19210,7 +19209,7 @@ state 643 state 644 - 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @32 implements_list . '{' class_statement_list '}' + 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 implements_list . '{' class_statement_list '}' '{' shift, and go to state 724 @@ -19234,7 +19233,7 @@ state 646 state 647 - 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @33 interface_extends_list '{' . class_statement_list '}' + 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" $@33 interface_extends_list '{' . class_statement_list '}' $default reduce using rule 194 (class_statement_list) @@ -19243,7 +19242,7 @@ state 647 state 648 - 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @31 '(' . parameter_list ')' '{' inner_statement_list '}' + 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' . parameter_list ')' '{' inner_statement_list '}' "identifier (T_STRING)" shift, and go to state 123 "array (T_ARRAY)" shift, and go to state 649 @@ -19315,7 +19314,7 @@ state 654 state 655 - 474 array_function_dereference: function_call @72 '[' dim_offset ']' . + 474 array_function_dereference: function_call $@72 '[' dim_offset ']' . $default reduce using rule 474 (array_function_dereference) @@ -19329,7 +19328,7 @@ state 656 state 657 - 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @62 function_call_parameter_list . + 372 function_call: class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@62 function_call_parameter_list . $default reduce using rule 372 (function_call) @@ -19343,10 +19342,10 @@ state 658 state 659 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -19368,9 +19367,9 @@ state 659 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr - 325 | expr '?' ':' @54 expr . + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr + 325 | expr '?' ':' $@54 expr . "|| (T_BOOLEAN_OR)" shift, and go to state 256 "&& (T_BOOLEAN_AND)" shift, and go to state 257 @@ -19400,46 +19399,46 @@ state 659 state 660 - 323 expr_without_variable: expr '?' @52 expr ':' . @53 expr + 323 expr_without_variable: expr '?' $@52 expr ':' . $@53 expr - $default reduce using rule 322 (@53) + $default reduce using rule 322 ($@53) - @53 go to state 732 + $@53 go to state 732 state 661 - 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference . @46 ctor_arguments + 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference . $@46 ctor_arguments - $default reduce using rule 266 (@46) + $default reduce using rule 266 ($@46) - @46 go to state 733 + $@46 go to state 733 state 662 - 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects @64 function_call_parameter_list . + 376 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_without_objects $@64 function_call_parameter_list . $default reduce using rule 376 (function_call) state 663 - 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name @63 function_call_parameter_list . + 374 function_call: variable_class_name ":: (T_PAAMAYIM_NEKUDOTAYIM)" variable_name $@63 function_call_parameter_list . $default reduce using rule 374 (function_call) state 664 - 490 object_property: variable_without_objects @73 . + 490 object_property: variable_without_objects $@73 . $default reduce using rule 490 (object_property) state 665 - 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @68 object_property @69 . method_or_not variable_properties + 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 object_property $@69 . method_or_not variable_properties '(' reduce using rule 462 (@71) $default reduce using rule 466 (method_or_not) @@ -19654,10 +19653,10 @@ state 668 state 669 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -19679,8 +19678,8 @@ state 669 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 506 non_empty_array_pair_list: non_empty_array_pair_list ',' expr "=> (T_DOUBLE_ARROW)" expr . "or (T_LOGICAL_OR)" shift, and go to state 252 @@ -19715,7 +19714,7 @@ state 669 state 670 - 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" @66 object_property @67 . dynamic_class_name_variable_properties + 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" $@66 object_property $@67 . dynamic_class_name_variable_properties $default reduce using rule 393 (dynamic_class_name_variable_properties) @@ -19724,7 +19723,7 @@ state 670 state 671 - 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' @7 inner_statement_list @8 . new_elseif_list new_else_single "endif (T_ENDIF)" ';' + 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' $@7 inner_statement_list $@8 . new_elseif_list new_else_single "endif (T_ENDIF)" ';' $default reduce using rule 154 (new_elseif_list) @@ -19733,8 +19732,8 @@ state 671 state 672 - 38 unticked_statement: "if (T_IF)" parenthesis_expr @5 statement @6 elseif_list . else_single - 153 elseif_list: elseif_list . "elseif (T_ELSEIF)" parenthesis_expr @37 statement + 38 unticked_statement: "if (T_IF)" parenthesis_expr $@5 statement $@6 elseif_list . else_single + 153 elseif_list: elseif_list . "elseif (T_ELSEIF)" parenthesis_expr $@37 statement "elseif (T_ELSEIF)" shift, and go to state 743 "else (T_ELSE)" shift, and go to state 744 @@ -19748,37 +19747,37 @@ state 672 state 673 - 47 unticked_statement: "do (T_DO)" @11 statement "while (T_WHILE)" @12 parenthesis_expr . ';' + 47 unticked_statement: "do (T_DO)" $@11 statement "while (T_WHILE)" $@12 parenthesis_expr . ';' ';' shift, and go to state 746 state 674 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 150 while_statement: ':' inner_statement_list . "endwhile (T_ENDWHILE)" ';' "endwhile (T_ENDWHILE)" shift, and go to state 747 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 675 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr . ';' @14 for_expr ')' @15 for_statement + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr . ';' $@14 for_expr ')' $@15 for_statement ';' shift, and go to state 748 state 676 - 247 non_empty_for_expr: non_empty_for_expr ',' @41 expr . - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 247 non_empty_for_expr: non_empty_for_expr ',' $@41 expr . + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -19800,8 +19799,8 @@ state 676 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "or (T_LOGICAL_OR)" shift, and go to state 252 "xor (T_LOGICAL_XOR)" shift, and go to state 253 @@ -19861,14 +19860,14 @@ state 677 state 678 - 129 foreach_variable: "list (T_LIST)" . '(' @34 assignment_list ')' + 129 foreach_variable: "list (T_LIST)" . '(' $@34 assignment_list ')' '(' shift, and go to state 750 state 679 - 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 foreach_variable . foreach_optional_arg ')' @20 foreach_statement + 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" $@19 foreach_variable . foreach_optional_arg ')' $@20 foreach_statement "=> (T_DOUBLE_ARROW)" shift, and go to state 751 @@ -19886,7 +19885,7 @@ state 680 state 681 - 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 foreach_variable . foreach_optional_arg ')' @18 foreach_statement + 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 foreach_variable . foreach_optional_arg ')' $@18 foreach_statement "=> (T_DOUBLE_ARROW)" shift, and go to state 751 @@ -19927,7 +19926,7 @@ state 685 state 686 - 75 unticked_statement: "declare (T_DECLARE)" @21 '(' declare_list ')' declare_statement . + 75 unticked_statement: "declare (T_DECLARE)" $@21 '(' declare_list ')' declare_statement . $default reduce using rule 75 (unticked_statement) @@ -19935,8 +19934,8 @@ state 686 state 687 141 switch_case_list: ':' ';' case_list . "endswitch (T_ENDSWITCH)" ';' - 144 case_list: case_list . "case (T_CASE)" expr case_separator @35 inner_statement_list - 146 | case_list . "default (T_DEFAULT)" case_separator @36 inner_statement_list + 144 case_list: case_list . "case (T_CASE)" expr case_separator $@35 inner_statement_list + 146 | case_list . "default (T_DEFAULT)" case_separator $@36 inner_statement_list "endswitch (T_ENDSWITCH)" shift, and go to state 756 "case (T_CASE)" shift, and go to state 689 @@ -19952,7 +19951,7 @@ state 688 state 689 - 144 case_list: case_list "case (T_CASE)" . expr case_separator @35 inner_statement_list + 144 case_list: case_list "case (T_CASE)" . expr case_separator $@35 inner_statement_list "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -20038,7 +20037,7 @@ state 689 state 690 - 146 case_list: case_list "default (T_DEFAULT)" . case_separator @36 inner_statement_list + 146 case_list: case_list "default (T_DEFAULT)" . case_separator $@36 inner_statement_list ':' shift, and go to state 759 ';' shift, and go to state 760 @@ -20049,8 +20048,8 @@ state 690 state 691 139 switch_case_list: '{' ';' case_list . '}' - 144 case_list: case_list . "case (T_CASE)" expr case_separator @35 inner_statement_list - 146 | case_list . "default (T_DEFAULT)" case_separator @36 inner_statement_list + 144 case_list: case_list . "case (T_CASE)" expr case_separator $@35 inner_statement_list + 146 | case_list . "default (T_DEFAULT)" case_separator $@36 inner_statement_list "case (T_CASE)" shift, and go to state 689 "default (T_DEFAULT)" shift, and go to state 690 @@ -20183,18 +20182,18 @@ state 700 state 701 - 87 catch_statement: "catch (T_CATCH)" . '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' @27 additional_catches + 87 catch_statement: "catch (T_CATCH)" . '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 additional_catches '(' shift, and go to state 766 state 702 - 79 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' catch_statement . @23 finally_statement + 79 unticked_statement: "try (T_TRY)" $@22 '{' inner_statement_list '}' catch_statement . $@23 finally_statement - $default reduce using rule 78 (@23) + $default reduce using rule 78 ($@23) - @23 go to state 767 + $@23 go to state 767 state 703 @@ -20213,14 +20212,14 @@ state 704 state 705 - 538 isset_variables: isset_variables ',' @76 isset_variable . + 538 isset_variables: isset_variables ',' $@76 isset_variable . $default reduce using rule 538 (isset_variables) state 706 - 502 assignment_list_element: "list (T_LIST)" '(' @74 . assignment_list ')' + 502 assignment_list_element: "list (T_LIST)" '(' $@74 . assignment_list ')' "identifier (T_STRING)" shift, and go to state 123 "variable (T_VARIABLE)" shift, and go to state 35 @@ -20258,7 +20257,7 @@ state 707 state 708 - 263 expr_without_variable: "list (T_LIST)" '(' @45 assignment_list ')' '=' . expr + 263 expr_without_variable: "list (T_LIST)" '(' $@45 assignment_list ')' '=' . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -20344,7 +20343,7 @@ state 708 state 709 - 520 encaps_var: "variable (T_VARIABLE)" '[' @75 encaps_var_offset ']' . + 520 encaps_var: "variable (T_VARIABLE)" '[' $@75 encaps_var_offset ']' . $default reduce using rule 520 (encaps_var) @@ -20358,7 +20357,7 @@ state 710 state 711 - 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' @2 top_statement_list '}' . + 13 top_statement: "namespace (T_NAMESPACE)" namespace_name '{' $@2 top_statement_list '}' . $default reduce using rule 13 (top_statement) @@ -20454,7 +20453,7 @@ state 712 state 713 - 459 variable_property: "-> (T_OBJECT_OPERATOR)" . object_property @70 method_or_not + 459 variable_property: "-> (T_OBJECT_OPERATOR)" . object_property $@70 method_or_not "identifier (T_STRING)" shift, and go to state 465 "variable (T_VARIABLE)" shift, and go to state 35 @@ -20485,20 +20484,20 @@ state 714 state 715 251 chaining_dereference: chaining_dereference . '[' dim_offset ']' - 254 chaining_instance_call: chaining_dereference . @42 chaining_method_or_property + 254 chaining_instance_call: chaining_dereference . $@42 chaining_method_or_property 255 | chaining_dereference . '[' shift, and go to state 775 - "-> (T_OBJECT_OPERATOR)" reduce using rule 253 (@42) + "-> (T_OBJECT_OPERATOR)" reduce using rule 253 ($@42) $default reduce using rule 255 (chaining_instance_call) - @42 go to state 776 + $@42 go to state 776 state 716 - 259 instance_call: @43 chaining_instance_call . + 259 instance_call: $@43 chaining_instance_call . $default reduce using rule 259 (instance_call) @@ -20559,7 +20558,7 @@ state 721 182 non_empty_function_call_parameter_list: non_empty_function_call_parameter_list ',' variable . 264 expr_without_variable: variable . '=' expr 265 | variable . '=' '&' variable - 267 | variable . '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments + 267 | variable . '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments 269 | variable . "+= (T_PLUS_EQUAL)" expr 270 | variable . "-= (T_MINUS_EQUAL)" expr 271 | variable . "*= (T_MUL_EQUAL)" expr @@ -20616,7 +20615,7 @@ state 723 state 724 - 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @32 implements_list '{' . class_statement_list '}' + 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 implements_list '{' . class_statement_list '}' $default reduce using rule 194 (class_statement_list) @@ -20637,7 +20636,7 @@ state 725 state 726 - 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @33 interface_extends_list '{' class_statement_list . '}' + 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" $@33 interface_extends_list '{' class_statement_list . '}' 193 class_statement_list: class_statement_list . class_statement "const (T_CONST)" shift, and go to state 781 @@ -20664,7 +20663,7 @@ state 726 state 727 - 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @31 '(' parameter_list . ')' '{' inner_statement_list '}' + 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' parameter_list . ')' '{' inner_statement_list '}' ')' shift, and go to state 798 @@ -20720,7 +20719,7 @@ state 731 state 732 - 323 expr_without_variable: expr '?' @52 expr ':' @53 . expr + 323 expr_without_variable: expr '?' $@52 expr ':' $@53 . expr "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -20806,7 +20805,7 @@ state 732 state 733 - 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference @46 . ctor_arguments + 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference $@46 . ctor_arguments '(' shift, and go to state 395 @@ -20847,7 +20846,7 @@ state 736 state 737 - 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @68 object_property @69 method_or_not . variable_properties + 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 object_property $@69 method_or_not . variable_properties $default reduce using rule 457 (variable_properties) @@ -20863,10 +20862,10 @@ state 738 state 739 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -20888,8 +20887,8 @@ state 739 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr 492 object_dim_list: object_dim_list '{' expr . '}' "or (T_LOGICAL_OR)" shift, and go to state 252 @@ -20930,7 +20929,7 @@ state 740 state 741 - 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" @66 object_property @67 dynamic_class_name_variable_properties . + 390 dynamic_class_name_reference: base_variable "-> (T_OBJECT_OPERATOR)" $@66 object_property $@67 dynamic_class_name_variable_properties . 392 dynamic_class_name_variable_properties: dynamic_class_name_variable_properties . dynamic_class_name_variable_property "-> (T_OBJECT_OPERATOR)" shift, and go to state 812 @@ -20942,8 +20941,8 @@ state 741 state 742 - 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' @7 inner_statement_list @8 new_elseif_list . new_else_single "endif (T_ENDIF)" ';' - 156 new_elseif_list: new_elseif_list . "elseif (T_ELSEIF)" parenthesis_expr ':' @38 inner_statement_list + 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' $@7 inner_statement_list $@8 new_elseif_list . new_else_single "endif (T_ENDIF)" ';' + 156 new_elseif_list: new_elseif_list . "elseif (T_ELSEIF)" parenthesis_expr ':' $@38 inner_statement_list "elseif (T_ELSEIF)" shift, and go to state 814 "else (T_ELSE)" shift, and go to state 815 @@ -20955,7 +20954,7 @@ state 742 state 743 - 153 elseif_list: elseif_list "elseif (T_ELSEIF)" . parenthesis_expr @37 statement + 153 elseif_list: elseif_list "elseif (T_ELSEIF)" . parenthesis_expr $@37 statement '(' shift, and go to state 175 @@ -21072,14 +21071,14 @@ state 744 state 745 - 38 unticked_statement: "if (T_IF)" parenthesis_expr @5 statement @6 elseif_list else_single . + 38 unticked_statement: "if (T_IF)" parenthesis_expr $@5 statement $@6 elseif_list else_single . $default reduce using rule 38 (unticked_statement) state 746 - 47 unticked_statement: "do (T_DO)" @11 statement "while (T_WHILE)" @12 parenthesis_expr ';' . + 47 unticked_statement: "do (T_DO)" $@11 statement "while (T_WHILE)" $@12 parenthesis_expr ';' . $default reduce using rule 47 (unticked_statement) @@ -21093,11 +21092,11 @@ state 747 state 748 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' . @14 for_expr ')' @15 for_statement + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' . $@14 for_expr ')' $@15 for_statement - $default reduce using rule 49 (@14) + $default reduce using rule 49 ($@14) - @14 go to state 820 + $@14 go to state 820 state 749 @@ -21109,11 +21108,11 @@ state 749 state 750 - 129 foreach_variable: "list (T_LIST)" '(' . @34 assignment_list ')' + 129 foreach_variable: "list (T_LIST)" '(' . $@34 assignment_list ')' - $default reduce using rule 128 (@34) + $default reduce using rule 128 ($@34) - @34 go to state 821 + $@34 go to state 821 state 751 @@ -21147,14 +21146,14 @@ state 751 state 752 - 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 foreach_variable foreach_optional_arg . ')' @20 foreach_statement + 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" $@19 foreach_variable foreach_optional_arg . ')' $@20 foreach_statement ')' shift, and go to state 823 state 753 - 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg . ')' @18 foreach_statement + 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg . ')' $@18 foreach_statement ')' shift, and go to state 824 @@ -21194,14 +21193,14 @@ state 754 state 755 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 135 declare_statement: ':' inner_statement_list . "enddeclare (T_ENDDECLARE)" ';' "enddeclare (T_ENDDECLARE)" shift, and go to state 826 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 756 @@ -21220,11 +21219,11 @@ state 757 state 758 - 144 case_list: case_list "case (T_CASE)" expr . case_separator @35 inner_statement_list - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 144 case_list: case_list "case (T_CASE)" expr . case_separator $@35 inner_statement_list + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -21246,8 +21245,8 @@ state 758 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr "or (T_LOGICAL_OR)" shift, and go to state 252 "xor (T_LOGICAL_XOR)" shift, and go to state 253 @@ -21297,11 +21296,11 @@ state 760 state 761 - 146 case_list: case_list "default (T_DEFAULT)" case_separator . @36 inner_statement_list + 146 case_list: case_list "default (T_DEFAULT)" case_separator . $@36 inner_statement_list - $default reduce using rule 145 (@36) + $default reduce using rule 145 ($@36) - @36 go to state 829 + $@36 go to state 829 state 762 @@ -21337,16 +21336,16 @@ state 765 state 766 - 87 catch_statement: "catch (T_CATCH)" '(' . @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' @27 additional_catches + 87 catch_statement: "catch (T_CATCH)" '(' . $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 additional_catches - $default reduce using rule 83 (@24) + $default reduce using rule 83 ($@24) - @24 go to state 831 + $@24 go to state 831 state 767 - 79 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' catch_statement @23 . finally_statement + 79 unticked_statement: "try (T_TRY)" $@22 '{' inner_statement_list '}' catch_statement $@23 . finally_statement "finally (T_FINALLY)" shift, and go to state 832 @@ -21369,7 +21368,7 @@ state 768 state 769 498 assignment_list: assignment_list . ',' assignment_list_element - 502 assignment_list_element: "list (T_LIST)" '(' @74 assignment_list . ')' + 502 assignment_list_element: "list (T_LIST)" '(' $@74 assignment_list . ')' ',' shift, and go to state 623 ')' shift, and go to state 835 @@ -21377,11 +21376,11 @@ state 769 state 770 - 263 expr_without_variable: "list (T_LIST)" '(' @45 assignment_list ')' '=' expr . - 285 | expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 263 expr_without_variable: "list (T_LIST)" '(' $@45 assignment_list ')' '=' expr . + 285 | expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -21403,8 +21402,8 @@ state 770 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 325 | expr . '?' ':' $@54 expr '?' shift, and go to state 255 "|| (T_BOOLEAN_OR)" shift, and go to state 256 @@ -21449,11 +21448,11 @@ state 772 state 773 - 459 variable_property: "-> (T_OBJECT_OPERATOR)" object_property . @70 method_or_not + 459 variable_property: "-> (T_OBJECT_OPERATOR)" object_property . $@70 method_or_not - $default reduce using rule 458 (@70) + $default reduce using rule 458 ($@70) - @70 go to state 837 + $@70 go to state 837 state 774 @@ -21554,7 +21553,7 @@ state 775 state 776 - 254 chaining_instance_call: chaining_dereference @42 . chaining_method_or_property + 254 chaining_instance_call: chaining_dereference $@42 . chaining_method_or_property "-> (T_OBJECT_OPERATOR)" shift, and go to state 713 @@ -21578,7 +21577,7 @@ state 778 state 779 - 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @32 implements_list '{' class_statement_list . '}' + 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 implements_list '{' class_statement_list . '}' 193 class_statement_list: class_statement_list . class_statement "const (T_CONST)" shift, and go to state 781 @@ -21681,7 +21680,7 @@ state 789 state 790 - 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" @33 interface_extends_list '{' class_statement_list '}' . + 110 unticked_class_declaration_statement: interface_entry "identifier (T_STRING)" $@33 interface_extends_list '{' class_statement_list '}' . $default reduce using rule 110 (unticked_class_declaration_statement) @@ -21702,16 +21701,16 @@ state 792 state 793 - 196 class_statement: variable_modifiers . @39 class_variable_declaration ';' + 196 class_statement: variable_modifiers . $@39 class_variable_declaration ';' - $default reduce using rule 195 (@39) + $default reduce using rule 195 ($@39) - @39 go to state 844 + $@39 go to state 844 state 794 - 200 class_statement: method_modifiers . function is_reference "identifier (T_STRING)" @40 '(' parameter_list ')' method_body + 200 class_statement: method_modifiers . function is_reference "identifier (T_STRING)" $@40 '(' parameter_list ')' method_body "function (T_FUNCTION)" shift, and go to state 48 @@ -21755,7 +21754,7 @@ state 797 state 798 - 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @31 '(' parameter_list ')' . '{' inner_statement_list '}' + 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' parameter_list ')' . '{' inner_statement_list '}' '{' shift, and go to state 849 @@ -21830,10 +21829,10 @@ state 803 state 804 - 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" @47 expr - 287 | expr . "&& (T_BOOLEAN_AND)" @48 expr - 289 | expr . "or (T_LOGICAL_OR)" @49 expr - 291 | expr . "and (T_LOGICAL_AND)" @50 expr + 285 expr_without_variable: expr . "|| (T_BOOLEAN_OR)" $@47 expr + 287 | expr . "&& (T_BOOLEAN_AND)" $@48 expr + 289 | expr . "or (T_LOGICAL_OR)" $@49 expr + 291 | expr . "and (T_LOGICAL_AND)" $@50 expr 292 | expr . "xor (T_LOGICAL_XOR)" expr 293 | expr . '|' expr 294 | expr . '&' expr @@ -21855,9 +21854,9 @@ state 804 314 | expr . '>' expr 315 | expr . ">= (T_IS_GREATER_OR_EQUAL)" expr 316 | expr . "instanceof (T_INSTANCEOF)" class_name_reference - 323 | expr . '?' @52 expr ':' @53 expr - 323 | expr '?' @52 expr ':' @53 expr . - 325 | expr . '?' ':' @54 expr + 323 | expr . '?' $@52 expr ':' $@53 expr + 323 | expr '?' $@52 expr ':' $@53 expr . + 325 | expr . '?' ':' $@54 expr "|| (T_BOOLEAN_OR)" shift, and go to state 256 "&& (T_BOOLEAN_AND)" shift, and go to state 257 @@ -21887,7 +21886,7 @@ state 804 state 805 - 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference @46 ctor_arguments . + 267 expr_without_variable: variable '=' '&' "new (T_NEW)" class_name_reference $@46 ctor_arguments . $default reduce using rule 267 (expr_without_variable) @@ -22079,7 +22078,7 @@ state 808 state 809 - 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" @68 object_property @69 method_or_not variable_properties . + 454 variable: base_variable_with_function_calls "-> (T_OBJECT_OPERATOR)" $@68 object_property $@69 method_or_not variable_properties . 456 variable_properties: variable_properties . variable_property "-> (T_OBJECT_OPERATOR)" shift, and go to state 713 @@ -22130,7 +22129,7 @@ state 813 state 814 - 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" . parenthesis_expr ':' @38 inner_statement_list + 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" . parenthesis_expr ':' $@38 inner_statement_list '(' shift, and go to state 175 @@ -22146,18 +22145,18 @@ state 815 state 816 - 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' @7 inner_statement_list @8 new_elseif_list new_else_single . "endif (T_ENDIF)" ';' + 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single . "endif (T_ENDIF)" ';' "endif (T_ENDIF)" shift, and go to state 862 state 817 - 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr . @37 statement + 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr . $@37 statement - $default reduce using rule 152 (@37) + $default reduce using rule 152 ($@37) - @37 go to state 863 + $@37 go to state 863 state 818 @@ -22176,7 +22175,7 @@ state 819 state 820 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 . for_expr ')' @15 for_statement + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 . for_expr ')' $@15 for_statement "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -22266,7 +22265,7 @@ state 820 state 821 - 129 foreach_variable: "list (T_LIST)" '(' @34 . assignment_list ')' + 129 foreach_variable: "list (T_LIST)" '(' $@34 . assignment_list ')' "identifier (T_STRING)" shift, and go to state 123 "variable (T_VARIABLE)" shift, and go to state 35 @@ -22304,20 +22303,20 @@ state 822 state 823 - 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 foreach_variable foreach_optional_arg ')' . @20 foreach_statement + 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" $@19 foreach_variable foreach_optional_arg ')' . $@20 foreach_statement - $default reduce using rule 72 (@20) + $default reduce using rule 72 ($@20) - @20 go to state 866 + $@20 go to state 866 state 824 - 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' . @18 foreach_statement + 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg ')' . $@18 foreach_statement - $default reduce using rule 69 (@18) + $default reduce using rule 69 ($@18) - @18 go to state 867 + $@18 go to state 867 state 825 @@ -22343,16 +22342,16 @@ state 827 state 828 - 144 case_list: case_list "case (T_CASE)" expr case_separator . @35 inner_statement_list + 144 case_list: case_list "case (T_CASE)" expr case_separator . $@35 inner_statement_list - $default reduce using rule 143 (@35) + $default reduce using rule 143 ($@35) - @35 go to state 869 + $@35 go to state 869 state 829 - 146 case_list: case_list "default (T_DEFAULT)" case_separator @36 . inner_statement_list + 146 case_list: case_list "default (T_DEFAULT)" case_separator $@36 . inner_statement_list $default reduce using rule 28 (inner_statement_list) @@ -22394,7 +22393,7 @@ state 830 state 831 - 87 catch_statement: "catch (T_CATCH)" '(' @24 . fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' @27 additional_catches + 87 catch_statement: "catch (T_CATCH)" '(' $@24 . fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 additional_catches "identifier (T_STRING)" shift, and go to state 123 "namespace (T_NAMESPACE)" shift, and go to state 550 @@ -22406,16 +22405,16 @@ state 831 state 832 - 90 finally_statement: "finally (T_FINALLY)" . @28 '{' inner_statement_list '}' + 90 finally_statement: "finally (T_FINALLY)" . $@28 '{' inner_statement_list '}' - $default reduce using rule 89 (@28) + $default reduce using rule 89 ($@28) - @28 go to state 873 + $@28 go to state 873 state 833 - 79 unticked_statement: "try (T_TRY)" @22 '{' inner_statement_list '}' catch_statement @23 finally_statement . + 79 unticked_statement: "try (T_TRY)" $@22 '{' inner_statement_list '}' catch_statement $@23 finally_statement . $default reduce using rule 79 (unticked_statement) @@ -22429,7 +22428,7 @@ state 834 state 835 - 502 assignment_list_element: "list (T_LIST)" '(' @74 assignment_list ')' . + 502 assignment_list_element: "list (T_LIST)" '(' $@74 assignment_list ')' . $default reduce using rule 502 (assignment_list_element) @@ -22443,7 +22442,7 @@ state 836 state 837 - 459 variable_property: "-> (T_OBJECT_OPERATOR)" object_property @70 . method_or_not + 459 variable_property: "-> (T_OBJECT_OPERATOR)" object_property $@70 . method_or_not '(' reduce using rule 462 (@71) $default reduce using rule 466 (method_or_not) @@ -22464,7 +22463,7 @@ state 838 state 839 249 chaining_method_or_property: chaining_method_or_property . variable_property - 254 chaining_instance_call: chaining_dereference @42 chaining_method_or_property . + 254 chaining_instance_call: chaining_dereference $@42 chaining_method_or_property . "-> (T_OBJECT_OPERATOR)" shift, and go to state 713 @@ -22475,7 +22474,7 @@ state 839 state 840 - 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from @32 implements_list '{' class_statement_list '}' . + 108 unticked_class_declaration_statement: class_entry_type "identifier (T_STRING)" extends_from $@32 implements_list '{' class_statement_list '}' . $default reduce using rule 108 (unticked_class_declaration_statement) @@ -22508,7 +22507,7 @@ state 843 state 844 - 196 class_statement: variable_modifiers @39 . class_variable_declaration ';' + 196 class_statement: variable_modifiers $@39 . class_variable_declaration ';' "variable (T_VARIABLE)" shift, and go to state 882 @@ -22517,7 +22516,7 @@ state 844 state 845 - 200 class_statement: method_modifiers function . is_reference "identifier (T_STRING)" @40 '(' parameter_list ')' method_body + 200 class_statement: method_modifiers function . is_reference "identifier (T_STRING)" $@40 '(' parameter_list ')' method_body '&' shift, and go to state 248 @@ -22549,7 +22548,7 @@ state 848 state 849 - 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @31 '(' parameter_list ')' '{' . inner_statement_list '}' + 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' parameter_list ')' '{' . inner_statement_list '}' $default reduce using rule 28 (inner_statement_list) @@ -22663,7 +22662,7 @@ state 859 state 860 - 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr . ':' @38 inner_statement_list + 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr . ':' $@38 inner_statement_list ':' shift, and go to state 896 @@ -22679,14 +22678,14 @@ state 861 state 862 - 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" . ';' + 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single "endif (T_ENDIF)" . ';' ';' shift, and go to state 898 state 863 - 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr @37 . statement + 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr $@37 . statement "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -22794,14 +22793,14 @@ state 863 state 864 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 for_expr . ')' @15 for_statement + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 for_expr . ')' $@15 for_statement ')' shift, and go to state 900 state 865 - 129 foreach_variable: "list (T_LIST)" '(' @34 assignment_list . ')' + 129 foreach_variable: "list (T_LIST)" '(' $@34 assignment_list . ')' 498 assignment_list: assignment_list . ',' assignment_list_element ',' shift, and go to state 623 @@ -22810,7 +22809,7 @@ state 865 state 866 - 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 foreach_variable foreach_optional_arg ')' @20 . foreach_statement + 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" $@19 foreach_variable foreach_optional_arg ')' $@20 . foreach_statement "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -22920,7 +22919,7 @@ state 866 state 867 - 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 . foreach_statement + 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg ')' $@18 . foreach_statement "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -23037,7 +23036,7 @@ state 868 state 869 - 144 case_list: case_list "case (T_CASE)" expr case_separator @35 . inner_statement_list + 144 case_list: case_list "case (T_CASE)" expr case_separator $@35 . inner_statement_list $default reduce using rule 28 (inner_statement_list) @@ -23046,16 +23045,16 @@ state 869 state 870 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 146 case_list: case_list "default (T_DEFAULT)" case_separator @36 inner_statement_list . + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 146 case_list: case_list "default (T_DEFAULT)" case_separator $@36 inner_statement_list . "endswitch (T_ENDSWITCH)" reduce using rule 146 (case_list) "case (T_CASE)" reduce using rule 146 (case_list) "default (T_DEFAULT)" reduce using rule 146 (case_list) '}' reduce using rule 146 (case_list) - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 871 @@ -23067,16 +23066,16 @@ state 871 state 872 - 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name . @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' @27 additional_catches + 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name . $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 additional_catches - $default reduce using rule 84 (@25) + $default reduce using rule 84 ($@25) - @25 go to state 907 + $@25 go to state 907 state 873 - 90 finally_statement: "finally (T_FINALLY)" @28 . '{' inner_statement_list '}' + 90 finally_statement: "finally (T_FINALLY)" $@28 . '{' inner_statement_list '}' '{' shift, and go to state 908 @@ -23092,7 +23091,7 @@ state 874 state 875 - 459 variable_property: "-> (T_OBJECT_OPERATOR)" object_property @70 method_or_not . + 459 variable_property: "-> (T_OBJECT_OPERATOR)" object_property $@70 method_or_not . $default reduce using rule 459 (variable_property) @@ -23196,7 +23195,7 @@ state 882 state 883 - 196 class_statement: variable_modifiers @39 class_variable_declaration . ';' + 196 class_statement: variable_modifiers $@39 class_variable_declaration . ';' 236 class_variable_declaration: class_variable_declaration . ',' "variable (T_VARIABLE)" 237 | class_variable_declaration . ',' "variable (T_VARIABLE)" '=' static_scalar @@ -23206,7 +23205,7 @@ state 883 state 884 - 200 class_statement: method_modifiers function is_reference . "identifier (T_STRING)" @40 '(' parameter_list ')' method_body + 200 class_statement: method_modifiers function is_reference . "identifier (T_STRING)" $@40 '(' parameter_list ')' method_body "identifier (T_STRING)" shift, and go to state 924 @@ -23220,14 +23219,14 @@ state 885 state 886 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @31 '(' parameter_list ')' '{' inner_statement_list . '}' + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' parameter_list ')' '{' inner_statement_list . '}' '}' shift, and go to state 926 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 887 @@ -23256,14 +23255,14 @@ state 889 state 890 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 344 expr_without_variable: function is_reference @56 '(' parameter_list ')' lexical_vars '{' inner_statement_list . '}' '}' shift, and go to state 930 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 891 @@ -23332,50 +23331,50 @@ state 895 state 896 - 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' . @38 inner_statement_list + 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' . $@38 inner_statement_list - $default reduce using rule 155 (@38) + $default reduce using rule 155 ($@38) - @38 go to state 933 + $@38 go to state 933 state 897 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 160 new_else_single: "else (T_ELSE)" ':' inner_statement_list . "endif (T_ENDIF)" reduce using rule 160 (new_else_single) - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 898 - 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' @7 inner_statement_list @8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' . + 41 unticked_statement: "if (T_IF)" parenthesis_expr ':' $@7 inner_statement_list $@8 new_elseif_list new_else_single "endif (T_ENDIF)" ';' . $default reduce using rule 41 (unticked_statement) state 899 - 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr @37 statement . + 153 elseif_list: elseif_list "elseif (T_ELSEIF)" parenthesis_expr $@37 statement . $default reduce using rule 153 (elseif_list) state 900 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' . @15 for_statement + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' . $@15 for_statement - $default reduce using rule 50 (@15) + $default reduce using rule 50 ($@15) - @15 go to state 934 + $@15 go to state 934 state 901 - 129 foreach_variable: "list (T_LIST)" '(' @34 assignment_list ')' . + 129 foreach_variable: "list (T_LIST)" '(' $@34 assignment_list ')' . $default reduce using rule 129 (foreach_variable) @@ -23398,42 +23397,42 @@ state 903 state 904 - 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" @19 foreach_variable foreach_optional_arg ')' @20 foreach_statement . + 73 unticked_statement: "foreach (T_FOREACH)" '(' expr_without_variable "as (T_AS)" $@19 foreach_variable foreach_optional_arg ')' $@20 foreach_statement . $default reduce using rule 73 (unticked_statement) state 905 - 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" @17 foreach_variable foreach_optional_arg ')' @18 foreach_statement . + 70 unticked_statement: "foreach (T_FOREACH)" '(' variable "as (T_AS)" $@17 foreach_variable foreach_optional_arg ')' $@18 foreach_statement . $default reduce using rule 70 (unticked_statement) state 906 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 144 case_list: case_list "case (T_CASE)" expr case_separator @35 inner_statement_list . + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 144 case_list: case_list "case (T_CASE)" expr case_separator $@35 inner_statement_list . "endswitch (T_ENDSWITCH)" reduce using rule 144 (case_list) "case (T_CASE)" reduce using rule 144 (case_list) "default (T_DEFAULT)" reduce using rule 144 (case_list) '}' reduce using rule 144 (case_list) - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 907 - 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 . "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' @27 additional_catches + 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 . "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 additional_catches "variable (T_VARIABLE)" shift, and go to state 936 state 908 - 90 finally_statement: "finally (T_FINALLY)" @28 '{' . inner_statement_list '}' + 90 finally_statement: "finally (T_FINALLY)" $@28 '{' . inner_statement_list '}' $default reduce using rule 28 (inner_statement_list) @@ -23442,14 +23441,14 @@ state 908 state 909 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 346 expr_without_variable: "static (T_STATIC)" function is_reference @57 '(' parameter_list ')' lexical_vars '{' inner_statement_list . '}' '}' shift, and go to state 938 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 910 @@ -23591,18 +23590,18 @@ state 922 state 923 - 196 class_statement: variable_modifiers @39 class_variable_declaration ';' . + 196 class_statement: variable_modifiers $@39 class_variable_declaration ';' . $default reduce using rule 196 (class_statement) state 924 - 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" . @40 '(' parameter_list ')' method_body + 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" . $@40 '(' parameter_list ')' method_body - $default reduce using rule 199 (@40) + $default reduce using rule 199 ($@40) - @40 go to state 948 + $@40 go to state 948 state 925 @@ -23640,7 +23639,7 @@ state 925 state 926 - 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" @31 '(' parameter_list ')' '{' inner_statement_list '}' . + 106 unticked_function_declaration_statement: function is_reference "identifier (T_STRING)" $@31 '(' parameter_list ')' '{' inner_statement_list '}' . $default reduce using rule 106 (unticked_function_declaration_statement) @@ -23717,7 +23716,7 @@ state 932 state 933 - 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' @38 . inner_statement_list + 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' $@38 . inner_statement_list $default reduce using rule 28 (inner_statement_list) @@ -23726,7 +23725,7 @@ state 933 state 934 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 . for_statement + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 . for_statement "require_once (T_REQUIRE_ONCE)" shift, and go to state 5 "require (T_REQUIRE)" shift, and go to state 6 @@ -23836,33 +23835,33 @@ state 934 state 935 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 133 foreach_statement: ':' inner_statement_list . "endforeach (T_ENDFOREACH)" ';' "endforeach (T_ENDFOREACH)" shift, and go to state 957 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 936 - 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" . ')' @26 '{' inner_statement_list '}' @27 additional_catches + 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" . ')' $@26 '{' inner_statement_list '}' $@27 additional_catches ')' shift, and go to state 958 state 937 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 90 finally_statement: "finally (T_FINALLY)" @28 '{' inner_statement_list . '}' + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 90 finally_statement: "finally (T_FINALLY)" $@28 '{' inner_statement_list . '}' '}' shift, and go to state 959 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 938 @@ -23957,7 +23956,7 @@ state 947 state 948 - 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @40 . '(' parameter_list ')' method_body + 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 . '(' parameter_list ')' method_body '(' shift, and go to state 966 @@ -23992,15 +23991,15 @@ state 952 state 953 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' @38 inner_statement_list . + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 156 new_elseif_list: new_elseif_list "elseif (T_ELSEIF)" parenthesis_expr ':' $@38 inner_statement_list . "elseif (T_ELSEIF)" reduce using rule 156 (new_elseif_list) "else (T_ELSE)" reduce using rule 156 (new_elseif_list) "endif (T_ENDIF)" reduce using rule 156 (new_elseif_list) - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 954 @@ -24021,7 +24020,7 @@ state 955 state 956 - 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' @13 for_expr ';' @14 for_expr ')' @15 for_statement . + 51 unticked_statement: "for (T_FOR)" '(' for_expr ';' $@13 for_expr ';' $@14 for_expr ')' $@15 for_statement . $default reduce using rule 51 (unticked_statement) @@ -24035,16 +24034,16 @@ state 957 state 958 - 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' . @26 '{' inner_statement_list '}' @27 additional_catches + 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' . $@26 '{' inner_statement_list '}' $@27 additional_catches - $default reduce using rule 85 (@26) + $default reduce using rule 85 ($@26) - @26 go to state 970 + $@26 go to state 970 state 959 - 90 finally_statement: "finally (T_FINALLY)" @28 '{' inner_statement_list '}' . + 90 finally_statement: "finally (T_FINALLY)" $@28 '{' inner_statement_list '}' . $default reduce using rule 90 (finally_statement) @@ -24124,7 +24123,7 @@ state 965 state 966 - 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @40 '(' . parameter_list ')' method_body + 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 '(' . parameter_list ')' method_body "identifier (T_STRING)" shift, and go to state 123 "array (T_ARRAY)" shift, and go to state 649 @@ -24151,14 +24150,14 @@ state 967 state 968 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 131 for_statement: ':' inner_statement_list . "endfor (T_ENDFOR)" ';' "endfor (T_ENDFOR)" shift, and go to state 975 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 969 @@ -24170,7 +24169,7 @@ state 969 state 970 - 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 . '{' inner_statement_list '}' @27 additional_catches + 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 . '{' inner_statement_list '}' $@27 additional_catches '{' shift, and go to state 976 @@ -24203,7 +24202,7 @@ state 973 state 974 - 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @40 '(' parameter_list . ')' method_body + 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 '(' parameter_list . ')' method_body ')' shift, and go to state 978 @@ -24217,7 +24216,7 @@ state 975 state 976 - 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' . inner_statement_list '}' @27 additional_catches + 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' . inner_statement_list '}' $@27 additional_catches $default reduce using rule 28 (inner_statement_list) @@ -24233,7 +24232,7 @@ state 977 state 978 - 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @40 '(' parameter_list ')' . method_body + 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 '(' parameter_list ')' . method_body ';' shift, and go to state 981 '{' shift, and go to state 982 @@ -24250,14 +24249,14 @@ state 979 state 980 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list . '}' @27 additional_catches + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list . '}' $@27 additional_catches '}' shift, and go to state 984 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 981 @@ -24278,35 +24277,35 @@ state 982 state 983 - 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" @40 '(' parameter_list ')' method_body . + 200 class_statement: method_modifiers function is_reference "identifier (T_STRING)" $@40 '(' parameter_list ')' method_body . $default reduce using rule 200 (class_statement) state 984 - 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' . @27 additional_catches + 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' . $@27 additional_catches - $default reduce using rule 86 (@27) + $default reduce using rule 86 ($@27) - @27 go to state 986 + $@27 go to state 986 state 985 - 27 inner_statement_list: inner_statement_list . @4 inner_statement + 27 inner_statement_list: inner_statement_list . $@4 inner_statement 223 method_body: '{' inner_statement_list . '}' '}' shift, and go to state 987 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 986 - 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' @27 . additional_catches + 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 . additional_catches "catch (T_CATCH)" shift, and go to state 988 @@ -24326,14 +24325,14 @@ state 987 state 988 - 97 additional_catch: "catch (T_CATCH)" . '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' @30 '{' inner_statement_list '}' + 97 additional_catch: "catch (T_CATCH)" . '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list '}' '(' shift, and go to state 992 state 989 - 87 catch_statement: "catch (T_CATCH)" '(' @24 fully_qualified_class_name @25 "variable (T_VARIABLE)" ')' @26 '{' inner_statement_list '}' @27 additional_catches . + 87 catch_statement: "catch (T_CATCH)" '(' $@24 fully_qualified_class_name $@25 "variable (T_VARIABLE)" ')' $@26 '{' inner_statement_list '}' $@27 additional_catches . $default reduce using rule 87 (catch_statement) @@ -24359,7 +24358,7 @@ state 991 state 992 - 97 additional_catch: "catch (T_CATCH)" '(' . fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' @30 '{' inner_statement_list '}' + 97 additional_catch: "catch (T_CATCH)" '(' . fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list '}' "identifier (T_STRING)" shift, and go to state 123 "namespace (T_NAMESPACE)" shift, and go to state 550 @@ -24378,7 +24377,7 @@ state 993 state 994 - 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name . @29 "variable (T_VARIABLE)" ')' @30 '{' inner_statement_list '}' + 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name . @29 "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list '}' $default reduce using rule 95 (@29) @@ -24387,37 +24386,37 @@ state 994 state 995 - 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 . "variable (T_VARIABLE)" ')' @30 '{' inner_statement_list '}' + 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 . "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list '}' "variable (T_VARIABLE)" shift, and go to state 996 state 996 - 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" . ')' @30 '{' inner_statement_list '}' + 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" . ')' $@30 '{' inner_statement_list '}' ')' shift, and go to state 997 state 997 - 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' . @30 '{' inner_statement_list '}' + 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' . $@30 '{' inner_statement_list '}' - $default reduce using rule 96 (@30) + $default reduce using rule 96 ($@30) - @30 go to state 998 + $@30 go to state 998 state 998 - 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' @30 . '{' inner_statement_list '}' + 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 . '{' inner_statement_list '}' '{' shift, and go to state 999 state 999 - 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' @30 '{' . inner_statement_list '}' + 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 '{' . inner_statement_list '}' $default reduce using rule 28 (inner_statement_list) @@ -24426,18 +24425,18 @@ state 999 state 1000 - 27 inner_statement_list: inner_statement_list . @4 inner_statement - 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' @30 '{' inner_statement_list . '}' + 27 inner_statement_list: inner_statement_list . $@4 inner_statement + 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list . '}' '}' shift, and go to state 1001 - $default reduce using rule 26 (@4) + $default reduce using rule 26 ($@4) - @4 go to state 390 + $@4 go to state 390 state 1001 - 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' @30 '{' inner_statement_list '}' . + 97 additional_catch: "catch (T_CATCH)" '(' fully_qualified_class_name @29 "variable (T_VARIABLE)" ')' $@30 '{' inner_statement_list '}' . $default reduce using rule 97 (additional_catch) diff --git a/Zend/zend_multiply.h b/Zend/zend_multiply.h index c3c9657f3..e52956f41 100644 --- a/Zend/zend_multiply.h +++ b/Zend/zend_multiply.h @@ -13,7 +13,7 @@ | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Sascha Schumann <sascha@schumann.cx> | - | Ard Biesheuvel <ard@ard.nu> | + | Ard Biesheuvel <ard.biesheuvel@linaro.org> | +----------------------------------------------------------------------+ */ @@ -43,6 +43,31 @@ else (lval) = __tmpvar; \ } while (0) +#elif defined(__arm__) && defined(__GNUC__) + +#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \ + long __tmpvar; \ + __asm__("smull %0, %1, %2, %3\n" \ + "sub %1, %1, %0, asr #31" \ + : "=r"(__tmpvar), "=r"(usedval) \ + : "r"(a), "r"(b)); \ + if (usedval) (dval) = (double) (a) * (double) (b); \ + else (lval) = __tmpvar; \ +} while (0) + +#elif defined(__aarch64__) && defined(__GNUC__) + +#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \ + long __tmpvar; \ + __asm__("mul %0, %2, %3\n" \ + "smulh %1, %2, %3\n" \ + "sub %1, %1, %0, asr #63\n" \ + : "=X"(__tmpvar), "=X"(usedval) \ + : "X"(a), "X"(b)); \ + if (usedval) (dval) = (double) (a) * (double) (b); \ + else (lval) = __tmpvar; \ +} while (0) + #elif SIZEOF_LONG == 4 && defined(HAVE_ZEND_LONG64) #define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \ @@ -58,15 +83,15 @@ #else -#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \ - long __lres = (a) * (b); \ - long double __dres = (long double)(a) * (long double)(b); \ - long double __delta = (long double) __lres - __dres; \ - if ( ((usedval) = (( __dres + __delta ) != __dres))) { \ - (dval) = __dres; \ - } else { \ - (lval) = __lres; \ - } \ +#define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \ + long __lres = (a) * (b); \ + long double __dres = (long double)(a) * (long double)(b); \ + long double __delta = (long double) __lres - __dres; \ + if ( ((usedval) = (( __dres + __delta ) != __dres))) { \ + (dval) = __dres; \ + } else { \ + (lval) = __lres; \ + } \ } while (0) #endif diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h index 20a5277d5..93c60e490 100644 --- a/Zend/zend_operators.h +++ b/Zend/zend_operators.h @@ -79,7 +79,8 @@ static zend_always_inline long zend_dval_to_lval(double d) #else static zend_always_inline long zend_dval_to_lval(double d) { - if (d > LONG_MAX) { + /* >= as (double)LONG_MAX is outside signed range */ + if (d >= LONG_MAX) { return (long)(unsigned long) d; } return (long) d; @@ -476,6 +477,10 @@ ZEND_API void zend_update_current_locale(void); #define zend_update_current_locale() #endif +/* The offset in bytes between the value and type fields of a zval */ +#define ZVAL_OFFSETOF_TYPE \ + (__builtin_offsetof(zval,type) - __builtin_offsetof(zval,value)) + static zend_always_inline int fast_increment_function(zval *op1) { if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) { @@ -485,20 +490,26 @@ static zend_always_inline int fast_increment_function(zval *op1) "jno 0f\n\t" "movl $0x0, (%0)\n\t" "movl $0x41e00000, 0x4(%0)\n\t" - "movb $0x2,0xc(%0)\n" + "movb %1, %c2(%0)\n" "0:" : - : "r"(op1)); + : "r"(&op1->value), + "n"(IS_DOUBLE), + "n"(ZVAL_OFFSETOF_TYPE) + : "cc"); #elif defined(__GNUC__) && defined(__x86_64__) __asm__( "incq (%0)\n\t" "jno 0f\n\t" "movl $0x0, (%0)\n\t" "movl $0x43e00000, 0x4(%0)\n\t" - "movb $0x2,0x14(%0)\n" + "movb %1, %c2(%0)\n" "0:" : - : "r"(op1)); + : "r"(&op1->value), + "n"(IS_DOUBLE), + "n"(ZVAL_OFFSETOF_TYPE) + : "cc"); #else if (UNEXPECTED(Z_LVAL_P(op1) == LONG_MAX)) { /* switch to double */ @@ -522,20 +533,26 @@ static zend_always_inline int fast_decrement_function(zval *op1) "jno 0f\n\t" "movl $0x00200000, (%0)\n\t" "movl $0xc1e00000, 0x4(%0)\n\t" - "movb $0x2,0xc(%0)\n" + "movb %1,%c2(%0)\n" "0:" : - : "r"(op1)); + : "r"(&op1->value), + "n"(IS_DOUBLE), + "n"(ZVAL_OFFSETOF_TYPE) + : "cc"); #elif defined(__GNUC__) && defined(__x86_64__) __asm__( "decq (%0)\n\t" "jno 0f\n\t" "movl $0x00000000, (%0)\n\t" "movl $0xc3e00000, 0x4(%0)\n\t" - "movb $0x2,0x14(%0)\n" + "movb %1,%c2(%0)\n" "0:" : - : "r"(op1)); + : "r"(&op1->value), + "n"(IS_DOUBLE), + "n"(ZVAL_OFFSETOF_TYPE) + : "cc"); #else if (UNEXPECTED(Z_LVAL_P(op1) == LONG_MIN)) { /* switch to double */ @@ -560,40 +577,46 @@ static zend_always_inline int fast_add_function(zval *result, zval *op1, zval *o "addl (%2), %%eax\n\t" "jo 0f\n\t" "movl %%eax, (%0)\n\t" - "movb $0x1,0xc(%0)\n\t" + "movb %3, %c5(%0)\n\t" "jmp 1f\n" "0:\n\t" "fildl (%1)\n\t" "fildl (%2)\n\t" "faddp %%st, %%st(1)\n\t" - "movb $0x2,0xc(%0)\n\t" + "movb %4, %c5(%0)\n\t" "fstpl (%0)\n" "1:" : - : "r"(result), - "r"(op1), - "r"(op2) - : "eax"); + : "r"(&result->value), + "r"(&op1->value), + "r"(&op2->value), + "n"(IS_LONG), + "n"(IS_DOUBLE), + "n"(ZVAL_OFFSETOF_TYPE) + : "eax","cc"); #elif defined(__GNUC__) && defined(__x86_64__) __asm__( "movq (%1), %%rax\n\t" "addq (%2), %%rax\n\t" "jo 0f\n\t" "movq %%rax, (%0)\n\t" - "movb $0x1,0x14(%0)\n\t" + "movb %3, %c5(%0)\n\t" "jmp 1f\n" "0:\n\t" "fildq (%1)\n\t" "fildq (%2)\n\t" "faddp %%st, %%st(1)\n\t" - "movb $0x2,0x14(%0)\n\t" + "movb %4, %c5(%0)\n\t" "fstpl (%0)\n" "1:" : - : "r"(result), - "r"(op1), - "r"(op2) - : "rax"); + : "r"(&result->value), + "r"(&op1->value), + "r"(&op2->value), + "n"(IS_LONG), + "n"(IS_DOUBLE), + "n"(ZVAL_OFFSETOF_TYPE) + : "rax","cc"); #else Z_LVAL_P(result) = Z_LVAL_P(op1) + Z_LVAL_P(op2); @@ -635,7 +658,7 @@ static zend_always_inline int fast_sub_function(zval *result, zval *op1, zval *o "subl (%2), %%eax\n\t" "jo 0f\n\t" "movl %%eax, (%0)\n\t" - "movb $0x1,0xc(%0)\n\t" + "movb %3, %c5(%0)\n\t" "jmp 1f\n" "0:\n\t" "fildl (%2)\n\t" @@ -645,21 +668,24 @@ static zend_always_inline int fast_sub_function(zval *result, zval *op1, zval *o #else "fsubp %%st, %%st(1)\n\t" #endif - "movb $0x2,0xc(%0)\n\t" + "movb %4, %c5(%0)\n\t" "fstpl (%0)\n" "1:" : - : "r"(result), - "r"(op1), - "r"(op2) - : "eax"); + : "r"(&result->value), + "r"(&op1->value), + "r"(&op2->value), + "n"(IS_LONG), + "n"(IS_DOUBLE), + "n"(ZVAL_OFFSETOF_TYPE) + : "eax","cc"); #elif defined(__GNUC__) && defined(__x86_64__) __asm__( "movq (%1), %%rax\n\t" "subq (%2), %%rax\n\t" "jo 0f\n\t" "movq %%rax, (%0)\n\t" - "movb $0x1,0x14(%0)\n\t" + "movb %3, %c5(%0)\n\t" "jmp 1f\n" "0:\n\t" "fildq (%2)\n\t" @@ -669,14 +695,17 @@ static zend_always_inline int fast_sub_function(zval *result, zval *op1, zval *o #else "fsubp %%st, %%st(1)\n\t" #endif - "movb $0x2,0x14(%0)\n\t" + "movb %4, %c5(%0)\n\t" "fstpl (%0)\n" "1:" : - : "r"(result), - "r"(op1), - "r"(op2) - : "rax"); + : "r"(&result->value), + "r"(&op1->value), + "r"(&op2->value), + "n"(IS_LONG), + "n"(IS_DOUBLE), + "n"(ZVAL_OFFSETOF_TYPE) + : "rax","cc"); #else Z_LVAL_P(result) = Z_LVAL_P(op1) - Z_LVAL_P(op2); diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 25ac45312..91eb8a6fd 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -974,27 +974,15 @@ ZEND_VM_HANDLER(40, ZEND_ECHO, CONST|TMP|VAR|CV, ANY) { USE_OPLINE zend_free_op free_op1; - zval z_copy; zval *z; SAVE_OPLINE(); z = GET_OP1_ZVAL_PTR(BP_VAR_R); - if (OP1_TYPE != IS_CONST && - UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && - Z_OBJ_HT_P(z)->get_method != NULL) { - if (OP1_TYPE == IS_TMP_VAR) { - INIT_PZVAL(z); - } - if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) { - zend_print_variable(&z_copy); - zval_dtor(&z_copy); - } else { - zend_print_variable(z); - } - } else { - zend_print_variable(z); + if (OP1_TYPE == IS_TMP_VAR && Z_TYPE_P(z) == IS_OBJECT) { + INIT_PZVAL(z); } + zend_print_variable(z); FREE_OP1(); CHECK_EXCEPTION(); @@ -2417,6 +2405,9 @@ ZEND_VM_HANDLER(109, ZEND_FETCH_CLASS, ANY, CONST|TMP|VAR|UNUSED|CV) } else if (Z_TYPE_P(class_name) == IS_STRING) { EX_T(opline->result.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC); } else { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string"); } @@ -2441,6 +2432,9 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV) if (OP2_TYPE != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -2474,6 +2468,10 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV) } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + FREE_OP2(); + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } @@ -2552,6 +2550,9 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, CONST|VAR, CONST|TMP|VAR|UNUS function_name = GET_OP2_ZVAL_PTR(BP_VAR_R); if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Function name must be a string"); } else { function_name_strval = Z_STRVAL_P(function_name); @@ -2755,6 +2756,9 @@ ZEND_VM_HANDLER(59, ZEND_INIT_FCALL_BY_NAME, ANY, CONST|TMP|VAR|CV) CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); } else { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Function name must be a string"); ZEND_VM_NEXT_OPCODE(); /* Never reached */ } @@ -2967,8 +2971,12 @@ ZEND_VM_HANDLER(108, ZEND_THROW, CONST|TMP|VAR|CV, ANY) value = GET_OP1_ZVAL_PTR(BP_VAR_R); if (OP1_TYPE == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Can only throw objects"); } + zend_exception_save(TSRMLS_C); /* Not sure if a complete copy is what we want here */ ALLOC_ZVAL(exception); @@ -3431,6 +3439,9 @@ ZEND_VM_HANDLER(110, ZEND_CLONE, CONST|TMP|VAR|UNUSED|CV, ANY) if (OP1_TYPE == IS_CONST || UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "__clone method called on non-object"); } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index ab69ee292..62bcdf7fd 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -1191,6 +1191,9 @@ static int ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLE } else if (Z_TYPE_P(class_name) == IS_STRING) { EX_T(opline->result.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC); } else { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string"); } @@ -1336,6 +1339,9 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); } else { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Function name must be a string"); ZEND_VM_NEXT_OPCODE(); /* Never reached */ } @@ -1511,6 +1517,9 @@ static int ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ } else if (Z_TYPE_P(class_name) == IS_STRING) { EX_T(opline->result.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC); } else { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string"); } @@ -1657,6 +1666,9 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER(ZEND_OPCODE_H CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); } else { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Function name must be a string"); ZEND_VM_NEXT_OPCODE(); /* Never reached */ } @@ -1692,6 +1704,9 @@ static int ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ } else if (Z_TYPE_P(class_name) == IS_STRING) { EX_T(opline->result.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC); } else { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string"); } @@ -1838,6 +1853,9 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_H CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); } else { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Function name must be a string"); ZEND_VM_NEXT_OPCODE(); /* Never reached */ } @@ -1873,6 +1891,9 @@ static int ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDL } else if (Z_TYPE_P(class_name) == IS_STRING) { EX_T(opline->result.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC); } else { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string"); } @@ -1909,6 +1930,9 @@ static int ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_A } else if (Z_TYPE_P(class_name) == IS_STRING) { EX_T(opline->result.var).class_entry = zend_fetch_class(Z_STRVAL_P(class_name), Z_STRLEN_P(class_name), opline->extended_value TSRMLS_CC); } else { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Class name must be a valid object or a string"); } @@ -2054,6 +2078,9 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HA CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); } else { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Function name must be a string"); ZEND_VM_NEXT_OPCODE(); /* Never reached */ } @@ -2091,27 +2118,15 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE - zval z_copy; zval *z; SAVE_OPLINE(); z = opline->op1.zv; - if (IS_CONST != IS_CONST && - UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && - Z_OBJ_HT_P(z)->get_method != NULL) { - if (IS_CONST == IS_TMP_VAR) { - INIT_PZVAL(z); - } - if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) { - zend_print_variable(&z_copy); - zval_dtor(&z_copy); - } else { - zend_print_variable(z); - } - } else { - zend_print_variable(z); + if (IS_CONST == IS_TMP_VAR && Z_TYPE_P(z) == IS_OBJECT) { + INIT_PZVAL(z); } + zend_print_variable(z); CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -2437,8 +2452,12 @@ static int ZEND_FASTCALL ZEND_THROW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS value = opline->op1.zv; if (IS_CONST == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Can only throw objects"); } + zend_exception_save(TSRMLS_C); /* Not sure if a complete copy is what we want here */ ALLOC_ZVAL(exception); @@ -2509,6 +2528,9 @@ static int ZEND_FASTCALL ZEND_CLONE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS if (IS_CONST == IS_CONST || UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "__clone method called on non-object"); } @@ -3565,6 +3587,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER( function_name = opline->op2.zv; if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Function name must be a string"); } else { function_name_strval = Z_STRVAL_P(function_name); @@ -4555,6 +4580,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMP_HANDLER(ZE function_name = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC); if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Function name must be a string"); } else { function_name_strval = Z_STRVAL_P(function_name); @@ -5414,6 +5442,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_VAR_HANDLER(ZE function_name = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC); if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Function name must be a string"); } else { function_name_strval = Z_STRVAL_P(function_name); @@ -6129,6 +6160,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER function_name = NULL; if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Function name must be a string"); } else { function_name_strval = Z_STRVAL_P(function_name); @@ -6985,6 +7019,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEN function_name = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC); if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Function name must be a string"); } else { function_name_strval = Z_STRVAL_P(function_name); @@ -7411,27 +7448,15 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE zend_free_op free_op1; - zval z_copy; zval *z; SAVE_OPLINE(); z = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); - if (IS_TMP_VAR != IS_CONST && - UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && - Z_OBJ_HT_P(z)->get_method != NULL) { - if (IS_TMP_VAR == IS_TMP_VAR) { - INIT_PZVAL(z); - } - if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) { - zend_print_variable(&z_copy); - zval_dtor(&z_copy); - } else { - zend_print_variable(z); - } - } else { - zend_print_variable(z); + if (IS_TMP_VAR == IS_TMP_VAR && Z_TYPE_P(z) == IS_OBJECT) { + INIT_PZVAL(z); } + zend_print_variable(z); zval_dtor(free_op1.var); CHECK_EXCEPTION(); @@ -7748,8 +7773,12 @@ static int ZEND_FASTCALL ZEND_THROW_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) value = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (IS_TMP_VAR == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Can only throw objects"); } + zend_exception_save(TSRMLS_C); /* Not sure if a complete copy is what we want here */ ALLOC_ZVAL(exception); @@ -7821,6 +7850,9 @@ static int ZEND_FASTCALL ZEND_CLONE_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (IS_TMP_VAR == IS_CONST || UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "__clone method called on non-object"); } @@ -8938,6 +8970,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCO if (IS_CONST != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -8971,6 +9006,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCO } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } @@ -9792,6 +9831,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE if (IS_TMP_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -9825,6 +9867,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + zval_dtor(free_op2.var); + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } @@ -10651,6 +10697,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE if (IS_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -10684,6 +10733,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } @@ -12085,6 +12138,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_ if (IS_CV != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -12118,6 +12174,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_ } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } @@ -12622,27 +12682,15 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE zend_free_op free_op1; - zval z_copy; zval *z; SAVE_OPLINE(); z = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); - if (IS_VAR != IS_CONST && - UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && - Z_OBJ_HT_P(z)->get_method != NULL) { - if (IS_VAR == IS_TMP_VAR) { - INIT_PZVAL(z); - } - if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) { - zend_print_variable(&z_copy); - zval_dtor(&z_copy); - } else { - zend_print_variable(z); - } - } else { - zend_print_variable(z); + if (IS_VAR == IS_TMP_VAR && Z_TYPE_P(z) == IS_OBJECT) { + INIT_PZVAL(z); } + zend_print_variable(z); if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; CHECK_EXCEPTION(); @@ -12960,8 +13008,12 @@ static int ZEND_FASTCALL ZEND_THROW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) value = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (IS_VAR == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Can only throw objects"); } + zend_exception_save(TSRMLS_C); /* Not sure if a complete copy is what we want here */ ALLOC_ZVAL(exception); @@ -13142,6 +13194,9 @@ static int ZEND_FASTCALL ZEND_CLONE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (IS_VAR == IS_CONST || UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "__clone method called on non-object"); } @@ -15322,6 +15377,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCO if (IS_CONST != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -15355,6 +15413,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCO } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } @@ -15432,6 +15494,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZE function_name = opline->op2.zv; if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Function name must be a string"); } else { function_name_strval = Z_STRVAL_P(function_name); @@ -17663,6 +17728,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE if (IS_TMP_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -17696,6 +17764,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + zval_dtor(free_op2.var); + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } @@ -17774,6 +17846,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND function_name = _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC); if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Function name must be a string"); } else { function_name_strval = Z_STRVAL_P(function_name); @@ -19969,6 +20044,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE if (IS_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -20002,6 +20080,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } @@ -20080,6 +20162,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND function_name = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC); if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Function name must be a string"); } else { function_name_strval = Z_STRVAL_P(function_name); @@ -21514,6 +21599,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER(Z function_name = NULL; if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Function name must be a string"); } else { function_name_strval = Z_STRVAL_P(function_name); @@ -23410,6 +23498,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_ if (IS_CV != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -23443,6 +23534,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_ } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } @@ -23520,6 +23615,9 @@ static int ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_ function_name = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC); if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Function name must be a string"); } else { function_name_strval = Z_STRVAL_P(function_name); @@ -24167,6 +24265,9 @@ static int ZEND_FASTCALL ZEND_CLONE_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARG if (IS_UNUSED == IS_CONST || UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "__clone method called on non-object"); } @@ -25036,6 +25137,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_O if (IS_CONST != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -25069,6 +25173,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_O } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } @@ -26444,6 +26552,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPC if (IS_TMP_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -26477,6 +26588,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPC } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + zval_dtor(free_op2.var); + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } @@ -27758,6 +27873,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPC if (IS_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -27791,6 +27909,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPC } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } @@ -29493,6 +29615,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCO if (IS_CV != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -29526,6 +29651,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCO } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } @@ -30214,27 +30343,15 @@ static int ZEND_FASTCALL ZEND_ECHO_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE - zval z_copy; zval *z; SAVE_OPLINE(); z = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); - if (IS_CV != IS_CONST && - UNEXPECTED(Z_TYPE_P(z) == IS_OBJECT) && - Z_OBJ_HT_P(z)->get_method != NULL) { - if (IS_CV == IS_TMP_VAR) { - INIT_PZVAL(z); - } - if (zend_std_cast_object_tostring(z, &z_copy, IS_STRING TSRMLS_CC) == SUCCESS) { - zend_print_variable(&z_copy); - zval_dtor(&z_copy); - } else { - zend_print_variable(z); - } - } else { - zend_print_variable(z); + if (IS_CV == IS_TMP_VAR && Z_TYPE_P(z) == IS_OBJECT) { + INIT_PZVAL(z); } + zend_print_variable(z); CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -30536,8 +30653,12 @@ static int ZEND_FASTCALL ZEND_THROW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) value = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); if (IS_CV == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Can only throw objects"); } + zend_exception_save(TSRMLS_C); /* Not sure if a complete copy is what we want here */ ALLOC_ZVAL(exception); @@ -30706,6 +30827,9 @@ static int ZEND_FASTCALL ZEND_CLONE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (IS_CV == IS_CONST || UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "__clone method called on non-object"); } @@ -32733,6 +32857,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD if (IS_CONST != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -32766,6 +32893,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } @@ -34846,6 +34977,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_ if (IS_TMP_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -34879,6 +35013,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_ } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + zval_dtor(free_op2.var); + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } @@ -37018,6 +37156,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_ if (IS_VAR != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -37051,6 +37192,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_ } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } @@ -40182,6 +40327,9 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_H if (IS_CV != IS_CONST && UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) { + if (UNEXPECTED(EG(exception) != NULL)) { + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Method name must be a string"); } @@ -40215,6 +40363,10 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_H } } } else { + if (UNEXPECTED(EG(exception) != NULL)) { + + HANDLE_EXCEPTION(); + } zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } |
